/* NETRA Dark Cyber Theme Override — matches home.html aesthetic */ @import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;500;600;700&family=Inter:wght@300;400;500;600&display=swap'); :root { --bg: #050d1a; --bg2: #091526; --card: rgba(10,25,50,0.7); --cyan: #00d4ff; --cyan2: #0ea5e9; --purple: #7c3aed; --ok: #22c55e; --warn: #f59e0b; --danger: #ef4444; --info: #00d4ff; --text: #e2e8f0; --muted: #94a3b8; --line: rgba(0,212,255,0.15); --glow: rgba(0,212,255,0.25); --radius: 14px; --white: #e2e8f0; --blue-900: #e2e8f0; --blue-800: #00d4ff; --blue-700: #00d4ff; --blue-600: #0ea5e9; --blue-200: rgba(0,212,255,0.2); --blue-100: rgba(0,212,255,0.08); --blue-50: rgba(0,212,255,0.05); --orange-600: #f59e0b; --orange-500: #fbbf24; --orange-100: rgba(245,158,11,0.1); --slate-900: #e2e8f0; --slate-800: #cbd5e1; --slate-700: #94a3b8; --slate-600: #94a3b8; --slate-500: #64748b; --slate-400: #475569; --slate-300: #334155; --slate-200: #1e293b; --slate-100: rgba(10,25,50,0.5); --glass: rgba(10,25,50,0.7); --shadow-sm: 0 8px 20px rgba(0,0,0,0.3); --shadow-md: 0 16px 35px rgba(0,0,0,0.4); --shadow-lg: 0 24px 60px rgba(0,0,0,0.5); --radius-md: 14px; --radius-lg: 22px; --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Base */ body { font-family: 'Inter', system-ui, sans-serif; color: var(--text); background: var(--bg); min-height: 100vh; overflow-x: hidden; } body::before { background-image: linear-gradient(rgba(0,212,255,0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0,212,255,0.03) 1px, transparent 1px); } h1, h2, h3, h4, .nav-brand, .app-title, .hero-title, .section-title { font-family: 'Rajdhani', sans-serif; letter-spacing: 0.02em; color: var(--text); } /* Navbar */ .navbar { background: rgba(5,13,26,0.85); backdrop-filter: blur(16px); border-bottom: 1px solid var(--line); box-shadow: 0 0 30px rgba(0,0,0,0.3); } .nav-brand { color: var(--text); } .nav-link { color: var(--muted); border-color: transparent; } .nav-link:hover, .dropdown-btn:hover { color: var(--text); border-color: var(--line); background: rgba(0,212,255,0.08); } .user-greeting { color: var(--muted); } .dropdown-content { background: rgba(9,21,38,0.98); border: 1px solid var(--line); backdrop-filter: blur(16px); } .dropdown-content a { color: var(--text); } .dropdown-content a:hover { background: rgba(0,212,255,0.1); } .dropdown-btn { color: var(--muted); } /* Buttons */ .btn-primary { background: linear-gradient(135deg, var(--cyan2), var(--cyan)); color: #050d1a; box-shadow: 0 0 30px rgba(0,212,255,0.3); } .btn-primary:hover { box-shadow: 0 0 50px rgba(0,212,255,0.5); } .btn-outline { color: var(--cyan); border: 1px solid var(--cyan); background: transparent; } .btn-outline:hover { background: rgba(0,212,255,0.1); border-color: var(--cyan); } .btn-secondary { background: linear-gradient(135deg, rgba(0,212,255,0.15), rgba(14,165,233,0.2)); color: var(--cyan); border: 1px solid var(--line); box-shadow: none; } .btn-secondary:hover { background: rgba(0,212,255,0.2); box-shadow: 0 0 20px var(--glow); } .btn-danger { background: linear-gradient(135deg, #dc2626, #ef4444); box-shadow: 0 0 20px rgba(239,68,68,0.3); } .btn-success { background: linear-gradient(135deg, #16a34a, #22c55e); box-shadow: 0 0 20px rgba(34,197,94,0.3); } .btn-success:hover { box-shadow: 0 0 30px rgba(34,197,94,0.4); } .btn-danger:hover { box-shadow: 0 0 30px rgba(239,68,68,0.4); } /* Cards */ .stat-card, .feature-card, .tech-card, .info-card, .workflow-step, .model-info, .upload-section, .results-section, .dashboard-card, .models-section, .info-box, .video-section, .alerts-panel { background: var(--card); border: 1px solid var(--line); backdrop-filter: blur(12px); box-shadow: 0 0 20px rgba(0,0,0,0.2); } .stat-card:hover, .feature-card:hover, .tech-card:hover, .workflow-step:hover, .info-card:hover, .dashboard-card:hover { border-color: var(--cyan); box-shadow: 0 0 30px var(--glow), 0 8px 32px rgba(0,0,0,0.3); } .feature-card h3, .tech-card h3, .workflow-step h3, .info-card h3, .dashboard-card h2 { color: var(--text); } .feature-card p, .tech-card p, .workflow-step p, .info-card p, .dashboard-card p, .model-list li, .feature-list li, .info-box li { color: var(--muted); } /* Auth */ .auth-box { background: var(--card); border: 1px solid var(--line); backdrop-filter: blur(16px); box-shadow: 0 0 60px rgba(0,212,255,0.1); } .app-title { color: var(--cyan); } .app-subtitle { color: var(--muted); } .tab-buttons { background: rgba(0,212,255,0.06); border: 1px solid var(--line); } .tab-btn { color: var(--muted); background: transparent; } .tab-btn.active { background: rgba(0,212,255,0.12); color: var(--cyan); box-shadow: 0 0 20px var(--glow); } .form-group label { color: var(--text); } .form-group input { background: rgba(5,13,26,0.6); border: 1px solid var(--line); color: var(--text); } .form-group input:focus { border-color: var(--cyan); box-shadow: 0 0 0 4px rgba(0,212,255,0.15); } .form-group input::placeholder { color: var(--muted); } .message.success { color: var(--ok); background: rgba(34,197,94,0.1); border: 1px solid rgba(34,197,94,0.3); } .message.error { color: var(--danger); background: rgba(239,68,68,0.1); border: 1px solid rgba(239,68,68,0.3); } .back-link a { color: var(--cyan); } .back-link a:hover { color: var(--text); } /* Dashboard */ .dashboard-header h1 { color: var(--text); } .dashboard-header p { color: var(--muted); } .card-icon { color: var(--cyan); } .stat-number { background: linear-gradient(135deg, var(--text), var(--cyan)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .model-badge { background: rgba(0,212,255,0.12); border: 1px solid var(--line); color: var(--cyan); } /* Page header */ .page-header h1 { color: var(--text); } .page-header p { color: var(--muted); } .alerts-panel h2, .stats-container h3, .info-box h3 { color: var(--text); } /* Status chips */ .status-chip.ok { background: rgba(34,197,94,0.1); color: var(--ok); border: 1px solid rgba(34,197,94,0.3); } .status-chip.warn { background: rgba(245,158,11,0.1); color: var(--warn); border: 1px solid rgba(245,158,11,0.3); } .status-chip.danger { background: rgba(239,68,68,0.1); color: var(--danger); border: 1px solid rgba(239,68,68,0.3); } .status-chip.info { background: rgba(0,212,255,0.1); color: var(--cyan); border: 1px solid rgba(0,212,255,0.3); } /* Video section */ .video-container { border-color: var(--line); background: #030a14; } .alert-item { background: rgba(245,158,11,0.08); border: 1px solid rgba(245,158,11,0.2); color: var(--text); } .alert-item.high { background: rgba(239,68,68,0.08); border-color: rgba(239,68,68,0.3); } .alert-placeholder { color: var(--muted); } /* Upload */ .upload-box { border: 2px dashed var(--line); background: rgba(5,13,26,0.4); color: var(--muted); } .upload-box:hover { border-color: var(--cyan); background: rgba(0,212,255,0.04); } .file-info { border: 1px solid var(--line); background: rgba(10,25,50,0.5); color: var(--text); } .progress-bar { background: rgba(0,212,255,0.1); } .progress-fill { background: linear-gradient(90deg, var(--cyan2), var(--cyan)); } #progress-text { color: var(--muted); } .summary-card { border: 1px solid var(--line); background: var(--card); color: var(--text); } .summary-card.alert { background: rgba(245,158,11,0.08); } .summary-value { color: var(--cyan); } /* Detection items */ .detection-item { border: 1px solid var(--line); background: var(--card); color: var(--text); } /* Toast */ .toast { background: rgba(10,25,50,0.95); border: 1px solid var(--line); color: var(--text); backdrop-filter: blur(8px); } .toast.success { border-left: 4px solid var(--ok); } .toast.success::before { color: var(--ok); } .toast.error { border-left: 4px solid var(--danger); } .toast.error::before { color: var(--danger); } .toast.warning { border-left: 4px solid var(--warn); } .toast.warning::before { color: var(--warn); } .toast.info { border-left: 4px solid var(--cyan); } .toast.info::before { color: var(--cyan); } /* Modal */ .modal-overlay { background: rgba(5,13,26,0.7); } .modal, .modal-content { background: var(--bg2); border: 1px solid var(--line); color: var(--text); } .modal-header { border-bottom-color: var(--line); } .modal-title { color: var(--text); } .modal-close { color: var(--muted); } .modal-close:hover { color: var(--cyan); background: rgba(0,212,255,0.1); } .modal-footer { border-top-color: var(--line); } /* Spinner */ .spinner { border-color: rgba(0,212,255,0.2); border-top-color: var(--cyan); } /* Framewise cards */ .framewise-card { border-color: var(--line); background: var(--card); color: var(--text); } .framewise-card.critical { background: rgba(239,68,68,0.08); } /* Badge */ .badge { background: rgba(0,212,255,0.1); color: var(--cyan); } .badge.safe, .badge.low { background: rgba(34,197,94,0.1); color: var(--ok); } .badge.medium, .badge.high { background: rgba(245,158,11,0.1); color: var(--warn); } .badge.critical { background: rgba(239,68,68,0.15); color: var(--danger); } /* Model selection panel */ .model-selection-panel { background: var(--card); border: 1px solid var(--line); } .panel-header { background: rgba(0,212,255,0.05); border-bottom-color: var(--line); } .panel-header:hover { background: rgba(0,212,255,0.1); } .panel-title { color: var(--cyan); } .toggle-icon { color: var(--muted); } .panel-content.open { border-top-color: var(--line); } .model-card { border-color: var(--line); background: var(--card); } .model-card:hover { border-color: var(--cyan); box-shadow: 0 0 20px var(--glow); } .model-checkbox { accent-color: var(--cyan); } .checkbox-content strong { color: var(--text); } .checkbox-content p { color: var(--muted); } /* CTA Section */ .cta-section { background: linear-gradient(135deg, rgba(0,212,255,0.06), rgba(124,58,237,0.06)); border-top: 1px solid var(--line); } .cta-section h2 { color: var(--text); } .cta-section p { color: var(--muted); } .cta-section .btn-primary { background: linear-gradient(135deg, var(--cyan2), var(--cyan)); color: #050d1a; } /* Footer */ .footer { background: #030a14; border-top: 1px solid var(--line); } /* Section alt */ .section-alt { background: var(--bg2); } /* Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: var(--bg); } ::-webkit-scrollbar-thumb { background: rgba(0,212,255,0.2); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(0,212,255,0.4); } /* Selection */ ::selection { background: rgba(0,212,255,0.3); color: var(--text); } /* Live camera inline styles override */ .model-checkbox-label { background: var(--card); border-color: var(--line); color: var(--text); } .model-checkbox-label:hover { background: rgba(0,212,255,0.08); border-color: var(--cyan); } /* Storage drawer dark */ .storage-drawer, .sd-session-card { background: var(--bg2) !important; color: var(--text); } .sd-header { border-bottom-color: var(--line); } .sd-title { color: var(--text) !important; } .sd-close { background: rgba(0,212,255,0.1); color: var(--muted); } .sd-close:hover { background: rgba(0,212,255,0.2); color: var(--text); } .sd-stat { background: rgba(0,212,255,0.06); color: var(--muted); } .sd-stat strong { color: var(--text); } .sd-tab { color: var(--muted); } .sd-tab.active { color: var(--cyan); border-color: var(--cyan); } .sd-tab:hover { color: var(--text); } .sd-session-card { border-color: var(--line); } .sd-session-name { color: var(--text) !important; } .sd-session-meta { color: var(--muted) !important; } .sd-btn { background: var(--card); border-color: var(--line); color: var(--muted); } .sd-btn:hover { background: rgba(0,212,255,0.1); } .sd-btn.primary { background: var(--cyan); color: #050d1a; border-color: var(--cyan); } .sd-recording-item { border-bottom-color: var(--line); } .sd-rec-icon { background: rgba(0,212,255,0.1); } .sd-rec-name { color: var(--text); } .sd-rec-meta { color: var(--muted); } .sd-icon-btn { background: var(--card); border-color: var(--line); color: var(--muted); } .sd-icon-btn:hover { background: rgba(0,212,255,0.1); } .sd-empty { color: var(--muted); } #sd-inline-player { background: #030a14; } /* Camera select */ #camera-select { background: var(--card) !important; color: var(--text) !important; border-color: var(--line) !important; } /* Stats inline overrides for dashboard */ .stats-container { background: rgba(0,212,255,0.05); border: 1px solid var(--line); } /* Video analysis dark overrides */ #realtime-panel { background: var(--card) !important; border-color: var(--line) !important; } .rt-spinner { border-color: rgba(0,212,255,0.2) !important; border-top-color: var(--cyan) !important; } .rt-progress-wrap { background: rgba(0,212,255,0.08) !important; } .rt-progress-fill { background: linear-gradient(90deg, var(--cyan2), var(--cyan)) !important; } .rt-stat { background: rgba(0,212,255,0.05) !important; border-color: var(--line) !important; } .rt-stat-val { color: var(--cyan) !important; } .rt-stat-lbl { color: var(--muted) !important; } #live-alerts-feed { background: rgba(5,13,26,0.5) !important; border-color: var(--line) !important; } .feed-item.critical { background: rgba(239,68,68,0.08) !important; border-left-color: var(--danger) !important; } .feed-item.high { background: rgba(245,158,11,0.08) !important; border-left-color: var(--warn) !important; } .feed-item.medium { background: rgba(0,212,255,0.05) !important; border-left-color: var(--cyan) !important; } .feed-item.low { background: rgba(34,197,94,0.05) !important; border-left-color: var(--ok) !important; } .processing-video-panel { background: var(--card) !important; border-color: var(--line) !important; } .processing-video-info { background: rgba(0,212,255,0.05) !important; border-top-color: var(--line) !important; color: var(--muted) !important; } .processing-spinner { border-color: rgba(0,212,255,0.2) !important; border-top-color: var(--cyan) !important; } .processing-bar { background: linear-gradient(90deg, var(--cyan2), var(--cyan)) !important; } .res-card { background: var(--card) !important; border-color: var(--line) !important; color: var(--text) !important; } .res-card.danger { background: rgba(239,68,68,0.06) !important; border-color: rgba(239,68,68,0.25) !important; } .res-card.warn { background: rgba(245,158,11,0.06) !important; border-color: rgba(245,158,11,0.25) !important; } .res-val { color: var(--cyan) !important; } .res-card.danger .res-val { color: var(--danger) !important; } .res-card.warn .res-val { color: var(--warn) !important; } .res-lbl { color: var(--muted) !important; } .history-item { background: var(--card) !important; border-color: var(--line) !important; } .history-item:hover { border-color: var(--cyan) !important; } .det-record { background: var(--card) !important; border-color: var(--line) !important; } .hbadge { background: rgba(0,212,255,0.1) !important; color: var(--cyan) !important; } .hbadge.red { background: rgba(239,68,68,0.1) !important; color: var(--danger) !important; } .insight-card { background: rgba(0,212,255,0.04) !important; border-color: var(--line) !important; } .insight-card:hover { border-color: var(--cyan) !important; box-shadow: 0 0 30px var(--glow) !important; } .insight-card::before { background: linear-gradient(135deg, rgba(0,212,255,0.05), transparent) !important; } .insight-card.alert { background: rgba(239,68,68,0.06) !important; border-color: rgba(239,68,68,0.25) !important; } .insight-card.alert:hover { border-color: var(--danger) !important; box-shadow: 0 0 20px rgba(239,68,68,0.2) !important; } .insight-card.warning { background: rgba(245,158,11,0.06) !important; border-color: rgba(245,158,11,0.25) !important; } .insight-card.warning:hover { border-color: var(--warn) !important; box-shadow: 0 0 20px rgba(245,158,11,0.2) !important; } .insight-label { color: var(--muted) !important; } .insight-value { color: var(--cyan) !important; } .insight-card.alert .insight-value { color: var(--danger) !important; } .insight-card.warning .insight-value { color: var(--warn) !important; } .insight-desc { color: var(--muted) !important; } /* Detections table headings */ .detections-table h3 { color: var(--text); } /* Select dropdown */ select { background: var(--card) !important; color: var(--text) !important; border-color: var(--line) !important; } select option { background: var(--bg2); color: var(--text); }