:root{--ink:#17323d;--ink-soft:#17323d9e;--paper:#ffffff94;--edge:#17323d24;--sky:#bfe3f2;--jelly:#9be06a;color:var(--ink);font-family:ui-rounded,SF Pro Rounded,Avenir Next,system-ui,sans-serif}*{box-sizing:border-box}html,body{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}html,body,#app{background:var(--sky);height:100%;margin:0;overflow:hidden}#viewport{position:fixed;inset:0}#viewport canvas{outline:none;width:100%;height:100%;display:block}.readout{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;font-variant-numeric:tabular-nums;border-radius:16px;align-items:flex-end;gap:22px;padding:12px 18px;display:flex;position:fixed;top:20px;right:24px}.stat{flex-direction:column;align-items:flex-end;min-width:72px;display:flex}.stat span{white-space:nowrap;font-size:17px;font-weight:600}.stat.primary span{font-size:26px;font-weight:700}.stat.low span{color:#c0392b}.stat label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.hints{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink-soft);pointer-events:none;opacity:0;visibility:hidden;border-radius:999px;align-items:center;gap:16px;padding:10px 18px;font-size:13px;transition:opacity .2s,visibility .2s;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.hints.shown{opacity:1;visibility:visible}.hints span{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.hints .separator{background:var(--edge);width:1px;height:16px}kbd{border:1px solid var(--edge);min-width:24px;height:24px;box-shadow:0 1px 0 var(--edge);color:var(--ink);background:#fff;border-radius:7px;place-items:center;padding:0 6px;font:600 12px/1 ui-monospace,SF Mono,Menlo,monospace;display:inline-grid}kbd.wide{padding:0 10px}.growth-layer{pointer-events:none;z-index:4;position:fixed;inset:0;overflow:hidden}.growth-popup{opacity:0;white-space:nowrap;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 0 2px var(--tint,#3a8a1a), 0 0 8px var(--tint,#3a8a1a), 0 1px 3px #00000059;font-size:20px;font-weight:700;position:absolute;transform:translate(-50%)}.growth-popup.loss{color:#ffe4e4}.growth-popup.loss.playing{animation:1.1s cubic-bezier(.3,0,.5,1) forwards growth-fall}@keyframes growth-fall{0%{opacity:0;transform:translate(-50%,-8px)scale(.7)}14%{opacity:1;transform:translate(-50%)scale(1.2)}30%{opacity:1;transform:translate(-50%,8px)scale(1)}to{opacity:0;transform:translate(-50%,56px)scale(.9)}}.growth-popup.playing{animation:1.1s cubic-bezier(.2,.7,.3,1) forwards growth-rise}@keyframes growth-rise{0%{opacity:0;transform:translate(-50%,6px)scale(.6)}14%{opacity:1;transform:translate(-50%,-4px)scale(1.25)}30%{opacity:1;transform:translate(-50%,-14px)scale(1)}to{opacity:0;transform:translate(-50%,-64px)scale(.95)}}@media (prefers-reduced-motion:reduce){.growth-popup.playing{animation-duration:1.6s}}.stat.grew span{animation:.7s ease-out size-pulse}@keyframes size-pulse{0%{color:#2f9e2f;transform:scale(1.18)}to{transform:scale(1)}}.biome-banner{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;opacity:0;visibility:hidden;border-radius:18px;flex-direction:column;align-items:center;gap:4px;padding:14px 30px;transition:opacity .6s,visibility .6s;display:flex;position:fixed;top:26%;left:50%;transform:translate(-50%)}.biome-banner.shown{opacity:1;visibility:visible}.biome-banner b{letter-spacing:-.01em;font-size:30px}.biome-banner span{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:12px}.power-up{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;pointer-events:none;opacity:0;visibility:hidden;border-radius:999px;align-items:center;gap:9px;padding:8px 16px;font-size:14px;transition:opacity .25s,visibility .25s;display:flex;position:fixed;top:104px;left:50%;transform:translate(-50%)}.alarm{pointer-events:none;z-index:3;opacity:var(--alarm,0);background:radial-gradient(#0000 48%,#e11d1d8c 100%);position:fixed;inset:0}.stat.critical span{color:color-mix(in srgb, #e11d1d calc(var(--alarm,0) * 100%), var(--ink))}.toast{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;opacity:0;visibility:hidden;border-radius:999px;padding:8px 18px;font-size:14px;font-weight:600;transition:opacity .25s,visibility .25s;position:fixed;top:148px;left:50%;transform:translate(-50%)}.toast.shown{opacity:1;visibility:visible}.warning{text-align:center;color:#5c3b00;pointer-events:none;opacity:0;visibility:hidden;background:#fff3cd;border:1px solid #e0b84a;border-radius:14px;max-width:min(560px,100vw - 32px);padding:10px 20px;font-size:15px;font-weight:700;line-height:1.35;transition:opacity .3s,visibility .3s;position:fixed;top:196px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0000002e}.warning.shown,.power-up.shown{opacity:1;visibility:visible}.power-up b{text-align:right;min-width:3.2em}.power-up-icon{border:4px solid #e8323c;border-bottom:0;border-radius:9px 9px 0 0;width:14px;height:14px}#worn-out{pointer-events:none;opacity:0;visibility:hidden;z-index:5;place-items:center;transition:opacity .6s,visibility .6s;display:grid;position:fixed;inset:0}#worn-out.shown{opacity:1;visibility:visible}.worn-card{text-align:center;background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:22px;padding:26px 34px}.worn-card h2{margin:0 0 8px;font-size:28px}.worn-card p{color:var(--ink-soft);margin:6px 0 0}.worn-card b{color:var(--ink)}#loading{background:var(--sky);z-index:10;place-items:center;transition:opacity .5s,visibility .5s;display:grid;position:fixed;inset:0}#loading.hidden{opacity:0;visibility:hidden}.loading-card{text-align:center;width:min(440px,100vw - 48px)}.loading-card h2{margin:18px 0 6px;font-size:24px}.loading-card p{color:var(--ink-soft);margin:0}.jelly-mark{background:radial-gradient(circle at 34% 30%, #f2ffe0, var(--jelly) 55%, #4c9a2a);border-radius:50%;width:54px;height:54px;margin:0 auto;animation:1.1s ease-in-out infinite wobble}#loading.failed .jelly-mark{filter:grayscale(.7);animation:none}#fatal{border:1px solid var(--edge);text-align:left;white-space:pre-wrap;word-break:break-word;background:#fff;border-radius:12px;margin:18px 0 0;padding:14px;font:12px/1.5 ui-monospace,SF Mono,Menlo,monospace}#retry{background:var(--ink);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:999px;margin-top:16px;padding:10px 20px;font-weight:600}@keyframes wobble{0%,to{transform:scale(1)}35%{transform:scale(1.12,.86)translateY(4px)}65%{transform:scale(.93,1.08)translateY(-3px)}}@media (prefers-reduced-motion:reduce){.jelly-mark{animation:none}}@media (width<=640px){.readout{justify-content:space-between;gap:8px;top:12px;left:12px;right:12px}.hints{display:none}}.touch-controls{pointer-events:none;z-index:6;display:none;position:fixed;inset:0}html.touch .touch-controls{display:block}html.touch .hints,html.touch .keys-only,.touch-only{display:none}html.touch .touch-only{display:block}.stick-zone{left:max(14px, env(safe-area-inset-left));bottom:max(16px, env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;place-items:center;width:200px;height:200px;display:grid;position:absolute}.stick-base{background:#ffffff24;border:2px solid #ffffff8c;border-radius:50%;place-items:center;width:132px;height:132px;transition:background .15s;display:grid;box-shadow:0 0 0 1px #0000001a}.stick-base.held{background:#ffffff3d}.stick-knob{background:#ffffff61;border:2px solid #fffc;border-radius:50%;width:58px;height:58px;box-shadow:0 2px 10px #0000002e}.touch-buttons{right:max(18px, env(safe-area-inset-right));bottom:max(22px, env(safe-area-inset-bottom));grid-template-columns:auto auto;place-items:end;gap:14px;display:grid;position:absolute}.touch-jump,.touch-small{pointer-events:auto;touch-action:none;color:#fff;cursor:pointer;background:#ffffff24;border:2px solid #ffffff8c;border-radius:50%;place-items:center;padding:0;transition:background .12s,transform .12s;display:grid;box-shadow:0 0 0 1px #0000001a}.touch-jump{grid-column:1/-1;width:96px;height:96px}.touch-jump svg{width:38px;height:38px}.touch-jump.down{background:#ffffff57;transform:scale(.94)}.touch-small{width:48px;height:48px}.touch-small svg{width:24px;height:24px}.touch-small.on{background:#ffffff57;border-color:#fff}.touch-small .sound-off,.touch-small[aria-pressed=true] .sound-waves{display:none}.touch-small[aria-pressed=true] .sound-off{display:inline}@media (pointer:coarse){.readout{top:max(10px, env(safe-area-inset-top));gap:14px;padding:8px 14px;left:50%;right:auto;transform:translate(-50%)}.readout .stat{min-width:0}.readout .stat.primary span{font-size:22px}.readout .stat span{font-size:15px}.readout .stat.optional{display:none}.toast{white-space:normal;text-align:center;max-width:calc(100vw - 32px);top:78px}.power-up{top:70px}.biome-banner{top:24%}}@media (pointer:coarse) and (orientation:landscape) and (height<=500px){.stick-zone{width:170px;height:170px}.stick-base{width:112px;height:112px}.stick-knob{width:50px;height:50px}.touch-jump{width:84px;height:84px}.toast{top:64px}}html:not(.show-cursor),html:not(.show-cursor) *{cursor:none!important}.badges{z-index:5;pointer-events:none;align-items:flex-start;gap:8px;display:flex;position:fixed;top:20px;left:24px}.shield{flex-direction:column;align-items:center;gap:2px;width:44px;transition:filter .3s,transform .3s;display:flex;position:relative}.shield svg{filter:drop-shadow(0 2px 3px #0000004d);width:44px;height:50px}.shield-body{fill:var(--shield);stroke:#ffffffd9;stroke-width:1.6px}.shield.empty svg{opacity:.8;filter:grayscale(.35)drop-shadow(0 2px 3px #00000040)}.shield.max .shield-body{stroke:#ffd54a;stroke-width:2.6px}.shield b{color:#fff;text-align:center;font-variant-numeric:tabular-nums;background:#14141ec7;border-radius:9px;min-width:18px;padding:0 5px;font-size:13px;line-height:18px;position:absolute;top:28px;left:50%;transform:translate(-50%)}.badge-bar{background:#14141e59;border-radius:2px;width:38px;height:4px;display:block;overflow:hidden}.badge-bar i{background:#fff;border-radius:2px;width:0;height:100%;display:block}.shield.flash{animation:.7s ease-out 2 shield-up}@keyframes shield-up{0%,to{transform:scale(1)}40%{filter:brightness(1.5);transform:scale(1.3)}}.bee-badge{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;border-radius:12px;flex-direction:column;align-items:center;gap:2px;margin-left:6px;padding:4px 8px 5px;font-size:12px;display:none}.bee-badge.shown{display:flex}.bee-badge svg{width:30px;height:30px}.bee-badge b{font-size:14px}.bee-badge .bee-level{color:var(--ink-soft);font-size:11px}.bee-badge.max{border-color:#ffd54a}@media (width<=640px){.badges{transform-origin:0 0;top:12px;left:12px;transform:scale(.8)}}@media (pointer:coarse){.badges{left:8px;top:calc(max(10px, env(safe-area-inset-top)) + 54px);transform-origin:0 0;transform:scale(.72)}}.glass-badge{background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:7px;margin-left:6px;padding:8px 14px;font-size:14px;display:none}.glass-badge.shown{display:flex}.glass-dot{background:radial-gradient(circle at 35% 30%,#fff,#a9d6ff 60%,#6fa8dc);border-radius:50%;width:14px;height:14px;box-shadow:0 0 6px #a9d6ff}:root{--note:clamp(20px, 3.3vw, 42px)}.power-up{font-size:var(--note);gap:.5em;padding:.45em 1em;top:20px}.power-up-icon{width:.9em;height:.9em}.toast{top:calc(var(--note) * 3.2);font-size:var(--note);white-space:normal;text-align:center;max-width:calc(100vw - 32px);padding:.35em 1em}.warning{top:calc(var(--note) * 6);font-size:var(--note);border-radius:.5em;max-width:min(1500px,100vw - 32px);padding:.45em .9em}@media (pointer:coarse){.power-up{top:70px}.toast{top:calc(70px + var(--note) * 2.8)}.warning{top:calc(70px + var(--note) * 5.6)}.biome-banner{top:58%}}.biome-banner{border-radius:36px;gap:8px;padding:28px 60px}.biome-banner b{font-size:clamp(36px,4.7vw,60px)}.biome-banner span{letter-spacing:.1em;color:var(--ink);font-size:clamp(20px,2.6vw,34px);font-weight:700}.glass-badge{padding:6px 16px;font-size:22px}.glass-dot{width:20px;height:20px}@media (pointer:coarse){.warning{top:calc(70px + var(--note) * 2.8)}.toast{top:calc(70px + var(--note) * 8)}.biome-banner{top:61%}}.power-up{top:100px;left:auto;right:24px;transform:none}.warning{top:calc(var(--note) * 4.9)}.toast{top:calc(var(--note) * 10.3)}.biome-banner{top:71%}@media (pointer:coarse){.power-up{top:70px;left:50%;right:auto;transform:translate(-50%)}.warning{top:calc(70px + var(--note) * 2.8)}.toast{top:calc(70px + var(--note) * 8)}.biome-banner{top:61%}}.scores-button{z-index:4;font:inherit;color:var(--ink-soft);background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;opacity:.8;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:700;position:fixed;bottom:14px;left:14px}.scores-button:hover,.scores-button:focus-visible{opacity:1;color:var(--ink)}.scores-button kbd{margin-left:4px}.scores-button{visibility:hidden}body:has(#worn-out.shown):not(:has(#name-entry.shown)):not(:has(#scoreboard.shown)) .scores-button{visibility:visible}@media (pointer:coarse){.scores-button kbd{display:none}.scores-button{top:96px;bottom:auto}}:is(body:has(#name-entry.shown) #worn-out,body:has(#scoreboard.shown) #worn-out){opacity:0}.score-note{color:var(--ink-soft);min-height:1em;font-size:14px}#scoreboard{z-index:8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:#fff;text-align:center;opacity:0;visibility:hidden;background:#241c3a9e;align-content:center;justify-items:center;gap:14px;padding:18px;transition:opacity .25s,visibility .25s;display:grid;position:fixed;inset:0}#name-entry{z-index:8;color:#fff;text-align:center;opacity:0;visibility:hidden;text-shadow:0 2px 10px #0000008c;background:radial-gradient(at 50% 55%,#241c3a14,#241c3a8c);grid-template-rows:auto 1fr auto;justify-items:center;padding:104px 18px 28px;transition:opacity .25s,visibility .25s;display:grid;position:fixed;inset:0}.ne-top,.ne-bottom{align-content:start;justify-items:center;gap:10px;display:grid}.ne-bottom{grid-row:3;align-content:end}#name-entry.shown,#scoreboard.shown{opacity:1;visibility:visible}.ne-prompt{margin:0;font-size:clamp(20px,3.2vw,34px);font-weight:700}.ne-prompt b{color:#ffc61a}.ne-hint,.ne-message{opacity:.85;margin:0;font-size:15px}.ne-message{color:#ffd3da;opacity:0;min-height:1.3em;font-weight:700}.ne-message.shown{opacity:1}.ne-actions{gap:10px;display:flex}.ne-actions button,.sb-close{font:inherit;cursor:pointer;color:#2b2140;background:#fff;border:2px solid #2b2140;border-radius:999px;padding:9px 22px;font-size:16px;font-weight:700;box-shadow:0 4px #2b2140}.ne-actions .ne-sign{background:#62c934}.ne-actions button:disabled{opacity:.5;cursor:default}.ne-challenge{min-height:0}.ne-input{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}.sb-card{background:var(--paper);width:min(460px,94vw);color:var(--ink);border:1px solid var(--edge);border-radius:22px;padding:22px 26px}.sb-card h2{margin:0 0 8px;font-size:26px}.sb-note{color:var(--ink-soft);min-height:0;margin:0 0 8px}.sb-rows{text-align:left;gap:4px;margin:0;padding:0;list-style:none;display:grid}.sb-row{letter-spacing:.04em;border-radius:12px;grid-template-columns:2.4em 1fr auto;gap:10px;padding:7px 12px;font-weight:700;display:grid}.sb-row:nth-child(odd){background:#0000000a}.sb-row.mine{color:#2b2140;background:#ffc61a}.sb-rank{color:var(--ink-soft)}.sb-row.mine .sb-rank{color:#2b2140}.sb-dist{font-variant-numeric:tabular-nums}.sb-gap{text-align:center;color:var(--ink-soft)}.sb-status{color:var(--ink-soft);min-height:1.2em;margin:10px 0 0}.sb-close{margin-top:14px}.powerups{z-index:4;gap:10px;display:flex;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.powerups .slot{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--edge);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 14px 8px 10px;font-size:15px;font-weight:700;display:none}.powerups .slot.shown{display:inline-flex}.powerups .slot b{text-align:right;min-width:1.2em}@media (pointer:coarse){.powerups .slot kbd{display:none}}.powerups .slot svg{flex:none;width:30px;height:30px}.powerups .slot b{font-size:18px}.powerups .slot kbd{opacity:.7;font-size:11px}svg.flying{z-index:9;pointer-events:none;filter:drop-shadow(0 3px 6px #00000059);width:30px;height:30px;position:fixed;top:0;left:0}.powerups .slot.landed{animation:.35s ease-out slot-land}@keyframes slot-land{0%{transform:scale(1)}35%{transform:scale(1.25)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.powerups .slot.landed{animation:none}}body.demo .readout,body.demo .badges,body.demo #biome-banner,body.demo #alarm,body.demo #toast,body.demo #warning,body.demo #magnet,body.demo #powerups,body.demo #scores-button,body.demo #hints,body.demo #worn-out,body.demo svg.flying,body.demo .touch,body.demo .touch-controls{display:none!important}#demo-fade{opacity:0;pointer-events:none;z-index:20;background:#000;position:fixed;inset:0}#demo-caption{z-index:12;color:#fff;pointer-events:none;text-shadow:0 3px 18px #0000008c,0 1px 3px #0009;max-width:min(720px,80vw);position:fixed;bottom:clamp(24px,8vh,90px);left:clamp(20px,5vw,72px)}#demo-caption h1{letter-spacing:-.02em;margin:0;font-size:clamp(34px,6vw,84px);line-height:1}#demo-caption p{opacity:.92;margin:10px 0 0;font-size:clamp(17px,2.2vw,30px);font-weight:600}#demo-caption.swap{animation:.9s cubic-bezier(.2,.8,.2,1) both demo-caption-in}@keyframes demo-caption-in{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}#demo-mark{z-index:12;color:#fff;letter-spacing:.02em;text-shadow:0 2px 10px #00000080;pointer-events:none;font-size:clamp(18px,2vw,26px);font-weight:800;position:fixed;top:clamp(16px,3vh,32px);left:clamp(20px,5vw,72px)}#demo-note{z-index:12;color:#fff;opacity:.8;text-shadow:0 2px 8px #0009;pointer-events:none;font-size:14px;font-weight:600;position:fixed;bottom:clamp(14px,3vh,28px);right:clamp(16px,3vw,40px)}@media (prefers-reduced-motion:reduce){#demo-caption.swap{animation:none}}
