:root{--bg:#f6f7f9;--fg:#16181d;--muted:#5b616e;--panel:#fff;--border:#d9dce2;--accent:#1f6feb;--accent-fg:#fff;--error:#b42318;--good:#1a7f37;--warn:#b35900;color:var(--fg);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--fg:#e8eaee;--muted:#9aa1ad;--panel:#171a20;--border:#2b303a;--accent:#4c8dff;--error:#ff8a80;--good:#56d364;--warn:#ffa657}}*{box-sizing:border-box}body{background:var(--bg);margin:0}.app{max-width:960px;padding:max(12px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));margin:0 auto}header h1{margin:0;font-size:1.5rem}.subtitle{color:var(--muted);margin:0 0 12px}.stage{background:#000;border-radius:12px;width:100%;height:min(62vh,640px);position:relative;overflow:hidden}.stage video,.stage canvas{width:100%;height:100%;position:absolute;inset:0}.stage video{object-fit:contain}.stage video.mirrored{transform:scaleX(-1)}.status{margin:12px 0;font-size:1.1rem}.status-error{color:var(--error)}.controls{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.controls label{max-width:100%;color:var(--muted);flex-direction:column;gap:4px;font-size:.85rem;display:flex}button,select{max-width:100%;font:inherit;border:1px solid var(--border);background:var(--panel);min-height:44px;color:var(--fg);border-radius:8px;padding:8px 14px;font-size:1rem}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);min-width:120px;font-weight:600}.diagnostics{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:16px 0;display:grid}.diagnostics div{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.diagnostics dt{color:var(--muted);font-size:.8rem}.diagnostics dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-weight:600}.report{flex-wrap:wrap;gap:8px;display:flex}.report pre{background:var(--panel);border:1px solid var(--border);-webkit-user-select:text;user-select:text;border-radius:8px;flex-basis:100%;max-height:320px;padding:10px;font-size:.75rem;overflow:auto}footer{color:var(--muted);margin-top:24px;font-size:.85rem}footer a{color:inherit}.modes,.steps{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.tab{flex:auto}.tab-active{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent);font-weight:600}.intro{margin:0 0 12px}.stage-hidden{display:none}.hud{pointer-events:none;color:#fff;text-shadow:0 1px 3px #000c;flex-direction:column;justify-content:space-between;padding:12px;display:flex;position:absolute;inset:0}.hud-top{align-items:baseline;gap:12px;display:flex}.hud-count{font-variant-numeric:tabular-nums;font-size:clamp(3rem,14vw,5rem);font-weight:700;line-height:1}.hud-phase{font-size:1.25rem;font-weight:600}.hud-cue{text-shadow:none;background:#000000a6;border-radius:10px;padding:10px 12px}.hud-cue p{margin:0;font-size:clamp(1.15rem,5vw,1.5rem);font-weight:600}.hud-cue .hud-why{margin-top:4px;font-size:.95rem;font-weight:400}.hud-cue-correction{border-left:6px solid var(--warn)}.hud-cue-setup{border-left:6px solid var(--accent)}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin:12px 0;padding:12px 14px}.card h3{margin:0 0 8px;font-size:1.05rem}.card p{margin:6px 0}.muted{color:var(--muted)}.small{font-size:.85rem}.aspects{margin:0;padding:0;list-style:none}.aspect{border-left:4px solid var(--border);margin:4px 0;padding:6px 0 6px 10px}.aspect-met{border-left-color:var(--good)}.aspect-adjust{border-left-color:var(--warn)}.outcome-met{color:var(--good)}.outcome-adjust{color:var(--warn)}.outcome-partial,.outcome-unable{color:var(--muted)}.tally{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.tally th,.tally td{text-align:left;border-bottom:1px solid var(--border);padding:4px 6px}.practise{border-left:6px solid var(--accent)}.practise-correction{border-left-color:var(--warn)}.practise-title{font-size:1.2rem;font-weight:600}.next{margin:0 0 12px}.lesson-cue{font-size:1.1rem;font-weight:600}.badge{border:1px solid var(--border);vertical-align:middle;border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge-checked{color:var(--fg)}.badge-not-checked{color:var(--muted)}.lesson-note{border-left:4px solid var(--accent);background:var(--panel);margin:12px 0;padding:10px 12px}.set-so-far{font-size:1.1rem}.finish-bar{z-index:2;padding:10px 16px max(10px, env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);margin:12px -16px 0;position:sticky;bottom:0}.finish-bar button{width:100%}.finish-bar p{margin:6px 0 0}.figures{flex-wrap:wrap;gap:12px;display:flex}.illustration{text-align:center;width:132px;color:var(--muted);margin:0;font-size:.8rem}.illustration svg{width:100%;height:auto}.ill-body,.ill-good,.ill-warn,.ill-ghost{fill:none;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.ill-body{stroke:var(--fg)}.ill-good{stroke:var(--good)}.ill-warn{stroke:var(--warn)}.ill-ghost{stroke:var(--border);fill:none}.ill-guide,.ill-arrow{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:4 3}.ill-arrow{stroke-dasharray:none;stroke-width:3px}.toggle{max-width:260px}.settings{margin:16px 0}.settings summary{cursor:pointer;align-items:center;min-height:44px;display:flex}.voice{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:8px 12px;display:flex}.voice p{flex-basis:100%;margin:0}.voice-switch{min-height:44px;color:var(--fg);align-items:center;gap:6px;font-size:1rem;display:inline-flex}.voice-switch input{width:22px;height:22px}.history{margin:20px 0}.history h2{margin:0 0 8px;font-size:1.35rem}.set-card{font-size:1.05rem}.set-title{font-size:1.1rem}.set-headline{font-size:1.3rem;font-weight:700;line-height:1.3}.set-adjust{border-left:6px solid var(--warn)}.set-no-adjustment{border-left:6px solid var(--good)}.set-partial,.set-unable,.set-no-reps{border-left:6px solid var(--border)}.set-list{margin:8px 0;padding-left:20px}.set-list li{margin:6px 0}.reps{margin:10px 0}.reps summary{cursor:pointer;min-height:44px;color:var(--accent);align-items:center;font-weight:600;display:flex}.rep-list{padding-left:20px}.rep-list>li{margin:10px 0}.movement-list{padding-left:0;list-style:none}.movement{border-left:4px solid var(--border);margin:10px 0;padding-left:10px}.movement p{margin:4px 0}.movement-not-counted{border-left-color:var(--accent)}.movement .checks{margin:6px 0;padding-left:20px}.movement .checks li{margin:4px 0}.movement-next{font-weight:600}
