/* ============================================================
   LEVEL UP — shared arcade theme
   Unlocked brand: navy canvas, sand text, coral = the one loud
   accent, teal-glow secondary, gold only for earned things.
   Press Start 2P is inlined below (latin subset, woff2 data URI)
   so levels render identically on any host, no CDN needed.
   Pixel font is decoration only — body copy stays Inter.
   ============================================================ */
@font-face{
  font-family:'Press Start 2P';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(data:font/woff2;base64,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) format('woff2');
}

:root{
  --navy:#1A2332; --navy-deep:#0F1722; --sand:#F7F2E8; --cream:#EFE6D2;
  --peach:#F4B58A; --coral:#FF6B6B; --teal-glow:#3AD6B4; --gold:#F5A623;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
  background:var(--navy-deep);
  display:flex;align-items:center;justify-content:center;
  font-family:'Inter',system-ui,-apple-system,sans-serif;color:var(--sand);
  overflow:hidden;
  overscroll-behavior:none;
  -webkit-tap-highlight-color:transparent;
}

/* ————— CRT cabinet frame ————— */
#cabinet{
  position:relative;isolation:isolate;
  border-radius:18px;
  background:radial-gradient(ellipse at center,#14242f 0%,#0e1a23 70%,#08121a 100%);
  padding:clamp(14px,2.5vmin,30px);
  box-shadow:0 0 60px rgba(0,0,0,.6), 0 0 24px rgba(255,107,107,.06);
}
#stage{
  position:relative;
  width:min(92vw, calc(88vh * 16 / 9));
  aspect-ratio:16/9;
  background:#0F1722;
  border-radius:8px;
  overflow:hidden;
  touch-action:none;
}
canvas#game{
  position:absolute;inset:0;width:100%;height:100%;
  image-rendering:pixelated;
  display:block;
}
/* CRT overlays — decoration only, never over the dialogue text */
.vignette{position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 58%,rgba(0,0,0,.45) 100%)}
.scanlines{position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:multiply;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.16) 0,rgba(0,0,0,.16) 1px,transparent 1px,transparent 3px)}
.rgbstripes{position:absolute;inset:0;z-index:3;pointer-events:none;
  background:repeating-linear-gradient(90deg,rgba(255,0,0,.035) 0,rgba(255,0,0,.035) 1px,rgba(0,255,0,.035) 1px,rgba(0,255,0,.035) 2px,rgba(0,0,255,.035) 2px,rgba(0,0,255,.035) 3px)}
.scanbeam{position:absolute;left:0;right:0;top:0;height:60px;z-index:4;pointer-events:none;
  background:linear-gradient(to bottom,transparent,rgba(247,242,232,.045),transparent);
  animation:crtScan 7s linear infinite}
@keyframes crtScan{0%{transform:translateY(-80px)}100%{transform:translateY(calc(88vh + 80px))}}

/* ————— Title screen ————— */
#title{
  position:absolute;inset:0;z-index:6;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
  background:radial-gradient(ellipse at center,#16202e 0%,#0F1722 75%);
  cursor:pointer;
}
#title .marquee{
  font-family:'Press Start 2P',monospace;
  font-size:clamp(20px,4vw,40px);color:var(--sand);
  letter-spacing:.12em;text-align:center;line-height:1.8;
}
#title .marquee .accent{color:var(--coral)}
#title .rule{width:min(420px,70%);height:6px;
  background:repeating-linear-gradient(90deg,var(--coral) 0,var(--coral) 10px,transparent 10px,transparent 20px)}
#title .press{
  font-family:'Press Start 2P',monospace;font-size:clamp(10px,1.4vw,14px);
  color:var(--teal-glow);letter-spacing:.18em;
  animation:blinkArcade 1.1s step-end infinite;
}
#title .sub{font-size:14px;color:rgba(247,242,232,.6);letter-spacing:.02em}
@keyframes blinkArcade{0%,100%{opacity:1}50%{opacity:0}}

/* ————— Dialogue box ————— */
#dialogue{
  position:absolute;left:50%;bottom:4.5%;transform:translateX(-50%);
  width:min(640px,86%);z-index:5;
  background:rgba(15,23,34,.94);
  border:2px solid var(--sand);border-radius:6px;
  box-shadow:0 0 0 4px var(--navy-deep), 0 8px 30px rgba(0,0,0,.5);
  padding:clamp(12px,2vw,20px) clamp(14px,2.4vw,24px);
  display:none;
}
#dialogue.show{display:block}
#dlg-name{
  font-family:'Press Start 2P',monospace;font-size:9px;letter-spacing:.18em;
  color:var(--coral);text-transform:uppercase;margin-bottom:10px;
}
#dlg-text{
  font-family:'Press Start 2P',monospace;
  font-size:clamp(10px,1.5vw,14px);line-height:2;color:var(--sand);
  min-height:2em;letter-spacing:.06em;
}
#dlg-text .cursor{display:inline-block;width:.6em;height:1em;background:var(--coral);
  vertical-align:-.12em;margin-left:2px;animation:blinkArcade 1s step-end infinite}
/* ▶ continue prompt — shows once a line finishes typing; dialogue holds here
   until the reader taps/clicks/Space so nothing rushes past them */
#dlg-cont{position:absolute;right:12px;bottom:8px;z-index:2;
  font-family:'Press Start 2P',monospace;font-size:9px;color:var(--coral);
  display:none;animation:blinkArcade 1s step-end infinite;pointer-events:none}
