:root{color-scheme:dark;--bg:#101f23;--panel:#1a2c30;--text:#f7f0df;--muted:#a1b4b1;--mint:#cefa7a;--coral:#fb8769;font-family:'Segoe UI','Yu Gothic UI',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,select,input{font:inherit}button{cursor:pointer;border:0;color:var(--text);border-radius:9px;font-weight:650;transition:background .15s,transform .15s}button:hover{filter:brightness(1.12)}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--mint);outline-offset:4px}[hidden]{display:none!important}header{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #ffffff16;gap:12px}.brand{font-size:22px;letter-spacing:2px;font-weight:850;text-decoration:none;color:var(--text);display:flex;align-items:center;gap:12px}.brand-icon{background:var(--mint);color:var(--bg);width:34px;height:34px;text-align:center;border-radius:50%;font-size:24px}.edition{font-size:10px;color:var(--muted);font-weight:500;letter-spacing:1px;margin-left:18px}.top-right{display:flex;align-items:center;gap:18px;font-size:12px}main{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:20px;margin:22px 28px 0;max-width:1800px}.arena{position:relative;min-height:660px;height:calc(100vh - 151px);max-height:1050px;overflow:hidden;border:1px solid #ffffff20;border-radius:18px;background:#22383a}#stage{position:absolute;inset:0}#stage canvas{display:block;width:100%;height:100%}.stage-top,.stage-bottom{position:absolute;left:25px;right:25px;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.stage-top{top:25px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--mint);font-weight:700}.stage-top #round{font-size:12px;color:var(--muted)}.stage-bottom{bottom:25px;font-size:12px}.dot{display:inline-block;width:9px;height:9px;background:var(--mint);border-radius:50%;margin-right:8px}.legend{margin-left:15px;color:var(--muted)}#fit{font-size:15px;font-weight:700}.progress{position:absolute;bottom:0;height:4px;background:#ffffff10;width:100%}#progress{height:100%;background:var(--mint);width:0;transition:width .05s linear}.live{position:absolute;top:70px;left:12px;right:12px;text-align:center;pointer-events:none;text-shadow:0 2px 12px #102225}#phase{font-size:10px;letter-spacing:3px;color:var(--mint);display:block;margin-bottom:9px}#cue{font-size:clamp(23px,3vw,42px);font-weight:800;line-height:1.3}#subcue{font-size:13px;color:#d0dfd9;margin:10px 0}.welcome{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#1020237d;backdrop-filter:blur(5px);padding:25px}.welcome-card{background:#102327ed;padding:35px 38px 25px;width:430px;max-width:100%;border:1px solid #82958d4f;border-radius:18px;box-shadow:0 24px 80px #0004}h1{font-size:47px;line-height:1.24;margin:20px 0;letter-spacing:-1px}.welcome-card p{font-size:14px;line-height:1.9;color:#c0cfca}.primary{width:100%;padding:16px 18px;background:var(--mint);color:#18302a;text-align:left;display:flex;justify-content:space-between;margin-top:26px}.secondary{width:100%;padding:12px;background:transparent;border:1px solid #ffffff30;margin-top:10px;font-size:13px}.welcome-card .fine{font-size:11px;color:var(--muted);line-height:1.8;margin-top:18px}.welcome-card #error{font-size:12px;color:#ffbd9d;margin:8px 0 0}.quiet{background:#ffffff0a;border:1px solid #ffffff25;padding:8px 12px;font-size:12px}aside{display:flex;flex-direction:column;gap:14px;min-width:0}.panel{background:var(--panel);border:1px solid #ffffff12;border-radius:13px;padding:16px}.panel-title{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;color:var(--muted);font-weight:600}.target-panel{text-align:center}#target{width:100%;height:175px;margin:5px 0 0;display:block}h2{font-size:15px;margin:0 0 6px}.panel p{font-size:11px;color:var(--muted);line-height:1.7;margin:6px 0 0}.preview{aspect-ratio:4/3;position:relative;background:#102124;border-radius:8px;overflow:hidden;margin-top:12px}video,#skeleton{position:absolute;width:100%;height:100%;object-fit:contain;transform:scaleX(-1)}#preview-note{position:absolute;inset:0;display:grid;place-content:center;text-align:center;font-size:11px;line-height:1.8;color:#778e8c}#camera-light{font-size:10px;color:var(--mint)}#camera-light.off{color:#718783}#stop-camera{margin-top:10px;width:100%}.settings label,#demo-controls label{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px}select{font-size:12px;background:#263e40;color:var(--text);border:1px solid #ffffff22;border-radius:5px;padding:6px}.settings #restart{margin-top:10px;width:100%}.pose-buttons{display:flex;gap:5px;margin:12px 0}.pose-buttons button{background:#ffffff12;padding:7px 5px;flex:1;font-size:12px}.pose-buttons button.active{background:var(--mint);color:#173326}#lean{width:110px;accent-color:var(--mint)}footer{display:flex;justify-content:space-between;margin:14px 30px;font-size:9px;letter-spacing:2px;color:#788f8c}#results{display:flex;gap:10px;margin:20px 0}#results span{padding:10px 13px;border-radius:8px;background:#ffffff12}#results .pass{background:#cefa7a22;color:var(--mint)}#results .miss{color:var(--coral)}
@media(min-width:1500px){main{margin-left:auto;margin-right:auto;padding:0 28px}.arena{min-height:760px}#target{height:210px}}
@media(max-width:850px){header{padding:0 16px;height:64px}.edition{display:none}main{margin:14px;gap:12px;grid-template-columns:minmax(0,1fr) 215px}.arena{min-height:630px;height:calc(100vh - 120px)}.panel{padding:12px}.welcome-card{padding:25px}h1{font-size:36px}.legend{display:none}.stage-top,.stage-bottom{left:16px;right:16px}.stage-top .eyebrow{font-size:10px;letter-spacing:0}footer{margin:14px}}
@media(max-width:600px){header{height:60px}.brand{font-size:17px;gap:8px}.brand-icon{width:27px;height:27px;font-size:20px}.top-right{gap:8px}#mode{display:none}main{display:flex;flex-direction:column;margin:10px}.arena{height:70vh;min-height:550px;max-height:750px}aside{display:grid;grid-template-columns:1fr 1fr;gap:10px}.target-panel #target{height:145px}.panel h2{font-size:12px}.settings{grid-column:1/-1}#demo-controls{grid-column:1/-1}.welcome-card{width:350px}h1{font-size:38px}.welcome{padding:15px}.live{top:60px}footer{font-size:8px;letter-spacing:0}.stage-top #round{font-size:10px}}
dialog{width:440px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 32px);overflow:auto;padding:26px;background:#172d30;color:var(--text);border:1px solid #ffffff30;border-radius:17px;box-shadow:0 24px 100px #0008}dialog::backdrop{background:#081719ae;backdrop-filter:blur(4px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between}.dialog-heading h2{font-size:21px;margin:0}.dialog-heading button{font-size:18px;padding:4px 12px}.dialog-intro{color:var(--muted);font-size:12px;line-height:1.8;margin:16px 0 24px}.setting-field{display:flex;flex-direction:column;gap:9px;font-size:13px;margin-top:20px}.setting-field select{width:100%;font-size:13px;padding:11px;text-overflow:ellipsis;min-width:0}.device-help{display:flex;gap:12px;align-items:center;margin-top:8px}.device-help p,.setting-help{font-size:11px;color:var(--muted);line-height:1.7;margin:0}.device-help button{flex-shrink:0;font-size:11px;padding:7px}.setting-help{margin-top:7px}.setting-toggle{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;margin-top:15px;border-top:1px solid #ffffff16;border-bottom:1px solid #ffffff16;font-size:13px}.setting-toggle small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.setting-toggle input{width:20px;height:20px;accent-color:var(--mint);flex-shrink:0}.actual-camera{font-size:11px;color:var(--muted);overflow-wrap:anywhere;line-height:1.6;margin-top:16px}#camera-settings-message{font-size:12px;color:#ffbd9d;line-height:1.7}.preview.preview-hidden video,.preview.preview-hidden canvas{visibility:hidden}
@media(max-width:600px){header{padding:0 10px;gap:7px}.brand{font-size:15px;letter-spacing:1px;gap:6px}.brand-icon{width:24px;height:24px;font-size:18px}.top-right{gap:5px;flex-shrink:0}.top-right .quiet{font-size:10px;padding:8px}dialog{padding:22px}}
[data-i18n],#preview-note{white-space:pre-line}.dialog-tools{display:flex;gap:8px;align-items:center}.dialog-tools #dialog-language{font-size:11px;padding:8px}#language{font-size:12px;padding:8px}.top-right{gap:12px}.setting-field select{white-space:normal}html[lang="en"] .welcome-card h1{font-size:44px}html[lang="en"] #cue{font-size:clamp(21px,2.8vw,38px)}html[lang="en"] .settings label{flex-wrap:wrap}html[lang="en"] #target-name{line-height:1.5}
@media(max-width:600px){header{height:auto;min-height:92px;padding:10px 14px;flex-wrap:wrap}.brand{font-size:17px}.top-right{width:100%;gap:8px;justify-content:space-between}.top-right .quiet{font-size:11px;padding:8px 10px}#language{font-size:11px}.dialog-heading{gap:10px}.dialog-heading h2{font-size:18px}.dialog-tools{gap:5px}html[lang="en"] .welcome-card h1{font-size:38px}}
.mobile-controls{display:none}button,select{touch-action:manipulation}input[type="range"]{touch-action:pan-y}body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
@media(pointer:coarse){button,select{min-height:44px}input[type="range"]{height:32px}#camera-preview{width:26px;height:26px}select{font-size:16px}.setting-field select{font-size:16px}.pose-buttons button{min-height:44px}.settings #restart,#stop-camera{min-height:44px}}
@media(max-width:600px){
 header{padding-top:max(10px,env(safe-area-inset-top));position:relative;z-index:2}.top-right .quiet,#language{min-height:44px}.top-right{gap:6px}main{position:relative;gap:10px}.welcome{overflow-y:auto;align-items:safe center}.welcome-card{padding:24px;margin:auto}.welcome-card h1,html[lang="en"] .welcome-card h1{font-size:35px}.welcome-card .primary{margin-top:18px}.welcome-card .fine{font-size:10px;line-height:1.7}.welcome-card p{font-size:12px}.arena{min-height:545px}.dialog-heading{align-items:flex-start}.dialog-tools{flex-shrink:0}.dialog-tools #dialog-language,.dialog-tools #close-camera-settings{min-height:44px}.device-help{align-items:flex-start}.device-help .quiet{min-height:44px}.setting-field{margin-top:14px}.dialog-intro{margin-bottom:16px}dialog{padding:20px;overscroll-behavior:contain}
 body.is-playing .arena{height:calc(100svh - 186px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:340px;max-height:none}body.is-playing .live{top:57px}body.is-playing #cue{font-size:25px}body.is-playing #subcue{font-size:11px;margin:5px 10px}body.is-playing .stage-top{top:16px}body.is-playing .stage-bottom{left:14px;right:14px;bottom:14px;font-size:10px}body.is-playing #fit{font-size:12px}body.is-playing aside{display:contents}body.is-playing .target-panel,body.is-playing .settings{display:none}body.is-playing .mobile-controls{display:flex;gap:10px;padding-bottom:env(safe-area-inset-bottom)}.mobile-controls button{flex:1;min-height:44px;font-size:12px}body.is-playing .camera-panel{position:absolute;right:14px;bottom:100px;width:88px;padding:3px;border-radius:8px;pointer-events:none}body.is-playing .camera-panel .panel-title,body.is-playing .camera-panel p,body.is-playing #stop-camera{display:none}body.is-playing .camera-panel .preview{margin:0;border-radius:5px}body.is-playing #preview-note{font-size:8px;line-height:1.35;padding:3px}body.is-playing:not(.camera-playing) .camera-panel{display:none}body.is-playing footer{display:none}body.is-playing #demo-controls{margin:0}body.is-playing #demo-controls .panel-title,body.is-playing #demo-controls p{display:none}body.is-playing .pose-buttons{margin-top:0}
}
@media(max-height:520px) and (orientation:landscape) and (pointer:coarse){
 header{height:64px;min-height:64px;padding:6px max(12px,env(safe-area-inset-left));flex-wrap:nowrap}.brand{font-size:15px}.edition,#mode{display:none}.top-right{width:auto;gap:7px}.top-right .quiet,#language{font-size:11px;min-height:44px}main{position:relative;margin:8px;display:block}body.is-playing .arena{height:calc(100svh - 80px);min-height:250px;max-height:none}body.is-playing aside{display:contents}body.is-playing .target-panel,body.is-playing .settings,body.is-playing .camera-panel .panel-title,body.is-playing .camera-panel p,body.is-playing #stop-camera{display:none}body.is-playing .camera-panel{position:absolute;right:15px;bottom:74px;width:94px;padding:3px;pointer-events:none}body.is-playing .preview{margin:0}body.is-playing:not(.camera-playing) .camera-panel{display:none}body.is-playing .mobile-controls{display:flex;position:absolute;bottom:13px;right:13px;gap:7px;padding:0}body.is-playing .mobile-controls button{font-size:10px;min-height:44px}body.is-playing .stage-top{top:12px}body.is-playing .live{top:40px;left:10px;right:auto;width:32%;text-align:left}body.is-playing #cue{font-size:20px}body.is-playing #subcue{font-size:10px;margin-left:0}body.is-playing .stage-bottom{bottom:14px;left:15px;right:auto;gap:15px}body.is-playing #fit{font-size:11px}body.is-playing footer{display:none}body.is-playing #demo-controls{margin-top:8px}.welcome{overflow:auto;align-items:safe center}.welcome-card{margin:auto;padding:16px 24px}dialog{max-height:calc(100dvh - 20px)}
}
/* clarity pass: steps, round pips, legend, phase tones */
:root{--miss:#ff5f86}
.steps{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:8px}.steps li{display:flex;align-items:center;gap:12px;font-size:13px;line-height:1.5;color:#dfe8e3;background:#ffffff08;border:1px solid #ffffff12;border-radius:10px;padding:9px 12px}.steps b{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--mint);color:#18302a;display:grid;place-items:center;font-size:12px}
.welcome-card h1{margin:14px 0 10px}.welcome-card .primary{margin-top:20px;font-size:16px}
.round-box{display:flex;align-items:center;gap:12px}.pips{display:flex;gap:6px}.pips i{width:12px;height:12px;border-radius:50%;border:2px solid #ffffff40;background:transparent;transition:background .2s,border-color .2s,transform .2s}.pips i.current{border-color:var(--mint);transform:scale(1.25);box-shadow:0 0 0 4px #cefa7a22}.pips i.pass{background:var(--mint);border-color:var(--mint)}.pips i.miss{background:var(--miss);border-color:var(--miss)}.stage-top #round{font-size:13px;font-weight:700;color:var(--text);letter-spacing:1px}
.legend-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.legend-row>span{display:inline-flex;align-items:center}.legend{margin-left:0}.dot{margin-right:7px}.dot-miss{background:var(--miss)}.dot-line{background:transparent;border:2px solid #f7f0df;width:11px;height:11px}
#fit{font-size:17px;padding:5px 12px;border-radius:999px;background:#0e1f22b0;border:1px solid #ffffff20;transition:background .2s,color .2s}#fit:empty{display:none}#fit.good{background:var(--mint);color:#18302a;border-color:var(--mint)}
.progress{height:8px;background:#ffffff14}#progress{background:var(--mint);transition:width .05s linear,background .2s}#progress.urgent{background:var(--miss)}
.live{top:64px}#phase{display:inline-block;font-size:13px;letter-spacing:2px;font-weight:800;padding:6px 14px;border-radius:999px;background:#0e1f22c0;border:1px solid #cefa7a55;color:var(--mint);text-shadow:none;margin-bottom:12px}#cue{display:block;font-size:clamp(28px,4vw,54px);font-weight:900;line-height:1.2}#subcue{display:inline-block;font-size:14px;font-weight:600;color:#eef5f0;background:#0e1f22a8;border-radius:999px;padding:6px 14px;margin:12px 0;text-shadow:none}#subcue:empty{display:none}
.live[data-tone="clear"] #cue{color:var(--mint)}.live[data-tone="clear"] #phase{background:var(--mint);color:#18302a;border-color:var(--mint)}
.live[data-tone="miss"] #cue{color:var(--miss)}.live[data-tone="miss"] #phase,.live[data-tone="urgent"] #phase{background:var(--miss);color:#fff;border-color:var(--miss)}
.live[data-tone="wait"] #phase{color:#ffd27a;border-color:#ffd27a66}.live[data-tone="wait"] #cue{color:#ffe7b5}
#results{flex-wrap:wrap;gap:8px}#results span{flex:1;min-width:52px;text-align:center;font-weight:800;font-size:15px;border:1px solid transparent}#results .pass{border-color:#cefa7a55}#results .miss{color:var(--miss);background:#ff5f861c;border-color:#ff5f8655}
#mode{font-weight:700;color:var(--mint)}
@media(max-width:600px){.steps li{font-size:12px;padding:7px 10px}.welcome-card .primary{font-size:15px}.pips i{width:10px;height:10px}.round-box{gap:8px}body.is-playing .stage-top .eyebrow{display:none}body.is-playing .stage-top{justify-content:flex-end}.legend-row{gap:10px}.legend{display:none}body.is-playing .live{top:50px}body.is-playing #cue{font-size:30px}body.is-playing #phase{font-size:11px;padding:4px 11px;margin-bottom:8px}body.is-playing #subcue{font-size:12px;padding:5px 11px}body.is-playing #fit{font-size:13px}}
@media(max-height:520px) and (orientation:landscape) and (pointer:coarse){.steps{display:none}body.is-playing .live{top:36px}body.is-playing #cue{font-size:22px}body.is-playing #phase{font-size:10px;padding:3px 9px;margin-bottom:6px}body.is-playing #subcue{font-size:10px;margin:6px 0}}
