:root{--ink:#0b1220;--chalk:#f4f6fa;--muted:#98a4b8;--line:#f4f6fa24;--raised:#f4f6fa14;--court:#ff7a3d;--court-ink:#1a0d05;--good:#35d07f;--display:"Barlow Condensed", "Arial Narrow", sans-serif;--text:"Source Sans 3", -apple-system, "Segoe UI", sans-serif;--gutter:16px;--dock-width:480px;--pad-height:68px;--top:max(12px, env(safe-area-inset-top));--bottom:max(12px, env(safe-area-inset-bottom))}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--chalk);font-family:var(--text);overscroll-behavior:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}canvas{width:100vw;height:100vh;height:100dvh;display:block;position:fixed;inset:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--court);outline-offset:2px}kbd{font:600 12px var(--text);color:inherit;opacity:.7;border:1px solid;border-radius:5px;padding:0 6px}[hidden]{display:none!important}@media (hover:none){kbd{display:none}}.screen{z-index:20;background:var(--ink);-webkit-overflow-scrolling:touch;padding:calc(var(--top) + 24px) var(--gutter) calc(var(--bottom) + 24px);position:fixed;inset:0;overflow-y:auto}.screenBody{width:min(var(--dock-width), 100%);margin:0 auto}.wordmark{font:700 clamp(44px, 12vw, 64px) / .9 var(--display);letter-spacing:-.01em;margin:0 0 12px}.screenLead{max-width:34ch;color:var(--muted);margin:0 0 24px;font-size:17px;line-height:1.4}#loading .screenBody{min-height:calc(100vh - var(--top) - var(--bottom) - 48px);min-height:calc(100dvh - var(--top) - var(--bottom) - 48px);flex-direction:column;justify-content:center;display:flex}#loadingBar{background:var(--raised);border-radius:2px;height:4px;margin-top:28px;overflow:hidden}#loadingFill{background:var(--court);transform-origin:0;height:100%;transform:scaleX(0)}#loadingText{color:var(--muted);margin:12px 0 0}.roleGroup{margin:0 0 20px}.roleGroupName{font:600 20px var(--display);color:var(--muted);margin:0 0 8px}.role{text-align:left;background:var(--raised);border:1px solid #0000;border-radius:12px;grid-template-columns:56px 1fr;align-items:center;gap:4px 12px;width:100%;min-height:72px;margin-bottom:8px;padding:10px 14px 10px 10px;display:grid}.role:hover,.role:focus-visible{border-color:var(--court)}.role:active{background:var(--court);color:var(--court-ink)}.roleZone{background:var(--ink);font:700 30px var(--display);color:var(--court);border-radius:8px;grid-row:span 2;align-self:stretch;place-items:center;display:grid}.role:active .roleZone{color:var(--court)}.roleName{font:600 22px var(--display)}.roleBlurb{color:var(--muted);font-size:14px;line-height:1.3}.role:active .roleBlurb{color:inherit}#topBar{z-index:5;padding:var(--top) var(--gutter) 0;pointer-events:none;background:linear-gradient(#0b1220d9,#0b122000);grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;padding-bottom:28px;display:grid;position:fixed;top:0;left:0;right:0}#topBar>*{pointer-events:auto}#phase{text-align:center;font:600 clamp(20px, 5.5vw, 28px) / 1.1 var(--display);letter-spacing:.01em;text-shadow:0 2px 8px #0009;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iconButton{-webkit-backdrop-filter:blur(6px);background:#0b12208c;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.iconButton svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.iconButton.small{border-radius:9px;width:36px;height:36px}.iconButton:active{background:var(--court);color:var(--court-ink)}#pause[data-paused=true] #pauseIcon,#pause:not([data-paused=true]) #playIcon{display:none}#pause[data-paused=true] #playIcon path{fill:currentColor}#playback{z-index:5;top:calc(var(--top) + 52px);width:min(var(--dock-width), calc(100% - 2 * var(--gutter)));-webkit-backdrop-filter:blur(6px);background:#0b1220b3;border-radius:12px;align-items:center;gap:8px;padding:6px 8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}#scrub{min-width:0;accent-color:var(--court);cursor:pointer;flex:1;height:32px;margin:0}#clock{font:600 13px var(--text);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}#dock{z-index:5;padding:48px var(--gutter) var(--bottom);pointer-events:none;background:linear-gradient(#0b122000,#0b1220bf 40%,#0b1220e6);position:fixed;bottom:0;left:0;right:0}#dock>*{pointer-events:auto;width:min(var(--dock-width), 100%);margin-left:auto;margin-right:auto}#prompt{text-align:center;font:600 20px var(--display);justify-content:center;align-items:center;gap:8px;margin-bottom:8px;display:flex}.keys{gap:4px;display:inline-flex}#windowTrack{background:var(--raised);border-radius:3px;height:6px;margin-bottom:12px;overflow:hidden}#windowBar{background:var(--court);transform-origin:0;height:100%}.pad{width:100%;min-height:var(--pad-height);background:var(--court);color:var(--court-ink);font:700 clamp(22px, 6vw, 28px) var(--display);letter-spacing:.02em;border-radius:14px;justify-content:center;align-items:center;gap:10px;padding:8px 16px;display:flex;box-shadow:0 6px 20px #ff7a3d40}.pad:active{filter:brightness(1.15);transform:scale(.98)}#steps{flex-direction:column;gap:10px;display:flex}#feet{gap:10px;display:flex}.foot{color:var(--muted);background:var(--raised);box-shadow:none;border:1px solid var(--line);flex:1}.foot.next{color:var(--court-ink);background:var(--court);border-color:var(--court);box-shadow:0 6px 20px #ff7a3d40}#guide{text-align:center;color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.35}#beatBar{height:44px;position:relative}#beatLabels{height:18px;position:absolute;top:0;left:0;right:0}.beatLabel{font:700 15px var(--display);position:absolute;transform:translate(-50%)}.beatCueLabel{font:600 11px var(--text);color:var(--muted);position:absolute;bottom:-14px;transform:translate(-50%)}.beatCue{background:var(--chalk);opacity:.6;width:2px;position:absolute;top:0;bottom:0;transform:translate(-50%)}#beatTrack{background:var(--raised);border-radius:8px;height:16px;position:absolute;bottom:6px;left:0;right:0}#beatZones{border-radius:8px;position:absolute;inset:0;overflow:hidden}.beatZone,#beatTicks{position:absolute;top:0;bottom:0}#beatTicks{left:0;right:0}.beatTick{border-radius:2px;width:4px;position:absolute;top:-3px;bottom:-3px;transform:translate(-50%);box-shadow:0 0 0 1px #00000080}#beatHead{background:var(--chalk);width:2px;position:absolute;top:-5px;bottom:-5px;transform:translate(-50%);box-shadow:0 0 4px #000c}.sheet{z-index:10;background:#0b122059;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheetBody{width:min(var(--dock-width), 100%);max-height:calc(100% - var(--top) - 40px);-webkit-overflow-scrolling:touch;padding:20px var(--gutter) calc(var(--bottom) + 8px);background:#111c2e;border-radius:20px 20px 0 0;animation:.25s ease-out rise;overflow-y:auto;box-shadow:0 -8px 40px #00000080}#result{pointer-events:none}#result .sheetBody{pointer-events:auto}@media (min-width:520px){.sheetBody{border-radius:20px;margin-bottom:24px}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}@media (prefers-reduced-motion:reduce){.sheetBody{animation:none}}.sheetHead{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.sheetHead h2{font:700 30px var(--display);margin:0}#resultTag{font:600 15px var(--display);letter-spacing:.04em;background:var(--raised);color:var(--muted);border-radius:6px;margin-bottom:8px;padding:3px 10px;display:inline-block}#resultTag.won{color:var(--good);background:#35d07f2e}#resultTag.lost{color:var(--court);background:#ff7a3d2e}#resultTitle{font:700 clamp(28px, 8vw, 36px) / 1.05 var(--display);margin:0 0 8px}#resultText{margin:0 0 20px;font-size:16px;line-height:1.45}.actions{flex-direction:column;gap:10px;margin-top:20px;display:flex}.primary,.secondary{min-height:52px;font:600 20px var(--display);letter-spacing:.02em;border-radius:12px;padding:10px 16px}.primary{background:var(--court);color:var(--court-ink)}.primary:active{filter:brightness(1.15)}.secondary{background:var(--raised);border:1px solid var(--line)}.secondary:active{border-color:var(--court)}.secondary:disabled{opacity:.4;cursor:default}.field{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:6px 0;display:flex}.field:has(select:disabled){display:none}.fieldLabel{font:600 18px var(--display);flex-direction:column;display:flex}.fieldLabel small{font:400 13px var(--text);color:var(--muted)}.field select{max-width:60%;min-height:44px;font:600 16px var(--text);color:var(--chalk);background:var(--raised) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2398a4b8' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center / 18px;border:1px solid var(--line);appearance:none;text-overflow:ellipsis;border-radius:10px;flex:1;padding:6px 32px 6px 12px}.field #changeRole{max-width:60%;min-height:44px;font:600 16px var(--text);text-align:left;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2398a4b8' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-size:18px;flex:1;padding:6px 32px 6px 12px}.switch input{appearance:none;background:var(--raised);border:1px solid var(--line);cursor:pointer;border-radius:16px;flex:none;width:52px;height:32px;margin:0;transition:background .15s;position:relative}.switch input:after{content:"";background:var(--chalk);border-radius:12px;width:24px;height:24px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked{background:var(--court);border-color:var(--court)}.switch input:checked:after{transform:translate(20px)}.switch input:disabled{opacity:.4}.switch:has(input:disabled){display:none}@media (max-height:520px){:root{--pad-height:56px}#dock{padding-top:24px}#guide{display:none}#beatBar{height:36px}.actions{flex-direction:row}.actions>*{flex:1}}
