:root{
  --bg:#141a24; --panel:#161b24; --text:#ffffff; --g1:#006341; --g2:#41b880; --blue:#2e67b1;
  --red:#ee4455; --lime:#c5e86c; --orange:#fab780;
  --u:2px;  /* one game art pixel in CSS px; set from the canvas scale */
  --notch:polygon(var(--u) 0,calc(100% - var(--u)) 0,calc(100% - var(--u)) var(--u),100% var(--u),100% calc(100% - var(--u)),calc(100% - var(--u)) calc(100% - var(--u)),calc(100% - var(--u)) 100%,var(--u) 100%,var(--u) calc(100% - var(--u)),0 calc(100% - var(--u)),0 var(--u),var(--u) var(--u));
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--bg);color:var(--text);overflow:hidden;overscroll-behavior:none;
  touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;
  font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
body{background:radial-gradient(ellipse at 50% 40%,#22304a 0,#141a24 70%)}
canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Layout: the canvas at a whole-number scale, centred ---------- */
#wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
#cab{position:relative;display:flex;flex-direction:column;align-items:center}
#frame{position:relative;overflow:hidden;width:calc(var(--u) * 216);height:calc(var(--u) * 384)}
#game{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
#marquee{display:none}
/* Desktop: an arcade-cabinet bezel around the screen, all CSS, no images. */
.cabinet #cab{padding:14px 18px 22px;border-radius:14px;
  background:linear-gradient(#2b3444,#1c222d);
  box-shadow:0 0 0 2px #0b0e13,0 0 0 5px #3b4658,0 18px 50px rgba(0,0,0,.55),inset 0 2px 0 #4a576d}
.cabinet #marquee{display:flex;justify-content:center;align-items:center;height:30px;margin-bottom:10px;width:100%;
  background:#0e1a14;box-shadow:inset 0 0 0 2px #006341,0 0 16px rgba(65,184,128,.35)}
.cabinet #frame{box-shadow:0 0 0 3px #0b0e13,0 0 0 6px #006341,0 0 24px rgba(65,184,128,.25)}

/* ---------- Pixel frames ---------- */
.panel{background:rgba(22,27,36,.94);clip-path:var(--notch);
  box-shadow:inset 0 0 0 var(--u) var(--g2),inset 0 0 0 calc(var(--u) * 2) #0b0e13;
  padding:calc(var(--u) * 7) calc(var(--u) * 7);width:calc(var(--u) * 200);max-height:calc(var(--u) * 376);overflow:auto;
  display:flex;flex-direction:column;align-items:center;text-align:center}
.btn{color:#fff;cursor:pointer;border:0;clip-path:var(--notch);background:var(--g1);
  box-shadow:inset 0 0 0 var(--u) var(--g2),inset 0 calc(var(--u) * -2) 0 #00402a;
  padding:calc(var(--u) * 4) calc(var(--u) * 5) calc(var(--u) * 5);display:inline-flex;align-items:center;justify-content:center;
  text-decoration:none;min-height:calc(var(--u) * 18)}
.btn:hover{background:#0a7a52}
.btn:active{transform:translateY(var(--u));box-shadow:inset 0 0 0 var(--u) var(--g2)}
.btn:focus-visible{outline:none;box-shadow:inset 0 0 0 var(--u) var(--lime),inset 0 calc(var(--u) * -2) 0 #00402a}
.btn.alt{background:#2c323c;box-shadow:inset 0 0 0 var(--u) #7f8894,inset 0 calc(var(--u) * -2) 0 #1a1e24}
.btn.alt:hover{background:#3a414c}
.btn.alt:focus-visible{box-shadow:inset 0 0 0 var(--u) var(--lime),inset 0 calc(var(--u) * -2) 0 #1a1e24}
.btn.cta{background:#b8551f;box-shadow:inset 0 0 0 var(--u) var(--orange),inset 0 calc(var(--u) * -2) 0 #6e3212;
  width:100%;min-height:calc(var(--u) * 22);margin-top:calc(var(--u) * 5)}
.btn.cta:hover{background:#cf6428}
.btn-col{display:flex;flex-direction:column;gap:calc(var(--u) * 3);width:calc(var(--u) * 150);margin-top:calc(var(--u) * 5)}
.btn-row{display:flex;gap:calc(var(--u) * 3);flex-wrap:wrap;justify-content:center;margin-top:calc(var(--u) * 4)}
.btn-row.small .btn{min-height:calc(var(--u) * 15);padding:calc(var(--u) * 3) calc(var(--u) * 4)}
.center{text-align:center;align-self:center}
.stack{display:flex;flex-direction:column;align-items:center;gap:calc(var(--u) * 3);margin-top:calc(var(--u) * 3)}
.lines{display:flex;flex-direction:column;align-items:center;gap:calc(var(--u) * 2);margin-top:calc(var(--u) * 4)}
.lines[hidden]{display:none}
.gap1{margin-top:calc(var(--u) * 2)}
.gap2{margin-top:calc(var(--u) * 4)}
.logo-chip{display:inline-flex;background:#fff;clip-path:var(--notch);padding:calc(var(--u) * 2) calc(var(--u) * 3)}
.logo-chip img{height:calc(var(--u) * 10);display:block}
canvas.sprite{margin-top:calc(var(--u) * 3)}
.shop-link{margin-top:calc(var(--u) * 5);text-decoration:none;padding:calc(var(--u) * 2)}
.shop-link:focus-visible{outline:var(--u) solid var(--lime)}

/* ---------- HUD buttons (over the canvas HUD, top right) ---------- */
#hudbtns{position:absolute;top:calc(var(--u) * 24);right:calc(var(--u) * 4);display:flex;gap:calc(var(--u) * 3);z-index:5}
.hbtn{width:calc(var(--u) * 17);height:calc(var(--u) * 17);display:grid;place-items:center;border:0;cursor:pointer;clip-path:var(--notch);
  background:rgba(20,24,30,.9);box-shadow:inset 0 0 0 var(--u) #7f8894}
.hbtn:hover,.hbtn:focus-visible{outline:none;box-shadow:inset 0 0 0 var(--u) var(--lime)}
.hbtn[hidden]{display:none}

/* ---------- Screens ---------- */
.screen{position:absolute;inset:0;display:none;align-items:center;justify-content:center;z-index:4}
.screen.show{display:flex}
.screen.dim{background:rgba(8,11,16,.55)}
.screen.show .panel{animation:pop .24s steps(4) both}
@keyframes pop{from{transform:translateY(calc(var(--u) * 6))}to{transform:none}}
@media (prefers-reduced-motion:reduce){.screen.show .panel{animation:none}}
.reduce .screen.show .panel{animation:none}
.howto{flex-direction:column;justify-content:space-between;padding:calc(var(--u) * 52) 0 calc(var(--u) * 52);pointer-events:none}
.howto .panel{pointer-events:auto;padding:calc(var(--u) * 4) calc(var(--u) * 5)}
.howto .panel.bottom .btn-row{margin-top:0}
.over-grid{display:flex;gap:calc(var(--u) * 6);align-items:center;justify-content:center;margin-top:calc(var(--u) * 4);text-align:left}
.over-grid > div{display:flex;flex-direction:column;align-items:flex-start}
.over-grid canvas.sprite{margin-top:0}
.reveal{display:flex;flex-direction:column;align-items:center;margin-top:calc(var(--u) * 5)}
#reveal{image-rendering:pixelated;width:calc(var(--u) * 160);height:calc(var(--u) * 112);background:#fff;clip-path:var(--notch)}
.reveal .lines{margin-top:calc(var(--u) * 3)}
.dimtext{opacity:.85}
#toast{position:absolute;left:50%;bottom:calc(var(--u) * 58);transform:translate(-50%,var(--u));opacity:0;
  padding:calc(var(--u) * 3) calc(var(--u) * 4);background:var(--panel);clip-path:var(--notch);
  box-shadow:inset 0 0 0 var(--u) var(--lime);transition:opacity .2s,transform .2s;pointer-events:none;z-index:9;
  display:flex;flex-direction:column;align-items:center;gap:calc(var(--u) * 2)}
#toast.show{opacity:1;transform:translate(-50%,0)}
.noscript{padding:24px;color:#fff}
