Spaces:
Sleeping
Sleeping
| /* Theme System CSS Variables */ | |
| :root { | |
| /* Default theme variables */ | |
| --accent-primary: #3b82f6; | |
| --accent-primary-rgb: 59, 130, 246; | |
| --accent-secondary: #2563eb; | |
| --accent-secondary-rgb: 37, 99, 235; | |
| --bg-primary: #111827; | |
| --bg-secondary: #1f2937; | |
| --text-primary: #f9fafb; | |
| --text-secondary: #e5e7eb; | |
| --border-color: #374151; | |
| --card-bg: #1f2937; | |
| --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5); | |
| --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5); | |
| --font-weight-semibold: 600; | |
| --transition-normal: 0.3s ease; | |
| } | |
| /* Restore base body styles from inline definition */ | |
| body.theme-default { | |
| background-color: #111827; | |
| margin: 0; | |
| color: var(--text-primary); | |
| } | |
| /* Cyberpunk Theme */ | |
| .theme-cyberpunk { | |
| --accent-primary: #ff00ff; | |
| --accent-primary-rgb: 255, 0, 255; | |
| --accent-secondary: #6600cc; | |
| --accent-secondary-rgb: 102, 0, 204; | |
| --bg-primary: #0c0117; | |
| --bg-secondary: #1a0233; | |
| --text-primary: #f8f8ff; | |
| --text-secondary: #b19cd9; | |
| --border-color: #6600cc; | |
| --card-bg: #1a0233; | |
| } | |
| /* Matrix Theme */ | |
| .theme-matrix { | |
| --accent-primary: #00ff00; | |
| --accent-primary-rgb: 0, 255, 0; | |
| --accent-secondary: #006400; | |
| --accent-secondary-rgb: 0, 100, 0; | |
| --bg-primary: #001a00; | |
| --bg-secondary: #002b00; | |
| --text-primary: #00ff00; | |
| --text-secondary: #009600; | |
| --border-color: #006400; | |
| --card-bg: #002b00; | |
| } | |
| /* Midnight Theme */ | |
| .theme-midnight { | |
| --accent-primary: #3b82f6; | |
| --accent-primary-rgb: 59, 130, 246; | |
| --accent-secondary: #1e40af; | |
| --accent-secondary-rgb: 30, 64, 175; | |
| --bg-primary: #0f172a; | |
| --bg-secondary: #1e293b; | |
| --text-primary: #e2e8f0; | |
| --text-secondary: #94a3b8; | |
| --border-color: #334155; | |
| --card-bg: #1e293b; | |
| } | |
| /* Additional styles that build on the theme system */ | |
| .gradient-bg { | |
| background: linear-gradient(135deg, var(--accent-secondary), var(--accent-primary)); | |
| } | |
| /* Improved Typography Hierarchy */ | |
| .section-title { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| margin-bottom: 1.5rem; | |
| color: var(--text-primary); | |
| } | |
| .subsection-title { | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| margin-bottom: 1rem; | |
| } | |
| /* Typing Effect for Thought Viz */ | |
| .typing-effect { | |
| overflow: hidden; | |
| white-space: nowrap; | |
| animation: typing 1.5s steps(30, end), fadeIn 0.5s ease; | |
| max-width: 100%; | |
| display: inline-block; | |
| } | |
| @keyframes typing { | |
| from { | |
| max-width: 0 | |
| } | |
| to { | |
| max-width: 100% | |
| } | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0 | |
| } | |
| to { | |
| opacity: 1 | |
| } | |
| } | |
| /* Consistent spacing utilities */ | |
| .spacing-standard { | |
| margin-bottom: 2rem; | |
| } | |
| .spacing-large { | |
| margin-bottom: 3rem; | |
| } | |
| .card { | |
| transition: all 0.3s ease; | |
| background: var(--card-bg); | |
| border: 1px solid var(--border-color); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| /* Enhanced Button Styles */ | |
| .btn-primary { | |
| background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); | |
| color: white; | |
| font-weight: 600; | |
| transition: all 0.3s ease; | |
| border: none; | |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); | |
| filter: brightness(1.1); | |
| } | |
| .btn-secondary { | |
| background: var(--card-bg); | |
| color: var(--text-primary); | |
| border: 1px solid var(--border-color); | |
| font-weight: 500; | |
| transition: all 0.3s ease; | |
| } | |
| .btn-secondary:hover { | |
| background: var(--bg-secondary); | |
| transform: translateY(-1px); | |
| } | |
| /* Tab active state improvements */ | |
| .tab-active { | |
| color: var(--accent-primary) ; | |
| border-bottom: 2px solid var(--accent-primary) ; | |
| background: rgba(var(--accent-primary-rgb), 0.1); | |
| } | |
| .cloud-tab-active { | |
| color: var(--accent-primary) ; | |
| border-bottom: 2px solid var(--accent-primary) ; | |
| background: rgba(var(--accent-primary-rgb), 0.1); | |
| } | |
| .loader { | |
| border-top-color: var(--accent-primary); | |
| animation: spinner 1.5s linear infinite; | |
| } | |
| @keyframes spinner { | |
| 0% { | |
| transform: rotate(0deg); | |
| } | |
| 100% { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| .face-analysis-animation canvas { | |
| border: 2px solid var(--border-color); | |
| max-width: 100%; | |
| } | |
| .tab-active { | |
| border-bottom: 2px solid var(--accent-primary); | |
| color: var(--accent-primary); | |
| } | |
| .btn-primary { | |
| background-color: var(--accent-primary); | |
| color: white; | |
| transition: all 0.2s; | |
| } | |
| .btn-primary:hover { | |
| background-color: var(--accent-secondary); | |
| transform: translateY(-1px); | |
| } | |
| /* Face analysis animation styles */ | |
| #face-animation-container { | |
| position: relative; | |
| transition: all 0.3s ease; | |
| } | |
| .gradient-overlay { | |
| background: linear-gradient(90deg, | |
| rgba(var(--accent-primary-rgb, 59, 130, 246), 0.5), | |
| rgba(var(--accent-secondary-rgb, 37, 99, 235), 0.2)); | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: 10; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| #face-animation-container:hover .gradient-overlay { | |
| opacity: 1; | |
| } | |
| /* RESULTS-FOCUSED ALERT SYSTEM */ | |
| .security-alert { | |
| position: fixed; | |
| top: 180px; | |
| right: 20px; | |
| z-index: 1000; | |
| min-width: 400px; | |
| max-width: 500px; | |
| border-radius: 8px; | |
| -webkit-backdrop-filter: blur(12px); | |
| backdrop-filter: blur(12px); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); | |
| transform: translateX(100%); | |
| transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55), visibility 0.5s; | |
| border: 2px solid; | |
| overflow: hidden; | |
| visibility: hidden; | |
| } | |
| .security-alert.show { | |
| transform: translateX(0); | |
| visibility: visible; | |
| } | |
| .security-alert.threat { | |
| background: rgba(127, 29, 29, 0.95); | |
| border-color: #dc2626; | |
| } | |
| .security-alert.secure { | |
| background: rgba(20, 83, 45, 0.95); | |
| border-color: #16a34a; | |
| } | |
| .alert-header { | |
| display: flex; | |
| align-items: center; | |
| padding: 15px 20px 10px 20px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .alert-icon { | |
| width: 32px; | |
| height: 32px; | |
| margin-right: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 50%; | |
| font-size: 16px; | |
| } | |
| .threat .alert-icon { | |
| background: rgba(220, 38, 38, 0.2); | |
| } | |
| .secure .alert-icon { | |
| background: rgba(22, 163, 74, 0.2); | |
| } | |
| .alert-title { | |
| font-size: 18px; | |
| font-weight: 700; | |
| margin: 0; | |
| } | |
| .alert-body { | |
| padding: 15px 20px; | |
| } | |
| .alert-metrics { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 15px; | |
| margin-top: 15px; | |
| } | |
| .metric-item { | |
| background: rgba(0, 0, 0, 0.2); | |
| padding: 10px; | |
| border-radius: 6px; | |
| text-align: center; | |
| } | |
| .metric-label { | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| opacity: 0.8; | |
| margin-bottom: 4px; | |
| } | |
| .metric-value { | |
| font-size: 18px; | |
| font-weight: 700; | |
| font-family: monospace; | |
| } | |
| .threat-level { | |
| display: inline-block; | |
| padding: 4px 8px; | |
| border-radius: 4px; | |
| font-size: 10px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .threat-level.critical { | |
| background: #dc2626; | |
| color: white; | |
| } | |
| .threat-level.high { | |
| background: #ea580c; | |
| color: white; | |
| } | |
| .threat-level.secure { | |
| background: #16a34a; | |
| color: white; | |
| } | |
| .confidence-display { | |
| font-size: 24px; | |
| font-weight: 900; | |
| font-family: monospace; | |
| animation: confidenceGlow 2s ease-in-out; | |
| } | |
| @keyframes confidenceGlow { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.7; | |
| text-shadow: 0 0 10px currentColor; | |
| } | |
| } | |
| /* GradCAM visualization */ | |
| .heatmap-overlay { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: 5; | |
| opacity: 0.7; | |
| transition: opacity 0.3s ease; | |
| mix-blend-mode: screen; | |
| } | |
| /* Context-aware theme indicators */ | |
| .detection-mode .tab-active[id="tab-detect"] { | |
| border-bottom: 3px solid var(--accent-primary); | |
| font-weight: var(--font-weight-semibold); | |
| } | |
| .demorph-mode .tab-active[id="tab-demorph"] { | |
| border-bottom: 3px solid var(--accent-primary); | |
| font-weight: var(--font-weight-semibold); | |
| } | |
| /* Result containers */ | |
| .detection-result { | |
| transition: background-color var(--transition-normal); | |
| } | |
| /* Theme Button Styles */ | |
| .theme-btn { | |
| transition: all 0.2s ease; | |
| cursor: pointer; | |
| outline: none; | |
| } | |
| .theme-btn:hover { | |
| transform: scale(1.1); | |
| } | |
| /* Tailwind compatibility */ | |
| .text-primary { | |
| color: var(--text-primary) ; | |
| } | |
| .text-secondary { | |
| color: var(--text-secondary) ; | |
| } | |
| .bg-primary { | |
| background-color: var(--bg-primary) ; | |
| } | |
| .bg-secondary { | |
| background-color: var(--bg-secondary) ; | |
| } | |
| .border-color { | |
| border-color: var(--border-color) ; | |
| } | |
| /* Law Enforcement Panel Styles */ | |
| .le-access-panel { | |
| margin-bottom: 2rem; | |
| } | |
| .le-card { | |
| background: linear-gradient(135deg, #1e40af 0%, #7c3aed 100%); | |
| border-radius: 12px; | |
| padding: 1.5rem; | |
| color: white; | |
| } | |
| .le-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 1rem; | |
| } | |
| .le-header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .le-icon { | |
| font-size: 2rem; | |
| } | |
| .le-title { | |
| margin: 0; | |
| font-size: 1.25rem; | |
| } | |
| .le-badge { | |
| background: rgba(255, 255, 255, 0.2); | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| } | |
| .le-desc { | |
| margin: 0 0 1rem 0; | |
| opacity: 0.9; | |
| } | |
| .le-features { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 0.5rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .le-feature { | |
| background: rgba(255, 255, 255, 0.1); | |
| padding: 0.5rem; | |
| border-radius: 6px; | |
| text-align: center; | |
| font-size: 0.85rem; | |
| } | |
| .le-access-btn { | |
| display: block; | |
| background: rgba(255, 255, 255, 0.2); | |
| color: white; | |
| text-decoration: none; | |
| padding: 0.75rem; | |
| border-radius: 8px; | |
| text-align: center; | |
| font-weight: 600; | |
| transition: all 0.3s; | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| } | |
| .le-access-btn:hover { | |
| background: rgba(255, 255, 255, 0.3); | |
| } |