:root{--bg-primary:#0a0e1a;--bg-secondary:#111827;--bg-card:#1a1f35;--bg-card-hover:#1f2545;--bg-elevated:#232a42;--bg-input:#0d1220;--border:#2a3150;--border-light:#1e2540;--border-glow:#3b82f64d;--accent:#3b82f6;--accent-bright:#60a5fa;--accent-glow:#3b82f626;--success:#10b981;--success-dim:#10b98126;--success-glow:#10b98140;--warning:#f59e0b;--warning-dim:#f59e0b26;--warning-glow:#f59e0b40;--danger:#ef4444;--danger-dim:#ef444426;--danger-glow:#ef444440;--info:#8b5cf6;--info-dim:#8b5cf626;--cyan:#06b6d4;--cyan-dim:#06b6d426;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--text-dim:#475569;--radius:12px;--radius-sm:8px;--shadow-card:0 4px 24px #0006,0 0 0 1px var(--border);--shadow-glow-blue:0 0 20px #3b82f626;--shadow-glow-green:0 0 20px #10b9811f;--shadow-glow-red:0 0 20px #ef44441f;--transition:all 0.25s cubic-bezier(0.4,0,0.2,1)}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0e1a;background:var(--bg-primary);color:#f1f5f9;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;line-height:1.6}.app-header{background:#111827;background:var(--bg-secondary);border-bottom:1px solid #2a3150;border-bottom:1px solid var(--border);box-shadow:0 2px 12px #0006;height:60px;justify-content:space-between;padding:0 28px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.app-header,.header-left .logo{align-items:center;display:flex}.header-left .logo{gap:12px}.header-left h1{color:#f1f5f9;color:var(--text-primary);font-size:16px;font-weight:700;letter-spacing:-.3px}.header-left .subtitle{color:#64748b;color:var(--text-muted);font-size:10px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase}.header-right{gap:16px}.header-right,.mode-toggle{align-items:center;display:flex}.mode-toggle{gap:8px}.mode-label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase}.toggle-buttons{background:#0a0e1a;background:var(--bg-primary);border:1px solid #2a3150;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);display:flex;padding:2px}.toggle-btn{align-items:center;background:#0000;border:none;border-radius:6px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;font-size:12px;font-weight:500;gap:6px;padding:6px 14px;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.toggle-btn.active{background:#3b82f6;background:var(--accent);box-shadow:0 0 12px #3b82f666;color:#fff}.toggle-btn:hover:not(.active){background:#1a1f35;background:var(--bg-card);color:#94a3b8;color:var(--text-secondary)}.status-badge{align-items:center;background:#10b98126;background:var(--success-dim);border:1px solid #10b98133;border-radius:20px;color:#10b981;color:var(--success);display:flex;font-size:11px;font-weight:600;gap:6px;letter-spacing:.5px;padding:5px 14px;text-transform:uppercase}.status-dot{animation:pulse-glow 2s ease-in-out infinite;background:#10b981;background:var(--success);border-radius:50%;box-shadow:0 0 8px #10b981;box-shadow:0 0 8px var(--success);height:7px;width:7px}@keyframes pulse-glow{0%,to{box-shadow:0 0 8px #10b981;box-shadow:0 0 8px var(--success);opacity:1}50%{box-shadow:0 0 4px #10b981;box-shadow:0 0 4px var(--success);opacity:.5}}.header-clock{font-feature-settings:"tnum";background:#0a0e1a;background:var(--bg-primary);border:1px solid #2a3150;border:1px solid var(--border);border-radius:6px;color:#94a3b8;color:var(--text-secondary);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:13px;font-variant-numeric:tabular-nums;font-weight:600;padding:5px 12px}.main-content{display:flex;flex-direction:column;gap:20px;margin:0 auto;max-width:1400px;padding:20px 28px}.card{background:#1a1f35;background:var(--bg-card);border:1px solid #2a3150;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 4px 24px #0006,0 0 0 1px #2a3150;box-shadow:var(--shadow-card);padding:20px;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.card:hover{border-color:#3b82f64d;border-color:var(--border-glow)}.card-header{justify-content:space-between;margin-bottom:16px}.card-header,.card-title{align-items:center;display:flex}.card-title{color:#94a3b8;color:var(--text-secondary);font-size:13px;font-weight:600;gap:8px;letter-spacing:.8px;margin-bottom:0;text-transform:uppercase}.card-title svg{color:#3b82f6;color:var(--accent)}.section-title{align-items:center;color:#94a3b8;color:var(--text-secondary);display:flex;font-size:14px;font-weight:600;gap:8px;letter-spacing:.8px;margin-bottom:6px;text-transform:uppercase}.section-title svg{color:#3b82f6;color:var(--accent)}.section-desc{color:#64748b;color:var(--text-muted);font-size:13px;margin-bottom:16px}.stats-bar{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr)}.stat-card{align-items:center;background:#1a1f35;background:var(--bg-card);border:1px solid #2a3150;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);display:flex;gap:14px;padding:16px 20px;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.stat-card:hover{border-color:#3b82f64d;border-color:var(--border-glow);box-shadow:0 0 20px #3b82f626;box-shadow:var(--shadow-glow-blue)}.stat-card-icon{align-items:center;border-radius:10px;display:flex;flex-shrink:0;height:44px;justify-content:center;width:44px}.stat-card-icon.blue{background:#3b82f626;background:var(--accent-glow);color:#60a5fa;color:var(--accent-bright)}.stat-card-icon.green{background:#10b98126;background:var(--success-dim);color:#10b981;color:var(--success)}.stat-card-icon.red{background:#ef444426;background:var(--danger-dim);color:#ef4444;color:var(--danger)}.stat-card-icon.purple{background:#8b5cf626;background:var(--info-dim);color:#8b5cf6;color:var(--info)}.stat-card-data{flex:1 1;min-width:0}.stat-card-value{font-feature-settings:"tnum";color:#f1f5f9;color:var(--text-primary);font-size:24px;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.stat-card-label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:500;letter-spacing:.6px;margin-top:2px;text-transform:uppercase}.analysis-tabs{background:#111827;background:var(--bg-secondary);border:1px solid #2a3150;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);display:flex;gap:2px;padding:3px;width:-webkit-fit-content;width:fit-content}.analysis-tab{align-items:center;background:#0000;border:none;border-radius:6px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:8px;letter-spacing:.3px;padding:10px 24px;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.analysis-tab.active{background:#3b82f6;background:var(--accent);box-shadow:0 0 16px #3b82f64d;color:#fff}.analysis-tab:hover:not(.active){background:#1a1f35;background:var(--bg-card);color:#94a3b8;color:var(--text-secondary)}.upload-container{background:#1a1f35;background:var(--bg-card);border:1px solid #2a3150;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 4px 24px #0006,0 0 0 1px #2a3150;box-shadow:var(--shadow-card);padding:24px}.dropzone{background:#0d1220;background:var(--bg-input);border:2px dashed #2a3150;border:2px dashed var(--border);border-radius:12px;border-radius:var(--radius);cursor:pointer;padding:48px 24px;text-align:center;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.dropzone:hover{border-color:#3b82f6;border-color:var(--accent)}.dropzone.drag-active,.dropzone:hover{background:#3b82f626;background:var(--accent-glow)}.dropzone.drag-active{border-color:#60a5fa;border-color:var(--accent-bright);box-shadow:inset 0 0 30px #3b82f61a}.dropzone.processing{background:#3b82f626;background:var(--accent-glow);border-color:#3b82f6;border-color:var(--accent);cursor:wait}.dropzone-content{color:#64748b;color:var(--text-muted)}.dropzone-content svg{color:#475569;color:var(--text-dim);margin-bottom:12px}.drop-text{color:#94a3b8;color:var(--text-secondary);font-size:15px;font-weight:600;margin-bottom:4px}.drop-sub{color:#64748b;color:var(--text-muted);font-size:12px}.preview-thumb{align-items:center;display:flex;flex-direction:column;gap:12px}.preview-thumb img{border:1px solid #2a3150;border:1px solid var(--border);border-radius:8px;max-height:120px;object-fit:contain}.preview-thumb p{color:#64748b;color:var(--text-muted);font-size:13px}.processing-indicator{align-items:center;display:flex;flex-direction:column;gap:12px}.processing-indicator p{color:#60a5fa;color:var(--accent-bright);font-size:15px;font-weight:600}.processing-sub{color:#64748b;color:var(--text-muted);font-size:12px}.spinner{animation:spin .8s linear infinite;border:3px solid #2a3150;border-top-color:#60a5fa;border:3px solid var(--border);border-radius:50%;border-top-color:var(--accent-bright);height:40px;width:40px}@keyframes spin{to{transform:rotate(1turn)}}.upload-error{align-items:center;background:#ef444426;background:var(--danger-dim);border:1px solid #ef444433;border-radius:8px;border-radius:var(--radius-sm);color:#ef4444;color:var(--danger);display:flex;font-size:13px;font-weight:500;gap:8px;margin-top:12px;padding:10px 14px}.results-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 400px}.results-left{min-width:0}.results-right{display:flex;flex-direction:column;gap:20px}.annotated-image-container{background:#000;border:1px solid #2a3150;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);margin-bottom:16px;overflow:hidden;position:relative}.annotated-image-container:before{background:#000000b3;border:1px solid #3b82f64d;border-radius:4px;color:#60a5fa;color:var(--accent-bright);content:"AI DETECTION OUTPUT";font-size:9px;font-weight:700;left:10px;letter-spacing:1.5px;padding:3px 8px;position:absolute;top:8px;z-index:1}.annotated-image{display:block;width:100%}.processing-time{font-feature-settings:"tnum";background:#06b6d426;background:var(--cyan-dim);border:1px solid #06b6d433;border-radius:4px;color:#06b6d4;color:var(--cyan);font-family:SF Mono,Fira Code,monospace;font-size:11px;font-variant-numeric:tabular-nums;font-weight:600;padding:3px 10px}.detection-summary{margin-bottom:16px}.detection-summary h4{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.8px;margin-bottom:8px;text-transform:uppercase}.object-tags{display:flex;flex-wrap:wrap;gap:6px}.object-tag{border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.3px;padding:4px 10px}.tag-primary{background:#3b82f626;background:var(--accent-glow);border:1px solid #3b82f633;color:#60a5fa;color:var(--accent-bright)}.tag-success{background:#10b98126;background:var(--success-dim);border:1px solid #10b98133;color:#10b981;color:var(--success)}.tag-danger{background:#ef444426;background:var(--danger-dim);border:1px solid #ef444433;color:#ef4444;color:var(--danger)}.tag-info{background:#8b5cf626;background:var(--info-dim);border:1px solid #8b5cf633;color:#8b5cf6;color:var(--info)}.detection-table{overflow-x:auto}.detection-table table{border-collapse:collapse;font-size:12px;width:100%}.detection-table th{border-bottom:1px solid #2a3150;border-bottom:1px solid var(--border);color:#64748b;color:var(--text-muted);font-size:10px;font-weight:600;letter-spacing:1px;padding:8px 12px;text-align:left;text-transform:uppercase}.detection-table td{font-feature-settings:"tnum";border-bottom:1px solid #1e2540;border-bottom:1px solid var(--border-light);color:#94a3b8;color:var(--text-secondary);font-variant-numeric:tabular-nums;padding:8px 12px}.detection-table tr:hover td{background:#3b82f60a}.status-chip{border-radius:4px;display:inline-block;font-size:10px;font-weight:700;letter-spacing:.5px;padding:2px 8px;text-transform:uppercase}.status-compliant{background:#10b98126;background:var(--success-dim);border:1px solid #10b98126;color:#10b981;color:var(--success)}.status-non-compliant{background:#ef444426;background:var(--danger-dim);border:1px solid #ef444426;color:#ef4444;color:var(--danger)}.status-warning{background:#f59e0b26;background:var(--warning-dim);border:1px solid #f59e0b26;color:#f59e0b;color:var(--warning)}.status-info{background:#8b5cf626;background:var(--info-dim);border:1px solid #8b5cf626;color:#8b5cf6;color:var(--info)}.score-ring-container{display:flex;justify-content:center;padding:8px 0}.score-ring-progress{transition:stroke-dashoffset 1.2s cubic-bezier(.4,0,.2,1)}.score-ring-progress.score-good{stroke:#10b981;stroke:var(--success);filter:drop-shadow(0 0 6px rgba(16,185,129,.25));filter:drop-shadow(0 0 6px var(--success-glow))}.score-ring-progress.score-warning{stroke:#f59e0b;stroke:var(--warning);filter:drop-shadow(0 0 6px rgba(245,158,11,.25));filter:drop-shadow(0 0 6px var(--warning-glow))}.score-ring-progress.score-critical{stroke:#ef4444;stroke:var(--danger);filter:drop-shadow(0 0 6px rgba(239,68,68,.25));filter:drop-shadow(0 0 6px var(--danger-glow))}.score-value{fill:#f1f5f9;fill:var(--text-primary);font-feature-settings:"tnum";font-size:28px;font-variant-numeric:tabular-nums;font-weight:800}.score-label{fill:#64748b;fill:var(--text-muted);font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.summary-stats{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(4,1fr);margin-top:14px}.stat-item{background:#0d1220;background:var(--bg-input);border:1px solid #1e2540;border:1px solid var(--border-light);border-radius:8px;border-radius:var(--radius-sm);padding:10px 4px;text-align:center}.stat-value{font-feature-settings:"tnum";color:#f1f5f9;color:var(--text-primary);display:block;font-size:20px;font-variant-numeric:tabular-nums;font-weight:700}.stat-label{color:#64748b;color:var(--text-muted);display:block;font-size:10px;font-weight:600;letter-spacing:.5px;margin-top:2px;text-transform:uppercase}.stat-good .stat-value{color:#10b981;color:var(--success)}.stat-bad .stat-value{color:#ef4444;color:var(--danger)}.export-btn{align-items:center;background:#0d1220;background:var(--bg-input);border:1px solid #2a3150;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-muted);display:flex;font-size:12px;font-weight:600;gap:6px;justify-content:center;letter-spacing:.5px;margin-top:14px;padding:10px;text-decoration:none;text-transform:uppercase;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.export-btn:hover{background:#3b82f626;background:var(--accent-glow);border-color:#3b82f6;border-color:var(--accent);box-shadow:0 0 20px #3b82f626;box-shadow:var(--shadow-glow-blue);color:#60a5fa;color:var(--accent-bright)}.alert-counts{display:flex;gap:6px}.alert-count{border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px;padding:3px 8px}.alert-count.critical{background:#ef444426;background:var(--danger-dim);border:1px solid #ef444433;color:#ef4444;color:var(--danger)}.alert-count.warning{background:#f59e0b26;background:var(--warning-dim);border:1px solid #f59e0b33;color:#f59e0b;color:var(--warning)}.no-alerts{color:#64748b;color:var(--text-muted);padding:24px;text-align:center}.no-alerts svg{filter:drop-shadow(0 0 8px rgba(16,185,129,.25));filter:drop-shadow(0 0 8px var(--success-glow));margin-bottom:8px}.no-alerts p{color:#10b981;color:var(--success);font-size:13px;font-weight:600}.alerts-list{display:flex;flex-direction:column;gap:8px}.alert-item{border-left:3px solid;border-radius:8px;border-radius:var(--radius-sm);display:flex;gap:12px;padding:12px;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.alert-item:hover{transform:translateX(2px)}.alert-critical{background:#ef444426;background:var(--danger-dim);border-left-color:#ef4444;border-left-color:var(--danger)}.alert-warning{background:#f59e0b26;background:var(--warning-dim);border-left-color:#f59e0b;border-left-color:var(--warning)}.alert-info{background:#3b82f626;background:var(--accent-glow);border-left-color:#3b82f6;border-left-color:var(--accent)}.alert-icon{flex-shrink:0;margin-top:2px}.alert-critical .alert-icon{color:#ef4444;color:var(--danger);filter:drop-shadow(0 0 4px rgba(239,68,68,.25));filter:drop-shadow(0 0 4px var(--danger-glow))}.alert-warning .alert-icon{color:#f59e0b;color:var(--warning);filter:drop-shadow(0 0 4px rgba(245,158,11,.25));filter:drop-shadow(0 0 4px var(--warning-glow))}.alert-info .alert-icon{color:#3b82f6;color:var(--accent)}.alert-content{flex:1 1;min-width:0}.alert-badge{border-radius:3px;display:inline-block;font-size:9px;font-weight:800;letter-spacing:1px;margin-bottom:4px;padding:2px 6px}.alert-critical .alert-badge{background:#ef4444;background:var(--danger);box-shadow:0 0 8px #ef444440;box-shadow:0 0 8px var(--danger-glow);color:#fff}.alert-warning .alert-badge{background:#f59e0b;background:var(--warning);color:#1a1a1a}.alert-info .alert-badge{background:#3b82f6;background:var(--accent);color:#fff}.alert-message{color:#94a3b8;color:var(--text-secondary);font-size:12px;font-weight:500;line-height:1.4;margin-bottom:2px}.alert-rule{color:#475569;color:var(--text-dim);font-family:SF Mono,Fira Code,monospace;font-size:10px}.history-table-wrapper{overflow-x:auto}.history-table{border-collapse:collapse;font-size:12px;width:100%}.history-table th{border-bottom:1px solid #2a3150;border-bottom:1px solid var(--border);color:#64748b;color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:1px;padding:10px 14px;text-align:left;text-transform:uppercase}.history-table td{font-feature-settings:"tnum";border-bottom:1px solid #1e2540;border-bottom:1px solid var(--border-light);color:#94a3b8;color:var(--text-secondary);font-variant-numeric:tabular-nums;padding:10px 14px}.history-table tr:hover td{background:#3b82f60a}.file-cell{color:#f1f5f9;color:var(--text-primary);font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-badge{font-feature-settings:"tnum";border-radius:4px;display:inline-block;font-size:11px;font-variant-numeric:tabular-nums;font-weight:700;padding:3px 10px}.score-badge.score-good{background:#10b98126;background:var(--success-dim);color:#10b981;color:var(--success)}.score-badge.score-warning{background:#f59e0b26;background:var(--warning-dim);color:#f59e0b;color:var(--warning)}.score-badge.score-critical{background:#ef444426;background:var(--danger-dim);color:#ef4444;color:var(--danger)}.violation-count{color:#ef4444;color:var(--danger);font-weight:700}.no-violations{color:#10b981;color:var(--success);font-weight:600}.time-cell{color:#475569;color:var(--text-dim);font-family:SF Mono,Fira Code,monospace;font-size:11px;white-space:nowrap}.history-empty{color:#64748b;color:var(--text-muted);font-size:13px;padding:32px;text-align:center}.video-results{display:flex;flex-direction:column;gap:20px}.video-stats-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}.video-stat{background:#0d1220;background:var(--bg-input);border:1px solid #1e2540;border:1px solid var(--border-light);border-radius:8px;border-radius:var(--radius-sm);padding:14px 8px;text-align:center}.video-stat-value{font-feature-settings:"tnum";color:#f1f5f9;color:var(--text-primary);display:block;font-size:22px;font-variant-numeric:tabular-nums;font-weight:700}.video-stat-label{color:#64748b;color:var(--text-muted);display:block;font-size:10px;font-weight:600;letter-spacing:.5px;margin-top:4px;text-transform:uppercase}.text-success{color:#10b981!important;color:var(--success)!important}.text-warning{color:#f59e0b!important;color:var(--warning)!important}.text-danger{color:#ef4444!important;color:var(--danger)!important}.timeline-chart{align-items:flex-end;border-bottom:1px solid #2a3150;border-bottom:1px solid var(--border);display:flex;gap:3px;height:120px;padding:10px 0}.timeline-bar-wrapper{align-items:center;border-radius:4px;cursor:pointer;display:flex;flex:1 1;flex-direction:column;gap:6px;padding:4px 0;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.timeline-bar-wrapper:hover{background:#3b82f60f}.timeline-bar-wrapper.selected{background:#3b82f626;background:var(--accent-glow)}.timeline-bar{border-radius:3px 3px 0 0;max-width:40px;min-width:6px;transition:height .3s;width:100%}.timeline-label{font-family:SF Mono,Fira Code,monospace;font-size:9px;font-weight:600}.timeline-label,.timeline-legend{color:#475569;color:var(--text-dim)}.timeline-legend{font-size:11px;padding-top:8px;text-align:center}.frame-nav-btn{background:#0d1220;background:var(--bg-input);border:1px solid #2a3150;border:1px solid var(--border);border-radius:6px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.5px;padding:5px 14px;text-transform:uppercase;transition:all .25s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.frame-nav-btn:hover:not(:disabled){background:#3b82f626;background:var(--accent-glow);border-color:#3b82f6;border-color:var(--accent);color:#60a5fa;color:var(--accent-bright)}.frame-nav-btn:disabled{cursor:not-allowed;opacity:.3}.frame-counter{align-items:center;color:#64748b;color:var(--text-muted);display:flex;font-family:SF Mono,Fira Code,monospace;font-size:12px;font-weight:600;padding:0 4px}.frame-detail-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(4,1fr);margin-top:12px}.frame-detail-item{background:#0d1220;background:var(--bg-input);border:1px solid #1e2540;border:1px solid var(--border-light);border-radius:8px;border-radius:var(--radius-sm);padding:10px 8px;text-align:center}.frame-detail-label{color:#64748b;color:var(--text-muted);display:block;font-size:10px;font-weight:600;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.frame-detail-value{font-feature-settings:"tnum";color:#f1f5f9;color:var(--text-primary);font-size:18px;font-variant-numeric:tabular-nums;font-weight:700}.progress-bar-container{background:#2a3150;background:var(--border);border-radius:2px;height:4px;margin-top:10px;overflow:hidden;width:220px}.progress-bar{background:#3b82f6;background:var(--accent);border-radius:2px;box-shadow:0 0 8px #3b82f680;height:100%;transition:width .3s}.shimmer-box{border-radius:8px;border-radius:var(--radius-sm);height:300px}.shimmer-box,.shimmer-circle{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#0d1220 25%,#1a1f35 50%,#0d1220 75%);background:linear-gradient(90deg,var(--bg-input) 25%,var(--bg-card) 50%,var(--bg-input) 75%);background-size:200% 100%}.shimmer-circle{border-radius:50%;height:120px;margin:16px auto;width:120px}.shimmer-line{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#0d1220 25%,#1a1f35 50%,#0d1220 75%);background:linear-gradient(90deg,var(--bg-input) 25%,var(--bg-card) 50%,var(--bg-input) 75%);background-size:200% 100%;border-radius:4px;height:14px;margin-bottom:10px}.shimmer-line.short{width:60%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.alert-placeholder,.history-loading,.preview-placeholder,.score-placeholder{padding:16px 0}.app-footer{border-top:1px solid #1e2540;border-top:1px solid var(--border-light);color:#475569;color:var(--text-dim);font-size:11px;letter-spacing:.3px;margin-top:8px;padding:20px;text-align:center}.app-footer a{color:#3b82f6;color:var(--accent);text-decoration:none}.live-stream-container{display:flex;flex-direction:column;gap:20px}.stream-input-section{padding:24px}.stream-desc{color:#475569;color:var(--text-dim);font-size:13px;margin:4px 0 16px}.stream-input-row{align-items:stretch;display:flex;gap:12px}.stream-url-field{align-items:center;display:flex;flex:1 1;position:relative}.stream-url-field .input-icon{color:#475569;color:var(--text-dim);left:14px;pointer-events:none;position:absolute}.stream-url-input{background:#1a1f35;background:var(--bg-card);border:1px solid #1e2540;border:1px solid var(--border-light);border-radius:8px;color:#f1f5f9;color:var(--text-primary);font-family:JetBrains Mono,SF Mono,Fira Code,monospace;font-size:14px;padding:12px 14px 12px 40px;transition:border-color .2s;width:100%}.stream-url-input:focus{border-color:#3b82f6;border-color:var(--accent);box-shadow:0 0 0 3px #3b82f626;outline:none}.stream-url-input::placeholder{color:#475569;color:var(--text-dim);opacity:.5}.stream-url-input:disabled{cursor:not-allowed;opacity:.5}.stream-btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;padding:12px 24px;transition:all .2s;white-space:nowrap}.stream-btn-start{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 0 15px #10b9814d;color:#fff}.stream-btn-start:hover:not(:disabled){box-shadow:0 0 25px #10b98180;transform:translateY(-1px)}.stream-btn-start:disabled{cursor:not-allowed;opacity:.6}.stream-btn-stop{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 0 15px #ef44444d;color:#fff}.stream-btn-stop:hover{box-shadow:0 0 25px #ef444480;transform:translateY(-1px)}.spinner-small{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}.stream-live-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1.2fr .8fr}.stream-left,.stream-right{display:flex;flex-direction:column;gap:16px}.stream-video-card{padding:16px}.stream-video-wrapper{aspect-ratio:16/9;background:#000;border-radius:6px;overflow:hidden;position:relative}.stream-video{height:100%;object-fit:contain;width:100%}.live-badge{align-items:center;background:#ef444426;border-radius:12px;color:#ef4444;display:inline-flex;font-size:11px;font-weight:700;gap:6px;letter-spacing:1px;margin-right:8px;padding:2px 10px}.live-dot{animation:pulse-live 1.5s ease-in-out infinite;background:#ef4444;border-radius:50%;height:8px;width:8px}@keyframes pulse-live{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.stream-detection-card{padding:16px}.stream-annotated-img{background:#000;border-radius:6px;overflow:hidden}.stream-annotated-img img{display:block;width:100%}.stream-score-card{padding:20px}.stream-score-display{text-align:center}.stream-score-value{font-family:JetBrains Mono,monospace;font-size:56px;font-weight:800;line-height:1;margin:12px 0}.stream-score-value.score-good{color:#10b981;text-shadow:0 0 20px #10b98166}.stream-score-value.score-warning{color:#f59e0b;text-shadow:0 0 20px #f59e0b66}.stream-score-value.score-critical{color:#ef4444;text-shadow:0 0 20px #ef444466}.stream-score-meta{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(4,1fr);margin-top:16px}.stream-stat{align-items:center;display:flex;flex-direction:column;gap:2px}.stream-stat-val{color:#f1f5f9;color:var(--text-primary);font-family:JetBrains Mono,monospace;font-size:20px;font-weight:700}.stream-stat-label{color:#475569;color:var(--text-dim);font-size:10px;letter-spacing:.5px;text-transform:uppercase}.stream-score-waiting{align-items:center;color:#475569;color:var(--text-dim);display:flex;font-size:13px;gap:10px;justify-content:center;padding:20px}.stream-timeline-card{padding:16px}.stream-chart{align-items:flex-end;display:flex;gap:3px;height:80px;padding:8px 0}.stream-chart-bar{border-radius:2px 2px 0 0;flex:1 1;min-width:0;overflow:hidden;transition:height .3s ease}.stream-chart-fill{border-radius:2px 2px 0 0;height:100%;width:100%}.stream-chart-fill.fill-good{background:linear-gradient(0deg,#059669,#10b981)}.stream-chart-fill.fill-warning{background:linear-gradient(0deg,#d97706,#f59e0b)}.stream-chart-fill.fill-critical{background:linear-gradient(0deg,#dc2626,#ef4444)}.stream-chart-labels{color:#475569;color:var(--text-dim);display:flex;font-family:JetBrains Mono,monospace;font-size:10px;justify-content:space-between}.stream-alerts-card{padding:16px}.alert-count-badge{background:#ef4444;border-radius:10px;color:#fff;font-size:11px;font-weight:700;margin-left:8px;padding:1px 7px}.stream-alerts-list{display:flex;flex-direction:column;gap:8px;max-height:250px;overflow-y:auto}.stream-no-alerts{color:#475569;color:var(--text-dim);font-size:13px;padding:20px;text-align:center}.stream-alert-item{animation:slideInAlert .3s ease;background:#1a1f35;background:var(--bg-card);border-left:3px solid #0000;border-radius:6px;display:flex;gap:10px;padding:10px 12px}@keyframes slideInAlert{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}.stream-alert-item.severity-critical{background:#ef444414;border-left-color:#ef4444}.stream-alert-item.severity-warning{background:#f59e0b14;border-left-color:#f59e0b}.stream-alert-item.severity-info{background:#3b82f614;border-left-color:#3b82f6}.stream-alert-icon{flex-shrink:0;margin-top:2px}.stream-alert-content{display:flex;flex-direction:column;gap:2px;min-width:0}.stream-alert-msg{color:#f1f5f9;color:var(--text-primary);font-size:12px;line-height:1.3}.stream-alert-meta{color:#475569;color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:10px}.stream-info-card{padding:16px}.stream-info-row{align-items:center;border-bottom:1px solid #1e2540;border-bottom:1px solid var(--border-light);color:#475569;color:var(--text-dim);display:flex;font-size:12px;justify-content:space-between;padding:8px 0}.stream-info-row:last-child{border-bottom:none}.stream-info-val{color:#f1f5f9;color:var(--text-primary);font-family:JetBrains Mono,monospace;font-weight:600}.text-green{color:#10b981!important}.text-dim{color:#475569!important;color:var(--text-dim)!important}.stream-waiting-frame{font-size:13px;gap:12px;padding:60px 20px}.stream-video-fallback,.stream-waiting-frame{align-items:center;color:#475569;color:var(--text-dim);display:flex;flex-direction:column;justify-content:center}.stream-video-fallback{gap:8px;padding:30px 20px;text-align:center}.stream-video-fallback p{color:#94a3b8;color:var(--text-secondary);font-size:13px;margin:4px 0 0}.stream-video-fallback span{color:#475569;color:var(--text-dim);font-size:11px}@media (max-width:1100px){.stats-bar{grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.results-grid{grid-template-columns:1fr}.results-right{order:-1}.main-content{padding:12px}.app-header{flex-wrap:wrap;gap:8px;height:auto;padding:10px 12px}.frame-detail-grid,.summary-stats{grid-template-columns:repeat(2,1fr)}.stats-bar{grid-template-columns:1fr 1fr}.video-stats-grid{grid-template-columns:repeat(2,1fr)}.stream-live-grid{grid-template-columns:1fr}.stream-input-row{flex-direction:column}.stream-score-meta{grid-template-columns:repeat(2,1fr)}}
/*# sourceMappingURL=main.d2546d6c.css.map*/