:root{--bg:#0e1013;--card:#171a1f;--line:#2a2f37;--text:#e8eaed;--muted:#9aa3ad;--accent:#ff8a1f;--good:#5fd38d;--bad:#ff6b6b;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0;padding:16px}header{max-width:1400px;margin:0 auto 12px}h1{margin:0;font-size:20px}h1 span{color:var(--accent);font-weight:600}.sub{color:var(--muted);margin:4px 0 0;font-size:14px}h2{color:var(--muted);letter-spacing:.02em;margin:0 0 10px;font-size:15px;font-weight:600}main{grid-template-columns:1fr;gap:12px;max-width:1400px;margin:0 auto;display:grid}@media (min-width:1000px){main{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}#player-card{grid-area:1/1/span 3}#open-card,#tests-card,#results-card{grid-column:2}#results-card{grid-column:1/span 2}}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;min-width:0;padding:14px}.row{align-items:center;gap:8px;margin:8px 0;display:flex}.row.wrap{flex-wrap:wrap}.small{color:var(--muted);font-size:13px}.hint{color:var(--muted);margin:6px 0;font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}button,select{font:inherit;color:var(--text);border:1px solid var(--line);background:#232830;border-radius:7px;min-height:36px;padding:7px 12px;font-size:14px}button:hover:not(:disabled){border-color:#3d4450}button:disabled{opacity:.45}button.primary{background:var(--accent);border-color:var(--accent);color:#1a1006;font-weight:700}button.quiet{color:var(--muted);background:0 0}select{padding:6px 8px}label select{margin-left:4px}.file input{display:none}.file span{cursor:pointer;color:var(--text);border:1px dashed #4a525e;border-radius:8px;padding:10px 14px;display:inline-block}#clips{gap:6px;margin-top:8px;display:grid}#clips .clip{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}#clips .clip .name{color:var(--muted);flex:160px}#stage{aspect-ratio:16/9;background:#000;border-radius:8px;width:100%;position:relative;overflow:hidden}#stage video,#stage canvas{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}#stage .placeholder{color:var(--muted);place-items:center;margin:0;display:grid;position:absolute;inset:0}#scrub{width:100%;accent-color:var(--accent);margin:10px 0 2px}.controls{flex-wrap:wrap}#readout{color:var(--muted);margin-left:auto}.kv{grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin-top:8px;font-size:13px;display:grid}.kv div:nth-child(odd){color:var(--muted)}.kv div:nth-child(2n){overflow-wrap:anywhere}.good{color:var(--good)}.bad{color:var(--bad)}#progress{color:var(--muted);min-height:1em;margin:8px 0}#export-out video{background:#000;border-radius:6px;width:100%;max-height:320px;margin-top:6px}#export-out a{color:var(--accent)}pre{border:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;background:#0b0d10;border-radius:6px;max-height:320px;padding:8px;font-size:11px;overflow:auto}details summary{cursor:pointer;color:var(--muted);margin-top:8px;font-size:13px}
