:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow-x:hidden}#root{width:100%;height:100%}button{font-family:inherit}*{margin:0;padding:0;box-sizing:border-box}:root{--primary-color: #ff6b35;--secondary-color: #004e89;--success-color: #06a77d;--danger-color: #ff6b6b;--background-color: #f5f5f5;--text-dark: #333;--text-light: #666;--border-color: #ddd;--border-radius: 8px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--background-color);color:var(--text-dark)}#root{height:100vh;display:flex;flex-direction:column}.app{display:flex;flex-direction:column;height:100vh}.app-header{background:linear-gradient(135deg,var(--secondary-color) 0%,#0066bb 100%);color:#fff;padding:8px 20px;box-shadow:0 2px 8px #0000001a;display:flex;align-items:center;gap:16px;flex-shrink:0}.app-header h1{margin:0;font-size:18px;font-weight:600;white-space:nowrap;flex-shrink:0}.app-header h1 .version{font-size:11px;font-weight:400;opacity:.7;margin-left:6px;background:#ffffff26;padding:2px 6px;border-radius:3px;vertical-align:middle}.header-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-left:auto}.btn-import{padding:6px 12px;background-color:var(--primary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;transition:all .2s ease;white-space:nowrap}.btn-import:hover:not(:disabled){background-color:#e55a2b;transform:translateY(-2px);box-shadow:0 4px 12px #ff6b354d}.btn-import:disabled{background-color:#ccc;cursor:not-allowed}.file-input-label{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background-color:#ffffff26;border:1px solid rgba(255,255,255,.35);border-radius:6px;cursor:pointer;font-size:12px;font-weight:400;transition:all .2s ease;white-space:nowrap;color:#fff}.file-input-label:hover{background-color:#ffffff40;border-color:#fff9;transform:translateY(-1px)}.file-input-label input{display:none}.btn-actions-group{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.btn-actions-group:before{content:"";width:1px;height:22px;background:#ffffff40;margin:0 4px}.main-content{display:flex;flex:1;gap:0;overflow:hidden;min-width:0}.video-list-panel{width:240px;flex-shrink:0;background:#fff;border-right:1px solid var(--border-color);overflow-y:auto;padding:16px}.video-list-panel h2{font-size:18px;margin-bottom:15px;color:var(--secondary-color)}.annotation-panel{flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;padding:12px 16px;background:#fff}.no-video-message{display:flex;align-items:center;justify-content:center;height:100%;font-size:18px;color:var(--text-light)}.btn{padding:6px 12px;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn:disabled{background-color:#ccc;cursor:not-allowed}.btn-primary{background-color:var(--success-color);color:#fff}.btn-primary:hover:not(:disabled){background-color:#058a6f;transform:translateY(-2px);box-shadow:0 4px 12px #06a87d4d}.btn-mark{flex:1;min-width:120px;background-color:var(--primary-color);color:#fff}.btn-mark:hover:not(:disabled){background-color:#e55a2b;transform:translateY(-2px);box-shadow:0 4px 12px #ff6b354d}.btn-remove{padding:6px 12px;font-size:12px;background-color:var(--danger-color);color:#fff}.btn-remove:hover{background-color:#ff5252}@media (max-width: 1024px){.main-content{flex-direction:column}.video-list-panel{width:100%;border-right:none;border-bottom:1px solid var(--border-color);max-height:200px}}@media (max-width: 900px){.app-header{flex-wrap:wrap;padding:8px 12px}.header-actions{margin-left:0}}@media (max-width: 640px){.annotation-panel{padding:8px 10px}}.video-list-wrap{display:flex;flex-direction:column;gap:10px;height:100%}.progress-summary{flex-shrink:0;background:#fff;border:1px solid var(--border-color);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}.progress-line{display:flex;justify-content:space-between;align-items:baseline}.progress-num{font-size:18px;font-weight:700;color:var(--secondary-color);font-family:SF Mono,Menlo,monospace}.progress-denom{color:var(--text-light);font-weight:400;font-size:13px}.progress-pct{font-size:12px;color:var(--text-light);font-family:SF Mono,Menlo,monospace}.progress-bar{height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#06a77d,#10b981);transition:width .3s ease}.progress-filters{display:flex;gap:4px}.filter-btn{flex:1;padding:4px 6px;background:#f3f4f6;color:var(--text-light);border:1px solid transparent;border-radius:4px;cursor:pointer;font-size:11px;white-space:nowrap}.filter-btn:hover{background:#e5e7eb}.filter-btn.active{background:var(--secondary-color);color:#fff;border-color:var(--secondary-color)}.video-list{flex:1;display:flex;flex-direction:column;gap:6px;overflow-y:auto}.video-item{padding:8px 10px;background:var(--background-color);border:2px solid transparent;border-radius:5px;cursor:pointer;transition:all .15s ease;word-break:break-word;font-size:12px}.video-item.pending{background:#fffbeb}.video-item.done{background:#f0fdf4}.video-item:hover{border-color:var(--primary-color)}.video-item.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.video-item.active.done,.video-item.active.pending{background:var(--primary-color)}.video-item-name{font-weight:600;margin-bottom:2px;display:flex;align-items:baseline;gap:6px}.status-dot{flex-shrink:0;font-size:11px;font-weight:700;width:14px;text-align:center}.status-dot.done{color:#16a34a}.status-dot.pending{color:#d97706}.video-item.active .status-dot{color:#fff}.video-item-status{font-size:11px;opacity:.85;display:flex;flex-wrap:wrap;gap:4px;align-items:center}.pred-badge{font-size:10px}.flag-badges{display:flex;gap:2px}.flag-badge{display:inline-block;padding:1px 5px;background:#fef3c7;color:#92400e;border-radius:7px;font-size:9px;font-weight:600}.video-item.active .flag-badge{background:#ffffff40;color:#fff}.placeholder{color:var(--text-light);text-align:center;padding:20px;font-style:italic}.placeholder.small{padding:14px 8px;font-size:12px}.video-player-container{display:flex;flex-direction:column;gap:0;background:#000;border-radius:var(--border-radius);overflow:hidden;box-shadow:0 2px 8px #0000001f}.video-stage{position:relative;display:flex;justify-content:center;align-items:center;background:#000;width:100%}.video-player{display:block;max-width:100%;max-height:50vh;width:auto;height:auto;background:#000}.pose-canvas-overlay{position:absolute;pointer-events:none;top:0;left:0}.custom-progress-bar{position:relative;cursor:pointer;background:#1a1a1a;padding:14px 16px 8px;overflow:hidden}.progress-track{position:relative;width:100%;height:18px;background:#2a2a2a;border-radius:4px;overflow:visible}.annotation-marker{position:absolute;top:0;width:4px;height:100%;transform:translate(-50%);border-radius:2px;cursor:pointer;transition:opacity .15s ease}.annotation-marker:hover{opacity:1}.gt-marker{background:#22c55e;box-shadow:0 0 0 1px #0006}.pred-marker{background:#f97316;opacity:.85;top:50%;height:50%}.annotation-marker:after{position:absolute;top:-16px;left:50%;transform:translate(-50%);font-size:10px;font-weight:700}.gt-marker:after{color:#22c55e}.pred-marker:after{color:#f97316;top:auto;bottom:-16px}.mk-start_loading:after{content:"S"}.mk-finish_loading:after{content:"F"}.mk-shoot_moment:after{content:"X"}.playback-position{position:absolute;top:-2px;width:2px;height:calc(100% + 4px);background:#fff;transform:translate(-50%);pointer-events:none}.video-info{background:#1a1a1a;color:#fff;padding:8px 16px;font-size:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.frame-hud{display:flex;flex-direction:column;gap:2px;padding:6px 10px;background:#0a0a0a;border-radius:4px;font-family:SF Mono,Menlo,Courier New,monospace;font-size:12px;min-width:240px}.hud-line{display:flex;gap:6px;align-items:baseline}.hud-line.muted{color:#888}.hud-label{color:#888;font-size:10px;text-transform:uppercase}.hud-val{color:#fff;font-weight:600}.hud-line.muted .hud-val{color:#aaa;font-weight:400}.hud-sep{color:#444}.hud-warn{color:#fbbf24;font-size:11px;margin-top:2px}.frame-controls,.playback-controls{display:flex;gap:6px}.btn-small{padding:6px 10px;background-color:#333;color:#fff;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:11px;font-weight:500;white-space:nowrap}.btn-small:hover{background-color:#444;border-color:var(--primary-color)}.btn-small.active{background-color:var(--primary-color);border-color:var(--primary-color)}.speed-selector{display:flex;gap:4px;background:#333;padding:4px;border-radius:3px}.speed-btn{padding:4px 8px;background-color:transparent;color:#fff;border:1px solid transparent;border-radius:2px;cursor:pointer;font-size:11px;font-weight:500}.speed-btn:hover{background-color:#444}.speed-btn.active{background-color:var(--primary-color);border-color:var(--primary-color)}.kbd-hint{background:#f3f4f6;color:#4b5563;padding:6px 12px;font-size:11px;text-align:center;font-family:SF Mono,Menlo,monospace;border-top:1px solid var(--border-color)}@media (max-width: 1200px){.video-info{gap:8px;padding:10px 12px}.speed-btn{padding:3px 6px;font-size:10px}.btn-small{padding:5px 8px;font-size:10px}}@media (max-width: 768px){.video-info{flex-direction:column;align-items:stretch;gap:8px}.frame-controls,.playback-controls,.speed-selector{width:100%;justify-content:center}}.annotation-timeline{background:var(--background-color);border-radius:6px;padding:8px 12px}.annotation-timeline h3{font-size:13px;margin-bottom:6px;color:var(--secondary-color)}.placeholder{color:var(--text-light);text-align:center;padding:30px 20px;font-style:italic}.timeline-meta{display:flex;gap:16px;font-size:12px;color:var(--text-light);margin-bottom:12px;font-family:SF Mono,Courier New,monospace}.timeline-meta b{color:var(--secondary-color)}.timeline-shot{background:#fff;border:1px solid var(--border-color);border-radius:5px;padding:8px 10px;margin-bottom:6px}.timeline-shot.active{border-color:var(--primary-color);box-shadow:0 0 0 1px var(--primary-color)}.timeline-shot-header{display:flex;justify-content:space-between;margin-bottom:8px}.timeline-shot-name{font-weight:600;font-size:13px;color:var(--secondary-color)}.timeline-shot-track{position:relative;height:28px;cursor:pointer;margin-bottom:8px;overflow:hidden}.track-bg{position:absolute;top:8px;left:0;right:0;height:12px;background:#f3f4f6;border-radius:6px}.tl-marker{position:absolute;top:0;height:100%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;font-size:18px;width:20px;cursor:pointer;z-index:2}.tl-marker.gt .tl-emoji{filter:drop-shadow(0 0 1px rgba(34,197,94,.6))}.tl-marker.pred{width:4px;height:14px;transform:translate(-50%);margin-top:7px;background:#f97316;border-radius:2px;z-index:1}.tl-playhead{position:absolute;top:4px;width:2px;height:20px;background:#1f2937;transform:translate(-50%);pointer-events:none;z-index:3}.timeline-shot-details{display:flex;gap:8px;flex-wrap:wrap;font-size:12px}.kf-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:#f9fafb;border:1px solid var(--border-color);border-radius:12px}.kf-pill b{font-family:SF Mono,Courier New,monospace;color:var(--primary-color)}.kf-pill-secs{color:var(--text-light)}.legend{display:flex;gap:14px;font-size:12px;margin-top:8px;color:var(--text-light)}.legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin-right:6px}.legend .dot.gt{background:#22c55e}.legend .dot.pred{background:#f97316}.angle-chart{background:#fff;border:1px solid var(--border-color);border-radius:6px;padding:8px 12px}.angle-chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;flex-wrap:wrap;gap:8px}.angle-chart h3{font-size:12px;margin:0;color:var(--secondary-color)}.angle-canvas{width:100%;height:180px;display:block;cursor:crosshair;background:#fafafa;border-radius:4px}.angle-hint{margin-top:6px;font-size:11px;color:var(--text-light);font-style:italic}.legend-line{display:flex;gap:14px;font-size:11px;color:var(--text-light)}.legend-line .ln{display:inline-block;width:14px;height:2px;vertical-align:middle;margin-right:4px}.legend-line .ln.blue{background:#2563eb}.legend-line .ln.red{background:#dc2626}.legend-line .ln.green{background:#22c55e;height:10px;width:2px}.legend-line .ln.orange{background:#f97316;height:10px;width:2px}.legend-line .ln.dashed{background:repeating-linear-gradient(0deg,#f97316 0 3px,transparent 3px 6px)}.annotation-editor{display:flex;flex-direction:column;gap:10px;width:100%;min-width:0}.flags-panel{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:var(--background-color);padding:6px 12px;border-radius:6px;font-size:12px}.flags-label{font-weight:600;color:var(--secondary-color);margin-right:4px}.flag-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#fff;border:1px solid var(--border-color);border-radius:14px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;transition:all .15s ease}.flag-chip input{margin:0}.flag-chip:hover{border-color:var(--primary-color)}.flag-chip.on{background:#fef3c7;border-color:#f59e0b;color:#92400e}.shots-panel{background:var(--background-color);padding:10px 12px;border-radius:6px}.shots-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--border-color)}.shot-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:#fff;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;color:var(--secondary-color)}.shot-tab.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.shot-tab.add{background:transparent;border-style:dashed;color:var(--text-light)}.shot-tab.add:hover{border-color:var(--primary-color);color:var(--primary-color)}.shot-done{font-size:11px;color:#22c55e}.shot-tab.active .shot-done{color:#fff}.shot-remove{margin-left:4px;padding:0 4px;font-weight:700;opacity:.6}.shot-remove:hover{opacity:1}.keyframe-grid{display:flex;flex-direction:column;gap:4px}.keyframe-row{background:#fff;border:1px solid var(--border-color);border-radius:5px;padding:6px 10px}.keyframe-row.compact{display:flex;align-items:center;gap:8px;font-size:12px;flex-wrap:wrap}.keyframe-row.flash{background:#d1fae5;border-color:#10b981;transition:background .15s,border-color .15s}.kf-spacer{flex:1}.kf-head{display:flex;align-items:center;gap:8px;margin-bottom:3px}.kf-emoji{font-size:18px}.kf-label{font-weight:600}.kf-shortcut{margin-left:auto;background:#f3f4f6;border:1px solid var(--border-color);border-radius:3px;padding:2px 6px;font-family:SF Mono,Courier New,monospace;font-size:11px}.kf-body{display:flex;flex-direction:column;gap:6px}.kf-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px}.kf-line.muted{opacity:.7}.kf-tag{display:inline-block;padding:2px 6px;border-radius:3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.kf-tag.gt{background:#dcfce7;color:#166534}.kf-tag.pred{background:#ffedd5;color:#9a3412}.kf-tag.oldgt{background:#f3f4f6;color:#4b5563}.kf-frame-btn{background:#f9fafb;border:1px solid var(--border-color);border-radius:4px;padding:4px 10px;font-family:SF Mono,Courier New,monospace;font-size:12px;cursor:pointer}.kf-frame-btn:hover{background:#eef2ff;border-color:#818cf8}.kf-frame-btn.pred{background:#ffedd5;border-color:#fdba74}.kf-frame-btn.dim{background:#f3f4f6;color:#6b7280;cursor:default}.kf-empty{color:var(--text-light);font-style:italic;font-size:12px}.btn-mark-now{background:var(--success-color);color:#fff;border:none;border-radius:4px;padding:6px 12px;font-size:12px;cursor:pointer;margin-left:auto}.btn-mark-now:hover{background:#058a6f}.btn-mark-now.pressed{background:#04695a;transform:scale(.96)}.btn-mini{padding:3px 8px;font-size:11px;background:#fff;border:1px solid var(--border-color);border-radius:3px;cursor:pointer}.btn-mini:hover{background:#f3f4f6}.btn-mini.adopt{background:#f97316;color:#fff;border-color:#f97316;font-weight:600}.btn-mini.adopt:hover{background:#ea580c}.diff-badge{font-family:SF Mono,Courier New,monospace;font-size:11px;padding:2px 6px;border-radius:3px;font-weight:600}.diff-badge.good{background:#dcfce7;color:#166534}.diff-badge.medium{background:#fef3c7;color:#92400e}.diff-badge.bad{background:#fee2e2;color:#991b1b}.hint-text{color:var(--text-light);font-size:11px;font-style:italic}@media (max-width: 768px){.keyframe-row{padding:10px}.kf-line{font-size:12px}.btn-mark-now{width:100%;margin-top:4px}}
