@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 Static: 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) */
#touch{position:absolute;left:0;right:0;bottom:0;height:0;z-index:4;display:none;touch-action:none}
body.touching #touch{display:block}
@media (pointer:coarse){#touch{display:block}}
body.overlay-open #touch{display:none!important}
.tpad{position:absolute;bottom:calc(14px + var(--safe-b));display:flex;gap:12px;touch-action:none}
.tpad.l{left:max(14px,var(--safe-l))}
.tpad.r{right:max(14px,var(--safe-r));align-items:flex-end}
.tbtn{-webkit-touch-callout:none;width:clamp(64px,17vmin,92px);height:clamp(64px,17vmin,92px);border-radius:50%;border:3px solid rgba(255,255,255,.45);background:rgba(20,10,44,.28);color:rgba(255,255,255,.9);display:grid;place-items:center;font-family:var(--pixel);font-size:clamp(10px,2.6vmin,13px);touch-action:none;pointer-events:auto;-webkit-user-select:none;user-select:none}
.tbtn svg{width:46%;height:46%;fill:currentColor;pointer-events:none}
.tbtn span{pointer-events:none}
.tbtn.jump{width:clamp(76px,21vmin,108px);height:clamp(76px,21vmin,108px);border-color:rgba(61,240,255,.8)}
.tbtn.attack{border-color:rgba(255,229,102,.8);margin-bottom:28px}
.tbtn.on{background:rgba(61,240,255,.38);border-color:#fff}
.tpad.l .tbtn{border-radius:18px}

/* 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: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}
.phone{width:64px;height:40px;margin:0 auto .6rem;border:3px solid #fff;border-radius:8px;position:relative}
.phone::after{content:"";position:absolute;right:4px;top:50%;width:4px;height:12px;margin-top:-6px;border-radius:2px;background:#fff}
@media (prefers-reduced-motion:no-preference){.phone{animation:tilt 2.4s ease-in-out infinite}}
@keyframes tilt{0%,30%{transform:rotate(-90deg)}60%,100%{transform:rotate(0)}}
.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 */
.fitbtn{position:fixed;left:0;top:0;z-index:3000;transform-origin:0 0;min-width:148px;min-height:52px;padding:0 18px;border:3px solid #fff;border-radius:12px;background:#ffe566;color:#1b0d33;font:700 17px/1 Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;box-shadow:3px 3px 0 #4a2c12;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.fitbtn:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
.fittip{position:fixed;left:0;top:0;z-index:3000;transform-origin:0 0;max-width:260px;padding:10px 14px;border:2px solid var(--cyan);border-radius:10px;background:rgba(10,4,22,.94);color:#fff;font:600 16px/1.3 Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;pointer-events:none}
