:root{--accent:#ff5a36;--accent-deep:#d93a1a;--secondary:#14a39a;--secondary-deep:#0b7a73;--coin:#ffc23d;--text:#1f1640;--text-on-dark:#fff5e1;--background:#fff5e1;--surface:#fff;--ink:#1f1640;--hud-glass:#1f16408c;--title-font:"Baloo 2", ui-rounded, system-ui, sans-serif;--text-font:ui-rounded, "SF Pro Rounded", -apple-system, system-ui, sans-serif;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--hud-inset:clamp(12px, 1.6vmin + 8px, 36px);--hud-frame-max:1920px;--icon-size:clamp(48px, 2vmin + 40px, 60px);--score-size:clamp(28px, 2.4vmin + 18px, 52px);--coin-size:clamp(16px, .8vmin + 12px, 22px);--pill-size:clamp(14px, .6vmin + 12px, 20px);--title-size:clamp(44px, 5vmin + 24px, 104px);--subtitle-size:clamp(16px, .8vmin + 13px, 24px);--h2-size:clamp(26px, 1.2vmin + 20px, 36px);--button-h:clamp(52px, 1.2vmin + 46px, 64px);--button-font:clamp(20px, .6vmin + 17px, 24px);--card-w:480px;--card-pad:clamp(18px, 1.4vmin + 12px, 32px)}*{box-sizing:border-box}html,body{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%;font-family:var(--text-font);color:var(--text-on-dark);background:#1f1640;margin:0;overflow:hidden}#stage{width:100%;height:100vh;background:#000;height:100dvh;position:fixed;inset:0;overflow:hidden}#game{width:100%;height:100%;transition:filter .25s;display:block;position:absolute;inset:0}#game.blurred{filter:blur(8px)brightness(.7)}#ui{pointer-events:none;position:absolute;inset:0}#ui>*{pointer-events:none}#ui button,#ui .tappable{pointer-events:auto}@media (hover:hover) and (pointer:fine){.only-touch{display:none!important}}@media not ((hover:hover) and (pointer:fine)){.only-keys{display:none!important}}kbd{background:var(--surface);min-width:2em;height:2em;color:var(--ink);box-shadow:0 3px 0 var(--ink);border:2px solid var(--ink);font:800 .85em/1 var(--title-font);border-radius:8px;place-items:center;padding:0 .5em;display:inline-grid}.hud{top:0;bottom:0;left:max(0px, calc((100% - var(--hud-frame-max)) / 2));right:max(0px, calc((100% - var(--hud-frame-max)) / 2));opacity:0;transition:opacity .2s;position:absolute}.hud.visible{opacity:1}.icon-button{width:var(--icon-size);height:var(--icon-size);border-radius:var(--radius-md);background:var(--hud-glass);color:var(--text-on-dark);font:800 calc(var(--icon-size) * .42)/1 var(--title-font);cursor:pointer;border:0;place-items:center;display:grid}.icon-button svg{pointer-events:none;width:58%;height:58%}.icon-button:active{transform:translateY(2px)}.icon-button:focus-visible,.button:focus-visible{outline:3px solid var(--coin);outline-offset:3px}.hud-left,.hud-right{top:calc(var(--hud-inset) + var(--safe-top));flex-direction:column;max-width:min(40%,320px);display:flex;position:absolute}.hud-left{left:calc(var(--hud-inset) + var(--safe-left));align-items:flex-start;gap:10px}.hud-right{right:calc(var(--hud-inset) + var(--safe-right));align-items:flex-end;gap:6px}.hud-buttons{gap:10px;display:flex}.score{font:800 var(--score-size)/1 var(--title-font);font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 2px 0 var(--ink), 0 0 12px #1f164080;letter-spacing:.5px}.coins{background:var(--hud-glass);font:700 var(--coin-size)/1 var(--text-font);font-variant-numeric:tabular-nums;color:var(--coin);border-radius:999px;align-items:center;gap:6px;padding:4px 12px 4px 6px;display:inline-flex}.coins:before{content:"";background:radial-gradient(circle at 35% 35%, #ffe08a, var(--coin) 60%, #e09a10);border-radius:50%;width:1em;height:1em}.powerups{flex-direction:column;gap:6px;display:flex}.powerup{background:var(--hud-glass);min-width:clamp(120px,10vmin + 80px,200px);font:700 clamp(13px, .4vmin + 11px, 16px)/1.2 var(--text-font);color:var(--text-on-dark);border-radius:999px;padding:6px 10px}.powerup .bar{background:#ffffff40;border-radius:2px;height:4px;margin-top:4px;overflow:hidden}.powerup .bar>i{background:var(--coin);transform-origin:0;height:100%;display:block}.chaser-pill{top:calc(var(--hud-inset) + var(--safe-top) + var(--icon-size) + 20px);background:var(--accent);color:#fff;font:800 var(--pill-size)/1 var(--title-font);opacity:0;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;transition:opacity .2s,transform .2s;display:inline-flex;position:absolute;left:50%;transform:translate(-50%,-8px)}.chaser-pill.visible{opacity:1;transform:translate(-50%)}.dots{gap:4px;display:inline-flex}.dots i{background:#ffffff59;border-radius:50%;width:9px;height:9px}.dots i.on{background:#fff}.vignette{opacity:0;transition:opacity .3s;position:absolute;inset:0;box-shadow:inset 0 0 clamp(70px,10vmin,180px) clamp(24px,3vmin,64px) #d93a1a8c}.vignette.visible{opacity:1;animation:1s ease-in-out infinite alternate pulse}@keyframes pulse{0%{opacity:.6}to{opacity:1}}.toast{left:50%;bottom:calc(22% + var(--safe-bottom));background:var(--hud-glass);color:var(--text-on-dark);font:800 clamp(18px, .8vmin + 14px, 26px)/1.2 var(--title-font);white-space:nowrap;border-radius:999px;padding:8px 18px;animation:1.4s forwards toast;position:absolute;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%,12px)}15%{opacity:1;transform:translate(-50%)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-10px)}}.screen{padding:calc(24px + var(--safe-top)) calc(24px + var(--safe-right)) calc(32px + var(--safe-bottom)) calc(24px + var(--safe-left));text-align:center;flex-direction:column;justify-content:flex-end;align-items:center;display:none;position:absolute;inset:0}.screen.visible{display:flex}.screen.scrim{background:#1f16408c}.screen.tappable{pointer-events:auto}.screen.ready{cursor:pointer}.home-corner{top:calc(var(--hud-inset) + var(--safe-top));position:absolute}.home-corner.left{left:calc(var(--hud-inset) + var(--safe-left))}.home-corner.right{right:calc(var(--hud-inset) + var(--safe-right))}.credits-body{overscroll-behavior:contain;touch-action:pan-y;-webkit-user-select:text;user-select:text;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;max-height:min(50vh,420px);font:500 13px/1.5 var(--text-font);overflow-y:auto}.title{font:800 var(--title-size)/1 var(--title-font);color:#fff;text-shadow:0 4px 0 var(--accent-deep), 0 8px 24px #1f164066;letter-spacing:1px;margin:0}.subtitle{font:700 var(--subtitle-size)/1.3 var(--text-font);color:var(--text-on-dark);opacity:.9;text-shadow:0 1px 6px #1f164099;margin:10px 0 0}.screen-top{flex:none;margin-top:8vh}.screen-spacer{flex:auto}.screen-spacer.wide-only{display:none}.card{width:min(100%, var(--card-w));background:var(--surface);color:var(--text);border-radius:var(--radius-xl);border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink);padding:var(--card-pad)}.card h2{font:800 var(--h2-size)/1.1 var(--title-font);margin:0 0 12px}.card-hint{font:600 14px/1.4 var(--text-font);opacity:.7;margin:14px 0 0}.card-credits{font:600 12px/1.4 var(--text-font);color:inherit;opacity:.6;margin-top:10px;display:block}.card-hint kbd{box-shadow:0 2px 0 var(--ink);font-size:12px}.stats{grid-template-columns:1fr 1fr 1fr;gap:8px;margin:8px 0 18px;display:grid}.stat b{font:800 clamp(24px, 1vmin + 18px, 32px)/1 var(--title-font);font-variant-numeric:tabular-nums;display:block}.stat span{font:600 12px/1.4 var(--text-font);opacity:.7;text-transform:uppercase}.button{width:100%;height:var(--button-h);border-radius:var(--radius-lg);background:var(--accent);color:#fff;box-shadow:0 5px 0 var(--accent-deep);font:800 var(--button-font)/1 var(--title-font);cursor:pointer;border:0;margin-top:10px;transition:transform 50ms,box-shadow 50ms,filter .1s;display:block}.button:active{box-shadow:0 2px 0 var(--accent-deep);transform:translateY(3px)}.button.secondary{background:var(--secondary);box-shadow:0 5px 0 var(--secondary-deep)}.button.secondary:active{box-shadow:0 2px 0 var(--secondary-deep)}.button.ghost{color:var(--text);box-shadow:none;background:0 0;height:44px;font-size:17px}.button:disabled{opacity:.45;cursor:default}@media (hover:hover){.button:not(:disabled):hover{filter:brightness(1.06)}.button.ghost:hover{filter:none;text-decoration:underline}}.timer{background:#1f16401f;border-radius:4px;height:8px;margin:4px 0 14px;overflow:hidden}.timer>i{background:var(--accent);transform-origin:0;height:100%;display:block}.ready-panel{flex-direction:column;align-items:center;gap:14px;margin-bottom:10vh;display:flex}.tap-hint{font:800 clamp(22px, 1vmin + 18px, 32px)/1 var(--title-font);color:#fff;text-shadow:0 2px 0 var(--ink);animation:1.2s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}.controls-hint{font:600 13px/1.4 var(--text-font);opacity:.8}.key-guide{border-radius:var(--radius-lg);background:var(--hud-glass);font:700 15px/1.2 var(--text-font);text-align:left;grid-template-columns:auto auto;align-items:center;gap:10px 18px;padding:18px 24px;display:grid}.key-guide .caps{justify-content:flex-end;gap:6px;display:inline-flex}.key-guide .key-note{opacity:.75;text-align:center;grid-column:1/-1;font-size:13px}@media (orientation:landscape) and (max-height:500px){:root{--hud-inset:10px;--icon-size:44px;--score-size:28px;--title-size:44px;--button-h:48px;--card-pad:16px;--h2-size:24px}.screen{padding-top:calc(12px + var(--safe-top));padding-bottom:calc(12px + var(--safe-bottom))}.screen-top{margin-top:4vh}.ready-panel{gap:8px;margin-bottom:4vh}.screen-spacer.wide-only{display:block}.card{width:min(100%,420px)}.card h2{margin-bottom:6px}.stats{margin:4px 0 8px}.chaser-pill{top:calc(var(--hud-inset) + var(--safe-top))}.ready .screen-spacer{order:2}.ready-panel{order:1;margin:3vh 0 0}.key-guide{grid-template-columns:repeat(2,auto auto);gap:6px 12px;padding:8px 14px;font-size:13px}.key-guide .key-note{display:none}}@media (min-width:768px) and (min-height:501px){.screen-top{margin-top:12vh}.ready .screen-spacer{order:2}.ready-panel{order:1;margin:3vh 0 0}.screen{padding-inline:calc(40px + var(--safe-left)) calc(40px + var(--safe-right))}}@media (min-width:1024px) and (min-height:501px){.screen-spacer.wide-only{display:block}.screen-top{margin-top:8vh}.key-guide{grid-template-columns:repeat(2,auto auto);column-gap:14px}}@media (min-width:1600px){:root{--card-w:520px}.key-guide{padding:22px 30px;font-size:17px}}
