:root{--ground:#f3f4f2;--surface:#fff;--raised:#e9ebe7;--inset:#eef0ec;--ink:#16181d;--muted:#626a75;--hair:#dcdfda;--act:#4338ca;--act-bg:#e3e5ff;--act-line:#a5b0fc;--act-dim:#eceefe;--ok:#15803d;--amber:#a16207;--amber-bg:#f8ecd1;--bad:#be123c;--sel:#1d4ed8;--sel-bg:#dbeafe;--shadow:0 1px 2px rgba(22,24,29,.06),0 6px 20px rgba(22,24,29,.05)}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font:13.5px/1.45 "Archivo",ui-sans-serif,system-ui,sans-serif;display:flex;flex-direction:column;overflow:hidden}.mono,.queue-item strong,.caption,.action-title,.entity-row span,.track-row span{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace}button{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hair);border-radius:7px;padding:5px 11px;cursor:pointer}button:hover{border-color:var(--act-line)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--act);border-color:var(--act);color:#fff;font-weight:600}button.quiet{border-color:transparent;background:transparent;color:var(--muted)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--act-line);outline-offset:1px}select,input[type=search]{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hair);border-radius:7px;padding:4px 8px}.spacer{flex:1}.muted{color:var(--muted);font-size:11px}.badge{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--hair);color:var(--muted);border-radius:5px;padding:1px 7px;white-space:nowrap}.pill{font-size:11px;font-weight:700;border-radius:99px;padding:2px 10px}.pill.readonly{background:var(--raised);color:var(--muted)}
#topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--surface);border-bottom:1px solid var(--hair)}#brand{font-weight:700;font-size:16px;letter-spacing:-.01em;white-space:nowrap}#brand .mark{color:var(--act);font-family:"IBM Plex Mono",monospace;font-weight:700;border:2px solid var(--act);border-radius:6px;padding:1px 6px;margin-right:6px}#meters{display:flex;gap:22px;flex:1;min-width:0}.meter{display:flex;align-items:center;gap:8px;flex:1;max-width:300px}.mlabel{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);width:38px}.mtrack{position:relative;flex:1;height:9px;background:var(--raised);border-radius:99px;overflow:hidden}.mconf,.mprog{position:absolute;inset:0 auto 0 0;border-radius:99px}.mconf{background:var(--ok);z-index:1;width:0}.mprog{background:var(--act);opacity:.6;width:100%}.mnum{font:11px "IBM Plex Mono",monospace;color:var(--muted);white-space:nowrap}#totals{font-size:11px;color:var(--muted);white-space:nowrap}
#queue-nav{display:flex;flex:none;align-items:center;gap:10px;padding:10px 18px;flex-wrap:wrap;border-bottom:1px solid var(--act-line);background:var(--act-dim)}#queue-nav strong{color:var(--act);font-size:14px}#queue-nav button{min-height:38px;padding:7px 15px;font-size:14px;white-space:nowrap}#video-meta{font-size:11px;color:var(--muted)}#queue-nav a{margin-left:auto;color:var(--act);font-size:12px}#filterbar{display:flex;align-items:center;gap:9px;padding:8px 18px;flex-wrap:wrap;background:var(--surface);border-bottom:1px solid var(--hair)}.seg{display:inline-flex;border:1px solid var(--hair);border-radius:7px;overflow:hidden}.seg button{border:0;border-radius:0;background:transparent;padding:4px 13px}.seg button.on{background:var(--act);color:#fff;font-weight:600}.chk{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:12px}.chk input{accent-color:var(--act)}#f-q{min-width:190px;flex:1;max-width:320px}.notice{margin:0;padding:8px 18px;background:#fff6df;border-block:1px solid #ecd9a5;font-size:11.5px;color:#755723}.budget-summary{margin:10px 18px!important;padding:11px 14px!important;border-radius:10px!important}.budget-summary p{margin:4px 0}.budget-summary a{color:var(--act)}
#layout{display:flex;flex:1;min-height:0}#queue-shell{width:292px;min-width:292px;display:flex;flex-direction:column;border-right:1px solid var(--hair);background:var(--surface)}#queue-meta{padding:7px 14px;font:11px "IBM Plex Mono",monospace;color:var(--muted);border-bottom:1px solid var(--hair)}#queue-title{padding:10px 14px 6px;font-weight:700;font-size:13px;color:var(--muted)}#queue-scroll{overflow-y:auto;flex:1;min-height:0}.queue-item{display:block;width:100%;text-align:left;border:0;border-radius:0;border-bottom:1px solid var(--hair);background:transparent;padding:8px 12px;height:66px;overflow:hidden;position:relative}.queue-item:hover{background:var(--inset)}.queue-item.on{background:var(--act-dim);box-shadow:inset 3px 0 0 var(--act)}.queue-item strong{font-size:11.5px;font-weight:600}.queue-item small{display:block;color:var(--muted);font-size:10px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-item.filtered-out{display:none}.help{font-size:11px;color:var(--muted);padding:12px 14px;border-top:1px solid var(--hair)}#work{flex:1;overflow-y:auto;padding:14px 22px 42px;min-width:0}#video-head{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}#vh-id{font-size:15px;font-weight:700}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:12px;box-shadow:var(--shadow);padding:13px 15px;margin-bottom:15px}.section-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px}.section-head h2{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0;font-weight:600}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;margin:7px 0}.toolbar label{color:var(--muted)}.media-grid{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:14px}.stage{position:relative;background:#141a24;min-height:120px;line-height:0;max-width:760px;margin:auto;border-radius:8px;overflow:hidden}.stage img{width:100%;max-height:430px;object-fit:contain;display:block}.stage canvas{position:absolute;inset:0;pointer-events:none;width:100%;height:100%}.identity img{width:100%;border-radius:6px;background:#141a24;display:block}.identity h3{margin:0 0 7px;font-size:12px}.frame-controls{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:9px;font-size:11px}.frame-controls button{touch-action:none}.frame-controls button:disabled{opacity:.45}.frame-controls span{font:11px "IBM Plex Mono",monospace}#timeline{width:100%;accent-color:var(--act);margin-top:9px}#spatial-note{font-size:11px;margin:3px 0 0}#selected-object{font-size:11px;padding:10px;background:var(--inset);border-radius:6px;margin-top:9px;overflow-wrap:anywhere}#thumbnail-strip{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;min-height:0}.thumb{flex:0 0 118px;padding:2px;overflow:hidden;background:var(--inset);border:1px solid var(--hair);border-radius:6px}.thumb:hover,.thumb.selected{border-color:var(--act);box-shadow:inset 0 0 0 1px var(--act)}.thumb img{width:112px;height:67px;object-fit:cover;display:block}.thumb-label{display:block;font:9px/16px "IBM Plex Mono",monospace;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.caption{font-size:17px;line-height:2.25;white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 12px}.entity{background:var(--tint);border-radius:3px;padding:2px 0;border-bottom:2px solid var(--color);cursor:pointer}.entity.entity-selected{box-shadow:inset 0 -4px var(--color);filter:saturate(1.35)}.action{color:var(--act);text-decoration:underline;text-decoration-color:var(--act-line);text-decoration-thickness:3px;text-underline-offset:4px;cursor:pointer}.action.action-selected{background:var(--act-bg);text-decoration-color:var(--act)}#legend{display:flex;gap:8px;flex-wrap:wrap}.legend-item{font-size:11px;border-left:4px solid var(--color);padding:3px 8px;background:var(--tint);border-radius:4px}.warn{font-size:11px;color:var(--amber);background:var(--amber-bg);border-radius:6px;padding:7px;margin-top:8px}
#action-list{display:flex;flex-direction:column;gap:7px}.action-card{border:1px solid var(--hair);border-radius:8px;padding:10px 12px}.action-card.selected{border-color:var(--act);background:#f5f5ff;box-shadow:0 0 0 2px var(--act-bg)}.action-title{color:var(--act);font-weight:700;border:0;padding:0;background:none;font-size:12px}.roles{font-size:11px;margin:8px 0;line-height:1.8}.role{border:0;border-bottom:2px solid var(--color);border-radius:3px;background:var(--tint);padding:1px 4px;font:11px "IBM Plex Mono",monospace}.unlinked{color:var(--amber);background:var(--amber-bg)}.segments{display:flex;gap:5px;flex-wrap:wrap}.segment{font-size:11px;color:var(--act)}.reason{font-size:11px;color:var(--muted);margin:5px 0 0}.empty{font-size:11px;color:var(--muted)}#entity-list,#track-list{display:flex;flex-direction:column;gap:5px}.entity-row,.track-row{display:block;width:100%;text-align:left;margin:0;padding:8px 10px;border-left:4px solid var(--color);background:var(--tint);border-radius:5px}.entity-row.selected,.track-row.selected{box-shadow:inset 0 0 0 1px var(--color)}.entity-row small,.track-row small{display:block;margin-top:3px;font-size:10px;color:#555}.entity-row span,.track-row span{font-size:11px}h3{font-size:12px;margin:12px 0 7px}footer#statusbar{display:flex;align-items:center;gap:14px;padding:6px 0 0;border-top:1px solid var(--hair);font-size:11px;color:var(--muted)}kbd{font:10px "IBM Plex Mono",monospace;background:var(--raised);border:1px solid var(--hair);border-bottom-width:2px;border-radius:4px;padding:0 4px}.keys{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:980px){#queue-shell{width:220px;min-width:220px}#work{padding-inline:14px}.media-grid{grid-template-columns:minmax(0,1fr) 190px}.caption{font-size:15px}.keys{display:none}}@media(max-width:700px){body{overflow:auto;display:block}#topbar{flex-wrap:wrap;padding:10px 12px}#meters{order:3;flex-basis:100%}#totals{margin-left:0}#queue-nav,#filterbar{padding-inline:12px}#queue-nav a{margin-left:0}.notice{padding-inline:12px}#layout{display:block}#queue-shell{width:auto;min-width:0;border:0}.help{display:none}#queue-scroll{max-height:190px}#queue{display:flex;overflow:auto}.queue-item{min-width:155px;height:64px}.media-grid{grid-template-columns:1fr}.identity{display:flex;gap:10px;flex-wrap:wrap}.identity img{max-width:240px}#work{padding:10px}.thumb{flex-basis:100px}.thumb img{width:94px;height:58px}}
#entities-wrap .section-head{margin-bottom:7px}.entity-hint{font-size:11px;color:var(--ink);font-weight:600}.entity-row{display:grid;grid-template-columns:28px minmax(150px,1fr) 42px auto;align-items:center;gap:9px;width:100%;min-height:45px;padding:8px 10px;border:1px solid var(--hair);border-radius:7px;background:var(--surface);text-align:left}.entity-row:hover,.entity-row.selected{border-color:var(--act-line);background:var(--act-dim);box-shadow:none}.entity-row .entity-index{font:11px "IBM Plex Mono",monospace;color:var(--muted);text-align:center}.entity-row .entity-text{font:600 12px/1.35 "Archivo",ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}.entity-row .entity-occurrence{font:600 11px "IBM Plex Mono",monospace;color:var(--ink)}.entity-mark,.track-mark{display:inline-flex;align-items:center;justify-content:center;font:700 10px "IBM Plex Mono",monospace;border-radius:4px;padding:1px 4px;background:var(--color);color:#fff;white-space:nowrap}.entity-mark{justify-self:start}.entity-row .entity-mark{margin-left:0}#track-list{display:flex;flex-direction:row;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;padding-top:9px;border-top:1px solid var(--hair)}.track-row{display:inline-flex;align-items:center;gap:5px;width:auto;min-height:30px;padding:4px 7px;border:1px solid var(--hair);border-radius:6px;background:var(--surface);text-align:left}.track-row:hover,.track-row.selected{border-color:var(--act-line);background:var(--act-dim);box-shadow:none}.track-row .track-label{font:600 11px "Archivo",ui-sans-serif,system-ui,sans-serif;white-space:nowrap;color:var(--ink)}.track-row small{display:none}
.notice {
  display: none !important;
}

.entity-mark {
  display: none !important;
}

.entity-row {
  grid-template-columns: 28px minmax(150px, 1fr) 42px;
}
