:root{--ink:#0d1216;--panel:rgba(10,16,20,0.82);--line:rgba(192,228,216,0.28);--fg:#ecf2ee;--muted:#9fb2ad;--cyan:#5ff2ff;--orange:#ff8a3a;--yellow:#ffd23a;--mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;--sans:"Arial Black","Helvetica Neue",system-ui,sans-serif;color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--ink);color:var(--fg);overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}body{font-family:var(--mono)}button{font:inherit;color:inherit}.loading{position:fixed;inset:0;display:grid;place-items:center;letter-spacing:.3em;color:var(--muted)}.app{position:fixed;inset:0}.view{width:100%;height:100%;display:block;image-rendering:pixelated;touch-action:none}.fatal,.view{position:absolute;inset:0}.fatal{display:grid;place-items:center;padding:24px;text-align:center}.hud{inset:0;pointer-events:none;text-shadow:2px 2px 0 #000,0 0 8px rgba(0,0,0,.7)}.hud,.hud-top{position:absolute}.hud-top{left:0;right:0;top:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left))}.pause{pointer-events:auto;justify-self:start;width:42px;height:42px;border:2px solid rgba(255,255,255,.7);background:rgba(0,0,0,.3);font-weight:700;letter-spacing:-2px;cursor:pointer}.clock{display:grid;justify-items:center;line-height:1}.clock .big{font-size:clamp(26px,5vw,44px);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.clock .small{font-size:13px;color:var(--yellow);margin-top:6px}.stats{justify-self:end;display:grid;justify-items:end;font-size:15px;gap:4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.goal{top:calc(max(12px, env(safe-area-inset-top)) + 70px);font-size:14px;letter-spacing:.12em;color:var(--cyan)}.goal,.pop{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}.pop{top:30%;font-size:clamp(20px,3.6vw,32px);color:var(--yellow);opacity:0;transition:opacity .2s}.marker{position:absolute;left:0;top:0;opacity:0;will-change:transform}.marker i{position:absolute;left:-9px;top:-9px;width:18px;height:18px;border:3px solid var(--cyan);transform:rotate(45deg);box-shadow:0 0 8px var(--cyan)}.marker span{position:absolute;left:16px;top:-8px;font-size:12px;color:var(--cyan);white-space:nowrap}.marker[data-edge="1"] i{border-color:var(--orange);box-shadow:0 0 8px var(--orange)}.marker[data-edge="1"] span{color:var(--orange)}.reticle{left:-12px;top:-12px;width:24px;height:24px;border:2px dashed var(--cyan);border-radius:50%;will-change:transform}.flash,.reticle{position:absolute;opacity:0}.flash{inset:0;background:#fff}.keys-hint{bottom:max(12px,env(safe-area-inset-bottom));font-size:12px;color:rgba(255,255,255,.65)}.keys-hint,.toast{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}.toast{top:22%;background:var(--panel);border:1px solid var(--line);padding:10px 16px;font-size:14px}.toast,.touch{pointer-events:none}.touch{position:absolute;inset:0}.stick-zone{position:absolute;left:0;top:18%;bottom:0;width:50%;pointer-events:auto;touch-action:none}.stick-hint{position:absolute;left:max(28px,env(safe-area-inset-left));bottom:max(40px,env(safe-area-inset-bottom));width:112px;height:112px;border-radius:50%;border:2px dashed rgba(255,255,255,.35);display:grid;place-items:center;font-size:11px;color:rgba(255,255,255,.6);text-align:center}.stick-base{position:absolute;width:112px;height:112px;margin:-56px 0 0 -56px;border-radius:50%;border:2px solid rgba(255,255,255,.7);background:rgba(0,0,0,.25)}.stick-knob{position:absolute;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:rgba(255,255,255,.9)}.tbtn{position:absolute;pointer-events:auto;touch-action:none;border:3px solid rgba(255,255,255,.85);border-radius:50%;font-weight:700;letter-spacing:.06em;display:grid;place-items:center}.tbtn.boost{right:max(26px,env(safe-area-inset-right));bottom:max(34px,env(safe-area-inset-bottom));width:108px;height:108px;background:rgba(255,106,26,.55);font-size:16px}.tbtn.boost:active{background:rgba(255,106,26,.9)}.tbtn .lamp{position:absolute;inset:8px;border-radius:50%;background:radial-gradient(#ffd890,transparent 70%);opacity:.35;pointer-events:none}.tbtn.rope{right:calc(max(26px, env(safe-area-inset-right)) + 120px);bottom:max(26px,env(safe-area-inset-bottom));width:76px;height:76px;background:rgba(0,0,0,.35);font-size:13px}.tbtn.rope:active{background:rgba(95,242,255,.8);color:#06222a}.menu{position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:18px;padding:24px max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left));background:linear-gradient(90deg,rgba(8,12,16,.86),rgba(8,12,16,.35));overflow-y:auto}.menu.overlay{background:rgba(8,12,16,.72)}.menu h1{font-size:clamp(44px,9vw,92px);line-height:.9;letter-spacing:-.02em;text-align:center;text-shadow:4px 4px 0 #ff6a1a}.menu h1,.menu h2{font-family:var(--sans);margin:0}.menu h2{font-size:clamp(28px,5vw,44px)}.tag{margin:0;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-size:13px}.btns{display:grid;gap:10px;width:min(320px,100%)}.back,.btns button{padding:14px 18px;border:2px solid var(--line);background:rgba(0,0,0,.35);letter-spacing:.14em;cursor:pointer;font-size:15px}.back:hover,.btns button:focus-visible,.btns button:hover{border-color:var(--cyan);outline:none}.btns .primary{background:#ff6a1a;border-color:#ffb08a;color:#1a0a00;font-weight:700}button:disabled{opacity:.4;cursor:default}.wide{align-content:start;padding-top:max(28px,env(safe-area-inset-top))}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;width:min(980px,100%)}.card,.grid{display:grid}.card{text-align:left;gap:6px;padding:14px;border:2px solid var(--line);background:rgba(0,0,0,.45);cursor:pointer}.card:focus-visible,.card:hover{border-color:var(--cyan);outline:none}.card .num{font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.card b{font-family:var(--sans);font-size:20px}.card .blurb{font-size:12px;color:var(--muted);min-height:2.4em}.card .row{display:flex;justify-content:space-between;font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ctl{border-collapse:collapse;font-size:14px;max-width:560px}.ctl td{padding:8px 12px;border-bottom:1px solid var(--line)}.ctl td:first-child{color:var(--yellow);white-space:nowrap}.note{max-width:560px;color:var(--muted);font-size:13px;line-height:1.5;margin:0}.settings{display:grid;gap:14px;width:min(360px,100%)}.settings label{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:14px}.result-time{font-size:clamp(48px,10vw,84px);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.medal{font-family:var(--sans);font-size:26px;letter-spacing:.1em}.small{color:var(--muted);font-size:13px}