.landing-page{flex-direction:column;justify-content:center;align-items:center;gap:48px;min-height:100vh;padding:40px 20px;display:flex}.landing-header{text-align:center}.drop-zone{border:2px dashed var(--drop-zone-border);border-radius:var(--radius-lg);background:var(--bg-secondary);text-align:center;cursor:pointer;width:100%;max-width:800px;transition:all var(--transition-normal);flex-direction:column;align-items:center;gap:32px;padding:48px 40px;display:flex;position:relative;overflow:hidden}.drop-zone:before{content:"";background:linear-gradient(90deg,#0000,#3b82f61a,#0000);animation:3s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes shimmer{to{transform:translate(100%)}}.drop-zone:hover{border-color:var(--accent);background:#3b82f60d}.drop-zone.drag-over{border-color:var(--accent);background:#3b82f61a;box-shadow:0 0 20px #3b82f64d}.landing-title{color:var(--text-primary);margin-bottom:8px;font-size:32px;font-weight:600}.landing-subtitle{color:var(--text-secondary);font-size:16px}.flow-illustration{flex-wrap:nowrap;justify-content:center;align-items:center;gap:24px;display:flex}.flow-step{flex-direction:column;align-items:center;gap:12px;display:flex}.flow-icon{background:var(--surface);border-radius:var(--radius-lg);width:80px;height:80px;color:var(--accent);transition:all var(--transition-normal);justify-content:center;align-items:center;display:flex}.flow-icon-video{color:var(--accent)}.flow-icon-frames{color:var(--success)}.flow-icon-zip{color:var(--warning)}.flow-label{text-align:center;flex-direction:column;align-items:center;display:flex}.flow-title{color:var(--text-primary);font-size:14px;font-weight:500}.flow-subtitle{color:var(--text-secondary);font-size:12px}.flow-arrow{color:var(--text-disabled)}.drop-zone-prompt{background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border);flex-direction:column;align-items:center;padding:40px;display:flex}.drop-zone-icon{color:var(--text-secondary);margin-bottom:16px}.drop-zone-text{color:var(--text-primary);margin-bottom:8px;font-size:18px;font-weight:500}.drop-zone-subtext{color:var(--text-secondary);margin-bottom:4px;font-size:14px}.drop-zone-formats{color:var(--text-disabled);font-size:12px}.drop-zone input[type=file]{display:none}.drop-zone-error{border-radius:var(--radius-md);color:var(--danger);background:#ef44441a;margin-top:16px;padding:12px 16px;font-size:14px}.drop-zone-loading{flex-direction:column;align-items:center;gap:16px;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.benchmark-link{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;align-items:center;gap:8px;padding:10px 20px;font-size:14px;display:flex}.benchmark-link:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--text-secondary)}.benchmark-link svg{opacity:.7}.benchmark-link:hover svg{opacity:1}@media (max-width:640px){.flow-illustration{flex-direction:column;gap:16px}.flow-arrow{transform:rotate(90deg)}.drop-zone{padding:40px 20px}}.timeline-thumbnail-bar{background:var(--surface);border-radius:var(--radius-md);flex-shrink:0;width:100%;position:relative;overflow:hidden}.timeline-thumbnail-loading{height:100%;color:var(--text-secondary);justify-content:center;align-items:center;font-size:12px;display:flex}.timeline-thumbnails{width:100%;display:flex}.timeline-thumbnail{cursor:pointer;height:100%;transition:all var(--transition-fast);background:0 0;border:none;flex:1;margin:0;padding:0;position:relative;overflow:hidden}.timeline-thumbnail:after{content:"";pointer-events:none;transition:border-color var(--transition-fast);border:2px solid #0000;position:absolute;inset:0}.timeline-thumbnail:hover:after{border-color:var(--accent)}.timeline-thumbnail.active:after{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.timeline-thumbnail:focus-visible{outline:none}.timeline-thumbnail:focus-visible:after{border-color:var(--accent)}.timeline-thumbnail-image{object-fit:cover;width:100%;height:100%;display:block}.timeline-progress-indicator{background:var(--accent);width:2px;box-shadow:0 0 4px var(--accent);pointer-events:none;z-index:1;position:absolute;top:0;bottom:0;transform:translate(-50%)}.video-player-container{flex-direction:column;gap:8px;width:100%;height:100%;min-height:0;display:flex}.video-wrapper{border-radius:var(--radius-lg);background:#000;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.video-wrapper video{object-fit:contain;max-width:100%;max-height:100%}.video-controls{background:var(--surface);border-radius:var(--radius-lg);flex-shrink:0;align-items:center;gap:12px;padding:8px 16px;display:flex}.play-button{background:var(--accent);color:#fff;width:36px;height:36px;transition:all var(--transition-fast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.play-button:hover:not(:disabled){background:var(--accent-hover);transform:scale(1.05)}.play-button:disabled{opacity:.5;cursor:not-allowed}.seek-bar-container{flex:1;align-items:center;gap:12px;display:flex}.seek-bar{cursor:pointer;background:0 0;flex:1;align-items:center;height:24px;display:flex;position:relative}.seek-bar:before{content:"";background:var(--border);border-radius:3px;height:6px;position:absolute;left:0;right:0}.seek-bar-progress{background:var(--accent);pointer-events:none;border-radius:3px;height:6px;position:absolute;left:0}.seek-bar-thumb{width:14px;height:14px;box-shadow:var(--shadow-md);pointer-events:none;opacity:0;transition:opacity var(--transition-fast);background:#fff;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.seek-bar:hover:not(.seek-bar--disabled) .seek-bar-thumb{opacity:1}.seek-bar--disabled{cursor:not-allowed;opacity:.5}.time-display{color:var(--text-secondary);white-space:nowrap;text-align:right;min-width:80px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:12px}.add-frame-button{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:500;display:flex}.add-frame-button:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}.add-frame-button:disabled{opacity:.5;cursor:not-allowed}.video-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.video-actions-left,.video-actions-right{gap:8px;display:flex}.screen-modal-backdrop{z-index:1000;background:#000000e6;justify-content:center;align-items:center;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.screen-modal{flex-direction:column;max-width:90vw;max-height:90vh;display:flex}.screen-modal-header{color:#fff;justify-content:center;align-items:center;gap:16px;padding:12px 16px;display:flex}.screen-modal-counter{color:#ffffffb3;font-size:14px;font-weight:500}.screen-modal-timestamp{color:#fff;font-family:SF Mono,Monaco,Consolas,monospace;font-size:14px}.screen-modal-close{color:#fff;width:40px;height:40px;transition:background var(--transition-fast);background:#ffffff1a;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:16px;right:16px}.screen-modal-close:hover{background:#fff3}.screen-modal-content{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.screen-modal-image{object-fit:contain;border-radius:var(--radius-lg);max-width:100%;max-height:70vh;box-shadow:0 20px 60px #00000080}.screen-modal-nav{color:#fff;width:48px;height:48px;transition:all var(--transition-fast);background:#ffffff1a;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.screen-modal-nav:hover{background:#fff3;transform:translateY(-50%)scale(1.1)}.screen-modal-nav-prev{left:16px}.screen-modal-nav-next{right:16px}.screen-modal-footer{justify-content:center;padding:16px;display:flex}.screen-modal-remove{border-radius:var(--radius-md);color:#ef4444;transition:all var(--transition-fast);background:#ef444433;border:1px solid #ef444466;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:500;display:flex}.screen-modal-remove:hover{background:#ef44444d;border-color:#ef444499}.thumbnail-strip-container{background:var(--surface);border-radius:var(--radius-lg);padding:16px}.thumbnail-strip-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.thumbnail-strip-title{color:var(--text-primary);font-size:14px;font-weight:500}.thumbnail-strip-actions{gap:8px;display:flex}.thumbnail-strip{grid-template-columns:repeat(3,1fr);gap:8px;padding:4px 0;display:grid}.thumbnail-empty{color:var(--text-secondary);text-align:center;justify-content:center;align-items:center;padding:32px;font-size:14px;display:flex}.thumbnail{border-radius:var(--radius-md);cursor:pointer;width:100%;transition:all var(--transition-fast);border:2px solid #0000;position:relative;overflow:hidden}.thumbnail:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.thumbnail.active{border-color:var(--accent);box-shadow:0 0 0 2px #3b82f64d}.thumbnail-image{aspect-ratio:9/16;object-fit:cover;width:100%;display:block}.thumbnail-overlay{opacity:0;transition:opacity var(--transition-fast);background:linear-gradient(#0000,#000000b3);flex-direction:column;justify-content:flex-end;padding:8px;display:flex;position:absolute;inset:0}.thumbnail:hover .thumbnail-overlay{opacity:1}.thumbnail-timestamp{color:#fff;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px}.thumbnail-remove{color:#fff;opacity:0;width:20px;height:20px;transition:opacity var(--transition-fast);background:#ef4444e6;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:4px;right:4px}.thumbnail:hover .thumbnail-remove{opacity:1}.thumbnail-remove:hover{background:var(--danger)}.add-frame-btn{aspect-ratio:9/16;border:2px dashed var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-secondary);transition:all var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.add-frame-btn:hover{border-color:var(--accent);color:var(--accent);background:#3b82f60d}.add-frame-btn svg{width:24px;height:24px}.add-frame-btn span{font-size:11px}.detection-controls{background:var(--surface);border-radius:var(--radius-lg);flex-shrink:0;align-items:center;gap:16px;padding:16px;display:flex}.detection-controls-left{flex-shrink:0;align-items:center;gap:12px;display:flex}.detection-button{min-width:160px}.mode-toggle{background:var(--bg-secondary);border-radius:var(--radius-md);padding:2px;display:flex}.mode-toggle--disabled{opacity:.5;pointer-events:none}.mode-toggle__option{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:6px 12px;font-size:13px;font-weight:500;transition:all .15s}.mode-toggle__option:hover:not(:disabled){color:var(--text-primary)}.mode-toggle__option--active{background:var(--surface);color:var(--text-primary);box-shadow:0 1px 2px #0000001a}.mode-toggle__option:disabled{cursor:not-allowed}.detection-progress{flex-direction:column;flex:1;gap:6px;display:flex}.progress-bar-container{background:var(--bg-secondary);border-radius:4px;height:8px;overflow:hidden}.progress-bar{background:linear-gradient(90deg,var(--accent),var(--success));border-radius:4px;height:100%;transition:width .3s ease-out}.progress-text{color:var(--text-secondary);justify-content:space-between;font-size:12px;display:flex}.progress-percentage{color:var(--text-primary);font-weight:500}.detection-stats{gap:16px;font-size:13px;display:flex}.stat-item{align-items:center;gap:6px;display:flex}.stat-value{color:var(--text-primary);font-weight:600}.stat-label{color:var(--text-secondary)}.detection-idle{color:var(--text-secondary);font-size:14px}.processing-time{color:var(--text-disabled)}.export-panel{background:var(--surface);border-radius:var(--radius-lg);justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.export-info{align-items:center;gap:8px;font-size:14px;display:flex}.export-count{color:var(--text-primary);font-weight:600}.export-label{color:var(--text-secondary)}.export-actions{gap:12px;display:flex}.export-button{min-width:140px}.export-progress{flex-direction:column;flex:1;gap:6px;max-width:300px;display:flex}.export-progress-bar{background:var(--bg-secondary);border-radius:3px;height:6px;overflow:hidden}.export-progress-fill{background:var(--success);border-radius:3px;height:100%;transition:width .3s ease-out}.export-progress-text{color:var(--text-secondary);text-align:center;font-size:12px}.debug-panel{background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0}.debug-panel.collapsed{border-top:none}.debug-panel-toggle{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:8px;margin:6px 20px;padding:4px 12px;font-size:11px;display:flex}.debug-panel-toggle:hover{color:var(--text-primary);background:var(--surface-hover)}.debug-panel-content{flex-direction:column;gap:12px;padding:8px 20px 10px;display:flex}.debug-panel-section{flex-direction:column;gap:6px;display:flex}.debug-section-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.debug-panel-stats{flex-wrap:wrap;gap:20px;display:flex}.debug-stat{flex-direction:column;gap:2px;display:flex}.debug-stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:10px}.debug-stat-value{color:var(--text-primary);font-size:14px;font-weight:600}.app{background:var(--bg-primary);flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 20px;display:flex}.app-title{color:var(--text-primary);margin:0;font-size:20px;font-weight:600}.app-main{flex:1;min-height:0;padding:12px 20px;overflow:hidden}.editor-layout{flex-direction:column;gap:12px;width:100%;height:100%;display:flex}.video-section{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.frames-section{flex-direction:column;gap:12px;display:flex;overflow-y:auto}@media (min-width:1024px){.editor-layout{flex-direction:row;align-items:stretch}.video-section{flex:1;min-width:0}.frames-section{flex:0 0 420px;max-height:100%}}.algorithm-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:12px;padding:16px;display:flex}.algorithm-card--running{border-color:var(--accent)}.algorithm-card--complete{border-color:var(--success)}.algorithm-card--error{border-color:var(--danger)}.algorithm-card__header{justify-content:space-between;align-items:center;display:flex}.algorithm-card__name{color:var(--text-primary);margin:0;font-size:16px;font-weight:600}.algorithm-card__status{border-radius:var(--radius-sm);padding:4px 8px;font-size:12px;font-weight:500}.algorithm-card__status--pending{background:var(--bg-secondary);color:var(--text-secondary)}.algorithm-card__status--running{color:var(--accent);background:#3b82f61a}.algorithm-card__status--complete{color:var(--success);background:#22c55e1a}.algorithm-card__status--error{color:var(--danger);background:#ef44441a}.algorithm-card__description{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.4}.algorithm-card__loading{color:var(--text-secondary);justify-content:center;align-items:center;gap:12px;padding:20px;font-size:14px;display:flex}.algorithm-card__spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:1s linear infinite spin}.algorithm-card__error{border-radius:var(--radius-md);color:var(--danger);background:#ef44441a;padding:12px;font-size:13px}.algorithm-card__thumbnails{gap:12px;min-height:320px;padding:12px 0;display:flex;overflow-x:auto}.algorithm-card__no-frames{width:100%;color:var(--text-disabled);justify-content:center;align-items:center;font-size:13px;display:flex}.algorithm-card__thumbnail{border-radius:var(--radius-md);border:1px solid var(--border);flex-shrink:0;width:auto;height:300px}.algorithm-card__thumbnail:hover{border-color:var(--accent);cursor:pointer}.algorithm-card__metrics{border-top:1px solid var(--border);flex-wrap:wrap;gap:16px;padding-top:8px;display:flex}.algorithm-card__metric{flex-direction:column;gap:2px;display:flex}.algorithm-card__metric-label{color:var(--text-disabled);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.algorithm-card__metric-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.benchmark-page{background:var(--bg-primary);flex-direction:column;height:100vh;display:flex;overflow:hidden}.benchmark-header{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 20px;display:flex}.benchmark-title{color:var(--text-primary);margin:0;font-size:20px;font-weight:600}.back-button{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;align-items:center;gap:8px;padding:8px 16px;font-size:14px;display:flex}.back-button:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--text-secondary)}.header-spacer{width:80px}.benchmark-main{flex-direction:column;flex:1;gap:24px;padding:20px;display:flex;overflow-y:auto}.benchmark-controls{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.benchmark-dropzone{border:2px dashed var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px;display:flex}.benchmark-dropzone:hover,.benchmark-dropzone.drag-over{border-color:var(--accent);background:#3b82f60d}.benchmark-video-info{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.benchmark-video-preview{border-radius:var(--radius-md);background:var(--bg-secondary);width:120px;height:auto}.benchmark-video-details{flex-direction:column;flex:1;gap:4px;min-width:200px;display:flex}.benchmark-video-name{color:var(--text-primary);word-break:break-all;font-size:14px;font-weight:500}.benchmark-video-size{color:var(--text-secondary);font-size:13px}.benchmark-actions{flex-wrap:wrap;gap:12px;display:flex}.benchmark-button{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:none;padding:10px 20px;font-size:14px;font-weight:500}.benchmark-button:disabled{opacity:.5;cursor:not-allowed}.benchmark-button--start{background:var(--accent);color:#fff}.benchmark-button--start:hover:not(:disabled){background:var(--accent-hover)}.benchmark-button--cancel{background:var(--danger);color:#fff}.benchmark-button--cancel:hover{opacity:.9}.benchmark-button--change{border:1px solid var(--border);color:var(--text-secondary);background:0 0}.benchmark-button--change:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary)}.benchmark-results{flex-direction:column;gap:16px;display:flex}.benchmark-results-title{color:var(--text-primary);align-items:center;gap:12px;margin:0;font-size:18px;font-weight:600;display:flex}.benchmark-running-indicator{color:var(--accent);border-radius:var(--radius-sm);background:#3b82f61a;padding:4px 10px;font-size:13px;font-weight:400}.benchmark-results-grid{flex-direction:column;gap:16px;display:flex}.benchmark-empty-state{text-align:center;color:var(--text-secondary);padding:60px 20px}.benchmark-empty-state p{margin:0 0 8px}.benchmark-empty-note{color:var(--text-disabled);font-size:13px}@media (max-width:640px){.benchmark-results-grid{grid-template-columns:1fr}.benchmark-video-info{flex-direction:column;align-items:flex-start}.benchmark-video-preview{width:100%;max-width:200px}}:root{--bg-primary:#1a1a2e;--bg-secondary:#16213e;--surface:#1f2937;--surface-hover:#2d3748;--border:#374151;--border-focus:#3b82f6;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--text-disabled:#6b7280;--accent:#3b82f6;--accent-hover:#2563eb;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--drop-zone-border:#4b5563;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px #0000004d;--shadow-lg:0 10px 15px #0000004d;--transition-fast:.15s ease-out;--transition-normal:.2s ease-out;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}button{font-family:inherit;font-size:inherit;cursor:pointer;color:inherit;background:0 0;border:none}button:disabled{cursor:not-allowed;opacity:.5}input{font-family:inherit;font-size:inherit}.btn{border-radius:var(--radius-md);transition:all var(--transition-fast);justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--text-secondary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface);color:var(--text-primary)}.btn-sm{padding:6px 12px;font-size:12px}.btn-lg{padding:14px 28px;font-size:16px}
