*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0a0f;--surface: #111118;--border: #1e1e2e;--text: #e0e0f0;--muted: #55556a;--accent: #6677ee;--live: #e74c3c}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{background:#0d0d14;border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;gap:16px;padding:18px 14px;width:230px}.sidebar-brand{align-items:center;display:flex;gap:8px;padding:2px 4px 10px}.sidebar-brand h1{font-size:.95rem}.sidebar-nav{display:flex;flex-direction:column;gap:8px}.sidebar-group-label{color:#7d8299;font-size:.66rem;font-weight:700;letter-spacing:.09em;margin-top:8px;padding:4px 6px 0;text-transform:uppercase}.sidebar-link{background:none;border:1px solid var(--border);border-radius:8px;color:#9ca3be;cursor:pointer;font-size:.8rem;letter-spacing:.03em;padding:9px 10px;text-align:left;transition:color .15s,border-color .15s,background .15s}.sidebar-link:hover{color:var(--text)}.sidebar-link.active{background:#6677ee21;border-color:#6677eea6;color:#b3beff}.sidebar-auth{margin-top:auto;padding:1rem .75rem .75rem;border-top:1px solid rgba(255,255,255,.07)}.sidebar-auth-email{font-size:.72rem;color:var(--text-muted);margin-bottom:.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-auth-input{display:block;width:100%;box-sizing:border-box;padding:.35rem .5rem;margin-bottom:.4rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:var(--text);font-size:.8rem}.sidebar-auth-input::placeholder{color:var(--text-muted)}.sidebar-auth-error{font-size:.75rem;color:#e55;margin-bottom:.4rem}.app-content{display:flex;flex:1;flex-direction:column;min-width:0}.content-main{flex:1;min-height:0}header{border-bottom:1px solid var(--border);padding:20px 32px 0}.header-inner{align-items:center;display:flex;gap:10px;margin-bottom:16px}h1{color:#c0c0e0;font-size:1.3rem;font-weight:600;letter-spacing:.02em}.live-dot{animation:pulse 2s infinite;background:var(--live);border-radius:50%;height:10px;width:10px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.city-tabs{display:flex}.tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--muted);cursor:pointer;font-size:.85rem;letter-spacing:.05em;padding:10px 20px;text-transform:uppercase;transition:color .15s,border-color .15s}.tab:hover{color:var(--text)}.tab.active{border-bottom-color:var(--accent);color:var(--text)}main{flex:1;padding:24px 32px}.city-meta{color:var(--muted);font-size:.75rem;letter-spacing:.08em;margin-bottom:16px;text-transform:uppercase}.cam-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(500px,1fr))}.cam-cell.featured{grid-column:1 / -1}.cam-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}.cam-label{align-items:center;border-bottom:1px solid var(--border);display:flex;font-size:.78rem;gap:8px;letter-spacing:.05em;padding:10px 14px;text-transform:uppercase}.live-badge{background:#e74c3c1f;border:1px solid rgba(231,76,60,.3);border-radius:4px;color:var(--live);font-size:.65rem;padding:2px 6px}.provider{color:var(--muted);font-size:.7rem}.location{color:var(--muted);font-size:.7rem;margin-left:auto}.cam-video-wrap{aspect-ratio:16 / 9;background:#0d0d14;position:relative;width:100%}.cam-video{height:100%;object-fit:cover;width:100%}.cam-overlay,.error-overlay{align-items:center;bottom:0;display:flex;flex-direction:column;gap:12px;justify-content:center;left:0;position:absolute;right:0;top:0}.overlay-label{color:var(--muted);font-size:.85rem}.error-msg{color:#e07070;font-size:.85rem}.play-btn{background:#6677ee1f;border:1px solid rgba(102,119,238,.35);border-radius:6px;color:var(--accent);cursor:pointer;font-size:.95rem;letter-spacing:.05em;padding:10px 28px;transition:background .15s}.play-btn:hover{background:#6677ee38}.retry-btn{background:#e74c3c1a;border:1px solid rgba(231,76,60,.3);border-radius:6px;color:var(--live);cursor:pointer;font-size:.8rem;padding:6px 16px}.spinner{animation:spin .8s linear infinite;border:2px solid var(--border);border-radius:50%;border-top-color:var(--accent);height:32px;width:32px}@keyframes spin{to{transform:rotate(360deg)}}.cam-card.external .cam-body{align-items:center;aspect-ratio:16 / 9;display:flex;flex-direction:column;gap:16px;justify-content:center}.location-text{color:var(--muted);font-size:.8rem}.ext-link{border:1px solid rgba(102,119,238,.3);border-radius:6px;color:var(--accent);font-size:.85rem;padding:8px 18px;text-decoration:none;transition:background .15s}.ext-link:hover{background:#6677ee26}.ext-link-sm{color:var(--accent);font-size:.78rem;text-decoration:none}footer{border-top:1px solid var(--border);color:var(--muted);font-size:.72rem;padding:16px 32px;text-align:center}footer a{color:var(--accent);text-decoration:none}.health-page{display:flex;flex-direction:column;gap:16px;max-width:980px;padding:22px 28px}.health-title{color:#d2d8f8;font-size:1rem;letter-spacing:.05em;text-transform:uppercase}.health-grid{display:grid;gap:12px;grid-template-columns:1fr}.health-card{background:#0c172494;border:1px solid rgba(255,255,255,.08);border-radius:16px;display:flex;flex-direction:column;gap:14px;padding:18px}.health-card-title{color:#a7adc9;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.health-card-state{font-size:.95rem;font-weight:600}.health-card-state.ok{color:#5ed99d}.health-card-state.bad{color:#ff8c82}.health-card-state.unknown{color:#aab0ca}.health-card-meta{color:var(--muted);font-size:.74rem}.health-meta{column-gap:10px;display:grid;grid-template-columns:auto 1fr;row-gap:8px}.health-card-header{align-items:center;display:flex;gap:12px}.health-card-header h3{font-size:1rem;margin:0 0 4px}.health-scope-tag{background:#67e3;border:1px solid rgba(102,119,238,.45);border-radius:999px;color:#b7c4ff;display:inline-block;font-size:.62rem;letter-spacing:.06em;margin-left:8px;padding:2px 8px;text-transform:uppercase;vertical-align:middle}.health-scope-tag--storage{background:#ff914033;border-color:#ff914073;color:#ffc18d}.health-card-header p{color:#9bb2ca;margin:0}.health-indicator{border-radius:999px;box-shadow:0 0 0 6px #ffffff0a;flex:0 0 auto;height:14px;width:14px}.health-indicator-up{background:#78d89d}.health-indicator-down{background:#ff7b7b}.health-detail{color:#c9d7e6;line-height:1.45;margin:0;word-break:break-word}.health-meta dt{color:#8f96b3;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.health-meta dd{color:#d7dcf8;font-size:.86rem;min-width:0;overflow-wrap:anywhere}.health-warning{background:#ffb84d1a;border:1px solid rgba(255,184,77,.35);border-radius:8px;color:#ffc071;font-size:.76rem;padding:10px 12px}.loading{align-items:center;color:var(--muted);display:flex;font-size:.9rem;height:100vh;justify-content:center}.cam-card.small .cam-label{font-size:.68rem;padding:6px 10px}.cam-card.small .play-btn{font-size:.75rem;padding:6px 14px}.cam-card.small .spinner{height:22px;width:22px}.cam-card.small .overlay-label,.cam-card.small .error-msg{font-size:.72rem}.cam-card.small .retry-btn,.cam-card.small .ext-link-sm{font-size:.68rem;padding:4px 10px}.cam-card.small.external .cam-body{aspect-ratio:16 / 9;gap:10px}.cam-card.small .ext-link{font-size:.72rem;padding:5px 12px}@media (max-width: 640px){.app-shell{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border);gap:10px;padding:12px 10px;width:100%}.sidebar-nav{display:grid;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-group-label{grid-column:1 / -1;margin-top:4px}.health-page{padding:14px 16px}header,main{padding-left:16px;padding-right:16px}.cam-grid{grid-template-columns:1fr}.cam-cell.featured{grid-column:1}.capture-card-header{align-items:flex-start;flex-direction:column;gap:8px}.capture-card-title{flex-wrap:wrap;row-gap:6px}.capture-card-meta{align-items:center;flex-wrap:wrap;gap:8px;width:100%}.capture-card-meta .capture-time,.capture-card-meta .capture-frames{font-size:.7rem}.capture-card-meta .stop-btn,.capture-card-meta .delete-btn,.capture-card-meta .autorun-btn{font-size:.72rem;padding:5px 10px}}.page-nav{display:flex;gap:6px;margin-left:auto}.db-health-wrap{align-items:center;border:1px solid var(--border);border-radius:999px;display:flex;gap:8px;margin-left:12px;padding:4px 10px}.db-health-label{color:var(--muted);font-size:.68rem;letter-spacing:.06em}.db-health-pill{border-radius:999px;height:8px;width:30px}.db-health-pill--ok{background:#53d18c}.db-health-pill--bad{background:#e07070}.db-health-pill--unknown{background:#888}.db-health-text{color:var(--text);font-size:.68rem;min-width:44px}.s3-check{align-items:center;border-radius:999px;display:inline-flex;font-size:.72rem;font-weight:700;height:16px;justify-content:center;width:16px}.s3-check--ok{background:#53d18c33;color:#53d18c}.s3-check--bad{background:#e0707033;color:#e07070}.s3-check--unknown{background:#8883;color:#999}.page-tab{background:none;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;font-size:.78rem;letter-spacing:.04em;padding:5px 14px;transition:color .15s,border-color .15s,background .15s}.page-tab:hover{color:var(--text)}.page-tab.active{background:#6677ee1f;border-color:var(--accent);color:var(--accent)}.p2{display:flex;flex-direction:column;gap:28px;max-width:1100px;padding:24px 32px}.p2--wide{max-width:none;width:100%}.p2--wide .motion-panel{width:100%}.p2-stream-wrap{border:1px solid var(--border);border-radius:8px;margin-right:auto;max-width:760px;overflow:hidden;width:100%}.p2-stream-label{align-items:center;border-bottom:1px solid var(--border);display:flex;font-size:.78rem;gap:12px;letter-spacing:.06em;padding:10px 16px;text-transform:uppercase}.p2-stream-sub{color:var(--muted);font-size:.72rem}.p2-capture-wrap{display:flex;flex-direction:column;gap:16px}.p2-capture-title{color:var(--text);font-size:1rem;font-weight:600;letter-spacing:.04em;margin:0}.p2-capture-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}.capture-settings{align-items:flex-end;display:flex;flex-direction:column;flex:1 1 100%;gap:10px;margin-left:0;width:100%}.capture-settings-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start;width:100%}.capture-dayplanner{background:#0d0d14;border:1px solid var(--border);border-radius:7px;display:flex;flex-direction:column;gap:8px;padding:10px;width:100%}.capture-dayplanner-title{align-items:center;color:var(--text);display:flex;font-size:.72rem;justify-content:space-between;letter-spacing:.04em}.capture-dayplanner-meta{color:var(--muted);font-size:.68rem}.capture-daybar{background:#0a0a11;border:1px solid rgba(102,119,238,.18);border-radius:6px;height:32px;overflow:hidden;position:relative}.capture-daybar:before{background:repeating-linear-gradient(to right,rgba(255,255,255,.12) 0,rgba(255,255,255,.12) 1px,transparent 1px,transparent calc(100% / 48));content:"";top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute;z-index:0}.capture-day-split{background:#fff3;bottom:0;left:50%;position:absolute;top:0;width:1px;z-index:1}.capture-day-run{background:#6677ee4d;border:1px solid rgba(102,119,238,.45);bottom:7px;min-width:2px;overflow:hidden;position:absolute;top:7px}.capture-day-run-live{background:#50e090bf;height:100%;left:0;position:absolute;top:0}.capture-day-collected{background:#50e0908c;border:1px solid rgba(80,224,144,.85);bottom:2px;cursor:pointer;min-width:2px;padding:0;position:absolute;top:2px;z-index:1}.capture-day-collected--local{background:#50e0908c;border-color:#50e090d9}.capture-day-collected--s3{background:#ffc4547a;border-color:#ffc454db}.capture-day-collected--unknown{background:#8d9ab06b;border-color:#8d9ab0cc}.capture-day-dot{background:#dfe6ff;border-radius:50%;height:4px;margin-left:-2px;opacity:.9;position:absolute;top:14px;width:4px}.capture-day-now{background:#e74c3cf2;bottom:0;box-shadow:0 0 12px #e74c3c66;position:absolute;top:0;width:2px;z-index:2}.capture-daybar-labels{color:var(--muted);display:flex;font-size:.66rem;justify-content:space-between;letter-spacing:.05em}.capture-day-starts{height:16px;position:relative}.capture-day-start{color:#9da7d1;font-size:.62rem;line-height:1;position:absolute;top:2px;transform:translate(-50%);white-space:nowrap}.capture-day-start:before{background:#9da7d1bf;content:"";height:4px;left:50%;position:absolute;top:-5px;transform:translate(-50%);width:1px}.capture-bar-size{align-items:center;color:var(--muted);display:flex;font-size:.7rem;gap:8px}.capture-bar-size input[type=range]{accent-color:var(--accent);flex:1}.capture-settings-actions{row-gap:6px}.capture-settings label{align-items:center;color:var(--muted);display:flex;font-size:.72rem;gap:6px}.capture-settings input[type=number]{background:#0d0d14;border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:.75rem;padding:5px 8px;width:88px}.capture-settings input[type=time],.capture-settings select{background:#0d0d14;border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:.75rem;padding:5px 8px}.capture-toggle{cursor:pointer}.autorun-btn{background:#6677ee1f;border:1px solid rgba(102,119,238,.4);border-radius:6px;color:var(--accent);cursor:pointer;font-size:.72rem;letter-spacing:.03em;padding:5px 10px}.autorun-btn:hover{background:#6677ee38}.capture-storage{color:var(--text);font-size:.72rem;letter-spacing:.03em}.capture-storage--below{margin-top:2px;text-align:right}.capture-start-panel{align-items:flex-end;display:flex;flex-direction:column;gap:6px}.capture-storage--action{color:var(--muted);font-size:.68rem;line-height:1.45;text-align:right}.motion-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:10px;padding:12px}.motion-title{color:var(--text);font-size:.84rem;font-weight:600;letter-spacing:.04em}.motion-controls{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.motion-controls label{align-items:center;color:var(--muted);display:flex;font-size:.72rem;gap:6px}.motion-controls select,.motion-controls input[type=number]{background:#0d0d14;border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:.75rem;padding:5px 8px}.motion-results{display:flex;flex-direction:column;gap:10px}.motion-stack{display:flex;flex-direction:column;gap:12px}.motion-dual{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.motion-module{background:#0d0d14;border:1px solid var(--border);border-radius:8px;padding:8px}.motion-section-title{color:var(--text);font-size:.76rem;font-weight:700;letter-spacing:.04em}.motion-module-header{color:var(--text);font-size:.8rem;font-weight:700;letter-spacing:.04em;margin-bottom:8px}.motion-help{color:var(--muted);font-size:.72rem;margin-top:8px}.motion-progress{border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:10px}.motion-progress-header{color:var(--text);display:flex;font-size:.74rem;font-weight:600;justify-content:space-between}.motion-progress-track{background:#0d0d14;border:1px solid var(--border);border-radius:999px;height:10px;overflow:hidden}.motion-progress-fill{background:linear-gradient(90deg,#f39a3f,#4ad784);height:100%;transition:width .25s ease}.motion-progress-meta{color:var(--muted);display:flex;flex-wrap:wrap;font-size:.7rem;gap:10px}.motion-help--sequence{margin-top:6px;word-break:break-word}.motion-timeline-card{background:#0d0d14;border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;gap:6px;padding:8px}.motion-timeline-header{color:var(--muted);display:flex;font-size:.68rem;justify-content:space-between}.motion-timeline-header em{font-style:normal}.motion-timeline-bar{background:#06060b;border:1px solid var(--border);border-radius:4px;display:flex;height:18px;overflow:hidden;position:relative;width:100%}.motion-timeline-scroll{overflow:hidden}.motion-timeline-stack{position:relative}.motion-timeline-bar--scrollable{min-width:0;overflow:hidden;width:100%}.motion-timeline-slice{border:none;cursor:pointer;flex:1 1 0;min-width:1px;padding:0}.motion-timeline-slice--still{background:#4ad784}.motion-timeline-slice--moving{background:#f39a3f}.motion-timeline-slice--muted{opacity:.35}.motion-timeline-slice--missing{background:#1a1a24;position:relative}.motion-timeline-slice--missing-still{background-image:repeating-linear-gradient(135deg,#4ad78452 0,#4ad78452 2px,#0c0c12eb 2px,#0c0c12eb 5px)}.motion-timeline-slice--missing-moving{background-image:repeating-linear-gradient(135deg,#f39a3f52 0,#f39a3f52 2px,#0c0c12eb 2px,#0c0c12eb 5px)}.motion-timeline-slice--active{outline:2px solid #ffffff;outline-offset:-2px}.motion-timeline-cursor{background:#e4f0fff5;box-shadow:0 0 0 1px #10182cf2,0 0 8px #cde3ff4d;height:calc(100% - 2px);left:0;top:1px;pointer-events:none;position:absolute;transform:translate(-50%);width:2px}.motion-timeline-position{color:#dce7ff;font-size:.72rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.03em;margin-top:4px}.motion-summary{color:var(--muted);display:flex;flex-wrap:wrap;font-size:.72rem;gap:10px}.motion-bars{display:flex;flex-direction:column;gap:6px}.motion-bar-row{align-items:center;color:var(--muted);display:grid;font-size:.72rem;gap:8px;grid-template-columns:60px 1fr 56px}.motion-bar-track{background:#0d0d14;border:1px solid var(--border);border-radius:999px;height:10px;overflow:hidden}.motion-bar-fill{height:100%}.motion-bar-fill--still{background:#50e090cc}.motion-bar-fill--moving{background:#e74c3ccc}.motion-still-points{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.motion-still-point{background:#0d0d14;border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;gap:4px;padding:6px}.motion-still-point img{aspect-ratio:16 / 9;border-radius:4px;object-fit:cover;width:100%}.motion-still-point span{color:var(--muted);font-size:.68rem}.motion-scrubber{align-items:center;color:var(--muted);display:flex;font-size:.72rem;gap:8px}.motion-scrubber input[type=range]{accent-color:var(--accent);flex:1;min-width:0}.motion-scrubber-controls{display:inline-flex;gap:6px;margin-left:auto}.motion-step-btn{min-width:48px}.motion-step-btn--holding{background:#6677ee52;border-color:#8c9dffbf;color:#d9e2ff}.motion-scrubber-status{font-variant-numeric:tabular-nums;min-width:160px;text-align:right}.motion-image-wrap{align-self:flex-start;background:#06060b;border:1px solid var(--border);border-radius:8px;display:inline-flex;max-width:100%;overflow:hidden;position:relative;width:fit-content}.motion-image{display:block;height:auto;max-height:clamp(220px,48vh,420px);max-width:100%;object-fit:contain;width:auto}.motion-image-missing{align-items:center;background:#0a0a11;color:var(--muted);display:flex;flex-direction:column;font-size:.8rem;gap:6px;min-height:clamp(220px,48vh,420px);justify-content:center;padding:16px;text-align:center;width:min(100%,720px)}.motion-image-label{border:1px solid transparent;border-radius:999px;color:#0d0d14;font-size:.72rem;font-weight:700;left:10px;letter-spacing:.04em;padding:4px 10px;position:absolute;top:10px}.motion-image-label--still{background:#4ad784;border-color:#3cb36e}.motion-image-label--moving{background:#f39a3f;border-color:#cf7f2e}.capture-autorun-status{color:var(--muted);font-size:.72rem;letter-spacing:.03em}@media (max-width: 900px){.capture-settings{align-items:stretch;margin-left:0;width:100%}.capture-settings-row{justify-content:flex-start}.motion-dual{grid-template-columns:1fr}.motion-controls{align-items:stretch;flex-direction:column}.motion-controls label{align-items:stretch;flex-direction:column;width:100%}.motion-controls select,.motion-controls input[type=number],.motion-controls .autorun-btn{width:100%}}.start-btn{align-self:flex-end;background:#6677ee1f;border:1px solid rgba(102,119,238,.4);border-radius:6px;color:var(--accent);cursor:pointer;font-size:.85rem;letter-spacing:.04em;padding:8px 20px;transition:background .15s}.start-btn:hover:not(:disabled){background:#6677ee38}.start-btn:disabled{cursor:not-allowed;opacity:.4}.p2-empty{color:var(--muted);font-size:.85rem;padding:20px 0}.p2-sessions{display:flex;flex-direction:column;gap:16px}.capture-day-group{display:flex;flex-direction:column;gap:10px}.capture-day-toggle{align-items:center;background:#0d0d14;border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer;display:flex;font-size:.76rem;justify-content:space-between;letter-spacing:.04em;padding:8px 12px}.capture-day-toggle:hover{border-color:#6677ee73}.capture-day-items{display:flex;flex-direction:column;gap:12px}.capture-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}.capture-card--running{border-color:#6677ee59}.capture-card--selected{border-color:#ffc454b3;box-shadow:0 0 0 1px #ffc45459,0 0 26px #ffc4541f}.capture-card-header{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:12px;justify-content:space-between;padding:10px 14px}.capture-card-title{align-items:center;display:flex;gap:10px}.capture-num{color:var(--muted);font-size:.8rem;font-weight:600;letter-spacing:.05em}.capture-badge-running{color:var(--accent);font-size:.72rem;letter-spacing:.06em;animation:pulse 1.5s infinite}.capture-badge-done{color:#50e090;font-size:.72rem;letter-spacing:.06em}.capture-badge-stopped{color:var(--muted);font-size:.72rem;letter-spacing:.06em}.capture-badge-error{color:var(--live);font-size:.72rem;letter-spacing:.06em}.capture-badge-auto{color:#9fc4ff;font-size:.7rem;letter-spacing:.06em}.capture-badge-fixed-sequence{background:#50e09024;border:1px solid rgba(80,224,144,.45);border-radius:999px;color:#84efb4;font-size:.62rem;font-weight:700;letter-spacing:.05em;padding:2px 8px}.capture-card-meta{align-items:center;display:flex;gap:12px}.capture-time{color:var(--muted);font-size:.72rem}.capture-frames{color:var(--text);font-size:.78rem;font-weight:500}.stop-btn{background:#e74c3c1a;border:1px solid rgba(231,76,60,.35);border-radius:5px;color:var(--live);cursor:pointer;font-size:.75rem;padding:4px 12px}.delete-btn{background:#e74c3c1f;border:1px solid rgba(231,76,60,.4);border-radius:5px;color:#ff7d70;cursor:pointer;font-size:.75rem;padding:4px 12px}.delete-btn:disabled{cursor:not-allowed;opacity:.6}.capture-storage-btn--free{background:#ff914024;border-color:#ff914073;color:#ff9f5c}.capture-storage-btn--free:hover{background:#ff914047}.capture-storage-btn--cache{background:#8e70ff29;border-color:#8e70ff73;color:#b29bff}.capture-storage-btn--cache:hover{background:#8e70ff4d}.capture-storage-btn:disabled{cursor:not-allowed;filter:saturate(.2) brightness(.7);opacity:.42}.capture-progress-wrap{align-items:center;background:#0d0d14;border-bottom:1px solid var(--border);display:flex;gap:10px;height:28px;overflow:hidden;position:relative}.capture-progress-bar{background:#6677ee59;height:100%;left:0;position:absolute;top:0;transition:width 1s linear}.capture-progress-label{color:var(--text);font-size:.75rem;font-variant-numeric:tabular-nums;letter-spacing:.04em;padding:0 12px;position:relative;z-index:1}.capture-progress-wrap--restore{border-top:1px solid var(--border);border-bottom:none}.capture-progress-bar--restore{background:#50e09059}.capture-frames{display:flex;gap:4px;overflow-x:scroll;overscroll-behavior-x:contain;padding:8px;scroll-behavior:smooth;scrollbar-color:rgba(102,119,238,.85) rgba(30,30,46,.9);scrollbar-width:thin;touch-action:pan-x;-webkit-overflow-scrolling:touch}.capture-frames::-webkit-scrollbar{height:9px}.capture-frames::-webkit-scrollbar-track{background:#1e1e2ee6;border-radius:999px}.capture-frames::-webkit-scrollbar-thumb{background:#6677eed9;border:1px solid rgba(150,163,255,.7);border-radius:999px}.capture-frames-wrap{position:relative}.capture-strip-title{color:var(--muted);font-size:.68rem;font-weight:600;letter-spacing:.02em;padding:2px 8px 0}.capture-frames--temp-lane{border-top:1px dashed var(--border);margin-top:2px;padding-top:6px}.capture-thumb{-webkit-user-drag:none;border-radius:3px;cursor:pointer;flex-shrink:0;height:72px;object-fit:cover;transition:opacity .2s;width:auto}.capture-thumb-wrap{position:relative}.capture-thumb-group{border:1px solid rgba(255,255,255,.92);border-radius:999px;box-shadow:0 1px 3px #00000059;color:#fff;font-size:.56rem;font-weight:800;letter-spacing:.04em;padding:1px 5px;pointer-events:none;position:absolute;right:4px;text-transform:uppercase;top:4px}.capture-thumb--temp{border:1px dashed rgba(179,92,20,.7);box-shadow:0 0 0 1px #b35c142e}.capture-thumb:hover{opacity:.8}.capture-thumb--active{border:1px solid #7f8cff;box-shadow:0 0 0 1px #7f8cff40}.capture-preview-overlay{bottom:14px;position:fixed;right:14px;z-index:10002}.capture-preview-overlay--folded{background:#080b1af5;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 26px #0000008c;padding:10px}.capture-preview-toggle{background:#111a36eb;border:1px solid rgba(130,160,255,.42);border-radius:6px;color:#dce7ff;cursor:pointer;font-size:.68rem;font-weight:700;letter-spacing:.04em;padding:4px 8px;position:absolute;right:8px;top:8px;z-index:10003}.capture-preview-toggle:hover{background:#1b2850f0}.capture-preview-fixed{border:1px solid #999;border-radius:6px;bottom:0;box-shadow:0 8px 24px #0009;filter:brightness(1.35) contrast(1.15) saturate(1.08);height:128px;object-fit:cover;pointer-events:none;position:relative;right:0;width:228px;z-index:10001}.capture-preview-label-fixed{background:#f5f6faf2;border:1px solid #999;border-radius:4px;bottom:136px;color:#222;font-family:monospace;font-size:.68rem;max-width:228px;overflow:hidden;padding:3px 6px;pointer-events:none;position:absolute;right:0;z-index:10000}.capture-preview-ts{color:#444;font-size:.65rem}.capture-preview-class{font-size:.65rem;font-weight:600;margin-top:2px}.capture-preview-class--still{color:#2a7a47}.capture-preview-class--moving{color:#9b2c2c}.capture-preview-class--group{color:#14589a;font-size:.72rem;font-weight:900}.capture-preview-class--temp{color:#8a4b0f}.capture-temp-note{color:#8a4b0f;font-size:.7rem;font-weight:600;padding:2px 8px 0}.capture-group-report{border:1px solid var(--border);border-radius:8px;margin-top:8px;padding:8px 10px}.capture-group-report-empty{color:var(--muted);font-size:.78rem}.capture-group-row{display:flex;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.73rem;font-weight:700;gap:10px;justify-content:space-between;padding:2px 0}.capture-waiting{align-items:center;color:var(--muted);display:flex;font-size:.8rem;gap:10px;padding:16px}.mini-spinner{animation:spin .8s linear infinite;border:2px solid var(--border);border-radius:50%;border-top-color:var(--accent);flex-shrink:0;height:18px;width:18px}.capture-error-msg{color:#e07070;font-family:monospace;font-size:.72rem;padding:10px 14px;white-space:pre-wrap;word-break:break-all}.dataset-page{display:flex;flex-direction:column;gap:16px}.dataset-header h2{font-size:1.32rem;letter-spacing:.01em;margin:0}.dataset-header p{color:var(--muted);margin:4px 0 0}.dataset-grid{display:grid;gap:14px;grid-template-columns:1fr 1fr}.dataset-card{background:linear-gradient(180deg,#0a0d20f5,#090d1aeb);border:1px solid #1e2c56;border-radius:12px;box-shadow:0 10px 26px #00000040;padding:14px}.dataset-card--full{width:100%}.dataset-card h3{font-size:.96rem;letter-spacing:.01em;margin:0 0 12px}.dataset-label{color:var(--muted);display:flex;flex-direction:column;font-size:.76rem;font-weight:700;gap:6px;margin-bottom:10px;text-transform:uppercase}.dataset-label--inline{margin-bottom:0}.dataset-label input,.dataset-label select{background:#090d1a;border:1px solid #233463;border-radius:8px;color:var(--text);font-size:.86rem;padding:8px}.dataset-scope-row{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(180px,240px) 1fr;margin-bottom:10px}.dataset-date-range{align-items:end;display:grid;gap:8px;grid-template-columns:1fr auto 1fr}.dataset-date-range-sep{color:#9fb3ff;font-size:1.05rem;font-weight:700;padding-bottom:8px}.dataset-availability{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow:auto}.dataset-run{align-items:flex-start;background:linear-gradient(180deg,#0a1228,#0a1021);border:1px solid #203064;border-radius:8px;color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:9px;text-align:left;transition:border-color .12s ease,transform .12s ease}.dataset-run:hover{border-color:#3b57ac;transform:translateY(-1px)}.dataset-run--active{border-color:#7a90ff;box-shadow:0 0 0 1px #7a90ff8c inset}.dataset-run-top{display:flex;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;justify-content:space-between;width:100%}.dataset-run-meta{color:var(--muted);font-size:.75rem}.dataset-run-bar{background:#ffffff0f;border-radius:999px;height:7px;width:100%}.dataset-run-bar-fill{background:linear-gradient(90deg,#63c7a0,#6d7ffe);border-radius:999px;height:100%}.dataset-empty{color:var(--muted);font-size:.82rem}.dataset-kv{display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:10px}.dataset-kv div{background:#090d1a;border:1px solid #1f2d56;border-radius:8px;display:flex;flex-direction:column;gap:2px;padding:8px}.dataset-kv span{color:var(--muted);font-size:.68rem}.dataset-kv strong{font-size:.82rem}.dataset-range-grid{display:grid;gap:10px;grid-template-columns:1fr 1fr}.dataset-mode-toggle{display:inline-flex;gap:6px}.dataset-mode-toggle .autorun-btn.active{background:#6677ee42;border-color:#7d93ff;color:#d3ddff}.dataset-slice-summary{color:var(--muted);font-size:.8rem;margin:10px 0 12px}.dataset-timeline-tools{display:flex;gap:8px;margin-bottom:8px}.dataset-timeline-wrap{background:radial-gradient(120% 140% at 50% -20%,#4c71e529,#0c1021f5);border:1px solid #27396e;border-radius:10px;padding:10px}.dataset-timeline-hint{color:#9fb3ff;font-size:.74rem;margin-bottom:8px}.dataset-line-head{color:#9eaccf;display:flex;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;justify-content:space-between;margin-bottom:6px}.dataset-line{background:#ffffff14;border:1px solid #314573;border-radius:999px;height:22px;overflow:hidden;position:relative}.dataset-line--runs{border-radius:8px;height:28px}.dataset-line-shadow-left,.dataset-line-shadow-right{background:#05081299;height:100%;position:absolute;top:0;z-index:1}.dataset-line-shadow-left{left:0}.dataset-line-shadow-right{right:0}.dataset-line-selection-window{background:#55d69e1f;border-left:1px solid rgba(85,214,158,.68);border-right:1px solid rgba(85,214,158,.68);height:100%;pointer-events:none;position:absolute;top:0;z-index:4}.dataset-line-window-grip{background:transparent;border:0;cursor:grab;height:100%;left:10px;pointer-events:auto;position:absolute;right:10px;top:0}.dataset-line-window-grip:active{cursor:grabbing}.dataset-line-handle{background:#55d29f;border:1px solid rgba(4,12,24,.75);border-radius:2px;cursor:ew-resize;height:100%;pointer-events:auto;position:absolute;top:0;width:10px}.dataset-line-handle--left{left:0}.dataset-line-handle--right{right:0}.dataset-line-segment{background:#ffffff08;border:0;cursor:pointer;height:100%;left:0;padding:0;position:absolute;top:0;transition:filter .08s ease,opacity .08s ease,transform .08s ease;z-index:3}.dataset-line-segment--active{background:linear-gradient(180deg,#55d69e,#2f9f6f)}.dataset-line-segment--run{background:linear-gradient(180deg,#6d7ffe47,#6d7ffe1f);border-right:1px solid rgba(0,0,0,.3)}.dataset-line-segment--run.dataset-line-segment--active{background:linear-gradient(180deg,#58d7a1,#2d9a6b)}.dataset-line-segment--hover{filter:brightness(1.15)}.dataset-line-hover{color:#d3defd;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.71rem;margin-top:6px}.dataset-timeline-legend{color:var(--muted);display:flex;font-size:.72rem;gap:12px;margin-top:6px}.dataset-timeline-legend span{align-items:center;display:inline-flex;gap:5px}.dataset-legend-box{border:1px solid #1d294e;border-radius:2px;display:inline-block;height:10px;width:10px}.dataset-legend-box--on{background:#2eaa75;border-color:#2eaa75}.dataset-legend-box--off{background:#ffffff1a}.dataset-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.dataset-selected-ranges{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.dataset-range-chip{background:#55d69e24;border:1px solid rgba(85,214,158,.45);border-radius:999px;color:#9deac7;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;padding:4px 9px}.dataset-item{background:linear-gradient(180deg,#0a1124,#090f20);border:1px solid #1f2f5f;border-radius:8px;color:var(--text);cursor:pointer;padding:8px;text-align:left;transition:border-color .12s ease}.dataset-item:hover{border-color:#415fae}.dataset-item--active{border-color:#55d29f;box-shadow:0 0 0 1px #55d29f70 inset}.dataset-item-top{align-items:baseline;display:flex;font-size:.84rem;gap:10px;justify-content:space-between}.dataset-item-top span{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem}.dataset-item-meta{color:var(--muted);font-size:.74rem;margin-top:4px}.dataset-item-actions{display:flex;justify-content:flex-end;margin-top:6px}.dataset-item-actions .delete-btn{font-size:.68rem;padding:3px 8px}.dataset-viewer{border-top:1px solid var(--border);padding-top:12px}.dataset-viewer-meta{color:var(--muted);display:flex;flex-wrap:wrap;font-size:.76rem;gap:12px;justify-content:space-between;margin-bottom:8px}.dataset-viewer-actions{display:inline-flex;gap:6px;margin-left:auto}.dataset-viewer-main{border:1px solid #30416d;border-radius:8px;display:block;max-height:500px;object-fit:contain;width:100%}.dataset-viewer-strip{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));margin-top:8px}.dataset-viewer-thumb{border:1px solid #273469;border-radius:6px;cursor:pointer;height:62px;object-fit:cover;width:100%}.dataset-viewer-thumb--active{border-color:#6d7ffe;box-shadow:0 0 0 1px #6d7ffea6}.dataset-timeline-visual{margin-bottom:10px}.dataset-timeline-visual-label{color:var(--muted);font-size:.74rem;margin-bottom:5px}.dataset-timeline-visual-bar{background:#06070d;border:1px solid #27314e;border-radius:6px;cursor:ew-resize;height:14px;overflow:hidden;position:relative}.dataset-timeline-visual-seg{height:100%;position:absolute;top:0}.dataset-timeline-visual-seg--present{background:linear-gradient(180deg,#54d49d,#2f9e6f)}.dataset-timeline-visual-seg--missing{background:linear-gradient(180deg,#2d1013,#0b0b10)}.dataset-timeline-visual-cursor{border-left:2px solid #d9e4ff;box-shadow:0 0 0 1px #14192899;height:100%;position:absolute;top:0;z-index:5}@media (max-width: 1100px){.dataset-grid,.dataset-scope-row,.dataset-date-range{grid-template-columns:1fr}.dataset-date-range-sep{display:none}.dataset-kv,.dataset-range-grid{grid-template-columns:1fr}}.datasets-page{padding:20px;max-width:1200px}.datasets-selectors{display:flex;gap:16px;margin-bottom:20px}.datasets-selectors label{display:flex;flex-direction:column;gap:4px;font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.datasets-selectors select{background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;padding:7px 10px;min-width:180px}.datasets-section{margin-top:24px}.datasets-section h3{font-size:.95rem;margin-bottom:10px}.datasets-count{color:var(--muted);font-weight:400}.recording-timeline{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 0;-webkit-user-select:none;user-select:none}.timeline-header{display:flex;align-items:center;padding-bottom:4px;border-bottom:1px solid var(--border)}.timeline-label-col{min-width:60px;max-width:60px;font-size:.7rem;color:var(--muted);padding:0 6px;text-align:right;flex-shrink:0}.timeline-hour-label{font-size:.6rem;color:var(--muted);text-align:center;flex-shrink:0}.timeline-row{display:flex;align-items:center;cursor:crosshair}.timeline-row:hover{background:#ffffff05}.timeline-bar-container{position:relative;flex-shrink:0}.timeline-hour-line{position:absolute;top:0;width:1px;background:#ffffff0a;pointer-events:none}.timeline-recording-block{position:absolute;background:var(--accent);opacity:.7;border-radius:3px;pointer-events:none;transition:opacity .1s}.timeline-row:hover .timeline-recording-block{opacity:.9}.timeline-selection{position:absolute;background:#6677ee40;border:1px solid rgba(102,119,238,.6);border-radius:2px;pointer-events:none;z-index:2}.dataset-creator{margin-top:16px;padding:14px;background:var(--surface);border:1px solid rgba(102,119,238,.4);border-radius:8px}.dataset-creator h4{font-size:.9rem;margin-bottom:8px}.dataset-creator-meta{font-size:.78rem;color:var(--muted);margin-bottom:10px}.dataset-creator-sources{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.dataset-creator-source{background:#6677ee1f;border:1px solid rgba(102,119,238,.3);border-radius:4px;padding:4px 8px;font-size:.72rem;display:flex;gap:8px}.source-session{color:var(--accent);font-family:monospace}.source-range{color:var(--muted)}.dataset-creator-form{display:flex;gap:8px;align-items:center}.dataset-name-input{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.82rem;padding:7px 10px;flex:1;min-width:200px}.dataset-name-input::placeholder{color:var(--muted)}.dataset-create-btn{background:var(--accent);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;padding:8px 16px;white-space:nowrap}.dataset-create-btn:disabled{opacity:.5;cursor:not-allowed}.datasets-list{display:flex;flex-direction:column;gap:8px}.dataset-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.dataset-card-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.dataset-card-header strong{font-size:.88rem}.dataset-card-meta{font-size:.72rem;color:var(--muted)}.dataset-card-details{display:flex;gap:16px;font-size:.72rem;color:var(--muted);margin-bottom:8px}.dataset-card-actions{display:flex;gap:6px}.dataset-view-btn,.dataset-delete-btn,.dataset-cancel-btn{background:none;border:1px solid var(--border);border-radius:5px;color:var(--text);cursor:pointer;font-size:.72rem;padding:4px 10px}.dataset-view-btn:hover{background:#6677ee26;border-color:var(--accent)}.dataset-delete-btn:hover,.dataset-delete-btn.confirm{background:#e74c3c26;border-color:#e74c3c;color:#e74c3c}.dataset-cancel-btn:hover{background:#ffffff0d}.dataset-visualizer{display:flex;flex-direction:column;gap:12px}.dataset-visualizer-header{display:flex;align-items:baseline;gap:12px}.dataset-visualizer-header h3{font-size:1rem}.dataset-visualizer-meta{font-size:.75rem;color:var(--muted)}.dataset-close-btn{margin-left:auto;background:none;border:1px solid var(--border);border-radius:5px;color:var(--muted);cursor:pointer;font-size:.75rem;padding:4px 12px}.dataset-close-btn:hover{color:var(--text);border-color:var(--text)}.dataset-frame-container{position:relative;background:#000;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:300px;max-height:70vh}.dataset-frame-img{max-width:100%;max-height:70vh;object-fit:contain}.dataset-frame-overlay{position:absolute;top:8px;right:10px;display:flex;flex-direction:column;align-items:flex-end;gap:4px;pointer-events:none}.dataset-frame-index{background:#000000b3;color:#fff;font-size:.72rem;padding:3px 8px;border-radius:4px;font-family:monospace}.dataset-frame-timestamp{background:#000000b3;color:#e0e0f0;font-size:.78rem;padding:3px 8px;border-radius:4px;font-family:monospace}.dataset-coverage-bar{position:relative;height:20px;background:#ffffff0a;border:1px solid var(--border);border-radius:4px;overflow:hidden}.dataset-coverage-segment{position:absolute;top:0;height:100%;background:var(--accent);opacity:.5}.dataset-coverage-gap{position:absolute;top:0;height:100%;width:3px;background:#e74c3c;z-index:1;opacity:.9}.dataset-coverage-cursor{position:absolute;top:0;height:100%;width:2px;background:#fff;z-index:2;transition:left .05s}.dataset-controls{display:flex;align-items:center;gap:10px}.dataset-play-btn{background:var(--accent);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.78rem;padding:6px 14px;min-width:60px}.dataset-slider{flex:1;accent-color:var(--accent);height:6px}.dataset-controls-hint{font-size:.65rem;color:var(--muted);white-space:nowrap}.dataset-cache-status{font-size:.68rem;color:var(--muted)}.dataset-cache-status.cached{color:#2ecc71}.dataset-cache-progress{height:4px;background:#ffffff0f;border-radius:2px;margin-bottom:8px;overflow:hidden}.dataset-cache-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .3s}.dataset-cache-btn{background:none;border:1px solid rgba(46,204,113,.5);border-radius:5px;color:#2ecc71;cursor:pointer;font-size:.72rem;padding:4px 10px}.dataset-cache-btn:hover{background:#2ecc711f;border-color:#2ecc71}.dataset-cache-btn:disabled{opacity:.5;cursor:not-allowed}.dataset-uncache-btn{background:none;border:1px solid rgba(255,165,0,.5);border-radius:5px;color:orange;cursor:pointer;font-size:.72rem;padding:4px 10px}.dataset-uncache-btn:hover{background:#ffa5001f;border-color:orange}.algo-header{display:flex;align-items:baseline;gap:16px;margin-bottom:16px}.algo-header h2{margin:0}.algo-dataset-selector select{background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;padding:7px 10px;min-width:240px}.algo-dataset-selector label{display:flex;flex-direction:column;gap:4px;font-size:.75rem;color:var(--muted)}.algo-bar-label{display:flex;align-items:center;gap:10px;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:10px;margin-bottom:4px}.algo-annotate-btn{background:none;border:1px solid var(--accent);border-radius:4px;color:var(--accent);cursor:pointer;font-size:.68rem;padding:2px 8px;text-transform:none;letter-spacing:0}.algo-annotate-btn.active{background:#67e3;border-color:var(--accent)}.algo-annotate-btn:hover{background:#6677ee26}.algo-annotate-hint{font-size:.68rem;color:#b3beff;text-transform:none;letter-spacing:0;font-style:italic}.algo-annotation-bar{position:relative;height:24px;background:#ffffff08;border:1px solid var(--border);border-radius:4px;overflow:hidden;cursor:default}.algo-annotation-bar.active{border-color:var(--accent);cursor:crosshair}.algo-annotation-block{position:absolute;top:2px;height:calc(100% - 4px);background:#2ecc7173;border-radius:2px;border:1px solid rgba(46,204,113,.7);pointer-events:none}.algo-annotation-block.clickable{pointer-events:auto;cursor:pointer;z-index:1}.algo-annotation-block.clickable:hover{background:#2ecc71b3}.algo-annotation-block.selected{background:#2ecc71cc;border-color:#fff;box-shadow:0 0 4px #2ecc7199}.algo-annotation-pending-start{position:absolute;top:0;height:100%;width:2px;background:#f1c40f;z-index:3}.algo-annotation-pending-range{position:absolute;top:2px;height:calc(100% - 4px);background:#f1c40f40;border:1px dashed rgba(241,196,15,.6);border-radius:2px;pointer-events:none;z-index:2}.algo-annotation-list{margin-top:14px}.algo-annotation-list-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.algo-default-class{display:flex;align-items:center;gap:6px;font-size:.72rem;color:var(--muted)}.algo-default-class input{background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.78rem;padding:3px 8px;width:120px}.algo-save-btn{background:var(--accent);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.72rem;padding:5px 14px}.algo-save-btn:disabled{opacity:.5;cursor:default}.algo-save-msg{font-size:.7rem;color:#2ecc71}.algo-annotation-items{display:flex;flex-direction:column;gap:4px}.algo-annotation-item{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--surface);border:1px solid var(--border);border-radius:5px;font-size:.75rem;cursor:pointer}.algo-annotation-item:hover{border-color:#2ecc7180}.algo-annotation-item.selected{border-color:#2ecc71;background:#2ecc7114}.algo-annotation-item-range{font-family:monospace;color:var(--text);min-width:120px}.algo-annotation-item-count{color:var(--muted);margin-left:4px;font-size:.68rem}.algo-annotation-item-class{background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.75rem;padding:2px 6px;width:120px}.algo-annotation-item-remove{background:none;border:1px solid rgba(231,76,60,.4);border-radius:3px;color:#e74c3c;cursor:pointer;font-size:.68rem;padding:1px 6px;margin-left:auto}.algo-annotation-item-remove:hover{background:#e74c3c26}.algo-class-bar{position:relative;height:24px;background:#ffffff08;border:1px solid var(--border);border-radius:4px;overflow:hidden}.algo-class-block{position:absolute;top:2px;height:calc(100% - 4px);border-radius:2px;opacity:.75;pointer-events:none}.algo-header-select{background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.82rem;padding:6px 10px;min-width:200px}.algo-trim-btn{background:none;border:1px solid rgba(241,196,15,.6);border-radius:6px;color:#f1c40f;cursor:pointer;font-size:.72rem;padding:5px 12px;white-space:nowrap}.algo-trim-btn:hover{background:#f1c40f1f}.algo-run-btn{background:var(--accent);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.78rem;padding:6px 14px;white-space:nowrap}.algo-run-btn:disabled{opacity:.6;cursor:not-allowed}.algo-parallel-legend{margin-top:14px;border-top:1px solid var(--border);padding-top:10px}.algo-parallel-legend-header{display:grid;grid-template-columns:1fr 90px 90px;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:4px}.algo-parallel-legend-col-label{font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.algo-parallel-legend-row{display:grid;grid-template-columns:1fr 90px 90px;gap:8px;align-items:center;padding:4px 6px;border-radius:4px;border:1px solid transparent}.algo-parallel-legend-row.clickable{cursor:pointer}.algo-parallel-legend-row.clickable:hover{background:#ffffff0a}.algo-parallel-legend-row.selected{background:#6677ee1f;border-color:#67e6}.algo-parallel-legend-row.dimmed{opacity:.35}.algo-parallel-legend-name{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--text);text-transform:capitalize}.algo-parallel-legend-cell{display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--muted)}.algo-legend-item{display:flex;align-items:center;gap:5px;font-size:.72rem;color:var(--text);text-transform:capitalize}.algo-legend-swatch{display:inline-block;width:12px;height:12px;border-radius:2px;flex-shrink:0}
