html,body,#root{height:100%;margin:0}body{background:#cfe8f5;color:#fff;font-family:system-ui,sans-serif;overflow:hidden;overscroll-behavior:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}.game{position:fixed;top:0;right:0;bottom:0;left:0}.game-canvas{display:block;width:100%;height:100%;touch-action:none}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:0 16px;color:#1d3a2a;font-size:1.2rem;text-align:center}.hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;text-shadow:0 2px 6px rgba(0,0,0,.55);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.hud-top{position:absolute;top:16px;left:50%;transform:translate(-50%);text-align:center}.hud-timer{font-size:2.6rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em}.hud-progress{width:min(360px,60vw);height:6px;margin-top:4px;border-radius:3px;background:#00000059;overflow:hidden}.hud-progress-fill{height:100%;background:#ffd84a}.hud-speed{position:absolute;left:24px;bottom:20px;font-size:3.4rem}.hud-speed-value{font-weight:800;font-variant-numeric:tabular-nums}.hud-speed-unit{margin-left:6px;font-size:1rem;opacity:.85}.hud-speed-near .hud-speed-value{color:#ffd84a}.hud-speed-over .hud-speed-value{color:#ff6b4a;animation:burn .18s infinite alternate}.hud-speed-value{display:inline-block;transform-origin:left bottom;transition:font-size .15s}@keyframes burn{0%{text-shadow:0 0 6px #ffb347,0 -4px 14px #ff5a1f,0 2px 6px rgba(0,0,0,.55);transform:rotate(-1.5deg)}to{text-shadow:0 0 12px #ffd84a,0 -9px 22px #ff3d00,0 2px 6px rgba(0,0,0,.55);transform:rotate(1.5deg)}}.hud-streak{font-size:1.1rem;font-weight:800;color:#ffd84a;font-variant-numeric:tabular-nums}.hud-edge{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 52%,rgba(255,120,40,.16) 78%,rgba(40,10,0,.6) 100%);transition:opacity .12s}.hud-sound{position:absolute;right:16px;bottom:14px;padding:4px 10px;border:none;border-radius:8px;background:#0000004d;color:#fff;font:inherit;font-size:.8rem;opacity:.7;cursor:pointer;pointer-events:auto}.hud-sound:hover{opacity:1}.hud-stumble{position:absolute;left:50%;top:30%;transform:translate(-50%) rotate(2deg);font-size:clamp(1.3rem,6.5vw,2.2rem);font-weight:800;color:#ff6b4a;white-space:nowrap}.hud-recover{position:absolute;left:50%;top:30%;transform:translate(-50%) rotate(-2deg);font-size:clamp(1.3rem,6.5vw,2.2rem);font-weight:800;color:#7be08a;white-space:nowrap}.hud-hint{position:absolute;left:50%;bottom:24px;transform:translate(-50%);padding:6px 14px;border-radius:999px;background:#0006;font-size:.95rem;white-space:nowrap}.hud-start{position:absolute;left:50%;top:34%;transform:translate(-50%);font-size:1.6rem;font-weight:700}.hud-fall{position:absolute;left:50%;top:22%;transform:translate(-50%) rotate(-2deg);animation:comment-pop .25s ease-out;font-size:clamp(1.1rem,5.2vw,2rem);font-weight:800;color:#ffd84a;white-space:nowrap}.hud-dev{position:absolute;left:24px;top:16px;font-family:ui-monospace,monospace;font-size:.8rem;line-height:1.5}.hud-balance{width:180px;height:8px;border-radius:4px;background:#0006;overflow:hidden}.hud-balance-fill{height:100%;background:#7be08a}.dev-panel,.dev-toggle{position:absolute;top:12px;right:12px;font-family:ui-monospace,monospace;font-size:.75rem}.dev-panel{width:330px;max-height:calc(100% - 24px);overflow-y:auto;padding:10px;border-radius:10px;background:#101814db;color:#e6efe8}.dev-panel button,.dev-toggle{padding:3px 8px;border:1px solid rgba(255,255,255,.25);border-radius:6px;background:#ffffff14;color:inherit;font:inherit;cursor:pointer}.dev-toggle{background:#101814db;color:#e6efe8}.dev-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.dev-header span{flex:1;opacity:.7}.dev-group-title{width:100%;margin:3px 0;text-align:left}.dev-field{display:grid;grid-template-columns:128px 1fr 44px;align-items:center;gap:6px;padding:1px 0}.dev-field-changed .dev-field-name{color:#ffd84a}.dev-field-value{text-align:right;font-variant-numeric:tabular-nums}.dev-field input{width:100%;min-width:0}.dev-note{margin-top:8px;opacity:.65}.hud-target{margin-top:6px;font-size:.95rem;font-variant-numeric:tabular-nums;opacity:.9}.hud-count{position:absolute;left:50%;top:30%;transform:translate(-50%);font-size:clamp(4rem,24vmin,7rem);font-weight:900;color:#ffd84a;animation:count-pop .9s ease-out both}@keyframes count-pop{0%{opacity:0;transform:translate(-50%) scale(1.8)}25%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:.75;transform:translate(-50%) scale(.9)}}.hud-flyover{position:absolute;left:50%;top:24px;transform:translate(-50%);font-family:ui-monospace,monospace;font-size:clamp(.75rem,3.4vw,1.1rem);white-space:nowrap}.hud-tap{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:auto}.hud-ghost{display:table;margin:3px auto 0;padding:1px 9px;border-radius:999px;background:#0000004d;font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums}.hud-ghost-best{color:#bfe9ff}.hud-ghost-rival{color:#ffd84a}.medal{display:inline-flex;align-items:center;gap:6px}.medal-disc{display:inline-block;width:14px;height:14px;border-radius:50%;background:#ffffff2e;box-shadow:inset 0 -2px #00000040;flex:none}.medal-gold .medal-disc,.medal-disc.medal-gold{background:#f5c542}.medal-silver .medal-disc,.medal-disc.medal-silver{background:#cfd6dc}.medal-bronze .medal-disc,.medal-disc.medal-bronze{background:#c9834a}@keyframes comment-pop{0%{opacity:0;transform:translate(-50%) rotate(-2deg) scale(1.5)}to{opacity:1;transform:translate(-50%) rotate(-2deg) scale(1)}}.menu{position:absolute;left:5%;top:50%;transform:translateY(-50%);width:min(440px,90%);max-height:94%;overflow-y:auto;padding:24px 28px;border-radius:18px;background:#14221ad6;box-sizing:border-box}.menu-title{margin:0;font-size:2.3rem;font-weight:900;letter-spacing:-.02em;color:#ffd84a}.menu-tagline{margin:4px 0 18px;opacity:.85}.menu-note{opacity:.85}.menu-row{display:flex;gap:8px;margin-bottom:10px}.menu button,.menu-seed{padding:8px 10px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#ffffff14;color:#fff;font:inherit}.menu button{cursor:pointer}.menu button:hover{background:#ffffff2e}.menu-seed{flex:1;min-width:0;font-family:ui-monospace,monospace}.menu-size{flex:1;display:flex;flex-direction:column;align-items:center;font-weight:700}.menu-size small{font-weight:400;opacity:.75}.menu button.menu-size-active{border-color:#ffd84a;background:#ffd84a33}.menu-times{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px 14px;margin:16px 0;font-variant-numeric:tabular-nums}.menu-best strong{margin-left:auto}.menu-best{grid-column:1 / -1;display:flex;gap:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.15)}.menu button.menu-start{width:100%;padding:13px;border:none;background:#ffd84a;color:#1d2a1f;font-size:1.25rem;font-weight:800}.menu button.menu-start:hover{background:#ffe585}.menu-keys{margin:12px 0 0;font-size:.8rem;line-height:1.6;opacity:.75}.menu-recent{margin-top:16px;display:flex;flex-direction:column;gap:5px}.menu-recent-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;opacity:.7}.menu-recent button{display:flex;align-items:center;gap:8px;padding:6px 10px;text-align:left;font-size:.9rem;font-variant-numeric:tabular-nums}.menu-recent-id{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:320px;max-height:96%;overflow-y:auto;box-sizing:border-box;pointer-events:auto;--pad-y: 22px;--pad-x: 32px;padding:var(--pad-y) var(--pad-x);border-radius:18px;background:#14221adb;text-align:center;text-shadow:none}.results-time{font-size:3.4rem;font-weight:900;font-variant-numeric:tabular-nums;color:#ffd84a}.results-medal{justify-content:center;font-size:1.3rem;font-weight:800}.results-medal .medal-disc{width:22px;height:22px}.results-how{margin-top:6px;opacity:.9}.results-best{margin-top:6px;font-weight:800;color:#7be08a}.results-note{margin-top:6px;opacity:.75}.results-stats{width:100%;margin:14px 0;border-collapse:collapse;text-align:left}.results-stats td{padding:3px 0}.results-stats td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.results-board{margin-bottom:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.15)}.results-rank{margin-bottom:6px;font-size:1.15rem;font-weight:800;color:#ffd84a}.results-name{display:flex;gap:8px}.results-name input,.results-name button,.results-retry{padding:8px 10px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#ffffff14;color:#fff;font:inherit}.results-name input{flex:1;min-width:0;user-select:text;-webkit-user-select:text}.results-name button,.results-retry{cursor:pointer}.results-name button:hover,.results-retry:hover{background:#ffffff2e}.results-retry{padding:3px 8px}.results-times{display:flex;justify-content:center;gap:16px;font-variant-numeric:tabular-nums;opacity:.9}.results-keys{margin-top:6px;font-size:.85rem;opacity:.75}.results-slope{margin-top:6px;font-family:ui-monospace,monospace;font-size:.8rem;opacity:.6}.results-actions{position:sticky;bottom:calc(-1 * var(--pad-y));display:flex;flex-wrap:wrap;gap:8px;margin:10px calc(-1 * var(--pad-x)) calc(-1 * var(--pad-y));padding:10px var(--pad-x) var(--pad-y);background:#17261d}.results-actions>button{flex:1;padding:10px 6px;white-space:nowrap;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#2b3d32;color:#fff;font:inherit;font-weight:700;cursor:pointer}.results-actions>button:hover{background:#3a5043}.results-actions>button:disabled{opacity:.6;cursor:default}.results-actions>button.results-again{flex:2;border:none;background:#ffd84a;color:#1d2a1f}.results-actions>button.results-again:hover{background:#ffe585}.menu-player label,.menu-label{align-self:center;opacity:.8}.menu-player{margin:0 0 12px}.side{position:absolute;right:5%;top:50%;transform:translateY(-50%);width:min(380px,38%);max-height:94%;overflow-y:auto;padding:20px 24px;border-radius:18px;background:#14221ad6;box-sizing:border-box}.side-title,.side-tab{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.side-title{margin-bottom:8px;opacity:.7}.side-note{margin:0;opacity:.85;line-height:1.4}.side-count{margin:8px 0 0;font-size:.85rem;opacity:.7}.board{width:100%;border-collapse:collapse;text-align:left;font-variant-numeric:tabular-nums}.board td{padding:4px 6px}.board-rank{width:1.6em;text-align:right;opacity:.7}.board-name{max-width:9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.board-manner{font-size:.85rem;opacity:.7;white-space:nowrap}.board-time{text-align:right;font-weight:700}.board-you td{background:#ffd84a33;color:#ffe585}.board-you td:first-child{border-radius:7px 0 0 7px}.board-you td:last-child{border-radius:0 7px 7px 0}.board-gap td{padding:0 6px;text-align:center;opacity:.5}.side-lists{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.15);display:flex;flex-direction:column;gap:5px}.side-tabs{display:flex;gap:14px;margin-bottom:4px}.side button{border:none;background:none;color:#fff;font:inherit;cursor:pointer}.side button.side-tab{padding:0 0 3px;border-bottom:2px solid transparent;font-size:.8rem;opacity:.6}.side button.side-tab-active{border-bottom-color:#ffd84a;opacity:1}.side button.side-slope{display:flex;flex-direction:column;gap:1px;padding:6px 10px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#ffffff14;text-align:left;font-size:.9rem}.side button.side-slope:hover{background:#ffffff2e}.side-slope-id,.side-slope-info{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.side-slope-info{font-size:.8rem;font-variant-numeric:tabular-nums;opacity:.7}.touch{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;--stick: clamp(120px, 36vmin, 164px);--jump: clamp(84px, 25vmin, 120px);--edge-x: 18px;--edge-y: 20px}@media (orientation: portrait){.touch{--edge-y: 40px}}.touch-zone{position:absolute;bottom:0;height:62%;pointer-events:auto;touch-action:none}.touch-stick-zone{left:0;width:50%}.touch-jump-zone{right:0;width:45%}.touch-stick{position:absolute;left:calc(max(0px,env(safe-area-inset-left)) + var(--edge-x) + var(--stick) / 2);top:calc(100% - max(0px,env(safe-area-inset-bottom)) - var(--edge-y) - var(--stick) / 2);width:var(--stick);height:var(--stick);margin:calc(var(--stick) / -2) 0 0 calc(var(--stick) / -2);box-sizing:border-box;border:2px solid rgba(255,255,255,.45);border-radius:50%;background:#0c140f47;pointer-events:none}.touch-stick.touch-held{border-color:#ffffffb3}.touch-knob{position:absolute;left:28%;top:28%;width:44%;height:44%;box-sizing:border-box;border:2px solid rgba(255,255,255,.75);border-radius:50%;background:#ffffff47;will-change:transform}.touch-held .touch-knob{border-color:#ffd84a;background:#ffd84a99}.touch-way{position:absolute;color:#fffc;font-size:clamp(.6rem,2.7vmin,.78rem);font-weight:800;letter-spacing:.04em;line-height:1;text-transform:uppercase;text-shadow:0 1px 3px rgba(0,0,0,.7);white-space:nowrap}.touch-way-up{left:50%;top:7%;transform:translate(-50%)}.touch-way-down{left:50%;bottom:7%;transform:translate(-50%)}.touch-way-left{left:6%;top:50%;transform:translateY(-50%)}.touch-way-right{right:6%;top:50%;transform:translateY(-50%)}.touch-way.touch-lit{color:#ffd84a}.touch-jump{position:absolute;right:calc(max(0px,env(safe-area-inset-right)) + var(--edge-x) + 6px);bottom:calc(max(0px,env(safe-area-inset-bottom)) + var(--edge-y) + (var(--stick) - var(--jump)) / 2);display:flex;align-items:center;justify-content:center;width:var(--jump);height:var(--jump);box-sizing:border-box;border:2px solid rgba(255,255,255,.5);border-radius:50%;background:#0c140f4d;color:#fff;font-size:clamp(.8rem,3.8vmin,1.1rem);font-weight:800;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 1px 3px rgba(0,0,0,.6);pointer-events:none}.touch-jump.touch-held{border-color:#ffd84a;background:#ffd84a80}.touch-jump.touch-wanted{border-color:#7be08a;background:#7be08a73}.touch-top{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));display:flex;gap:6px;pointer-events:auto}@media (orientation: portrait){.touch-top{flex-direction:column}}.touch-top button,.hud-touch .hud-sound{padding:9px 11px;border:none;border-radius:9px;background:#00000059;color:#fff;font:inherit;font-size:.8rem;font-weight:700;opacity:1}.hud-touch .hud-speed{left:max(14px,env(safe-area-inset-left));top:max(10px,env(safe-area-inset-top));bottom:auto;font-size:2.1rem}.hud-touch .hud-speed-value{transform-origin:left top}.hud-touch .hud-speed-unit{font-size:.8rem}.hud-touch .hud-streak{font-size:.85rem}.hud-touch .hud-top{top:max(10px,env(safe-area-inset-top));max-width:50vw}.hud-touch .hud-timer{font-size:2rem}.hud-touch .hud-progress{width:min(300px,38vw);margin:4px auto 0}.hud-touch .hud-target,.hud-touch .hud-ghost{font-size:.8rem}.hud-touch .hud-sound{top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));bottom:auto}@media (max-width: 900px){.screens{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:10px;box-sizing:border-box;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));overflow-y:auto}.screens .menu,.screens .side{position:static;flex:none;width:auto;max-height:none;overflow:visible;transform:none}.screens .menu{padding:16px 18px}.menu-title{font-size:1.8rem}.menu-tagline{margin-bottom:12px}.menu button.menu-start{position:sticky;bottom:6px;z-index:1;box-shadow:0 4px 14px #00000073}}@media (max-width: 900px) and (orientation: landscape){.screens{flex-direction:row;align-items:flex-start}.screens .menu,.screens .side{flex:1 1 0;min-width:0}}.menu-touch{margin:10px 0 0}.menu-touch button{flex:1}@media (max-width: 600px),(max-height: 480px){.results{width:min(440px,94%);min-width:0;--pad-y: 14px;--pad-x: 16px}.results-time{font-size:2.4rem}.results-stats{margin:8px 0;font-size:.9rem}}.share{flex:0 0 100%;min-width:0;contain:inline-size;text-align:left}.share-row{display:flex;gap:8px}.share-row input,.share-row button{padding:8px 12px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#ffffff14;color:#fff;font:inherit}.share-row input{flex:1;min-width:0;font-family:ui-monospace,monospace;font-size:.85rem;user-select:text;-webkit-user-select:text}.share-row button{font-weight:700;cursor:pointer}.share-note,.share-failed{margin-top:5px;font-size:.85rem;opacity:.8}.watch-title{font-size:1.3rem;font-weight:800}.watch-bar{position:absolute;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100% - 20px);box-sizing:border-box;padding:8px 10px 8px 16px;border-radius:14px;background:#14221adb}.watch-who{overflow:hidden;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.watch-bar button{flex:none;padding:9px 12px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:#2b3d32;color:#fff;font:inherit;font-weight:700;white-space:nowrap;cursor:pointer}.watch-bar button:hover{background:#3a5043}.watch-bar button.watch-race{border:none;background:#ffd84a;color:#1d2a1f}.watch-bar button.watch-race:hover{background:#ffe585}.menu-challenge{align-items:center;padding:8px 10px;border-radius:9px;background:#ffd84a24}.menu-challenge span{flex:1;min-width:0}.menu-challenge strong{font-variant-numeric:tabular-nums;color:#ffd84a}.menu-notice{margin:0 0 12px;padding:8px 10px;border-radius:9px;background:#ff6b4a33}@media (max-width: 480px){.watch-bar{flex-wrap:wrap;justify-content:center;padding:8px 10px}.watch-who{flex-basis:100%;text-align:center}}
