:root{--ink:#1d1640;--paper:#fff;--orange:#ff7a29;--orange-deep:#c4551a;--teal:#16b3a3;--gold:#ffcf33;--good:#1fb57a;--bad:#e8423a;--wait:#9aa3b5;--shade:#141030b8}*{box-sizing:border-box}html,body{height:100%;color:var(--paper);-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#5fb4ff;margin:0;font-family:Montserrat,system-ui,sans-serif;overflow:hidden}#game{width:100%;height:100%;display:block;position:fixed;inset:0}#video{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.hidden{display:none!important}#speedlines{pointer-events:none;opacity:0;background:repeating-conic-gradient(at 50% 42%,#ffffff8c 0deg .6deg,#0000 .6deg 7deg);transition:opacity .4s;animation:.25s steps(3,end) infinite lines;position:fixed;inset:-10%;-webkit-mask:radial-gradient(circle at 50% 42%,#0000 34%,#000 70%);mask:radial-gradient(circle at 50% 42%,#0000 34%,#000 70%)}@keyframes lines{to{transform:rotate(4deg)}}#flash{pointer-events:none;opacity:0;background:radial-gradient(circle,#0000 40%,#e8423aa6 100%);position:fixed;inset:0}#flash.on{animation:.45s ease-out flash}@keyframes flash{0%{opacity:1}to{opacity:0}}#top{top:max(12px, env(safe-area-inset-top));pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:start;display:grid;position:fixed;left:16px;right:16px}#top .right{justify-content:flex-end;gap:8px;display:flex}.pill{background:var(--shade);border-radius:999px;justify-self:start;align-items:center;gap:8px;padding:6px 14px 6px 8px;font-size:clamp(18px,3.6vw,26px);font-weight:900;display:inline-flex}.pill.bump{animation:.2s ease-out bump}@keyframes bump{50%{transform:scale(1.18)}}.coin-icon{background:radial-gradient(circle at 35% 35%, #fff3b0, var(--gold) 45%, #d89a00);border-radius:50%;width:1.1em;height:1.1em;box-shadow:inset 0 0 0 3px #e0a800}#score{-webkit-text-stroke:6px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);font-size:clamp(30px,7vw,54px);font-weight:900;line-height:1}#score small{margin-left:2px;font-size:.5em}.chip{pointer-events:auto;color:var(--paper);background:var(--shade);cursor:pointer;border:0;border-radius:999px;padding:7px 12px;font:700 12px Montserrat,sans-serif}.chip.icon{padding:4px 10px;font-size:16px}#cue{letter-spacing:.01em;white-space:nowrap;-webkit-text-stroke:10px var(--ink);paint-order:stroke fill;text-shadow:0 8px 0 var(--ink);font-size:clamp(44px,12vw,108px);font-weight:900;animation:.28s cubic-bezier(.2,1.6,.4,1) pop;position:fixed;top:20%;left:50%;transform:translate(-50%)}@keyframes pop{0%{opacity:0;transform:translate(-50%)scale(.4)rotate(-6deg)}}#cue.hurdle{color:#fff3b0}#cue.bar{color:var(--gold)}#cue.block{color:#9ff5d6}#cue.count{color:var(--paper);font-size:clamp(80px,22vw,180px)}#cam{border:3px solid var(--paper);background:#000;border-radius:14px;position:fixed;box-shadow:0 6px 18px #0000004d}#cam.pip{left:16px;bottom:max(16px, env(safe-area-inset-bottom));aspect-ratio:4/3;width:clamp(120px,22vw,240px);height:auto}#cam.big{aspect-ratio:4/3;z-index:5;width:min(92vw,120vh);height:auto;max-height:72vh;top:50%;left:50%;transform:translate(-50%,-54%)}#perf{top:calc(max(12px, env(safe-area-inset-top)) + 48px);background:var(--shade);border-radius:12px;min-width:230px;padding:10px 12px;font:500 12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;position:fixed;right:16px}#perf .verdict{margin-bottom:4px;font:900 14px Montserrat,sans-serif}#perf .PASS{color:var(--good)}#perf .FAIL{color:var(--bad)}#perf .PENDING{color:var(--wait)}#perf .ok{color:var(--good)}#perf .no{color:var(--bad)}.overlay{text-align:center;z-index:4;background:radial-gradient(at 50% 40%,#14103059,#141030cc);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px 16px;display:flex;position:fixed;inset:0}#calib{padding-bottom:max(32px, env(safe-area-inset-bottom));background:#14103073;justify-content:flex-end}.logo{letter-spacing:-.03em;-webkit-text-stroke:14px var(--ink);paint-order:stroke fill;filter:drop-shadow(0 9px 0 var(--ink)) drop-shadow(0 18px 18px #0000004d);margin:0;font-size:clamp(60px,14vw,124px);font-weight:900;line-height:1;transform:rotate(-4deg)}.logo .a{color:var(--orange)}.logo .b{color:var(--teal)}.badge{letter-spacing:.12em;text-transform:uppercase;background:var(--gold);color:var(--ink);border:3px solid var(--ink);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:900;transform:rotate(-4deg)}.tag{text-shadow:0 2px 0 var(--ink);margin:6px 0 4px;font-size:clamp(16px,3.6vw,22px);font-weight:800}.moves{flex-wrap:wrap;justify-content:center;gap:10px;margin:4px 0 8px;padding:0;list-style:none;display:flex}.moves li{text-align:left;background:#ffffff24;border:2px solid #ffffff59;border-radius:14px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:700;line-height:1.25;display:flex}.moves b{color:var(--gold);font-size:26px}button.big{color:var(--paper);background:var(--orange);border:4px solid var(--ink);box-shadow:0 7px 0 var(--ink);cursor:pointer;-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;border-radius:999px;padding:14px 40px;font:900 22px Montserrat,sans-serif}button.big:active{box-shadow:0 2px 0 var(--ink);transform:translateY(5px)}button.link{color:var(--paper);cursor:pointer;background:0 0;border:0;padding:8px;font:700 14px Montserrat,sans-serif;text-decoration:underline}.fine{opacity:.85;max-width:460px;margin:0;font-size:12px;line-height:1.5}.row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}#calibText,#lost p{-webkit-text-stroke:6px var(--ink);paint-order:stroke fill;margin:0;font-size:clamp(20px,5vw,34px);font-weight:900}.bar{border:3px solid var(--ink);background:#ffffff40;border-radius:999px;width:min(80vw,420px);height:14px;overflow:hidden}#calibBar,#loadBar{background:var(--good);width:0;height:100%;transition:width .1s linear}#loadBar{background:var(--gold)}.card{background:var(--paper);color:var(--ink);border:5px solid var(--ink);box-shadow:0 10px 0 var(--ink);border-radius:28px;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:440px;padding:22px 22px 16px;display:flex}.card h2{color:#c0392b;margin:0;font-size:clamp(26px,6.5vw,40px);font-weight:900}.card .fine,.card button.link{color:var(--ink)}#summary{grid-template-columns:repeat(3,1fr);gap:8px;width:100%;margin:4px 0 8px;display:grid}#summary div{background:#f3efe8;border-radius:14px;padding:8px 4px;font-size:12px;font-weight:700}#summary b{font-size:26px;font-weight:900;display:block}.overlay{overflow-y:auto}@media (max-height:560px){.overlay{justify-content:safe center;gap:6px;padding:10px 16px}.logo{-webkit-text-stroke-width:9px;filter:drop-shadow(0 5px 0 var(--ink));font-size:clamp(36px,14vh,84px)}.badge{padding:4px 10px;font-size:11px}.tag{margin:0;font-size:15px}.moves{gap:6px;margin:0}.moves li{padding:4px 8px;font-size:11px}.moves b{font-size:18px}button.big{box-shadow:0 5px 0 var(--ink);padding:9px 28px;font-size:18px}#start .fine{display:none}.card{gap:6px;padding:12px 16px 10px}.card h2{font-size:24px}#summary{margin:0}#summary b{font-size:20px}#cue{-webkit-text-stroke-width:8px;font-size:clamp(36px,13vh,90px);top:20%}#cue.count{font-size:clamp(60px,26vh,160px)}}#edge{pointer-events:none;z-index:3;animation:1.4s ease-out forwards edge;position:fixed;inset:0}#edge.left{background:linear-gradient(90deg,#9ff5d6f2,#9ff5d600 28%)}#edge.right{background:linear-gradient(270deg,#9ff5d6f2,#9ff5d600 28%)}#edge.center{background:linear-gradient(90deg,#0000 30%,#9ff5d68c 50%,#0000 70%)}#edge.up{background:linear-gradient(#fff3b0f2,#fff3b000 30%)}#edge.down{background:linear-gradient(#ffcf3300 70%,#ffcf33f2)}@keyframes edge{0%,60%{opacity:1}30%{opacity:.55}to{opacity:0}}@media (pointer:coarse){#cue{-webkit-text-stroke-width:12px;font-size:clamp(64px,20vmin,160px);top:19%}}.logo img{width:min(520px,80vw);height:auto;margin:0 auto;display:block}.logo:has(img){-webkit-text-stroke:0;filter:none;animation:5s ease-in-out infinite logoWobble;transform:none}@keyframes logoWobble{0%,to{transform:rotate(0)scale(1)}50%{transform:rotate(-1.5deg)scale(1.03)}}.taunt{opacity:.85;margin:-4px 0 14px;font-size:18px;font-weight:800}@media (prefers-reduced-motion:reduce){.logo:has(img){animation:none}}
