:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#242424;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}a{color:#2563eb;-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:#1d4ed8}body{min-width:320px;min-height:100vh;margin:0}h1{font-size:3.2em;line-height:1.1}button{cursor:pointer;background-color:#1a1a1a;border:1px solid #0000;border-radius:8px;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:border-color .25s}button:hover{border-color:#2563eb}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#3b82f6}button{background-color:#f9f9f9}}.app{max-width:1400px;min-height:100vh;margin:0 auto;padding:2rem}.app-header{color:#fff;background:linear-gradient(135deg,#1a1a1a 0%,#2d2d2d 100%);border:1px solid #404040;border-radius:8px;margin-bottom:2rem;padding:2rem;box-shadow:0 4px 6px #0000004d}.app-header .header-content{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.app-header h1{margin:0;font-size:2rem}.tabs{flex-wrap:wrap;gap:.5rem;display:flex}.tabs button{color:#fff;cursor:pointer;white-space:nowrap;background:#fff3;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:1rem;transition:all .3s}.tabs button:hover{background:#ffffff4d}.tabs button.active{color:#1a1a1a;background:#fff;font-weight:600}@media (max-width:768px){.app,.app-header{padding:1rem}.app-header .header-content{flex-direction:column;align-items:flex-start;gap:1rem}.app-header h1{font-size:1.5rem}.tabs{gap:.5rem;width:100%}.tabs button{white-space:normal;flex:1;min-width:0;padding:.75rem .25rem;font-size:.75rem;line-height:1.2}}.app-content{animation:.3s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.auth-button{cursor:pointer;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s}.auth-button.sign-in{color:#1a1a1a;background:#fff;border:2px solid #fff}.auth-button.sign-in:hover{transform:translateY(-2px);box-shadow:0 4px 12px #ffffff4d}.auth-button.sign-out{color:#fff;background:#fff3;border:1px solid #ffffff4d;padding:.5rem 1rem;font-size:.9rem}.auth-button.sign-out:hover{background:#ffffff4d}.user-info{align-items:center;gap:1rem;display:flex}.user-avatar{border:2px solid #fff;border-radius:50%;width:40px;height:40px}.user-name{color:#fff;font-weight:500}.login-container{background:linear-gradient(135deg,#1a1a1a 0%,#2d2d2d 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.login-box{text-align:center;background:#fff;border-radius:12px;width:100%;max-width:400px;padding:3rem;box-shadow:0 8px 24px #0003}.login-box h1{color:#2563eb;margin:0 0 1rem;font-size:2rem}.login-box p{color:#666;margin:0 0 2rem}.login-box .auth-button.sign-in{color:#fff;background:#2563eb;width:100%}.login-box .auth-button.sign-in:hover{background:#1d4ed8}.unauthorized-message{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb;border-radius:6px;margin-top:1rem;padding:1rem}.dashboard{flex-direction:column;gap:1.5rem;display:flex}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.stat-card{color:#fff;background:linear-gradient(135deg,#2d2d2d 0%,#1a1a1a 100%);border:1px solid #404040;border-radius:8px;padding:1rem;box-shadow:0 2px 4px #0000004d}.stat-card h3{opacity:.9;margin:0 0 .5rem;font-size:.8rem;font-weight:500}.stat-value{margin:0;font-size:2rem;font-weight:700}.stat-value.status{font-size:1.25rem}.training-stats-banner{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#4f46e5 100%);border-radius:8px;flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:1.5rem;padding:1.5rem;display:flex;box-shadow:0 4px 6px #0000001a}.training-stat{flex-direction:column;gap:.25rem;display:flex}.training-stat .stat-label{opacity:.9;font-size:.75rem;font-weight:500}.training-stat .stat-number{font-size:1.75rem;font-weight:700}.training-readiness{white-space:nowrap;border-radius:6px;margin-left:auto;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600}.training-readiness.ready{background:#10b98133;border:2px solid #10b981}.training-readiness.not-ready{background:#fbbf2433;border:2px solid #fbbf24}@media (prefers-color-scheme:dark){.training-stats-banner{box-shadow:0 4px 6px #0000004d}}@media (max-width:768px){.training-stats-banner{flex-direction:column;align-items:flex-start;gap:1rem}.training-readiness{text-align:center;width:100%;margin-left:0}}.detection-history{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a}@media (prefers-color-scheme:dark){.detection-history{background:#1a1a1a;border:1px solid #333}}.history-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.history-header h2{color:#2563eb;margin:0}.header-actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.filter-buttons{background:#f3f4f6;border-radius:6px;gap:.5rem;padding:.25rem;display:flex}@media (prefers-color-scheme:dark){.filter-buttons{background:#2a2a2a}}.filter-buttons button{cursor:pointer;color:#6b7280;background:0 0;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .2s}.filter-buttons button:hover{color:#2563eb;background:#2563eb1a}.filter-buttons button.active{color:#fff;background:#2563eb}@media (prefers-color-scheme:dark){.filter-buttons button{color:#9ca3af}.filter-buttons button:hover{color:#60a5fa;background:#2563eb33}}.mode-toggle{color:#fff;cursor:pointer;white-space:nowrap;background:#10b981;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .3s}.mode-toggle:hover{background:#059669;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.mode-toggle.demo-active{background:#f59e0b}.mode-toggle.demo-active:hover{background:#d97706}.sync-button{color:#fff;cursor:pointer;white-space:nowrap;background:#6366f1;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .3s}.sync-button:disabled{cursor:not-allowed;background:#9ca3af;transform:none}.report-missed-button{color:#fff;cursor:pointer;white-space:nowrap;background:#ec4899;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .3s}.report-missed-button:hover{background:#db2777;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.demo-button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .3s}.demo-button:hover{background:#1d4ed8;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.empty-state p{margin:.5rem 0}.empty-state .hint{opacity:.7;font-size:.9rem}@media (prefers-color-scheme:dark){.empty-state{color:#999}}.history-table-container{border:1px solid #e5e7eb;border-radius:8px;overflow-x:auto}@media (prefers-color-scheme:dark){.history-table-container{border-color:#404040}}.history-table{border-collapse:collapse;width:100%;font-size:.9rem}.history-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb}@media (prefers-color-scheme:dark){.history-table thead{background:#2a2a2a;border-bottom-color:#404040}}.history-table th{text-align:left;color:#374151;white-space:nowrap;padding:.75rem 1rem;font-weight:600}@media (prefers-color-scheme:dark){.history-table th{color:#e5e7eb}}.history-table td{color:#1f2937;border-bottom:1px solid #e5e7eb;padding:.75rem 1rem}@media (prefers-color-scheme:dark){.history-table td{color:#d1d5db;border-bottom-color:#333}}.history-table tbody tr:hover{background:#f9fafb}@media (prefers-color-scheme:dark){.history-table tbody tr:hover{background:#2a2a2a}}.history-table tbody tr:last-child td{border-bottom:none}.history-table .deer-count{color:#2563eb;font-weight:600}.history-table .confidence{font-weight:500}.history-table .action{font-size:.85rem}.view-image-link{color:#2563eb;font-weight:500;text-decoration:none;transition:color .2s}.view-image-link:hover{color:#1d4ed8;text-decoration:underline}.no-image{color:#9ca3af;font-size:.875rem}@media (prefers-color-scheme:dark){.view-image-link{color:#60a5fa}.view-image-link:hover{color:#93c5fd}.no-image{color:#6b7280}}@media (max-width:768px){.history-header{flex-direction:column;align-items:flex-start}.header-actions{flex-direction:column;width:100%}.filter-buttons{justify-content:center;width:100%}.demo-button{width:100%}.history-table{font-size:.8rem}.history-table th,.history-table td{padding:.5rem}}.review-cell{min-width:120px}.review-buttons{justify-content:center;gap:.25rem;display:flex}.review-btn{cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;font-weight:700;transition:all .2s;display:flex}.review-btn.correct{color:#fff;background:#10b981}.review-btn.correct:hover{background:#059669;transform:scale(1.1)}.review-btn.false-positive{color:#fff;background:#ef4444}.review-btn.false-positive:hover{background:#dc2626;transform:scale(1.1)}.review-btn.incorrect-count{color:#fff;background:#f59e0b}.review-btn.incorrect-count:hover{background:#d97706;transform:scale(1.1)}.reviewed-badge{color:#374151;white-space:nowrap;background:#e5e7eb;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}@media (prefers-color-scheme:dark){.reviewed-badge{color:#d1d5db;background:#374151}}.reviewing{color:#6b7280;font-style:italic}.training-container{max-width:1600px;margin:0 auto;padding:2rem}.training-header{margin-bottom:2rem}.header-row{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.btn-back-to-library{color:#374151;cursor:pointer;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;padding:.5rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s}.btn-back-to-library:hover{background:#e5e7eb;transform:translate(-2px)}.training-header h1{color:#1f2937;margin:0}.video-upload-section{background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;margin-bottom:1.5rem;overflow:hidden}.section-toggle{text-align:left;cursor:pointer;color:#2563eb;background:#fff;border:none;width:100%;padding:1rem 1.5rem;font-size:1rem;font-weight:600;transition:background .2s}.section-toggle:hover{background:#f3f4f6}.upload-panel{padding:1.5rem}.upload-description{color:#6b7280;margin:0 0 1rem;font-size:.875rem}.sampling-controls{background:#fff;border:1px solid #e5e7eb;border-radius:6px;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;padding:1rem;display:flex}.sampling-label{flex:1;align-items:center;gap:.75rem;min-width:300px;display:flex}.label-text{color:#374151;white-space:nowrap;font-size:.875rem;font-weight:600}.sampling-select{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;flex:1;padding:.5rem .75rem;font-size:.875rem;transition:border-color .2s}.sampling-select:hover{border-color:#2563eb}.sampling-select:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.frame-estimate{color:#2563eb;white-space:nowrap;background:#eff6ff;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;font-weight:600}.file-input-wrapper{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.file-select-label{text-align:center;cursor:pointer;color:#6b7280;background:#fff;border:2px dashed #d1d5db;border-radius:6px;flex:1;min-width:300px;padding:1rem;transition:all .3s}.file-select-label:hover{color:#2563eb;background:#eff6ff;border-color:#2563eb}.upload-actions-inline{gap:.5rem;display:flex}.btn-primary,.btn-secondary{cursor:pointer;border:none;border-radius:6px;padding:.75rem 1.5rem;font-weight:600;transition:all .2s}.btn-primary:hover{background:#1d4ed8;transform:translateY(-1px)}.btn-secondary:hover{background:#d1d5db}.upload-status{color:#1e40af;background:#eff6ff;border-radius:6px;align-items:center;gap:.75rem;margin-top:1rem;padding:1rem;display:flex}.spinner-small{border:3px solid #dbeafe;border-top-color:#2563eb;border-radius:50%;width:20px;height:20px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5;border-radius:6px;margin-top:1rem;padding:1rem}.success-banner{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7;border-radius:6px;margin-top:1rem;padding:1rem}@media (prefers-color-scheme:dark){.training-header h1{color:#f3f4f6}.video-upload-section{background:#1f2937;border-color:#374151}.section-toggle{color:#60a5fa;background:#111827}.section-toggle:hover,.upload-panel{background:#1f2937}.upload-description{color:#9ca3af}.sampling-controls{background:#111827;border-color:#374151}.label-text{color:#e5e7eb}.sampling-select{color:#e5e7eb;background:#1f2937;border-color:#4b5563}.sampling-select:hover{border-color:#60a5fa}.frame-estimate{color:#dbeafe;background:#1e3a8a}.file-select-label{color:#9ca3af;background:#111827;border-color:#4b5563}.file-select-label:hover{color:#60a5fa;background:#1e3a8a;border-color:#60a5fa}.btn-secondary{color:#e5e7eb;background:#374151}.btn-secondary:hover{background:#4b5563}}.training-badge-compact{color:#1e40af;white-space:nowrap;background:#dbeafe;border:1px solid #93c5fd;border-radius:6px;padding:.5rem 1rem;font-size:.875rem;font-weight:600}.training-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.action-buttons{align-items:center;gap:.75rem;display:flex}.filter-group{background:#f3f4f6;border-radius:6px;gap:.5rem;padding:.25rem;display:flex}@media (prefers-color-scheme:dark){.training-badge-compact{color:#dbeafe;background:#1e3a8a;border-color:#1e40af}.filter-group{background:#2a2a2a}}.filter-group button{cursor:pointer;color:#6b7280;background:0 0;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .2s}.filter-group button:hover{color:#2563eb;background:#2563eb1a}.filter-group button.active{color:#fff;background:#2563eb}@media (prefers-color-scheme:dark){.filter-group button{color:#9ca3af}}.clear-button{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:6px;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .3s}.clear-button:hover{background:#b91c1c;transform:translateY(-2px);box-shadow:0 4px 12px #dc26264d}.sync-button{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .3s}.sync-button:hover:not(:disabled){background:#059669;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.sync-button:disabled{cursor:not-allowed;opacity:.6;background:#9ca3af}.loading,.empty-state{text-align:center;color:#666;padding:4rem}.empty-state h2{margin:0 0 1rem}@media (prefers-color-scheme:dark){.empty-state{color:#999}}.review-interface{flex-direction:column;gap:0;margin-top:2rem;display:flex}.image-viewer{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a}@media (prefers-color-scheme:dark){.image-viewer{background:#1a1a1a;border:1px solid #333}}.image-container{background:#f9fafb;border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:400px;margin-bottom:1rem;display:flex;overflow:hidden}@media (prefers-color-scheme:dark){.image-container{background:#0a0a0a}}.control-bar{background:#f9fafb;border-radius:6px;flex-wrap:wrap;align-items:center;gap:1.5rem;padding:1rem;display:flex}@media (prefers-color-scheme:dark){.control-bar{background:#1f2937}}.control-section{align-items:center;gap:.5rem;display:flex}.nav-section{border-right:2px solid #d1d5db;padding-right:1.5rem}@media (prefers-color-scheme:dark){.nav-section{border-right-color:#4b5563}}.btn-nav{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:6px;padding:.5rem .75rem;font-size:.875rem;font-weight:600;transition:all .2s}.btn-nav:hover:not(:disabled){background:#2563eb}.btn-nav:disabled{cursor:not-allowed;color:#9ca3af;background:#d1d5db}.frame-counter{color:#1f2937;text-align:center;min-width:60px;font-size:.875rem;font-weight:600}@media (prefers-color-scheme:dark){.frame-counter{color:#e5e7eb}}.info-section{border-right:2px solid #d1d5db;flex-wrap:wrap;padding-right:1.5rem}@media (prefers-color-scheme:dark){.info-section{border-right-color:#4b5563}}.info-item{align-items:center;gap:.375rem;font-size:.875rem;display:flex}.info-item label{color:#6b7280;font-weight:600}@media (prefers-color-scheme:dark){.info-item label{color:#9ca3af}}.camera-select-compact{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;padding:.25rem .5rem;font-size:.875rem}@media (prefers-color-scheme:dark){.camera-select-compact{color:#e5e7eb;background:#374151;border-color:#4b5563}}.info-badge{border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:600}.info-badge.green{color:#065f46;background:#d1fae5}.info-badge.orange{color:#92400e;background:#fed7aa}.info-badge.reviewed{color:#fff;text-transform:capitalize;background:#10b981}@media (prefers-color-scheme:dark){.info-badge.green{color:#d1fae5;background:#064e3b}.info-badge.orange{color:#fed7aa;background:#78350f}}.info-text{color:#6b7280;font-weight:500}@media (prefers-color-scheme:dark){.info-text{color:#9ca3af}}.actions-section{border-right:2px solid #d1d5db;padding-right:1.5rem}@media (prefers-color-scheme:dark){.actions-section{border-right-color:#4b5563}}.btn-action{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:.5rem .75rem;font-size:.875rem;font-weight:600;transition:all .2s}.btn-action:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #00000026}.btn-action:disabled{opacity:.5;cursor:not-allowed}.btn-action.btn-correct{color:#fff;background:#10b981}.btn-action.btn-correct:hover:not(:disabled){background:#059669}.btn-action.btn-false{color:#fff;background:#ef4444}.btn-action.btn-false:hover:not(:disabled){background:#dc2626}.btn-action.btn-wrong{color:#fff;background:#f59e0b}.btn-action.btn-wrong:hover:not(:disabled){background:#d97706}.btn-action.btn-annotate-primary{color:#fff;background:#3b82f6;padding:.75rem 1.25rem;font-size:1rem;font-weight:700;box-shadow:0 2px 8px #3b82f64d}.btn-action.btn-annotate-primary:hover:not(:disabled){background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.btn-action.btn-annotate{color:#fff;background:#3b82f6}.btn-action.btn-annotate:hover:not(:disabled){background:#2563eb}.btn-action.btn-delete{color:#fff;background:#6b7280}.btn-action.btn-delete:hover:not(:disabled){background:#4b5563}.hints-section{margin-left:auto}.hint-text{color:#6b7280;align-items:center;gap:.375rem;font-size:.75rem;display:flex}@media (prefers-color-scheme:dark){.hint-text{color:#9ca3af}}.hint-text kbd{background:#e5e7eb;border:1px solid #d1d5db;border-radius:3px;padding:.125rem .375rem;font-family:monospace;font-size:.7rem}@media (prefers-color-scheme:dark){.hint-text kbd{color:#e5e7eb;background:#374151;border-color:#4b5563}}.detection-image{object-fit:contain;border-radius:4px;max-width:100%;max-height:600px}.no-image{color:#9ca3af;padding:4rem}.detection-info{flex-direction:column;gap:.75rem;display:flex}.info-row{border-bottom:1px solid #e5e7eb;justify-content:space-between;padding:.5rem 0;display:flex}@media (prefers-color-scheme:dark){.info-row{border-bottom-color:#333}}@media (prefers-color-scheme:dark){.info-value{color:#d1d5db}}.info-value.deer-count{color:#2563eb}.info-value.reviewed{color:#10b981}.reviewed-status{background:#10b9811a;border-radius:4px;margin-top:.5rem;padding:.75rem}.review-panel{background:#fff;border-radius:8px;height:fit-content;padding:2rem;position:sticky;top:2rem;box-shadow:0 2px 4px #0000001a}@media (prefers-color-scheme:dark){.review-panel{background:#1a1a1a;border:1px solid #333}}.review-panel h2{color:#1f2937;margin:0 0 1.5rem}@media (prefers-color-scheme:dark){.review-panel h2{color:#f3f4f6}}.review-buttons-large{flex-direction:column;gap:1rem;margin-bottom:2rem;display:flex}.review-button{cursor:pointer;border:none;border-radius:8px;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem;font-size:1rem;font-weight:600;transition:all .3s;display:flex}.review-button:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 6px 12px #0003}.review-button:disabled{opacity:.4;cursor:not-allowed;transform:none}.review-button.correct{color:#fff;background:#10b981}.review-button.correct:hover:not(:disabled){background:#059669}.review-button.false-positive{color:#fff;background:#ef4444}.review-button.false-positive:hover:not(:disabled){background:#dc2626}.review-button.incorrect-count{color:#fff;background:#f59e0b}.review-button.incorrect-count:hover:not(:disabled){background:#d97706}.button-icon{font-size:2.5rem;line-height:1}.button-label{font-size:1rem}.button-hint{opacity:.8;font-size:.75rem;font-weight:400}.annotation-section{background:#eff6ff;border:2px solid #bfdbfe;border-radius:8px;margin-top:2rem;padding:1.5rem}.annotation-section h3{color:#1e40af;margin:0 0 .5rem;font-size:1rem}.annotation-hint{color:#1e40af;opacity:.9;margin:0 0 1rem;font-size:.875rem}.annotation-button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:6px;width:100%;padding:1rem;font-size:1rem;font-weight:600;transition:all .2s}.annotation-button:hover:not(:disabled){background:#1d4ed8;transform:translateY(-2px)}.annotation-button:disabled{cursor:not-allowed;background:#9ca3af;transform:none}.annotation-status{color:#065f46;text-align:center;background:#d1fae5;border:1px solid #6ee7b7;border-radius:6px;margin-top:1rem;padding:.75rem;font-size:.875rem;font-weight:600}@media (prefers-color-scheme:dark){.annotation-section{background:#1e3a8a;border-color:#1e40af}.annotation-section h3,.annotation-hint{color:#dbeafe}.annotation-status{color:#d1fae5;background:#064e3b;border-color:#059669}}.delete-section{border-top:1px solid #e5e7eb;padding-top:2rem}@media (prefers-color-scheme:dark){.delete-section{border-top-color:#333}}.delete-button{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:6px;width:100%;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .3s}.delete-button:hover{background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 12px #ef44444d}.delete-button:active{transform:translateY(0)}.keyboard-shortcuts{border-top:1px solid #e5e7eb;padding-top:2rem}@media (prefers-color-scheme:dark){.keyboard-shortcuts{border-top-color:#333}}.keyboard-shortcuts h3{color:#6b7280;margin:0 0 1rem;font-size:.875rem}.shortcut-list{flex-direction:column;gap:.75rem;display:flex}.shortcut{color:#6b7280;align-items:center;gap:.75rem;font-size:.875rem;display:flex}kbd{color:#1f2937;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;padding:.25rem .5rem;font-family:monospace;font-size:.75rem;font-weight:600}@media (prefers-color-scheme:dark){kbd{color:#d1d5db;background:#2a2a2a;border-color:#404040}}@media (max-width:1200px){.review-interface{grid-template-columns:1fr}.review-panel{position:static}}@media (max-width:768px){.training-container{padding:1rem}.training-progress{flex-direction:column;align-items:flex-start;gap:1rem}.readiness-badge{text-align:center;width:100%;margin-left:0}.training-actions{flex-direction:column;width:100%}.filter-group,.sync-button{width:100%}}.image-wrapper{width:100%;max-width:1280px;margin:0 auto;display:inline-block;position:relative}.detection-image{width:100%;height:auto;display:block}.detection-canvas,.detection-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.detection-info-compact{background:#f9fafb;border-radius:6px;flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.75rem;font-size:.875rem;display:flex}@media (prefers-color-scheme:dark){.detection-info-compact{background:#1f2937}}.info-group{align-items:center;gap:.5rem;display:flex}.info-group label,.info-group .info-label{color:#6b7280;font-weight:600}@media (prefers-color-scheme:dark){.info-group label,.info-group .info-label{color:#9ca3af}}.info-group .info-value{color:#1f2937}@media (prefers-color-scheme:dark){.info-group .info-value{color:#e5e7eb}}.camera-select{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;padding:.25rem .5rem;font-size:.875rem}@media (prefers-color-scheme:dark){.camera-select{color:#e5e7eb;background:#374151;border-color:#4b5563}}.reviewed-badge{color:#fff;text-transform:capitalize;background:#10b981;border-radius:4px;padding:.25rem .75rem;font-size:.75rem;font-weight:600}.review-panel-compact{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 2px 4px #0000001a}@media (prefers-color-scheme:dark){.review-panel-compact{background:#1a1a1a;border:1px solid #333}}.action-row{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.btn-compact{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;flex:1;min-width:110px;padding:.5rem .75rem;font-size:.875rem;font-weight:600;transition:all .2s}.btn-compact:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #00000026}.btn-compact:disabled{opacity:.5;cursor:not-allowed}.btn-correct{color:#fff;background:#10b981}.btn-correct:hover:not(:disabled){background:#059669}.btn-false{color:#fff;background:#ef4444}.btn-false:hover:not(:disabled){background:#dc2626}.btn-wrong{color:#fff;background:#f59e0b}.btn-wrong:hover:not(:disabled){background:#d97706}.btn-annotate{color:#fff;background:#3b82f6}.btn-annotate:hover:not(:disabled){background:#2563eb}.btn-delete{color:#fff;background:#6b7280}.btn-delete:hover:not(:disabled){background:#4b5563}.shortcuts-compact{color:#6b7280;background:#f9fafb;border-radius:4px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem;font-size:.75rem;display:flex}@media (prefers-color-scheme:dark){.shortcuts-compact{color:#9ca3af;background:#1f2937}}.shortcut-hint{font-weight:600}.shortcuts-compact kbd{background:#e5e7eb;border:1px solid #d1d5db;border-radius:3px;padding:.125rem .375rem;font-family:monospace;font-size:.7rem}@media (prefers-color-scheme:dark){.shortcuts-compact kbd{color:#e5e7eb;background:#374151;border-color:#4b5563}}.fullscreen-review{color:#e2e8f0;z-index:900;background:#0f172a;flex-direction:column;display:flex;position:fixed;inset:0}.fullscreen-review .review-header{background:#1e293b;border-bottom:1px solid #334155;flex-shrink:0;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;display:flex}.btn-back-to-library-compact{cursor:pointer;color:#e2e8f0;white-space:nowrap;background:#334155;border:none;border-radius:4px;padding:.4rem .8rem;font-size:.9rem;font-weight:500;transition:all .2s}.btn-back-to-library-compact:hover{background:#475569}.fullscreen-review .header-info{color:#94a3b8;flex:1;align-items:center;gap:.75rem;font-size:.85rem;display:flex;overflow:hidden}.fullscreen-review .frame-counter{color:#e2e8f0;font-size:.95rem}.fullscreen-review .frame-counter strong{font-size:1.1rem}.fullscreen-review .divider{color:#475569}.info-badge-inline{border-radius:3px;padding:.2rem .5rem;font-size:.8rem;font-weight:500}.info-badge-inline.green{color:#10b981;background:#10b98120}.info-badge-inline.blue{color:#3b82f6;background:#3b82f620}.info-badge-inline.reviewed{color:#10b981;background:#10b98120}.fullscreen-review .header-actions{align-items:center;gap:.5rem;display:flex}.fullscreen-review .btn-header{cursor:pointer;white-space:nowrap;border:none;border-radius:4px;padding:.4rem .8rem;font-size:.85rem;font-weight:500;transition:all .2s}.fullscreen-review .btn-header:disabled{opacity:.4;cursor:not-allowed}.fullscreen-review .btn-header.btn-prev,.fullscreen-review .btn-header.btn-next{color:#e2e8f0;background:#334155;padding:.4rem .6rem}.fullscreen-review .btn-header.btn-prev:hover:not(:disabled),.fullscreen-review .btn-header.btn-next:hover:not(:disabled){background:#475569}.fullscreen-review .btn-header.btn-correct{color:#fff;background:#10b981}.fullscreen-review .btn-header.btn-correct:hover:not(:disabled){background:#059669}.fullscreen-review .btn-header.btn-annotate{color:#fff;background:#3b82f6}.fullscreen-review .btn-header.btn-annotate:hover:not(:disabled){background:#2563eb}.fullscreen-review .btn-header.btn-skip{color:#fff;background:#6b7280}.fullscreen-review .btn-header.btn-skip:hover{background:#4b5563}.fullscreen-review .review-content{flex:1;justify-content:center;align-items:center;min-height:0;padding:1rem;display:flex;overflow:hidden}.image-container-fullscreen{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.frame-image-fullscreen{object-fit:contain;border-radius:4px;width:auto;max-width:100%;height:auto;max-height:100%}.frame-canvas-fullscreen{pointer-events:none;max-width:100%;max-height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fullscreen-review .review-footer{color:#64748b;background:#1e293b;border-top:1px solid #334155;flex-shrink:0;align-items:center;gap:1rem;padding:.5rem 1.5rem;font-size:.8rem;display:flex}.fullscreen-review .review-footer strong{color:#94a3b8}.annotation-tool-modal{z-index:1000;background:#000000f2;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.annotation-tool-fullscreen{background:#1a1a1a;flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.annotation-header-compact{background:#2d2d2d;border-bottom:1px solid #404040;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.annotation-header-compact h2{color:#f3f4f6;margin:0;font-size:1.25rem}.close-btn{cursor:pointer;color:#9ca3af;background:0 0;border:none;border-radius:4px;padding:.25rem .5rem;font-size:1.5rem;transition:all .2s}.close-btn:hover{color:#f3f4f6;background:#404040}.annotation-main-area{flex:1;display:flex;overflow:hidden}.annotation-canvas-full{background:#000;flex:1;justify-content:center;align-items:center;padding:1rem;display:flex;position:relative;overflow:auto}.annotation-canvas-full canvas{border:2px solid #404040;border-radius:4px;max-width:100%;max-height:100%}.loading{color:#fff;font-size:1.25rem}.annotation-sidebar-compact{background:#2d2d2d;border-left:1px solid #404040;flex-direction:column;width:280px;display:flex;overflow-y:auto}.annotation-instructions-compact{background:#1e3a8a;border-bottom:1px solid #1e40af;padding:1rem}.annotation-instructions-compact p{color:#dbeafe;margin:.5rem 0;font-size:.8rem;line-height:1.4}.box-list-compact{flex:1;padding:1rem}.box-list-compact h3{color:#f3f4f6;margin:0 0 1rem;font-size:.95rem}.no-boxes{color:#9ca3af;font-size:.85rem;font-style:italic}.box-list-compact ul{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.box-list-compact li{color:#e5e7eb;background:#1f2937;border:1px solid #404040;border-radius:6px;justify-content:space-between;align-items:center;padding:.5rem;font-size:.85rem;display:flex}.remove-box-btn{color:#991b1b;cursor:pointer;background:#fee2e2;border:none;border-radius:4px;padding:.25rem .5rem;font-size:.7rem;font-weight:600;transition:all .2s}.remove-box-btn:hover{background:#fecaca}.annotation-actions{background:#2d2d2d;border-top:1px solid #404040;justify-content:flex-end;gap:1rem;padding:1rem 1.5rem;display:flex}.btn-primary,.btn-secondary{cursor:pointer;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .2s}.btn-primary{color:#fff;background:#2563eb}.btn-primary:hover:not(:disabled){background:#1d4ed8}.btn-primary:disabled{cursor:not-allowed;background:#9ca3af}.btn-secondary{color:#e5e7eb;background:#374151}.btn-secondary:hover:not(:disabled){background:#4b5563}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.video-library{background:#1a1f2e;border-radius:16px;max-width:1400px;min-height:400px;margin:0 auto;padding:1.5rem}.library-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:1.5rem;display:flex}.header-left h1{color:#1f2937;margin:0 0 .25rem;font-size:1.75rem}.library-subtitle{color:#6b7280;margin:0;font-size:.875rem}.header-right{flex-wrap:wrap;align-items:stretch;gap:1rem;display:flex}.btn-upload-video{color:#fff;cursor:pointer;white-space:normal;text-align:center;background:#2563eb;border:none;border-radius:8px;justify-content:center;align-items:center;max-width:140px;padding:.875rem 1.25rem;font-size:1.1rem;font-weight:600;line-height:1.3;transition:all .2s;display:flex;box-shadow:0 2px 8px #2563eb4d}.btn-upload-video:hover:not(:disabled){background:#1d4ed8;transform:translateY(-1px);box-shadow:0 4px 12px #2563eb66}.btn-upload-video:disabled{cursor:not-allowed;box-shadow:none;background:#9ca3af}.training-status-card{background:linear-gradient(135deg,#dbeafe 0%,#bfdbfe 100%);border:2px solid #93c5fd;border-radius:8px;flex-direction:column;gap:.5rem;min-width:200px;padding:.875rem 1.25rem;display:flex}.status-row{justify-content:space-between;align-items:center;gap:1rem;display:flex}.status-info{border-top:1px solid #93c5fd;justify-content:space-between;align-items:center;gap:1rem;padding-top:.25rem;font-size:.75rem;display:flex}.status-label{color:#1e40af;font-size:.875rem;font-weight:600}.status-value{color:#1e40af;font-size:1.25rem;font-weight:700}.status-value-small{color:#1e40af;font-size:.875rem;font-weight:600}.status-value.ready{color:#059669}.btn-early-review{color:#fff;cursor:pointer;background:#0891b2;border:none;border-radius:8px;width:100%;margin-top:.75rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:700;transition:all .2s;box-shadow:0 2px 8px #0891b24d}.btn-early-review:hover{background:#0e7490;transform:translateY(-2px);box-shadow:0 4px 12px #0891b266}.btn-start-review{color:#fff;cursor:pointer;background:#059669;border:none;border-radius:8px;width:100%;padding:.75rem 1.25rem;font-size:.95rem;font-weight:700;transition:all .2s;box-shadow:0 2px 8px #0596694d}.btn-start-review:hover:not(:disabled){background:#047857;transform:translateY(-2px);box-shadow:0 4px 12px #05966966}.btn-start-review:disabled{cursor:not-allowed;opacity:.6;box-shadow:none;background:#9ca3af}.loading{text-align:center;color:#6b7280;padding:4rem;font-size:1.25rem}.empty-library{text-align:center;padding:4rem 2rem}.empty-icon{opacity:.5;margin-bottom:1rem;font-size:5rem}.empty-library h2{color:#1f2937;margin:0 0 .5rem}.empty-library p{color:#6b7280;margin:.5rem 0}.empty-hint{color:#9ca3af;font-size:.875rem;font-style:italic}.video-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}.video-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;transition:all .2s;display:flex;overflow:hidden}.video-thumbnail{background:linear-gradient(135deg,#1f2937 0%,#374151 100%);justify-content:center;align-items:center;height:180px;display:flex;position:relative}.thumbnail-placeholder{text-align:center}.thumbnail-icon{opacity:.3;font-size:4rem}.video-stats{flex-wrap:wrap;gap:.5rem;display:flex;position:absolute;bottom:.75rem;left:.75rem;right:.75rem}.stat-badge{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;border-radius:6px;padding:.25rem .75rem;font-size:.75rem;font-weight:600}.stat-badge-dark{background:#000000d9}.video-info{flex:1;padding:.75rem 1rem}.video-title{color:#1f2937;text-overflow:ellipsis;white-space:nowrap;margin:0 0 .375rem;font-size:.9rem;font-weight:600;overflow:hidden}.video-metadata{color:#6b7280;justify-content:space-between;align-items:center;font-size:.8rem;display:flex}.metadata-left{flex:1}.metadata-right{color:#4b5563;font-weight:600}.video-actions{background:#f9fafb;border-top:1px solid #e5e7eb;gap:.375rem;padding:.5rem;display:flex}.btn-edit{color:#1e40af;cursor:pointer;white-space:nowrap;background:#dbeafe;border:1px solid #bfdbfe;border-radius:6px;flex:1;padding:.375rem .5rem;font-size:.8rem;font-weight:600;transition:all .2s}.btn-edit:hover{background:#bfdbfe;border-color:#93c5fd}.btn-delete{color:#991b1b;cursor:pointer;white-space:nowrap;background:#fee2e2;border:1px solid #fecaca;border-radius:6px;flex:1;padding:.375rem .5rem;font-size:.8rem;font-weight:600;transition:all .2s}.btn-delete:hover:not(:disabled){background:#fecaca;border-color:#fca5a5}.btn-delete:disabled{opacity:.5;cursor:not-allowed}.progress-footer{text-align:center;background:#fef3c7;border:2px solid #fbbf24;border-radius:12px;margin-top:2rem;padding:1.5rem}.progress-message{color:#92400e;justify-content:center;align-items:center;gap:.75rem;font-size:1rem;font-weight:600;display:flex}.progress-icon{font-size:1.5rem}@media (prefers-color-scheme:dark){.video-library{background:#111827}.header-left h1{color:#f3f4f6}.library-subtitle{color:#9ca3af}.training-status-card{background:linear-gradient(135deg,#1e3a8a 0%,#1e40af 100%);border-color:#3b82f6}.status-label,.status-value{color:#dbeafe}.status-value.ready{color:#34d399}.empty-library h2{color:#f3f4f6}.empty-library p{color:#9ca3af}.video-card{background:#1f2937;border-color:#374151}.video-card:hover{border-color:#3b82f6}.video-title{color:#f3f4f6}.detail-value{color:#9ca3af}.video-actions{background:#111827;border-top-color:#374151}.progress-footer{background:#78350f;border-color:#fbbf24}.progress-message{color:#fde68a}}@media (max-width:768px){.video-library{padding:1rem}.library-header{flex-direction:column}.header-right,.training-status-card{width:100%}.video-grid{grid-template-columns:1fr}}.dialog-overlay{z-index:1000;background:#000c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog-box{background:#1f2937;border:2px solid #374151;border-radius:16px;width:100%;max-width:500px;padding:2rem;box-shadow:0 20px 50px #00000080}.dialog-box h2{color:#f3f4f6;margin:0 0 .5rem;font-size:1.5rem}.dialog-subtitle{color:#9ca3af;margin:0 0 1.5rem;font-size:.95rem}.dialog-form{flex-direction:column;gap:1.25rem;margin-bottom:1.5rem;display:flex}.form-group{flex-direction:column;gap:.5rem;display:flex}.form-group label{color:#d1d5db;font-size:.875rem;font-weight:600}.form-input,.form-select,.form-input-disabled{color:#f3f4f6;background:#111827;border:2px solid #4b5563;border-radius:8px;padding:.75rem;font-family:inherit;font-size:.95rem;transition:border-color .2s}.form-select option{color:#f3f4f6;background:#111827}.form-input:focus,.form-select:focus{background:#1f2937;border-color:#2563eb;outline:none}.form-input-disabled{color:#9ca3af;cursor:not-allowed;opacity:.7;background:#374151}.form-select{cursor:pointer}.dialog-actions{justify-content:flex-end;gap:1rem;display:flex}.btn-dialog-cancel,.btn-dialog-confirm{cursor:pointer;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .2s}.btn-dialog-cancel{color:#d1d5db;background:#374151}.btn-dialog-cancel:hover{background:#4b5563}.btn-dialog-confirm{color:#fff;background:#059669;box-shadow:0 2px 8px #0596694d}.btn-dialog-confirm:hover{background:#047857;transform:translateY(-1px);box-shadow:0 4px 12px #05966966}.thumbnail-image{object-fit:cover;width:100%;height:100%}.play-overlay{pointer-events:none;background:0 0;justify-content:center;align-items:center;transition:background .3s;display:flex;position:absolute;inset:0}.video-thumbnail:hover .play-overlay{background:#0000004d}.play-button{color:#1f2937;opacity:0;background:#ffffffe6;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;font-size:1.5rem;transition:opacity .3s,transform .2s;display:flex;transform:scale(.8)}.video-thumbnail:hover .play-button{opacity:1;transform:scale(1)}.btn-view-frames{color:#6b21a8;cursor:pointer;white-space:nowrap;background:#f3e8ff;border:1px solid #e9d5ff;border-radius:6px;flex:1;padding:.375rem .5rem;font-size:.8rem;font-weight:600;transition:all .2s}.btn-view-frames:hover{background:#e9d5ff;border-color:#d8b4fe}.video-player-modal{background:#1a1f2e;border-radius:12px;flex-direction:column;width:90vw;max-width:1000px;max-height:90vh;display:flex;box-shadow:0 20px 60px #0009}.video-player-header{border-bottom:1px solid #2d3548;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.video-player-header h2{color:#e5e7eb;margin:0;font-size:1.25rem}.btn-close-modal{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:.25rem .5rem;font-size:1.5rem;transition:color .2s}.btn-close-modal:hover{color:#fff}.video-player-content{background:#000;flex:1;justify-content:center;align-items:center;padding:1rem;display:flex}.video-player{border-radius:8px;max-width:100%;max-height:70vh}.video-player-info{color:#9ca3af;background:#1a1f2e;border-top:1px solid #2d3548;align-items:center;gap:.75rem;padding:1rem 1.5rem;font-size:.875rem;display:flex}.frame-analysis-modal{background:#1a1f2e;border-radius:12px;flex-direction:column;width:95vw;max-width:1400px;height:95vh;max-height:95vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0009}.frame-analysis-header{border-bottom:1px solid #2d3548;flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;padding:.625rem 1rem;display:flex}.frame-analysis-header .header-content{flex:1;min-width:0}.frame-analysis-header h2{color:#e5e7eb;text-overflow:ellipsis;white-space:nowrap;margin:0 0 .25rem;font-size:.95rem;overflow:hidden}.frame-metadata{color:#9ca3af;align-items:center;gap:.5rem;font-size:.8rem;display:flex}.meta-highlight{color:#e5e7eb;font-weight:600}.frame-viewer{background:#0f1419;flex:1;align-items:center;min-height:0;padding:.5rem;display:flex;overflow:hidden}.frame-nav-btn{color:#e5e7eb;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:50px;height:50px;font-size:2rem;line-height:1;transition:all .2s;display:flex}.frame-nav-btn:hover:not(:disabled){background:#fff3;transform:scale(1.1)}.frame-nav-btn:disabled{opacity:.3;cursor:not-allowed}.frame-display{flex:1;justify-content:center;align-items:center;min-height:0;padding:0 .5rem;display:flex;position:relative;overflow:hidden}.frame-image{object-fit:contain;border-radius:6px;width:auto;max-width:100%;height:auto;max-height:100%;box-shadow:0 10px 40px #00000080}.frame-navigation{background:#1a1f2e;border-top:1px solid #2d3548;flex-shrink:0;padding:.375rem .5rem;overflow:auto hidden}.frame-thumbnails{gap:.375rem;padding:.125rem 0;display:flex}.frame-thumb{cursor:pointer;border:3px solid #0000;border-radius:4px;flex-shrink:0;width:90px;height:60px;transition:all .2s;position:relative;overflow:hidden}.frame-thumb:hover{border-color:#6366f1;transform:translateY(-2px)}.frame-thumb.active{border-color:#10b981;box-shadow:0 0 0 2px #10b9814d}.frame-thumb.has-detection{box-shadow:0 0 8px #ef444480}.frame-thumb img{object-fit:cover;width:100%;height:100%}.detection-badge{color:#fff;background:#ef4444;border-radius:4px;padding:.125rem .375rem;font-size:.75rem;font-weight:700;position:absolute;top:.25rem;right:.25rem}.no-frames{text-align:center;color:#9ca3af;padding:4rem 2rem;font-size:1.125rem}.video-selector-container{color:#fff;background:#0f172a;flex-direction:column;width:100vw;height:100vh;display:flex;position:fixed;inset:0;overflow:hidden}.selector-header{background:#0f172afa;border-bottom:1px solid #3b82f64d;flex-shrink:0;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.85rem;display:flex}.selector-header h1{flex:1;margin:0;font-size:1.2rem;font-weight:600}.sampling-rate-control{align-items:center;gap:.5rem;display:flex}.sampling-rate-control label{color:#ffffffe6;white-space:nowrap;font-size:.85rem;font-weight:500}.sampling-rate-control select{color:#fff;cursor:pointer;background:#1e293bcc;border:1px solid #3b82f64d;border-radius:4px;width:150px;padding:.4rem .6rem;font-size:.85rem}.sampling-rate-control select:focus{border-color:#3b82f6;outline:none}.btn-back{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:4px;padding:.4rem .75rem;font-size:.9rem;transition:all .15s}.btn-back:hover{background:#ffffff1f;border-color:#ffffff40}.btn-train-model{color:#fff;cursor:pointer;background:linear-gradient(135deg,#8b5cf6 0%,#6d28d9 100%);border:1px solid #8b5cf680;border-radius:4px;margin-left:auto;padding:.4rem .9rem;font-size:.9rem;font-weight:600;transition:all .15s}.btn-train-model:hover{background:linear-gradient(135deg,#7c3aed 0%,#5b21b6 100%);transform:translateY(-1px);box-shadow:0 4px 12px #8b5cf64d}.selector-content{background:#000;flex:1;padding:1.5rem;overflow-y:auto}.video-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.video-card{cursor:pointer;background:#1e293b99;border:2px solid #3b82f633;border-radius:12px;transition:all .3s;overflow:hidden}.video-card:hover{border-color:#3b82f680;transform:translateY(-4px);box-shadow:0 8px 24px #0000004d}.video-card.selected{border-width:3px;border-color:#3b82f6;box-shadow:0 0 20px #3b82f666}.video-card.annotated{opacity:.6;border-color:#10b9814d}.video-card.annotated:hover{opacity:.8;border-color:#10b98180}.video-thumbnail{aspect-ratio:16/9;background:#000;width:100%;position:relative;overflow:hidden}.video-thumbnail img{object-fit:cover;width:100%;height:100%}.selected-badge{color:#fff;background:#3b82f6;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:1.2rem;font-weight:700;display:flex;position:absolute;top:10px;right:10px;box-shadow:0 2px 8px #0000004d}.annotation-badge{color:#fff;border-radius:6px;padding:.4rem .8rem;font-size:.8rem;font-weight:600;position:absolute;top:10px;right:10px;box-shadow:0 2px 8px #0000004d}.annotation-badge.complete{background:#10b981}.annotation-badge.partial{background:#f59e0b}.video-info{padding:1rem}.video-camera{color:#3b82f6;margin-bottom:.5rem;font-size:1.1rem;font-weight:600}.video-filename{color:#ffffffb3;white-space:nowrap;text-overflow:ellipsis;margin-bottom:.25rem;font-size:.9rem;overflow:hidden}.video-date{color:#ffffff80;font-size:.85rem}.extraction-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172af2;border-top:2px solid #3b82f64d;padding:2rem;position:sticky;bottom:0}.extraction-panel h2{color:#3b82f6;margin:0 0 1.5rem;font-size:1.4rem}.settings-row{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.settings-row label{min-width:180px;font-weight:500}.settings-row select{color:#fff;cursor:pointer;background:#1e293bcc;border:1px solid #3b82f64d;border-radius:8px;flex:1;padding:.75rem;font-size:1rem}.settings-row select:focus{border-color:#3b82f6;outline:none}.extraction-info{background:#3b82f61a;border:1px solid #3b82f64d;border-radius:8px;margin-bottom:1.5rem;padding:1rem}.extraction-info p{margin:.5rem 0;font-size:.95rem}.btn-extract{color:#fff;cursor:pointer;background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);border:none;border-radius:10px;width:100%;padding:1rem 2rem;font-size:1.1rem;font-weight:600;transition:all .3s}.btn-extract:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #3b82f666}.btn-extract:disabled{opacity:.6;cursor:not-allowed}.empty-state{text-align:center;color:#fff9;padding:4rem 2rem}.loading-message{text-align:center;color:#fffc;padding:4rem 2rem;font-size:1.2rem}.extraction-panel-compact{background:#0f172af2;border-radius:12px;margin:2rem;padding:2rem}.extraction-controls{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.extraction-controls label{white-space:nowrap;color:#3b82f6;font-weight:500}.extraction-controls select{color:#fff;cursor:pointer;background:#1e293bcc;border:1px solid #3b82f64d;border-radius:8px;width:200px;padding:.75rem;font-size:1rem}.extraction-controls select:focus{border-color:#3b82f6;outline:none}.btn-extract-compact{color:#fff;cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s}.btn-extract-compact:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #3b82f666}.btn-extract-compact:disabled{opacity:.6;cursor:not-allowed}.selected-video-info{color:#ffffffb3;gap:.5rem;font-size:.95rem;display:flex}.info-label{color:#ffffff80;font-weight:500}.info-value{color:#3b82f6;font-weight:600}.processing-overlay{justify-content:center;align-items:center;min-height:400px;padding:4rem 2rem;display:flex}.processing-message{text-align:center;background:#1e293bcc;border:2px solid #3b82f64d;border-radius:16px;padding:3rem}.processing-message h2{color:#3b82f6;margin:0 0 1rem;font-size:1.8rem}.processing-message p{color:#ffffffb3;margin:0;font-size:1.1rem}.review-container-with-sidebar{color:#fff;z-index:1000;background:#0f172a;flex-direction:column;width:100vw;height:100vh;display:flex;position:fixed;inset:0;overflow:hidden}.review-header-compact{background:#0f172afa;border-bottom:1px solid #3b82f64d;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.85rem;display:flex}.review-header-compact .btn-back{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:4px;padding:.4rem .75rem;font-size:.9rem;transition:all .15s}.review-header-compact .btn-back:hover{background:#ffffff1f;border-color:#ffffff40}.review-header-compact .frame-counter{background:#3b82f626;border-radius:4px;margin-left:auto;padding:.3rem .6rem;font-size:.95rem}.review-header-compact .completion-badge{color:#10b981;background:#10b98133;border:1px solid #10b98166;border-radius:4px;padding:.3rem .6rem;font-size:.85rem;font-weight:600}.review-header-compact .header-actions{gap:.4rem;margin-left:.5rem;display:flex}.btn-nav{color:#fff;cursor:pointer;background:#3b82f626;border:1px solid #3b82f64d;border-radius:4px;min-width:32px;padding:.4rem .6rem;font-size:.9rem;transition:all .15s}.btn-nav:hover:not(:disabled){background:#3b82f640;border-color:#3b82f680}.btn-nav:disabled{opacity:.25;cursor:not-allowed}.btn-correct{color:#10b981;cursor:pointer;background:#10b98126;border:1px solid #10b9814d;border-radius:4px;padding:.4rem .75rem;font-size:.85rem;font-weight:500;transition:all .15s}.btn-correct:hover{background:#10b98140;border-color:#10b98180}.btn-skip{color:#fffc;cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:4px;padding:.4rem .75rem;font-size:.85rem;transition:all .15s}.btn-skip:hover{background:#ffffff1f;border-color:#ffffff40}.btn-no-deer{color:#fbbf24;cursor:pointer;background:#fbbf2426;border:1px solid #fbbf244d;border-radius:4px;padding:.4rem .75rem;font-size:.85rem;font-weight:500;transition:all .15s}.btn-no-deer:hover{background:#fbbf2440;border-color:#fbbf2480}.btn-clear-frames{color:#dc2626;cursor:pointer;background:#dc262626;border:1px solid #dc26264d;border-radius:4px;padding:.4rem .75rem;font-size:.85rem;transition:all .15s}.btn-clear-frames:hover{background:#dc262640;border-color:#dc262680}.review-main-area{flex:1;display:flex;overflow:hidden}.canvas-area{background:#000;flex:1;justify-content:center;align-items:center;padding:1rem;display:flex;overflow:hidden}.image-wrapper{justify-content:center;align-items:center;max-width:100%;max-height:100%;display:flex;position:relative}.review-image{max-width:100%;max-height:calc(100vh - 100px);display:block}.drawing-canvas{width:100%;height:100%;position:absolute;top:0;left:0}.annotation-sidebar{background:#1e293bf2;border-left:2px solid #3b82f64d;flex-direction:column;gap:.75rem;width:320px;padding:1rem;display:flex;overflow-y:auto}.annotation-sidebar h3{color:#3b82f6;margin:0;font-size:1.2rem}.annotation-sidebar h4{color:#ffffffe6;margin:0 0 .5rem;font-size:1rem}.instructions{color:#ffffffb3;margin:0;font-size:.85rem;line-height:1.4}.box-list{background:#0f172a99;border:1px solid #3b82f633;border-radius:8px;max-height:240px;padding:.75rem;overflow-y:auto}.no-boxes{color:#ffffff80;margin:0;font-size:.9rem;font-style:italic}.box-list ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.box-list li{background:#3b82f61a;border:1px solid #3b82f633;border-radius:6px;justify-content:space-between;align-items:center;padding:.5rem;display:flex}.box-list li span{color:#3b82f6;font-weight:500}.btn-remove{color:#ef4444;cursor:pointer;background:#ef444433;border:1px solid #ef444466;border-radius:4px;padding:.4rem .8rem;font-size:.85rem;font-weight:500}.btn-remove:hover{background:#ef44444d}.sidebar-actions{gap:.5rem;margin-top:auto;display:flex}.btn-clear{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;flex:1;padding:.75rem;font-weight:500}.btn-clear:hover:not(:disabled){background:#ffffff26}.btn-clear:disabled{opacity:.3;cursor:not-allowed}.btn-save-primary{color:#fff;cursor:pointer;background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);border:none;border-radius:8px;flex:2;padding:.75rem;font-size:1rem;font-weight:600}.btn-save-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.btn-save-primary:disabled{opacity:.3;cursor:not-allowed}.review-footer{background:#0f172af2;border-top:1px solid #3b82f64d;justify-content:space-between;align-items:center;gap:2rem;padding:.75rem 1.5rem;font-size:.9rem;display:flex}.footer-legend,.footer-shortcuts{color:#fffc;align-items:center;gap:.75rem;display:flex}.footer-legend .divider,.footer-shortcuts .divider{color:#ffffff4d}.footer-legend strong,.footer-shortcuts strong{color:#3b82f6;margin-right:.25rem}.loading-message,.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100vh;padding:2rem;display:flex}.empty-state h2{color:#3b82f6;margin-bottom:1rem}.empty-state p{color:#ffffffb3;margin:.5rem 0}.settings{background:#fff;border-radius:8px;max-width:800px;padding:2rem;box-shadow:0 2px 4px #0000001a}@media (prefers-color-scheme:dark){.settings{background:#1a1a1a}}.settings h2{color:#2563eb;margin:0 0 1.5rem}.message{border-radius:6px;margin-bottom:1.5rem;padding:1rem;font-weight:600}.message.success{color:#155724;background:#d4edda;border:1px solid #c3e6cb}.message.error{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb}.settings-sections{flex-direction:column;gap:2rem;margin-bottom:2rem;display:flex}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.settings-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.25rem;box-shadow:0 2px 4px #0000000d}.settings-card.camera-zones-card{grid-column:span 2}@media (prefers-color-scheme:dark){.settings-card{background:#2a2a2a;border-color:#404040}}.settings-card h3{color:#2563eb;margin:0 0 1rem;font-size:1rem;font-weight:600}.card-content{flex-direction:column;gap:.75rem;display:flex}.card-content label{color:#4b5563;margin-bottom:.25rem;font-size:.875rem;font-weight:500}@media (prefers-color-scheme:dark){.card-content label{color:#9ca3af}}.card-content input[type=number],.card-content input[type=text]{border:1px solid #d1d5db;border-radius:4px;width:100%;max-width:140px;padding:.5rem;font-size:.9rem}@media (prefers-color-scheme:dark){.card-content input[type=number],.card-content input[type=text]{color:#e0e0e0;background:#1a1a1a;border-color:#404040}}.card-content input[type=range]{width:100%}.input-with-display{align-items:center;gap:.75rem;display:flex}.value-badge{color:#fff;text-align:center;background:#2563eb;border-radius:12px;min-width:50px;padding:.25rem .75rem;font-size:.875rem;font-weight:600}.value-input{text-align:center;color:#fff;background:#2563eb;border:1px solid #d1d5db;border-radius:4px;width:70px;padding:.4rem .5rem;font-size:.875rem;font-weight:600}.value-input:focus{border-color:#1d4ed8;outline:none;box-shadow:0 0 0 2px #2563eb33}@media (prefers-color-scheme:dark){.value-input{background:#2563eb;border-color:#1d4ed8}}.checkbox-inline{cursor:pointer;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.checkbox-inline input[type=checkbox]{cursor:pointer;width:16px;height:16px}.settings-section{border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem}@media (prefers-color-scheme:dark){.settings-section{border-color:#333}}.settings-section h3{color:#2563eb;margin:0 0 1.5rem;font-size:1.2rem}.setting-item{margin-bottom:1.5rem}.setting-item:last-child{margin-bottom:0}.setting-item label{color:#333;margin-bottom:.5rem;font-weight:600;display:block}@media (prefers-color-scheme:dark){.setting-item label{color:#e0e0e0}}.help-text{color:#666;margin-top:.25rem;font-size:.85rem;font-weight:400;display:block}.setting-item input[type=number],.setting-item input[type=text]{border:2px solid #e0e0e0;border-radius:6px;width:100%;max-width:300px;padding:.75rem;font-size:1rem;transition:border-color .3s}@media (prefers-color-scheme:dark){.setting-item input[type=number],.setting-item input[type=text]{color:#e0e0e0;background:#2a2a2a;border-color:#444}}.setting-item input[type=number]:focus,.setting-item input[type=text]:focus{border-color:#2563eb;outline:none}.value-display{color:#2563eb;background:#2563eb1a;border-radius:6px;margin-left:1rem;padding:.5rem 1rem;font-weight:600;display:inline-block}.setting-item.checkbox label{cursor:pointer;align-items:flex-start;display:flex}.setting-item.checkbox input[type=checkbox]{cursor:pointer;width:20px;height:20px;margin-top:.25rem;margin-right:.75rem}.settings-actions{border-top:1px solid #e0e0e0;justify-content:flex-end;margin-top:1rem;padding-top:1rem;display:flex}@media (prefers-color-scheme:dark){.settings-actions{border-top-color:#333}}.save-button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:6px;padding:1rem 2rem;font-size:1rem;font-weight:600;transition:all .3s}.save-button:hover:not(:disabled){background:#1d4ed8;transform:translateY(-2px);box-shadow:0 4px 12px #2563eb4d}.save-button:disabled{opacity:.6;cursor:not-allowed}.zone-mappings{border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem}@media (prefers-color-scheme:dark){.zone-mappings{border-color:#404040}}.zone-mappings h3{color:#2563eb;margin:0 0 .5rem;font-size:1.2rem}.section-description{color:#666;margin:0 0 1.5rem;font-size:.95rem}@media (prefers-color-scheme:dark){.section-description{color:#999}}.camera-zone-compact{flex-direction:column;gap:.5rem;display:flex}.camera-zone-row-compact{align-items:center;gap:.5rem;display:flex}.camera-label-compact{color:#374151;flex-shrink:0;min-width:80px;font-size:.85rem;font-weight:500}@media (prefers-color-scheme:dark){.camera-label-compact{color:#e5e7eb}}.zone-select-compact{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;flex:1;padding:.5rem .75rem;font-size:.85rem;transition:all .2s}.zone-select-compact:hover{border-color:#2563eb}.zone-select-compact:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 2px #2563eb1a}@media (prefers-color-scheme:dark){.zone-select-compact{color:#e0e0e0;background:#1a1a1a;border-color:#404040}.zone-select-compact:hover{border-color:#3b82f6}}.loading-zones-compact{text-align:center;color:#666;padding:1rem;font-size:.85rem}@media (prefers-color-scheme:dark){.loading-zones-compact{color:#999}}.camera-zone-grid{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;gap:1rem;padding:1rem;display:flex}@media (prefers-color-scheme:dark){.camera-zone-grid{background:#1a1a1a;border-color:#333}}.camera-zone-row{align-items:center;gap:1rem;display:flex}.camera-label{color:#374151;min-width:140px;font-size:.95rem;font-weight:600}@media (prefers-color-scheme:dark){.camera-label{color:#e5e7eb}}.zone-select{cursor:pointer;background:#fff;border:2px solid #e0e0e0;border-radius:6px;flex:1;max-width:300px;padding:.75rem 1rem;font-size:.95rem;transition:all .2s}.zone-select:hover{border-color:#2563eb}.zone-select:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}@media (prefers-color-scheme:dark){.zone-select{color:#e0e0e0;background:#2a2a2a;border-color:#444}.zone-select:hover{border-color:#3b82f6}}@media (max-width:768px){.camera-zone-row{flex-direction:column;align-items:flex-start}.zone-select{width:100%;max-width:100%}}.loading-zones{text-align:center;color:#666;padding:2rem}@media (prefers-color-scheme:dark){.loading-zones{color:#999}}.loading-zones .help-text{margin-top:.5rem;font-size:.9rem;display:block}@media (max-width:768px){.settings{padding:1rem}.settings-grid{grid-template-columns:1fr}.setting-item input[type=number],.setting-item input[type=text]{max-width:100%}.value-display{margin-top:.5rem;margin-left:0;display:block}}
