@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/press-start-2p-latin-400.woff2") format("woff2")}
@font-face{font-family:"VT323";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/vt323-latin-400.woff2") format("woff2")}
/* Squipy Run: the game draws itself on a canvas. No CSS filters anywhere (WebKit stability). */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#05030c;--text:#f0e6ff;--muted:rgba(232,210,255,.78);--gold:#ffe566;--gold-frame:#c9a227;--gold-lo:#4a2c12;--pink:#ff4ecd;--cyan:#3df0ff;
  --pixel:"Press Start 2P",ui-monospace,monospace;--display:"VT323","Courier New",monospace;--ui:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--vh:calc(100vh - var(--rg-bar))}
@supports (height:100dvh){:root{--vh:calc(100dvh - var(--rg-bar))}}
html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation}
body{background:var(--bg);color:var(--text);font-family:var(--display);font-size:20px;overflow:hidden;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
button{font:inherit;color:inherit}
[hidden]{display:none!important}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
#app{position:relative;height:var(--vh);min-height:240px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#stage{position:absolute;inset:0;overflow:hidden;background:#05030c;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#game{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}
#game:focus-visible{box-shadow:inset 0 0 0 3px var(--cyan)}

/* Corner buttons */
.corner{position:absolute;top:8px;right:max(8px,var(--safe-r));display:flex;gap:8px;z-index:5}
.cbtn{min-width:44px;height:44px;padding:0 10px;border:2px solid rgba(255,255,255,.55);border-radius:10px;background:rgba(10,4,22,.7);font-family:var(--ui);font-size:18px;line-height:1;cursor:pointer}
.cbtn:hover{border-color:var(--cyan)}
.cbtn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* Touch controls (multitouch, pointer events) */

/* Overlays */
.overlay{touch-action:pan-x pan-y;position:absolute;inset:0;z-index:10;display:grid;place-items:center;padding:12px max(12px,var(--safe-r)) calc(12px + var(--safe-b)) max(12px,var(--safe-l));background:rgba(5,3,12,.62);overflow:auto}
.panel{width:min(560px,100%);padding:clamp(14px,3vw,24px);border:3px solid var(--gold-frame);box-shadow:4px 4px 0 var(--gold-lo);background:linear-gradient(180deg,#1b0d33,#0d0619);text-align:center}
.panel h2{font-family:var(--pixel);font-size:clamp(14px,3.6vw,22px);line-height:1.35;color:var(--gold);text-shadow:2px 2px 0 #4a2c12;margin-bottom:.5rem}
.panel h2.logo{font-size:clamp(18px,5vw,30px);color:#fff;text-shadow:0 0 0 transparent,3px 3px 0 #5b21b6}
.panel h2.logo b{color:var(--cyan);font-weight:400}
.tag{font-family:var(--pixel);font-size:10px;letter-spacing:.12em;color:var(--pink);margin-bottom:.6rem}
.sub{color:var(--muted);font-size:clamp(18px,3.8vw,22px);line-height:1.15;margin:.3rem 0 .8rem}
.small{font-size:17px}
.actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:.6rem}
.btn{min-height:44px;padding:.5rem 1.1rem;font-family:var(--pixel);font-size:12px;border:3px solid var(--gold-frame);background:#2a1656;box-shadow:3px 3px 0 var(--gold-lo);cursor:pointer;text-decoration:none;color:var(--text);display:inline-flex;align-items:center}
.btn.primary{background:var(--gold);color:#1b0d33;border-color:#fff2a8}
.btn.newest{border-color:var(--cyan);color:#bff8ff}
.btn:hover{border-color:var(--cyan)}
.btn:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
.keys{display:grid;grid-template-columns:auto 1fr;gap:.25rem .8rem;text-align:left;margin:.6rem auto 0;max-width:420px;font-size:19px;color:var(--muted)}
.keys dt{color:var(--text)}
kbd{font-family:var(--ui);font-size:13px;padding:1px 6px;border:1px solid rgba(255,255,255,.5);border-radius:4px;background:rgba(255,255,255,.08)}
.stats{display:grid;grid-template-columns:auto auto;gap:.2rem 1.2rem;justify-content:center;margin:.4rem 0;font-size:22px}
.stats dt{color:var(--muted);text-align:right}
.stats dd{color:var(--gold);text-align:left}
.best{font-family:var(--pixel);font-size:10px;color:var(--cyan);margin-top:.4rem}
.touch-only{display:none}
@media (pointer:coarse){.touch-only{display:block}.key-only{display:none}}

/* Fit to screen: placed on the visual viewport by game.js (translate + 1/scale), so it stays the same visible size when zoomed */

/* HUD: wraps to more rows before it can reach the pause/sound buttons (corner is 2 x 44px + gap) */
.hud{position:absolute;top:8px;left:max(8px,var(--safe-l));right:calc(max(8px,var(--safe-r)) + 108px);z-index:4;display:flex;flex-wrap:wrap;gap:6px;pointer-events:none}
.hcell{display:flex;flex-direction:column;justify-content:center;min-height:38px;padding:3px 8px;border:2px solid rgba(255,255,255,.35);border-radius:8px;background:rgba(10,4,22,.6);line-height:1}
.hcell small{font-family:var(--pixel);font-size:7px;letter-spacing:.08em;color:var(--muted)}
.hcell b{font-family:var(--pixel);font-weight:400;font-size:clamp(10px,2.6vmin,13px);color:#fff;margin-top:4px}
.hcell.spark b{color:var(--gold)}
.cbar{display:block;width:64px;height:8px;margin-top:5px;border-radius:4px;background:rgba(255,255,255,.15);overflow:hidden}
.cbar i{display:block;height:100%;width:0;background:var(--cyan);transform-origin:0 50%}
.hcell.charge.full{border-color:var(--cyan)}
.hcell.pw{border-color:var(--pink)}
.hcell.pw .cbar i{background:var(--pink)}
.surge{position:absolute;z-index:5;right:max(14px,var(--safe-r));bottom:calc(16px + var(--safe-b));min-width:96px;min-height:56px;padding:0 14px;border:3px solid #fff;border-radius:14px;background:#3df0ff;color:#1b0d33;font-family:var(--pixel);font-size:12px;box-shadow:3px 3px 0 #5b21b6;cursor:pointer;touch-action:manipulation}
.surge:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
@media (prefers-reduced-motion:no-preference){.surge{animation:pulse 1s ease-in-out infinite}}
@media (prefers-reduced-motion:reduce){.surge{animation:pulse 2.4s ease-in-out infinite}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.best.new{color:var(--gold)}
@media (max-height:420px){.panel{padding:10px 14px}.panel .sub{font-size:17px;margin:.2rem 0 .4rem}.keys{font-size:16px}.panel h2.logo{font-size:20px}}
