...
							
								
								
									
										
											BIN
										
									
								
								poc/static/cloud_dancing.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 602 KiB | 
							
								
								
									
										
											BIN
										
									
								
								poc/static/cloud_dancing2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 MiB | 
							
								
								
									
										154
									
								
								poc/static/faq.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,154 @@ | ||||
| /* Import Google Fonts - if not already imported in ourworld.css */ | ||||
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Roboto:wght@300;400;500;700&display=swap'); | ||||
|  | ||||
| /* Container styling */ | ||||
| .faq-container { | ||||
|     display: flex; | ||||
|     gap: 2rem; | ||||
|     max-width: 1200px; | ||||
|     margin: 0 auto; | ||||
|     padding: 2rem; | ||||
| } | ||||
|  | ||||
| /* Markdown content styling */ | ||||
| .markdown-content { | ||||
|     flex: 1; | ||||
|     padding-right: 2rem; | ||||
|     border-right: 1px solid #a4b6ba; | ||||
| } | ||||
|  | ||||
| /* Base styles for markdown content */ | ||||
| .markdown-content { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
|     font-weight: 200; | ||||
| } | ||||
|  | ||||
| /* Heading styles */ | ||||
| .markdown-content h2, | ||||
| .markdown-content h3 { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
| } | ||||
|  | ||||
| /* Light theme colors */ | ||||
| .light-theme .markdown-content h2, | ||||
| .light-theme .markdown-content h3, | ||||
| .light-theme .markdown-content p, | ||||
| .light-theme .markdown-content ul, | ||||
| .light-theme .markdown-content li { | ||||
|     color: #444444 !important; | ||||
| } | ||||
|  | ||||
| /* Dark theme colors */ | ||||
| .markdown-content h2, | ||||
| .markdown-content h3, | ||||
| .markdown-content p, | ||||
| .markdown-content ul, | ||||
| .markdown-content li { | ||||
|     color: #cccccc !important; | ||||
| } | ||||
|  | ||||
| .markdown-content h2 { | ||||
|     font-size: 1.5rem; | ||||
|     font-weight: 200; | ||||
|     line-height: 1.2; | ||||
|     margin-bottom: 1rem; | ||||
| } | ||||
|  | ||||
| .markdown-content h3 { | ||||
|     font-size: 1.2rem; | ||||
|     font-weight: 200; | ||||
|     line-height: 1.3; | ||||
|     margin-bottom: 0.8rem; | ||||
| } | ||||
|  | ||||
| /* Regular text styles */ | ||||
| .markdown-content p, | ||||
| .markdown-content ul, | ||||
| .markdown-content li { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     font-weight: 200; | ||||
| } | ||||
|  | ||||
| /* Make list items and paragraphs consistent size */ | ||||
| .markdown-content p, | ||||
| .markdown-content li { | ||||
|     font-size: 1rem; | ||||
|     line-height: 1.3; | ||||
|     margin-bottom: 0.25rem; | ||||
| } | ||||
|  | ||||
| /* List specific styling */ | ||||
| .markdown-content ul { | ||||
|     padding-left: 1.5rem; | ||||
|     margin-bottom: 1rem; | ||||
| } | ||||
|  | ||||
| .markdown-content li { | ||||
|     margin-bottom: 0.25rem; | ||||
| } | ||||
|  | ||||
| /* FAQ section styling */ | ||||
| .faq-section { | ||||
|     flex: 1; | ||||
| } | ||||
|  | ||||
| details { | ||||
|     border-bottom: 1px solid #ddd; | ||||
|     padding: 1em 0; | ||||
|     margin: 0; | ||||
| } | ||||
|  | ||||
| summary { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     font-size: 1rem; | ||||
|     font-weight: 500; | ||||
|     cursor: pointer; | ||||
|     list-style: none; | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     outline: none; | ||||
| } | ||||
|  | ||||
| summary::marker { | ||||
|     display: none; | ||||
| } | ||||
|  | ||||
| details[open] summary { | ||||
|     color: #000; | ||||
| } | ||||
|  | ||||
| details p { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     margin: 0.5em 0 0 0; | ||||
|     color: #666; | ||||
|     font-size: 1rem; | ||||
|     line-height: 1.6; | ||||
|     font-weight: 200; | ||||
| } | ||||
|  | ||||
| summary:before { | ||||
|     content: "▶"; | ||||
|     display: inline-block; | ||||
|     transform: rotate(0deg); | ||||
|     transition: transform 0.3s ease; | ||||
|     margin-right: 0.5em; | ||||
|     color: #000; | ||||
| } | ||||
|  | ||||
| details[open] summary:before { | ||||
|     transform: rotate(90deg); | ||||
| } | ||||
|  | ||||
| /* Responsive design */ | ||||
| @media (max-width: 768px) { | ||||
|     .faq-container { | ||||
|         flex-direction: column; | ||||
|     } | ||||
|  | ||||
|     .markdown-content { | ||||
|         border-right: none; | ||||
|         border-bottom: 1px solid #ddd; | ||||
|         padding-right: 0; | ||||
|         padding-bottom: 2rem; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										5
									
								
								poc/static/favicon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"> | ||||
|     <rect width="24" height="24" fill="#1a1a1a"/> | ||||
|     <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 345 B | 
							
								
								
									
										
											BIN
										
									
								
								poc/static/happy_kid.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 293 KiB | 
							
								
								
									
										178
									
								
								poc/static/login.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,178 @@ | ||||
| /* Modal Styles */ | ||||
| .modal { | ||||
|     display: none; | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     background: #00000080; | ||||
|     z-index: 1001; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
| } | ||||
|  | ||||
| .modal-content { | ||||
|     background: var(--modal-background); | ||||
|     padding: 2rem; | ||||
|     border-radius: 8px; | ||||
|     box-shadow: 0 2px 10px #00000033; | ||||
|     position: relative; | ||||
|     width: 100%; | ||||
|     max-width: 460px; | ||||
|     color: var(--modal-text); | ||||
| } | ||||
|  | ||||
| .login-box { | ||||
|     position: relative; | ||||
| } | ||||
|  | ||||
| .login-header { | ||||
|     text-align: center; | ||||
|     margin-bottom: 2rem; | ||||
| } | ||||
|  | ||||
| .logo { | ||||
|     width: 48px; | ||||
|     height: 48px; | ||||
|     margin-bottom: 1rem; | ||||
|     color: var(--text-color); | ||||
| } | ||||
|  | ||||
| .login-header h2 { | ||||
|     margin: 0; | ||||
|     color: var(--modal-text); | ||||
|     font-size: 1.3rem; | ||||
| } | ||||
|  | ||||
| .login-header p { | ||||
|     margin: 0.5rem 0 0; | ||||
|     color: var(--hover-color); | ||||
|     font-size: 0.85rem; | ||||
| } | ||||
|  | ||||
| .form-group { | ||||
|     margin-bottom: 0.3rem; | ||||
| } | ||||
|  | ||||
| .form-group label { | ||||
|     display: block; | ||||
|     margin-bottom: 0.3rem; | ||||
|     color: var(--modal-text); | ||||
|     font-size: 0.8rem; | ||||
| } | ||||
|  | ||||
| .form-group input { | ||||
|     width: 100%; | ||||
|     padding: 0.25rem 0.5rem; | ||||
|     border: 1px solid var(--input-border); | ||||
|     border-radius: 4px; | ||||
|     background: var(--body-background); | ||||
|     color: var(--modal-text); | ||||
|     font-size: 0.9rem; | ||||
|     transition: all 0.3s; | ||||
|     height: 40px; | ||||
| } | ||||
|  | ||||
| .form-group input:focus { | ||||
|     outline: none; | ||||
|     border-color: #1a73e8; | ||||
|     box-shadow: 0 0 0 2px #1A73E833; | ||||
| } | ||||
|  | ||||
| .error-message { | ||||
|     color: #dc3545; | ||||
|     font-size: 0.75rem; | ||||
|     margin-top: 0.25rem; | ||||
|     display: block; | ||||
|     min-height: 1.25em; | ||||
| } | ||||
|  | ||||
| .form-footer { | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     align-items: center; | ||||
|     margin-bottom: 1.5rem; | ||||
| } | ||||
|  | ||||
| .remember-me { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 0.5rem; | ||||
|     color: var(--modal-text); | ||||
|     font-size: 0.8rem; | ||||
| } | ||||
|  | ||||
| .forgot-password { | ||||
|     color: #1a73e8; | ||||
|     text-decoration: none; | ||||
|     font-size: 0.8rem; | ||||
| } | ||||
|  | ||||
| .forgot-password:hover { | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| .submit-button { | ||||
|     width: 100%; | ||||
|     padding: 0.75rem; | ||||
|     background: #1a73e8; | ||||
|     color: white; | ||||
|     border: none; | ||||
|     border-radius: 4px; | ||||
|     font-size: 0.9rem; | ||||
|     font-weight: 500; | ||||
|     cursor: pointer; | ||||
|     transition: all 0.3s; | ||||
| } | ||||
|  | ||||
| .submit-button:hover { | ||||
|     background: #1557b0; | ||||
|     transform: translateY(-1px); | ||||
| } | ||||
|  | ||||
| .signup-link { | ||||
|     text-align: center; | ||||
|     margin-top: 1.5rem; | ||||
|     color: var(--modal-text); | ||||
|     font-size: 0.8rem; | ||||
| } | ||||
|  | ||||
| .signup-link a { | ||||
|     color: #1a73e8; | ||||
|     text-decoration: none; | ||||
|     font-weight: 500; | ||||
| } | ||||
|  | ||||
| .signup-link a:hover { | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| .close-button { | ||||
|     position: absolute; | ||||
|     top: -1rem; | ||||
|     right: -1rem; | ||||
|     width: 2rem; | ||||
|     height: 2rem; | ||||
|     border-radius: 50%; | ||||
|     border: none; | ||||
|     background: var(--modal-text); | ||||
|     color: var(--modal-background); | ||||
|     font-size: 1.5rem; | ||||
|     cursor: pointer; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     transition: all 0.3s; | ||||
| } | ||||
|  | ||||
| .close-button:hover { | ||||
|     transform: scale(1.1); | ||||
| } | ||||
|  | ||||
| @media (max-width: 768px) { | ||||
|     .modal-content { | ||||
|         margin: 1rem; | ||||
|         padding: 1.5rem; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										367
									
								
								poc/static/login_test.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,367 @@ | ||||
|  | ||||
|     <style> | ||||
|         .container { | ||||
|             max-width: 800px; | ||||
|             margin: 2rem auto; | ||||
|             padding: 0 1rem; | ||||
|         } | ||||
|  | ||||
|         .card { | ||||
|             background: white; | ||||
|             border-radius: 8px; | ||||
|             padding: 2rem; | ||||
|             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | ||||
|         } | ||||
|  | ||||
|         .status { | ||||
|             padding: 1rem; | ||||
|             border-radius: 4px; | ||||
|             margin: 1rem 0; | ||||
|             text-align: center; | ||||
|             font-weight: bold; | ||||
|         } | ||||
|  | ||||
|         .status.authenticated { | ||||
|             background-color: #d4edda; | ||||
|             color: #155724; | ||||
|             border: 1px solid #c3e6cb; | ||||
|         } | ||||
|  | ||||
|         .status.unauthenticated { | ||||
|             background-color: #f8d7da; | ||||
|             color: #721c24; | ||||
|             border: 1px solid #f5c6cb; | ||||
|         } | ||||
|  | ||||
|         .actions { | ||||
|             display: flex; | ||||
|             gap: 1rem; | ||||
|             margin: 1rem 0; | ||||
|             justify-content: center; | ||||
|         } | ||||
|  | ||||
|         .btn-identify, .btn-clear, .btn-list, .btn-generate { | ||||
|             padding: 0.5rem 1rem; | ||||
|             border: none; | ||||
|             border-radius: 4px; | ||||
|             cursor: pointer; | ||||
|             font-weight: bold; | ||||
|             transition: background-color 0.2s; | ||||
|         } | ||||
|  | ||||
|         .btn-identify { | ||||
|             background-color: #007bff; | ||||
|             color: white; | ||||
|         } | ||||
|  | ||||
|         .btn-identify:hover { | ||||
|             background-color: #0056b3; | ||||
|         } | ||||
|  | ||||
|         .btn-clear { | ||||
|             background-color: #dc3545; | ||||
|             color: white; | ||||
|         } | ||||
|  | ||||
|         .btn-clear:hover { | ||||
|             background-color: #c82333; | ||||
|         } | ||||
|  | ||||
|         .btn-list { | ||||
|             background-color: #17a2b8; | ||||
|             color: white; | ||||
|             width: 100%; | ||||
|         } | ||||
|  | ||||
|         .btn-list:hover { | ||||
|             background-color: #138496; | ||||
|         } | ||||
|  | ||||
|         .btn-generate { | ||||
|             background-color: #28a745; | ||||
|             color: white; | ||||
|             margin-top: 1rem; | ||||
|             width: 100%; | ||||
|         } | ||||
|  | ||||
|         .btn-generate:hover { | ||||
|             background-color: #218838; | ||||
|         } | ||||
|  | ||||
|         .key-info { | ||||
|             background-color: #f8f9fa; | ||||
|             padding: 1.5rem; | ||||
|             border-radius: 4px; | ||||
|             margin: 1.5rem 0; | ||||
|             color: #2c3e50; | ||||
|         } | ||||
|  | ||||
|         .key-details { | ||||
|             margin-top: 1rem; | ||||
|         } | ||||
|  | ||||
|         .warning-message { | ||||
|             background-color: #fff3cd; | ||||
|             color: #856404; | ||||
|             padding: 1rem; | ||||
|             border-radius: 4px; | ||||
|             margin: 1rem 0; | ||||
|             border: 1px solid #ffeeba; | ||||
|         } | ||||
|  | ||||
|         .public-key { | ||||
|             word-break: break-all; | ||||
|             font-family: monospace; | ||||
|             background: #ffffff; | ||||
|             padding: 1rem; | ||||
|             border-radius: 4px; | ||||
|             border: 1px solid #dee2e6; | ||||
|             color: #2c3e50; | ||||
|             margin-top: 1rem; | ||||
|         } | ||||
|  | ||||
|         .test-actions { | ||||
|             margin-top: 2rem; | ||||
|             padding-top: 2rem; | ||||
|             border-top: 1px solid #dee2e6; | ||||
|             color: #2c3e50; | ||||
|         } | ||||
|  | ||||
|         .test-container { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             gap: 1.5rem; | ||||
|         } | ||||
|  | ||||
|         .test-group { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             gap: 0.5rem; | ||||
|         } | ||||
|  | ||||
|         .test-group input { | ||||
|             padding: 0.5rem; | ||||
|             border: 1px solid #ced4da; | ||||
|             border-radius: 4px; | ||||
|             color: #2c3e50; | ||||
|             background: #ffffff; | ||||
|         } | ||||
|  | ||||
|         .test-group button { | ||||
|             padding: 0.5rem; | ||||
|             background-color: #28a745; | ||||
|             color: white; | ||||
|             border: none; | ||||
|             border-radius: 4px; | ||||
|             cursor: pointer; | ||||
|         } | ||||
|  | ||||
|         .test-group button:hover { | ||||
|             background-color: #218838; | ||||
|         } | ||||
|  | ||||
|         .set-result, .retrieved-value { | ||||
|             margin-top: 0.5rem; | ||||
|             padding: 0.5rem; | ||||
|             border-radius: 4px; | ||||
|             font-family: monospace; | ||||
|         } | ||||
|  | ||||
|         .success { | ||||
|             background-color: #d4edda; | ||||
|             color: #155724; | ||||
|             border: 1px solid #c3e6cb; | ||||
|             padding: 0.5rem; | ||||
|             border-radius: 4px; | ||||
|         } | ||||
|  | ||||
|         .error { | ||||
|             background-color: #f8d7da; | ||||
|             color: #721c24; | ||||
|             border: 1px solid #f5c6cb; | ||||
|             padding: 0.5rem; | ||||
|             border-radius: 4px; | ||||
|         } | ||||
|  | ||||
|         .info { | ||||
|             background-color: #e2e3e5; | ||||
|             color: #383d41; | ||||
|             border: 1px solid #d6d8db; | ||||
|             padding: 0.5rem; | ||||
|             border-radius: 4px; | ||||
|         } | ||||
|  | ||||
|         .all-values { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             gap: 1rem; | ||||
|             margin-top: 1rem; | ||||
|         } | ||||
|  | ||||
|         .stored-value { | ||||
|             background: #ffffff; | ||||
|             border: 1px solid #dee2e6; | ||||
|             border-radius: 4px; | ||||
|             padding: 1rem; | ||||
|         } | ||||
|  | ||||
|         .stored-key { | ||||
|             font-weight: bold; | ||||
|             color: #2c3e50; | ||||
|             margin-bottom: 0.5rem; | ||||
|         } | ||||
|  | ||||
|         .stored-value-content { | ||||
|             font-family: monospace; | ||||
|             background: #f8f9fa; | ||||
|             padding: 0.5rem; | ||||
|             border-radius: 4px; | ||||
|             margin: 0.5rem 0; | ||||
|             word-break: break-all; | ||||
|         } | ||||
|  | ||||
|         .encryption-status { | ||||
|             font-size: 0.875rem; | ||||
|             color: #6c757d; | ||||
|         } | ||||
|  | ||||
|         .status-icon { | ||||
|             margin-right: 0.5rem; | ||||
|         } | ||||
|  | ||||
|         .encrypted .encryption-status { | ||||
|             color: #28a745; | ||||
|         } | ||||
|  | ||||
|         .not-encrypted .encryption-status { | ||||
|             color: #dc3545; | ||||
|         } | ||||
|  | ||||
|         .no-values { | ||||
|             text-align: center; | ||||
|             color: #6c757d; | ||||
|             padding: 1rem; | ||||
|             background: #f8f9fa; | ||||
|             border-radius: 4px; | ||||
|         } | ||||
|  | ||||
|         /* Modal Styles */ | ||||
|         .modal-overlay { | ||||
|             display: none; | ||||
|             position: fixed; | ||||
|             top: 0; | ||||
|             left: 0; | ||||
|             width: 100%; | ||||
|             height: 100%; | ||||
|             background: rgba(0, 0, 0, 0.5); | ||||
|             z-index: 1000; | ||||
|             backdrop-filter: blur(3px); | ||||
|         } | ||||
|  | ||||
|         .modal-container { | ||||
|             position: fixed; | ||||
|             top: 50%; | ||||
|             left: 50%; | ||||
|             transform: translate(-50%, -50%); | ||||
|             background: white; | ||||
|             padding: 2rem; | ||||
|             border-radius: 8px; | ||||
|             box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); | ||||
|             z-index: 1001; | ||||
|             width: 90%; | ||||
|             max-width: 400px; | ||||
|         } | ||||
|  | ||||
|         .modal-header { | ||||
|             margin-bottom: 1.5rem; | ||||
|             text-align: center; | ||||
|         } | ||||
|  | ||||
|         .modal-description { | ||||
|             color: #666; | ||||
|             margin-top: 0.5rem; | ||||
|             font-size: 0.9rem; | ||||
|         } | ||||
|  | ||||
|         .modal-form { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             gap: 1rem; | ||||
|         } | ||||
|  | ||||
|         .form-group { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             gap: 0.5rem; | ||||
|         } | ||||
|  | ||||
|         .form-group label { | ||||
|             font-weight: bold; | ||||
|             color: #333; | ||||
|         } | ||||
|  | ||||
|         .form-group input { | ||||
|             padding: 0.75rem; | ||||
|             border: 1px solid #ddd; | ||||
|             border-radius: 4px; | ||||
|             font-size: 1rem; | ||||
|             transition: border-color 0.2s; | ||||
|         } | ||||
|  | ||||
|         .form-group input:focus { | ||||
|             border-color: #007bff; | ||||
|             outline: none; | ||||
|             box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); | ||||
|         } | ||||
|  | ||||
|         .modal-buttons { | ||||
|             display: flex; | ||||
|             justify-content: flex-end; | ||||
|             gap: 1rem; | ||||
|             margin-top: 1.5rem; | ||||
|         } | ||||
|  | ||||
|         .btn { | ||||
|             padding: 0.75rem 1.5rem; | ||||
|             border: none; | ||||
|             border-radius: 4px; | ||||
|             cursor: pointer; | ||||
|             font-size: 1rem; | ||||
|             transition: all 0.2s; | ||||
|             font-weight: 500; | ||||
|         } | ||||
|  | ||||
|         .btn:disabled { | ||||
|             opacity: 0.7; | ||||
|             cursor: not-allowed; | ||||
|         } | ||||
|  | ||||
|         .btn-primary { | ||||
|             background-color: #007bff; | ||||
|             color: white; | ||||
|         } | ||||
|  | ||||
|         .btn-primary:hover:not(:disabled) { | ||||
|             background-color: #0056b3; | ||||
|         } | ||||
|  | ||||
|         .btn-secondary { | ||||
|             background-color: #6c757d; | ||||
|             color: white; | ||||
|         } | ||||
|  | ||||
|         .btn-secondary:hover:not(:disabled) { | ||||
|             background-color: #545b62; | ||||
|         } | ||||
|  | ||||
|         .error-message { | ||||
|             color: #dc3545; | ||||
|             font-size: 0.875rem; | ||||
|             margin-top: 0.5rem; | ||||
|             display: none; | ||||
|             padding: 0.5rem; | ||||
|             background-color: #fff5f5; | ||||
|             border-radius: 4px; | ||||
|             border: 1px solid #ffebee; | ||||
|         } | ||||
|     </style> | ||||
							
								
								
									
										272
									
								
								poc/static/menu.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,272 @@ | ||||
| .tf_nav { | ||||
|     background: var(--body-background); | ||||
|     padding: 0.3rem; | ||||
|     position: sticky; | ||||
|     top: 0; | ||||
|     z-index: 1000; | ||||
|     box-shadow: 0 1px 4px #00000022; | ||||
|     color: var(--text-color); | ||||
|     font-family: 'Inter', system-ui, -apple-system, sans-serif; | ||||
| } | ||||
|  | ||||
| .tf_nav_container { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: space-between; | ||||
|     max-width: 1200px; | ||||
|     margin: 0 auto; | ||||
|     padding: 0 1rem; | ||||
|     height: 32px; | ||||
| } | ||||
|  | ||||
| .tf_logo { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 0.5rem; | ||||
|     margin-right: 4rem; | ||||
|     height: 100%; | ||||
|     color: var(--text-color); | ||||
|     text-decoration: none; | ||||
|     font-size: 0.95rem; | ||||
| } | ||||
|  | ||||
| .tf_logo svg { | ||||
|     width: 20px; | ||||
|     height: 20px; | ||||
| } | ||||
|  | ||||
| .tf_menu { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 0.75rem; | ||||
|     list-style: none; | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     height: 100%; | ||||
|     margin-right: auto; | ||||
| } | ||||
|  | ||||
| .tf_menu_item { | ||||
|     position: relative; | ||||
|     height: 100%; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
| } | ||||
|  | ||||
| .tf_menu_link { | ||||
|     color: var(--text-color); | ||||
|     text-decoration: none; | ||||
|     padding: 0.3rem; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     height: 100%; | ||||
|     transition: color 0.2s; | ||||
|     font-size: 0.8rem; | ||||
|     font-weight: 450; | ||||
| } | ||||
|  | ||||
| .tf_menu_link:hover { | ||||
|     color: var(--hover-color); | ||||
| } | ||||
|  | ||||
| .tf_dropdown { | ||||
|     position: absolute; | ||||
|     top: 100%; | ||||
|     left: 0; | ||||
|     background: var(--body-background); | ||||
|     min-width: 150px; | ||||
|     border-radius: 4px; | ||||
|     box-shadow: 0 4px 12px #00000033; | ||||
|     opacity: 0; | ||||
|     visibility: hidden; | ||||
|     transform: translateY(-10px); | ||||
|     transition: all 0.3s; | ||||
| } | ||||
|  | ||||
| .tf_menu_item:hover .tf_dropdown { | ||||
|     opacity: 1; | ||||
|     visibility: visible; | ||||
|     transform: translateY(0); | ||||
| } | ||||
|  | ||||
| .tf_dropdown_item { | ||||
|     padding: 0.4rem 0.8rem; | ||||
|     color: var(--text-color); | ||||
|     text-decoration: none; | ||||
|     display: block; | ||||
|     transition: background-color 0.2s; | ||||
|     font-size: 0.6rem; | ||||
| } | ||||
|  | ||||
| .tf_dropdown_item:hover { | ||||
|     background-color: #80808019; | ||||
| } | ||||
|  | ||||
| .tf_right_controls { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 2rem; | ||||
|     margin-left: 2rem; | ||||
| } | ||||
|  | ||||
| .tf_theme_toggle { | ||||
|     background: none; | ||||
|     border: 1px solid var(--text-color); | ||||
|     border-radius: 50%; | ||||
|     cursor: pointer; | ||||
|     padding: 0.3rem; | ||||
|     color: var(--text-color); | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     transition: all 0.2s; | ||||
|     width: 28px; | ||||
|     height: 28px; | ||||
| } | ||||
|  | ||||
| .tf_theme_toggle:hover { | ||||
|     background-color: #80808019; | ||||
|     transform: scale(1.05); | ||||
| } | ||||
|  | ||||
| .theme-icon { | ||||
|     width: 14px; | ||||
|     height: 14px; | ||||
|     transition: all 0.2s; | ||||
| } | ||||
|  | ||||
| .light-theme .theme-icon.light { | ||||
|     display: none; | ||||
| } | ||||
|  | ||||
| .light-theme .theme-icon.dark { | ||||
|     display: block; | ||||
| } | ||||
|  | ||||
| .theme-icon.light { | ||||
|     display: block; | ||||
| } | ||||
|  | ||||
| .theme-icon.dark { | ||||
|     display: none; | ||||
| } | ||||
|  | ||||
| .tf_login_btn { | ||||
|     background: transparent; | ||||
|     border: 1px solid var(--text-color); | ||||
|     color: var(--text-color); | ||||
|     padding: 0.25rem 1rem; | ||||
|     border-radius: 4px; | ||||
|     text-decoration: none; | ||||
|     transition: all 0.2s; | ||||
|     font-weight: 500; | ||||
|     font-size: 0.8125rem; | ||||
|     cursor: pointer; | ||||
| } | ||||
|  | ||||
| .tf_login_btn:hover { | ||||
|     background: var(--text-color); | ||||
|     color: var(--body-background); | ||||
|     transform: translateY(-1px); | ||||
|     box-shadow: 0 2px 4px #0000001A; | ||||
| } | ||||
|  | ||||
| .hamburger-menu { | ||||
|     display: none; | ||||
|     cursor: pointer; | ||||
|     border: none; | ||||
|     background: none; | ||||
|     padding: 0.5rem; | ||||
|     color: var(--text-color); | ||||
| } | ||||
|  | ||||
| .hamburger-menu svg { | ||||
|     width: 24px; | ||||
|     height: 24px; | ||||
|     color: var(--text-color); | ||||
| } | ||||
|  | ||||
| .mobile-overlay { | ||||
|     display: none; | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     bottom: 0; | ||||
|     background: rgba(0, 0, 0, 0.5); | ||||
|     z-index: 999; | ||||
|     opacity: 0; | ||||
|     transition: opacity 0.3s ease; | ||||
| } | ||||
|  | ||||
| .mobile-overlay.active { | ||||
|     display: block; | ||||
|     opacity: 1; | ||||
| } | ||||
|  | ||||
| @media (max-width: 768px) { | ||||
|     .tf_menu { | ||||
|         display: none; | ||||
|         position: fixed; | ||||
|         top: 48px; | ||||
|         left: 0; | ||||
|         right: 0; | ||||
|         background: var(--body-background); | ||||
|         flex-direction: column; | ||||
|         align-items: stretch; | ||||
|         padding: 1rem; | ||||
|         height: auto; | ||||
|         box-shadow: 0 4px 12px #00000033; | ||||
|         z-index: 1000; | ||||
|         max-height: calc(100vh - 48px); | ||||
|         overflow-y: auto; | ||||
|         transform: translateY(-100%); | ||||
|         transition: transform 0.3s ease; | ||||
|     } | ||||
|  | ||||
|     .tf_menu.active { | ||||
|         display: flex; | ||||
|         transform: translateY(0); | ||||
|     } | ||||
|      | ||||
|     .tf_menu_item { | ||||
|         height: auto; | ||||
|         flex-direction: column; | ||||
|         align-items: stretch; | ||||
|     } | ||||
|  | ||||
|     .tf_menu_link { | ||||
|         padding: 0.8rem; | ||||
|         font-size: 1rem; | ||||
|     } | ||||
|  | ||||
|     .tf_dropdown { | ||||
|         position: static; | ||||
|         opacity: 1; | ||||
|         visibility: visible; | ||||
|         transform: none; | ||||
|         box-shadow: none; | ||||
|         background: transparent; | ||||
|         margin: 0; | ||||
|         padding-left: 1rem; | ||||
|     } | ||||
|  | ||||
|     .tf_dropdown_item { | ||||
|         font-size: 0.9rem; | ||||
|         padding: 0.6rem 1rem; | ||||
|     } | ||||
|      | ||||
|     .tf_logo { | ||||
|         margin-right: 0; | ||||
|     } | ||||
|  | ||||
|     .hamburger-menu { | ||||
|         display: block; | ||||
|         order: -1; | ||||
|     } | ||||
|  | ||||
|     .tf_right_controls { | ||||
|         margin-left: auto; | ||||
|         gap: 1rem; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								poc/static/music.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 702 KiB | 
							
								
								
									
										187
									
								
								poc/static/ourworld.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,187 @@ | ||||
| /* Import Google Fonts */ | ||||
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Roboto:wght@300;400;500;700&display=swap'); | ||||
|  | ||||
| :root { | ||||
|     /* Light theme variables */ | ||||
|     --body-background-light: #ffffff; | ||||
|     --body-text-light: #333333; | ||||
|     --text-color-light: #333; | ||||
|     --hover-color-light: #666; | ||||
|     --modal-background-light: #f5f5f5; | ||||
|     --modal-text-light: #333; | ||||
|     --input-border-light: #ddd; | ||||
|     --hero-background-light: #FFFFFFF2; | ||||
|     --hero-background2-light: #FFFFFFFB; | ||||
|     --hero-text-light: #333; | ||||
|     --hero-banner-background-light: #0000000D; | ||||
|     --hero-subtitle-background-light: #385bb5; | ||||
|     --hero-subtitle-text-light: white; | ||||
|     --input-border-light:  var(--hero-background2-light); | ||||
|  | ||||
|     /* Dark theme variables */ | ||||
|     --body-background-dark: #1a1a1a; | ||||
|     --body-text-dark: #ffffff; | ||||
|     --text-color-dark: #fff; | ||||
|     --hover-color-dark: #aaa; | ||||
|     --modal-background-dark: #282c34; | ||||
|     --modal-text-dark: #fff; | ||||
|     --input-border-dark: #444;    | ||||
|     --hero-background-dark: #282C34F2; | ||||
|     --hero-background2-dark: #2D3139FA; | ||||
|     --hero-text-dark: white; | ||||
|     --hero-banner-background-dark: #FFFFFF26; | ||||
|     --hero-subtitle-background-dark: #385bb5; | ||||
|     --hero-subtitle-text-dark: white; | ||||
|     --input-border-dark:  var(--hero-background2-dark); | ||||
|  | ||||
|     /* Default to dark theme */ | ||||
|     --body-background: var(--body-background-dark); | ||||
|     --body-text: var(--body-text-dark); | ||||
|     --text-color: var(--text-color-dark); | ||||
|     --hover-color: var(--hover-color-dark); | ||||
|     --modal-background: var(--modal-background-dark); | ||||
|     --modal-text: var(--modal-text-dark); | ||||
|     --input-border: var(--input-border-dark); | ||||
|     --hero-background: var(--hero-background-dark); | ||||
|     --hero-background2: var(--hero-background2-dark); | ||||
|     --hero-text: var(--hero-text-dark); | ||||
|     --hero-banner-background: var(--hero-banner-background-dark); | ||||
|     --hero-subtitle-background: var(--hero-subtitle-background-dark); | ||||
|     --hero-subtitle-text: var(--hero-subtitle-text-dark); | ||||
|     --input-border: var(--input-border-dark); | ||||
| } | ||||
|  | ||||
| /* Light theme class */ | ||||
| .light-theme { | ||||
|     --body-background: var(--body-background-light); | ||||
|     --body-text: var(--body-text-light); | ||||
|     --text-color: var(--text-color-light); | ||||
|     --hover-color: var(--hover-color-light); | ||||
|     --modal-background: var(--modal-background-light); | ||||
|     --modal-text: var(--modal-text-light); | ||||
|     --input-border: var(--input-border-light);      | ||||
|     --hero-background: var(--hero-background-light); | ||||
|     --hero-background2: var(--hero-background2-light); | ||||
|     --hero-text: var(--hero-text-light); | ||||
|     --hero-banner-background: var(--hero-banner-background-light); | ||||
|     --hero-subtitle-background: var(--hero-subtitle-background-light); | ||||
|     --hero-subtitle-text: var(--hero-subtitle-text-light);       | ||||
|     --input-border: var(--input-border-light);  | ||||
| } | ||||
|  | ||||
| /* Heading styles - using Poppins */ | ||||
| h1 { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
|     font-size: 1.2rem; | ||||
|     margin-bottom: 1rem; | ||||
|     font-weight: 700; | ||||
|     letter-spacing: -0.03em; | ||||
|     line-height: 1.1; | ||||
|     text-transform: uppercase; | ||||
| } | ||||
|  | ||||
| h2 { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
|     font-size: 1.1rem; | ||||
|     margin-bottom: 1rem; | ||||
|     font-weight: 600; | ||||
|     letter-spacing: -0.02em; | ||||
|     line-height: 1.2; | ||||
| } | ||||
|  | ||||
| h3 { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
|     font-size: 1rem; | ||||
|     margin-bottom: 0.8rem; | ||||
|     font-weight: 600; | ||||
|     letter-spacing: -0.01em; | ||||
|     line-height: 1.3; | ||||
| } | ||||
|  | ||||
| h4 { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
|     font-size: 1rem; | ||||
|     margin-bottom: 0.8rem; | ||||
|     font-weight: 500; | ||||
|     letter-spacing: -0.005em; | ||||
|     line-height: 1.4; | ||||
| } | ||||
|  | ||||
| p ul { | ||||
|     padding-left: 1.5em; | ||||
|     margin: 1.25em 0; | ||||
| } | ||||
|  | ||||
| p li { | ||||
|     line-height: 1.6; | ||||
|     margin-bottom: 0.75em; | ||||
| } | ||||
|  | ||||
| /* Paragraph styles - using Roboto */ | ||||
| p { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     font-size: 1rem; | ||||
|     line-height: 1.6; | ||||
|     margin-bottom: 1.5rem; | ||||
|     max-width: 720px; | ||||
|     font-weight: 400; | ||||
| } | ||||
|  | ||||
| /* Optional: styling for small or additional text */ | ||||
| small { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     font-size: 0.9rem; | ||||
|     font-weight: 400; | ||||
|     color: #666; | ||||
| } | ||||
|  | ||||
| /* Additional styles for links within text */ | ||||
| a { | ||||
|     color: #007acc; | ||||
|     text-decoration: none; | ||||
|     font-weight: 500; | ||||
|     transition: color 0.2s ease; | ||||
| } | ||||
|  | ||||
| a:hover { | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| /* Navigation styles - using Poppins */ | ||||
| nav { | ||||
|     font-family: 'Poppins', sans-serif; | ||||
| } | ||||
|  | ||||
| nav a { | ||||
|     font-size: 1rem; | ||||
|     font-weight: 500; | ||||
|     letter-spacing: 0; | ||||
|     text-decoration: none; | ||||
|     color: var(--text-color); | ||||
|     transition: color 0.2s ease; | ||||
|     text-transform: uppercase; | ||||
| } | ||||
|  | ||||
| nav a:hover { | ||||
|     color: var(--hover-color); | ||||
| } | ||||
|  | ||||
| main { | ||||
|     background-color: var(--body-background); | ||||
|     transition: background-color 0.3s; | ||||
| }     | ||||
|  | ||||
| body { | ||||
|     font-family: 'Roboto', sans-serif; | ||||
|     background-color: var(--body-background); | ||||
|     color: var(--body-text); | ||||
|     min-height: 100vh; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     margin: 0; | ||||
|     padding: 0.25rem 0; | ||||
|     overflow-x: hidden; | ||||
|     transition: background-color 0.3s, color 0.3s; | ||||
|     font-size: 1rem; | ||||
|     line-height: 1.6; | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								poc/static/questions.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 387 KiB | 
							
								
								
									
										
											BIN
										
									
								
								poc/static/questions_.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 MiB |