:root{--panel:#12161ed1;--text:#f4f6fa;--muted:#a9b2c3;--accent:#ffb81c;--good:#2ee66b;--bad:#ff7a7a;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--ui-scale:1;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none;background:#a9cfee;height:100%;margin:0;overflow:hidden}#game{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#hud{pointer-events:none;touch-action:none;position:fixed;inset:0}.hud-top{top:calc(12px + var(--safe-t));left:calc(16px + var(--safe-l));right:calc(170px + var(--safe-r));flex-wrap:wrap;gap:8px;display:flex;position:absolute}.pill{background:var(--panel);white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:7px 14px;font-size:clamp(13px,3.6vmin,15px);font-weight:600}#hud-timer.warn,#hud-floor.warn{color:var(--bad)}.gear{left:calc(16px + var(--safe-l));bottom:calc(16px + var(--safe-b));font-variant-numeric:tabular-nums;position:absolute}.gear.reverse{color:var(--accent)}.hud-corner{top:calc(12px + var(--safe-t));right:calc(16px + var(--safe-r));pointer-events:auto;gap:8px;display:flex;position:absolute}.icon-btn{background:var(--panel);touch-action:manipulation;border:none;border-radius:50%;width:44px;height:44px;font-size:18px}#btn-reset-view{color:var(--muted,inherit);opacity:.7;place-items:center;display:grid}#btn-reset-view.off-centre{opacity:1;color:#fff;background:#2d7ff9}#hud-hint{top:calc(64px + var(--safe-t));max-width:min(560px, calc(100% - 32px - var(--safe-l) - var(--safe-r)));text-align:center;background:var(--panel);border-radius:12px;padding:9px 16px;font-size:clamp(13px,3.4vmin,14px);transition:opacity .6s;position:absolute;left:50%;transform:translate(-50%)}@media (width<=480px){#hud-hint{top:calc(100px + var(--safe-t))}}#hud-hint.fade{opacity:0;visibility:hidden;transition:opacity .6s,visibility 0s .6s}#park-meter{bottom:calc(22% + var(--safe-b));width:min(320px, calc(100% - 32px - var(--safe-l) - var(--safe-r)));text-align:center;text-shadow:0 1px 4px #000000b3;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}#park-meter .bar{background:var(--panel);border-radius:999px;height:12px;margin-bottom:6px;overflow:hidden}#park-label{background:var(--panel);border-radius:999px;padding:2px 10px;display:inline-block}#park-checks{background:var(--panel);white-space:pre;border-radius:999px;margin-top:6px;padding:2px 10px;display:inline-block}#park-checks:empty{display:none}#park-fill{background:linear-gradient(90deg, #ffe14d, var(--good));width:0;height:100%}#flash{pointer-events:none;opacity:0;position:fixed;inset:0;box-shadow:inset 0 0 120px 30px #ff2828bf}#flash.on{animation:.45s ease-out flash}@keyframes flash{0%{opacity:1}to{opacity:0}}@keyframes flash-static{0%{opacity:.45}to{opacity:0}}#touch{padding:12px;padding-left:calc(env(safe-area-inset-left,0px) + 16px);padding-right:calc(env(safe-area-inset-right,0px) + 16px);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px);pointer-events:none;justify-content:space-between;align-items:flex-end;gap:12px;display:flex;position:fixed;bottom:0;left:0;right:0}#touch,#touch *{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body:has(#touch:not(.hidden)) .gear{bottom:calc(var(--wheel) + 28px + env(safe-area-inset-bottom))}.touch-group{pointer-events:auto;align-items:flex-end;gap:10px;display:flex}:root{--wheel:clamp(112px, min(36vw, 38vh), 220px);--pedal-h:clamp(96px, min(26vw, 34vh), 170px)}#touch.wheel-right{flex-direction:row-reverse}body[data-input=keys] #touch,body[data-input=pad] #touch{display:none}body[data-input=keys] .gear,body[data-input=pad] .gear{bottom:12px}#t-wheel{width:var(--wheel);height:var(--wheel);cursor:grab;border-radius:50%;position:relative}#t-wheel .wheel-rot{fill:none;stroke:#fff9;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 6px #00000073);pointer-events:none;width:100%;height:100%;transition:transform .22s cubic-bezier(.3,1.4,.5,1)}#t-wheel .rim{stroke-width:9px;stroke:#1e2430c7}#t-wheel .spokes{stroke-width:7px;stroke:#1e2430c7}#t-wheel .hub{fill:#1e2430e6;stroke:#ffffff59;stroke-width:2px}#t-wheel .mark{stroke-width:7px;stroke:#ffb81c}#t-wheel.active .wheel-rot{transition:none}#t-wheel.active .rim{stroke:#463c1ed9}#t-wheel .wheel-lock{color:#ffffffbf;pointer-events:none;font-size:12px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pedal-group{align-items:flex-end;gap:12px;position:relative}#t-brake,#t-accel{letter-spacing:1px;color:#ffffffb3;background:linear-gradient(#464c5acc,#181c26cc);border:2px solid #ffffff47;border-radius:14px;justify-content:center;align-items:flex-end;padding-bottom:8px;font-size:12px;font-weight:800;transition:transform 80ms,box-shadow 80ms;display:flex;box-shadow:0 6px #00000073}#t-brake{width:clamp(72px,20vw,120px);height:calc(var(--pedal-h) * .55)}#t-accel{width:clamp(48px,14vw,80px);height:var(--pedal-h)}#t-brake.active,#t-accel.active{color:#1a1a1a;background:linear-gradient(#ffb81cd9,#c8820ad9);transform:translateY(5px)scaleY(.95);box-shadow:0 1px #00000073}#t-accel.reverse.active{background:linear-gradient(#ff6e5ae6,#be3c32e6)}#t-gear{--gate-pos:0;width:44px;height:var(--pedal-h);background:linear-gradient(90deg,#0e121ad9,#282e3cd9);border:2px solid #ffffff47;border-radius:22px;flex:none;order:-1;font-size:15px;font-weight:800;position:relative;box-shadow:inset 0 2px 8px #0009}#touch.wheel-right #t-gear{order:1}#t-gear:focus-visible{outline:3px solid var(--accent);outline-offset:3px}#t-gear .gate-slot{text-align:center;color:#fff6;pointer-events:none;position:absolute;left:0;right:0}#t-gear .gate-d{top:10px}#t-gear .gate-r{bottom:10px}#t-gear:not(.reverse) .gate-d{color:var(--good);text-shadow:0 0 8px var(--good)}#t-gear.reverse .gate-r{color:#ff6e5a;text-shadow:0 0 8px #ff6e5a}#t-gear .gate-knob{height:32px;left:4px;right:4px;top:calc(4px + var(--gate-pos) * (100% - 40px));pointer-events:none;background:radial-gradient(circle at 35% 30%,#f4f6fa,#7d8596);border-radius:50%;transition:top .15s ease-out;position:absolute;box-shadow:0 3px 6px #0000008c}#t-gear.reverse .gate-knob{background:radial-gradient(circle at 35% 30%,#ffd2c9,#d4503f)}#t-gear.dragging .gate-knob{transition:none}#touch button{background:#12161e8c;border:2px solid #ffffff40}.screen{padding:calc(16px + var(--safe-t)) calc(16px + var(--safe-r)) calc(16px + var(--safe-b)) calc(16px + var(--safe-l));overscroll-behavior:contain;touch-action:pan-y;background:radial-gradient(#0a0e1659,#0a0e16b3);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.panel{background:var(--panel);text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;width:min(640px,100%);margin:auto 0;padding:clamp(16px,5vmin,28px);box-shadow:0 20px 60px #00000059}.panel.small{width:min(400px,100%)}h1{letter-spacing:-1px;margin:0;font-size:clamp(30px,min(8vw,12vh),56px)}h1 span{color:var(--accent)}h2{margin:0 0 8px;font-size:clamp(22px,7vmin,30px)}.tagline{color:var(--muted);margin:6px 0 clamp(12px,4vmin,22px);font-size:clamp(14px,3.8vmin,16px)}#level-grid{grid-template-columns:repeat(auto-fill,minmax(min(115px,100%),1fr));gap:clamp(6px,2vmin,10px);display:grid}#level-grid.worlds{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}.world-btn{border:2px solid #0000;border-top:4px solid var(--world,var(--accent));background:#ffffff14;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:clamp(12px,3vmin,18px) 12px;transition:transform .12s,border-color .12s;display:flex}.world-btn:hover:not(:disabled),.world-btn:focus-visible{border-color:var(--world,var(--accent));outline:none;transform:translateY(-2px)}.world-btn:disabled{opacity:.4;cursor:not-allowed}.world-icon{font-size:clamp(26px,8vmin,34px)}.world-name{font-size:clamp(16px,4.4vmin,19px);font-weight:800}.world-blurb{color:var(--muted);font-size:clamp(12px,3.3vmin,13px)}.world-total{color:var(--accent);font-variant-numeric:tabular-nums;margin-top:4px;font-size:clamp(12px,3.3vmin,13px);font-weight:700}#world-bar{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}#world-bar.hidden{display:none}#world-back{color:#fff;min-height:44px;font:inherit;white-space:nowrap;cursor:pointer;touch-action:manipulation;background:#ffffff1f;border:0;border-radius:12px;padding:0 14px;font-weight:700}#world-back:hover{background:#fff3}#world-back:focus-visible{outline-offset:2px;outline:3px solid #fff}#world-title{text-align:center;font-weight:800}#world-stars{color:var(--accent);white-space:nowrap;font-weight:700}.level-btn{background:#ffffff14;border:2px solid #0000;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:clamp(8px,2.6vmin,14px) 8px;transition:transform .12s,border-color .12s;display:flex}.level-btn:hover:not(:disabled),.level-btn:focus-visible{border-color:var(--accent);outline:none;transform:translateY(-2px)}.level-btn:disabled{opacity:.4;cursor:not-allowed}.level-btn .num{font-size:clamp(19px,5.5vmin,24px);font-weight:800}.level-btn .name{color:var(--muted);font-size:clamp(13px,3.6vmin,14px)}.level-btn .stars,.stars{color:var(--accent);letter-spacing:2px}.level-btn .best{color:var(--muted);font-variant-numeric:tabular-nums;font-size:clamp(12px,3.2vmin,13px)}.stars{font-size:clamp(28px,9vmin,38px)}#menu-total{color:var(--accent);margin-top:14px;font-weight:700}#menu-version{color:var(--muted);opacity:.7;margin-top:12px;font-size:11px}.controls{color:var(--muted);margin-top:18px;font-size:13px;line-height:2}kbd{min-width:22px;color:var(--text);font:inherit;background:#ffffff24;border-radius:5px;margin:0 1px;padding:0 6px;font-size:12px;line-height:20px;display:inline-block}#modal-body{color:var(--muted);margin:10px 0 20px}#modal-buttons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}#modal-buttons button{background:#ffffff1f;border:none;border-radius:12px;padding:11px 20px;font-weight:600}#modal-buttons button.primary{background:var(--accent);color:#1a1a1a}#modal-buttons button:focus-visible{outline-offset:2px;outline:3px solid #fff}#update-banner{top:calc(env(safe-area-inset-top) + 10px);z-index:30;max-width:calc(100vw - 24px);color:var(--text);background:#14181eeb;border-radius:14px;align-items:center;gap:10px;padding:8px 10px 8px 16px;font-weight:600;display:flex;position:fixed;left:50%;transform:translate(-50%)}#update-banner button{background:#ffffff1f;border:none;border-radius:10px;padding:8px 14px;font-weight:600}#update-banner button.primary{background:var(--accent);color:#1a1a1a}#update-banner button:focus-visible{outline-offset:2px;outline:3px solid #fff}@media (pointer:coarse){.controls{display:none}}@media (prefers-reduced-motion:reduce){#flash.on{animation:.3s step-end flash-static}#hud-hint,.level-btn{transition-duration:10ms}#t-gear .gate-knob{transition:none}.level-btn:hover:not(:disabled),.level-btn:focus-visible{transform:none}}.settings-open,.settings-done{background:#ffffff1f;border:none;border-radius:12px;margin-top:14px;padding:11px 20px;font-weight:600}.settings-done{background:var(--accent);color:#1a1a1a;margin-top:20px}#settings{z-index:20}.setting-row{justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.setting-label{font-weight:600}.seg{background:#ffffff14;border-radius:999px;gap:4px;padding:4px;display:flex}.setting-row.wrap{flex-wrap:wrap}.seg.wrap{border-radius:24px;flex-wrap:wrap}.seg button{min-width:64px;min-height:40px;color:var(--muted);background:0 0;border:none;border-radius:999px;padding:6px 14px;font-weight:600}.seg button.on{background:var(--accent);color:#1a1a1a}.settings-open:focus-visible,.settings-done:focus-visible,.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gfx-overlay{z-index:30;background:radial-gradient(#0a0e16bf,#0a0e16f2);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.gfx-overlay p{color:var(--muted);margin:10px 0 0;line-height:1.5}#gfx-fatal{background:#1b2230}:root{--mirror-w:clamp(150px, 30vw, 340px);--mirror-top:calc(60px + var(--safe-t))}#mirror{top:var(--mirror-top);width:var(--mirror-w);aspect-ratio:3.6;pointer-events:none;border:4px solid #1b1d22;border-radius:14px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #ffffff40,0 6px 18px #00000059}.has-mirror #hud-hint{top:calc(var(--mirror-top) + var(--mirror-w) / 3.6 + 12px)}@media (width<=480px){:root{--mirror-top:calc(100px + var(--safe-t))}}#loading{z-index:10}#loading .panel{text-align:center;min-width:min(260px,100%)}#loading-text{margin:0 0 12px;font-weight:700}#loading .bar{background:#ffffff26;border-radius:999px;height:10px;overflow:hidden}#loading-fill{background:linear-gradient(90deg, #ffe14d, var(--good));width:0;height:100%;transition:width .15s}#admin-bar{top:calc(60px + var(--safe-t));left:calc(16px + var(--safe-l));z-index:50;align-items:center;gap:8px;display:flex;position:fixed}#admin-bar.hidden,#admin-bar .hidden{display:none}#admin-bar button{color:#fff;letter-spacing:.06em;touch-action:manipulation;cursor:pointer;background:#d92b2b;border:0;border-radius:12px;min-width:44px;min-height:36px;padding:0 12px;font:700 14px/1 system-ui,sans-serif}body:has(#menu:not(.hidden)) #admin-bar{top:calc(2px + var(--safe-t))}body:has(#menu:not(.hidden)) #admin-bar button{min-height:24px;padding:0 10px;font-size:11px}body:has(#admin-bar:not(.hidden)) #hud-hint{top:calc(100px + var(--safe-t))}#admin-bar button:disabled{opacity:.4}#admin-bar button#admin-badge[aria-pressed=false]{background:#7a2a2a}#error-banner{z-index:30;color:#fff;background:#781414f2;border-radius:12px;align-items:center;gap:12px;padding:10px 14px;font-weight:700;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}#error-banner.hidden{display:none}.panel,.pill,#hud-hint,#park-meter,.icon-btn{zoom:var(--ui-scale)}@media (orientation:landscape) and (height<=520px){:root{--wheel:clamp(96px, 30vh, 150px);--pedal-h:clamp(80px, 24vh, 120px)}.hud-top{top:calc(6px + var(--safe-t));gap:6px}.pill{padding:4px 10px;font-size:12px}.hud-corner{top:calc(6px + var(--safe-t));gap:6px}.icon-btn{width:36px;height:36px;font-size:15px}#hud-hint{top:auto;bottom:calc(8px + var(--safe-b));border-radius:10px;max-width:min(46vw,420px);padding:5px 10px;font-size:11px;line-height:1.3}#admin-bar{top:calc(44px + var(--safe-t));transform-origin:0 0;transform:scale(.75)}#park-meter{bottom:calc(40px + var(--safe-b))}}.settings-tabs{gap:6px;margin-bottom:12px;display:flex}.settings-tabs button{min-height:40px;color:inherit;font:inherit;background:#ffffff14;border:none;border-radius:10px;flex:1;font-weight:600}.settings-tabs button[aria-selected=true]{color:#fff;background:#2d7ff9}.settings-tabs button:focus-visible{outline-offset:2px;outline:3px solid #fff}.settings-pane[hidden]{display:none}