#dlg-cont.show{display:block}
#choices{display:none;gap:14px;margin-top:16px;flex-wrap:wrap}
#choices.show{display:flex}
.choice{
  flex:1;min-width:180px;cursor:pointer;
  font-family:'Press Start 2P',monospace;font-size:clamp(10px,1.3vw,13px);
  letter-spacing:.14em;border-radius:6px;padding:14px 10px 12px;
  border:2px solid transparent;transition:transform .12s ease,box-shadow .12s ease;
  text-align:center;
}
.choice small{
  display:block;font-family:'Inter',system-ui,sans-serif;font-size:11px;letter-spacing:.02em;
  margin-top:8px;opacity:.75;text-transform:none;font-weight:500;
}
.choice:hover{transform:translateY(-2px)}
.choice:focus-visible{outline:2px solid var(--coral);outline-offset:3px}

/* ————— control hint ————— */
#hint{
  position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:5;
  font-family:'Press Start 2P',monospace;font-size:9px;letter-spacing:.14em;
  color:rgba(247,242,232,.75);background:rgba(15,23,34,.7);
  border:1px solid rgba(247,242,232,.2);border-radius:6px;padding:9px 14px;
  display:none;white-space:nowrap;
}
#hint.show{display:block}

/* ————— Endings ————— */
.ending{
  position:absolute;inset:0;z-index:6;display:none;
  flex-direction:column;align-items:center;justify-content:center;gap:22px;
  text-align:center;
}
.ending.show{display:flex}
.btnrow{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
.ending p{font-size:15px;color:rgba(247,242,232,.72);max-width:46ch;line-height:1.6}
.ending .again{
  margin-top:6px;cursor:pointer;
  font-family:'Press Start 2P',monospace;font-size:11px;letter-spacing:.14em;
  color:var(--navy-deep);background:var(--coral);border:none;border-radius:6px;
  padding:14px 22px;box-shadow:0 0 24px rgba(255,107,107,.45);
}
.ending .again:hover{background:#ff8383}
.again.ghost{
  background:transparent;color:var(--coral);
  border:2px solid rgba(255,107,107,.55);box-shadow:none;
}
.again.ghost:hover{background:rgba(255,107,107,.12)}
#levelup{background:radial-gradient(ellipse at center,rgba(26,35,50,.55) 0%,rgba(15,23,34,.9) 100%)}
#levelup h1{
  font-family:'Press Start 2P',monospace;font-size:clamp(24px,4.5vw,44px);
  color:var(--gold);letter-spacing:.12em;
  animation:popIn .5s cubic-bezier(.2,1.6,.4,1) both;
}
#levelup .again{background:var(--gold);box-shadow:0 0 24px rgba(245,166,35,.45)}
#levelup .again.ghost{
  background:transparent;color:var(--coral);
  border:2px solid rgba(255,107,107,.55);box-shadow:none;
}
#levelup .again.ghost:hover{background:rgba(255,107,107,.12)}
#gameover h1{
  font-family:'Press Start 2P',monospace;font-size:clamp(22px,3.8vw,38px);
  color:var(--coral);letter-spacing:.12em;
  animation:popIn .8s ease-out both;
}
@keyframes popIn{0%{transform:scale(.4);opacity:0}100%{transform:scale(1);opacity:1}}

/* soft CTA — one quiet line after LEVEL UP, never a gate */
.cta-soft{
  font-family:'Inter',system-ui,sans-serif;font-size:13px;
  color:rgba(247,242,232,.6);text-decoration:none;margin-top:2px;
}
.cta-soft:hover{color:var(--coral)}

/* ————— chrome buttons ————— */
#mute{
  position:absolute;top:10px;right:12px;z-index:7;cursor:pointer;
  background:rgba(15,23,34,.7);border:1px solid rgba(247,242,232,.25);
  color:var(--sand);border-radius:6px;font-family:'Press Start 2P',monospace;
  font-size:8px;letter-spacing:.14em;padding:8px 10px;
}
#mute:hover{color:var(--coral);border-color:rgba(255,107,107,.4)}
#backmap{
  position:absolute;top:10px;left:12px;z-index:7;cursor:pointer;
  background:rgba(15,23,34,.7);border:1px solid rgba(247,242,232,.25);
  color:var(--sand);border-radius:6px;font-family:'Press Start 2P',monospace;
  font-size:8px;letter-spacing:.14em;padding:8px 10px;text-decoration:none;
}
#backmap:hover{color:var(--coral);border-color:rgba(255,107,107,.4)}

/* ————— touch controls (shown only on coarse pointers) ————— */
#touch-controls{
  position:absolute;left:0;right:0;bottom:0;z-index:5;
  display:none;justify-content:space-between;align-items:flex-end;
  padding:0 14px 14px;pointer-events:none;
}
body.touch #touch-controls{display:flex}
.tc-cluster{display:flex;gap:12px;pointer-events:none}
.tc-btn{
  pointer-events:auto;width:56px;height:56px;border-radius:12px;
  border:2px solid rgba(247,242,232,.35);background:rgba(15,23,34,.55);
  color:var(--sand);font-family:'Press Start 2P',monospace;font-size:16px;
  touch-action:none;user-select:none;-webkit-user-select:none;
  -webkit-tap-highlight-color:transparent;cursor:pointer;
}
.tc-btn.held{background:rgba(255,107,107,.25);border-color:rgba(255,107,107,.6);color:var(--coral)}
.tc-a{
  border-radius:50%;width:64px;height:64px;font-size:18px;
  border-color:rgba(58,214,180,.45);color:var(--teal-glow);
}
.tc-a.held{background:rgba(58,214,180,.22);border-color:rgba(58,214,180,.8);color:var(--teal-glow)}

@media (prefers-reduced-motion: reduce){
  .scanbeam,#title .press,#dlg-text .cursor,#dlg-cont{animation:none}
}
