/* ===================================================================
   PlayStation "Then & Now" — Boot-up Landing
   The landing dresses up as the PS5 boot-up screen — dark blue-noir
   void, diagonal light beam, drifting bokeh dust, a glowing PS portal,
   chrome-glass title, and PSN-Premium-style pill buttons.
   Game pages (.game-page) keep their own scoped dark CRT vibe lower
   in this file — see "Game pages" section.
   =================================================================== */

/* --- self-hosted fonts ---------------------------------------------- */
@font-face {
  font-family: "Audiowide";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/audiowide.woff2") format("woff2");
}
@font-face {
  font-family: "Orbitron";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../assets/fonts/orbitron-700.woff2") format("woff2");
}
@font-face {
  font-family: "Press Start 2P";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/press-start-2p.woff2") format("woff2");
}
@font-face {
  font-family: "VT323";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/vt323.woff2") format("woff2");
}

:root {
  /* Boot-screen palette — deep blue noir with a single gold accent */
  --ps-noir:  #050a14;        /* near-black, blue undertone */
  --ps-deep:  #081735;        /* mid blue (radial center) */
  --ps-blue:  #0070d1;        /* PS5 brand blue */
  --ps-cyan:  #6cd6ff;        /* electric cyan glow */
  --ps-bone:  #f1ede1;        /* warm parchment text */
  --ps-mute:  #8b95b3;        /* secondary text (cool grey) */
  --ps-gold:  #f5d142;        /* PSN-Premium gold (the EXTRA button colour) */
  --ps-warm:  #ffb86c;        /* warm rim-light, beam tint */

  /* Shape symbol colors — kept for game-page CRT scope and accents */
  --ps-tri:   #4cae4f;
  --ps-circ:  #f3635a;
  --ps-sq:    #ee5aa0;
  --ps-x:     #4cc9ff;

  --ease-pop: cubic-bezier(.2, .8, .2, 1);
  --ease-soft: cubic-bezier(.4, 0, .2, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  background: var(--ps-noir);
  color: var(--ps-bone);
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  overflow-x: hidden;
}

body.boot-page {
  font-family: "VT323", ui-monospace, "Menlo", monospace;
  font-size: 18px;
  letter-spacing: 0.01em;
  /* Multi-stop deep radial — central glow on cool noir */
  background:
    radial-gradient(ellipse at 50% 38%, rgba(0,112,209,0.22) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 100%, rgba(108, 214, 255, 0.10) 0%, transparent 40%),
    radial-gradient(ellipse at 50% 0%, #0a1a40 0%, var(--ps-noir) 70%);
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow-x: hidden;
}

/* --- cinematic light beam ------------------------------------------- */
/* Slanted gradient swath from upper-left, like a stage spot. Pulses
   gently so the page never feels static. */
.beam {
  position: fixed;
  top: -20%;
  left: -30%;
  width: 80vmin;
  height: 160vmin;
  background:
    linear-gradient(105deg,
      rgba(255, 184, 108, 0)    0%,
      rgba(255, 184, 108, 0.07) 30%,
      rgba(255, 235, 200, 0.18) 50%,
      rgba(255, 184, 108, 0.07) 70%,
      rgba(255, 184, 108, 0)    100%);
  filter: blur(40px);
  transform: rotate(-18deg);
  pointer-events: none;
  z-index: 0;
  animation: beam-breathe 9s ease-in-out infinite;
}

/* --- floating bokeh dust ------------------------------------------- */
.bokeh {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}
.bokeh i {
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--ps-bone);
  box-shadow:
    0 0 8px rgba(255, 230, 200, 0.7),
    0 0 22px rgba(108, 214, 255, 0.35);
  opacity: 0;
  animation: bokeh-drift var(--bd, 14s) var(--bdd, 0s) ease-in-out infinite;
}
.bokeh i:nth-child(1)  { top: 8%;   left: 12%; --bd: 16s; --bdd: 0s;    width: 4px; height: 4px; }
.bokeh i:nth-child(2)  { top: 22%;  left: 82%; --bd: 13s; --bdd: 1.8s;  width: 5px; height: 5px; }
.bokeh i:nth-child(3)  { top: 38%;  left: 18%; --bd: 18s; --bdd: 3.2s;  width: 8px; height: 8px; }
.bokeh i:nth-child(4)  { top: 56%;  left: 74%; --bd: 14s; --bdd: 5.6s;  width: 5px; height: 5px; }
.bokeh i:nth-child(5)  { top: 72%;  left: 28%; --bd: 17s; --bdd: 2.4s;  width: 4px; height: 4px; }
.bokeh i:nth-child(6)  { top: 88%;  left: 64%; --bd: 15s; --bdd: 6.8s;  width: 7px; height: 7px; }
.bokeh i:nth-child(7)  { top: 14%;  left: 48%; --bd: 19s; --bdd: 4.2s;  width: 3px; height: 3px; }
.bokeh i:nth-child(8)  { top: 30%;  left: 60%; --bd: 12s; --bdd: 7.6s;  width: 6px; height: 6px; }
.bokeh i:nth-child(9)  { top: 48%;  left: 8%;  --bd: 21s; --bdd: 0.6s;  width: 4px; height: 4px; }
.bokeh i:nth-child(10) { top: 62%;  left: 52%; --bd: 13s; --bdd: 8.4s;  width: 5px; height: 5px; }
.bokeh i:nth-child(11) { top: 78%;  left: 88%; --bd: 16s; --bdd: 2.0s;  width: 3px; height: 3px; }
.bokeh i:nth-child(12) { top: 94%;  left: 36%; --bd: 18s; --bdd: 5.0s;  width: 6px; height: 6px; }

/* --- subtle scanline + grain overlays ----------------------------- */
.scanlines {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9997;
  background: repeating-linear-gradient(
    0deg,
    rgba(108, 214, 255, 0.04) 0px,
    rgba(108, 214, 255, 0.04) 1px,
    transparent 1px,
    transparent 4px);
  mix-blend-mode: screen;
}
.grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  opacity: 0.10;
  /* Tiny inline noise via SVG turbulence — fixed seed for stability */
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' seed='7'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
}

/* --- column shell --------------------------------------------------- */
.boot-page-shell {
  position: relative;
  z-index: 2;
  flex: 1 1 auto;
  width: 100%;
  max-width: 460px;
  margin: 0 auto;
  padding: clamp(16px, 4vw, 28px) 18px calc(28px + env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  gap: 18px;
}

/* --- top status bar ------------------------------------------------- */
.boot-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding-top: env(safe-area-inset-top);
}
.boot-tag, .boot-meta {
  font-family: "Press Start 2P", monospace;
  font-size: 8px;
  letter-spacing: 0.18em;
  color: var(--ps-cyan);
  text-transform: uppercase;
  opacity: 0.85;
}
.boot-tag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.boot-tag svg { opacity: 0.9; }
.boot-meta { color: var(--ps-mute); }

/* --- main column ---------------------------------------------------- */
.boot-main {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  text-align: center;
  padding-top: 6px;
}

/* --- glowing PS portal (small crest above the title) --------------- */
.boot-portal {
  position: relative;
  width: 78px;
  height: 78px;
  display: grid;
  place-items: center;
  margin-bottom: 4px;
}
.boot-portal-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1.5px solid var(--ps-bone);
  box-shadow:
    0 0 0 4px rgba(108, 214, 255, 0.08),
    0 0 24px rgba(108, 214, 255, 0.55),
    inset 0 0 18px rgba(108, 214, 255, 0.25);
  animation: portal-pulse 3.4s ease-in-out infinite;
}
.boot-portal-glow {
  position: absolute;
  inset: -40%;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(108, 214, 255, 0.28) 0%, transparent 65%);
  filter: blur(8px);
  pointer-events: none;
}
.boot-portal-mark {
  position: relative;
  color: var(--ps-bone);
  display: grid;
  place-items: center;
  filter: drop-shadow(0 0 6px rgba(108, 214, 255, 0.6));
}

/* --- hero title ----------------------------------------------------- */
.hero-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  font-family: "Audiowide", "Orbitron", system-ui, sans-serif;
  line-height: 0.94;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.hero-title-row {
  display: inline-block;
  color: var(--ps-bone);
  /* Chrome gradient text fill */
  background:
    linear-gradient(180deg,
      #ffffff 0%,
      #d2e8ff 40%,
      #6cc7ff 60%,
      #2a78c9 100%);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow:
    0 0 24px rgba(108, 214, 255, 0.35),
    0 2px 0 rgba(0, 0, 0, 0.35);
  opacity: 0;
  translate: 0 12px;
  animation: hero-rise .9s var(--ease-pop) forwards;
  animation-delay: calc(var(--i, 0) * 140ms + 180ms);
}
.hero-title-row[data-stagger="0"] { --i: 0; font-size: clamp(22px, 6.4vw, 32px); letter-spacing: 0.28em; }
.hero-title-row[data-stagger="1"] { --i: 1; }
.hero-title-row[data-stagger="2"] { --i: 2; font-size: clamp(34px, 9.4vw, 52px); letter-spacing: 0.16em; }

/* The giant "&" — page centerpiece, dramatic stretch + double shadow */
.hero-title-row--big {
  font-size: clamp(120px, 36vw, 200px);
  line-height: 0.85;
  margin: 4px 0;
  filter: drop-shadow(0 0 22px rgba(108, 214, 255, 0.45));
}
.hero-title-ampersand {
  display: inline-block;
  transform: skewY(-2deg);
}
/* Spacer in "THEN ─── NOW" — a chunky cyan slash */
.hero-title-spacer {
  display: inline-block;
  width: 0.6em;
  height: 0.12em;
  vertical-align: middle;
  background: var(--ps-cyan);
  box-shadow: 0 0 10px var(--ps-cyan);
  margin: 0 0.25em;
  transform: translateY(-0.08em);
}

/* --- subhead -------------------------------------------------------- */
.hero-sub {
  font-family: "VT323", monospace;
  font-size: clamp(16px, 4.2vw, 20px);
  line-height: 1.4;
  color: var(--ps-bone);
  opacity: 0.78;
  max-width: 32ch;
  margin-top: 2px;
  animation: hero-rise .9s var(--ease-pop) forwards;
  animation-delay: 700ms;
  opacity: 0;
  translate: 0 8px;
  animation-fill-mode: forwards;
}
.hero-sub em {
  font-style: normal;
  color: var(--ps-cyan);
  text-shadow: 0 0 8px rgba(108, 214, 255, 0.55);
}
.hero-sub-marker {
  display: inline-block;
  color: var(--ps-cyan);
  margin-right: 6px;
  animation: marker-blink 1.4s steps(2) infinite;
}

/* --- PSN+ Premium-style pills -------------------------------------- */
.pill-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
  margin-top: 14px;
}
.pill {
  --i: 0;
  --pill-bg: rgba(8, 18, 42, 0.78);
  --pill-fg: var(--ps-bone);
  --pill-accent: var(--ps-cyan);
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 12px 18px 12px 12px;
  border: 1.5px solid var(--pill-accent);
  border-radius: 999px;
  background: var(--pill-bg);
  color: var(--pill-fg);
  font-family: "Audiowide", system-ui, sans-serif;
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.06) inset,
    0 8px 20px -8px rgba(0, 0, 0, 0.6),
    0 0 30px -10px var(--pill-accent);
  opacity: 0;
  translate: 0 14px;
  animation: pill-rise .65s var(--ease-pop) forwards;
  animation-delay: calc(var(--i) * 100ms + 900ms);
  transition:
    translate .18s var(--ease-pop),
    box-shadow .18s var(--ease-pop),
    border-color .18s var(--ease-pop);
}
.pill:nth-of-type(1) { --i: 0; }
.pill:nth-of-type(2) { --i: 1; }
.pill:nth-of-type(3) { --i: 2; }

.pill:hover {
  translate: 0 -2px;
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.10) inset,
    0 14px 26px -10px rgba(0, 0, 0, 0.7),
    0 0 40px -6px var(--pill-accent);
}
.pill:active {
  translate: 0 1px;
}
.pill:focus-visible {
  outline: 2px solid var(--pill-accent);
  outline-offset: 4px;
}

.pill-shape {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(108, 214, 255, 0.10);
  color: var(--pill-accent);
  border: 1px solid var(--pill-accent);
  box-shadow: inset 0 0 8px rgba(108, 214, 255, 0.18);
}
.pill-shape svg { width: 18px; height: 18px; }

.pill-label {
  font-family: "Audiowide", system-ui, sans-serif;
  font-size: 13px;
  letter-spacing: 0.22em;
  line-height: 1;
  color: var(--pill-fg);
}
.pill-arrow {
  font-family: "Audiowide", system-ui, sans-serif;
  font-size: 22px;
  line-height: 1;
  color: var(--pill-accent);
  transition: transform .2s var(--ease-pop);
}
.pill:hover .pill-arrow { transform: translateX(3px); }

/* Per-button colorways */
.pill--racer {
  --pill-accent: var(--ps-cyan);
}
.pill--runner {
  --pill-accent: #6cf09b;       /* slightly cooler than ps-tri to fit boot palette */
}
.pill--runner .pill-shape { background: rgba(108, 240, 155, 0.10); }

/* The hero CTA — PSN+ "EXTRA"-style gold pill with dark text */
.pill--shop {
  --pill-bg: var(--ps-gold);
  --pill-fg: #1a1206;
  --pill-accent: #1a1206;
  border: 1.5px solid #1a1206;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.4) inset,
    0 10px 22px -8px rgba(245, 209, 66, 0.55),
    0 0 0 4px rgba(245, 209, 66, 0.18);
}
.pill--shop:hover {
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.5) inset,
    0 14px 28px -8px rgba(245, 209, 66, 0.75),
    0 0 0 5px rgba(245, 209, 66, 0.28);
}
.pill--shop .pill-shape {
  background: #1a1206;
  border-color: #1a1206;
  color: var(--ps-gold);
  box-shadow: none;
}
.pill--shop .pill-arrow {
  color: #1a1206;
}

/* --- hint line + footer ------------------------------------------- */
.boot-hint {
  font-family: "Press Start 2P", monospace;
  font-size: 9px;
  letter-spacing: 0.18em;
  color: var(--ps-mute);
  text-transform: uppercase;
  text-align: center;
  margin-top: 18px;
  opacity: 0;
  animation: hero-rise .8s var(--ease-pop) forwards;
  animation-delay: 1300ms;
}
.boot-hint-key {
  color: var(--ps-cyan);
  margin-right: 6px;
  animation: marker-blink 1.4s steps(2) infinite;
}

.boot-footer {
  margin-top: auto;
  padding-top: 22px;
  text-align: center;
  font-family: "VT323", monospace;
  font-size: 13px;
  color: var(--ps-mute);
  line-height: 1.4;
}
.boot-footer strong {
  color: var(--ps-bone);
  font-weight: normal;
  letter-spacing: 0.05em;
}
.boot-footer .legal {
  margin-top: 4px;
  font-size: 11px;
  opacity: 0.7;
}

/* --- toast --------------------------------------------------------- */
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(24px + env(safe-area-inset-bottom));
  translate: -50% 0;
  background: var(--ps-noir);
  color: var(--ps-bone);
  border: 1px solid var(--ps-cyan);
  padding: 10px 16px;
  font-family: "VT323", monospace;
  font-size: 14px;
  letter-spacing: 0.04em;
  z-index: 10000;
  box-shadow: 0 0 24px rgba(108, 214, 255, 0.35);
  border-radius: 6px;
}
.toast[hidden] { display: none; }

/* --- keyframes ----------------------------------------------------- */
@keyframes beam-breathe {
  0%, 100% { opacity: 0.85; transform: rotate(-18deg) translateY(0); }
  50%      { opacity: 1;    transform: rotate(-16deg) translateY(-2%); }
}
@keyframes bokeh-drift {
  0%   { opacity: 0;    transform: translate3d(0, 0, 0) scale(0.8); }
  15%  { opacity: 0.85; }
  60%  { opacity: 0.7; }
  100% { opacity: 0;    transform: translate3d(-12vmin, -22vmin, 0) scale(1.4); }
}
@keyframes portal-pulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(108, 214, 255, 0.08), 0 0 24px rgba(108, 214, 255, 0.55), inset 0 0 18px rgba(108, 214, 255, 0.25); }
  50%      { box-shadow: 0 0 0 4px rgba(108, 214, 255, 0.14), 0 0 36px rgba(108, 214, 255, 0.85), inset 0 0 24px rgba(108, 214, 255, 0.40); }
}
@keyframes hero-rise {
  from { opacity: 0; translate: 0 12px; }
  to   { opacity: 1; translate: 0 0; }
}
@keyframes pill-rise {
  from { opacity: 0; translate: 0 14px; }
  to   { opacity: 1; translate: 0 0; }
}
@keyframes marker-blink {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.2; }
}

/* --- reduced motion ------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
  .beam, .bokeh { display: none; }
}


/* ===================================================================
   Game pages (.game-page wraps racer.html / runner.html)
   Dark CRT vibe — kept intentionally separate from the boot landing.
   =================================================================== */

.game-page {
  position: fixed;
  inset: 0;
  background: #000;
  overflow: hidden;
  color: var(--ps-bone);
  font-family: "VT323", ui-monospace, "Menlo", monospace;
}

.game-page::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.22) 0px,
    rgba(0, 0, 0, 0.22) 1px,
    transparent 1px,
    transparent 3px);
  mix-blend-mode: multiply;
}
.game-page::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.55) 100%);
}

.game-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.hud {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.hud-top, .hud-bottom {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  padding: 12px 14px;
  gap: 10px;
}
.hud-top { padding-right: 88px; }
.hud-block {
  background: rgba(0,0,0,0.55);
  border: 2px solid var(--ps-bone);
  padding: 6px 10px;
  font-family: "VT323", monospace;
  color: var(--ps-bone);
  min-width: 78px;
}
.hud-block .label {
  display: block;
  font-family: "Press Start 2P", monospace;
  font-size: 8px;
  letter-spacing: 0.1em;
  opacity: 0.6;
  text-transform: uppercase;
}
.hud-block .value {
  font-family: "Orbitron", monospace;
  font-size: 22px;
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}
.hud-block.danger { border-color: var(--ps-circ); color: var(--ps-circ); }

.hud-symbols {
  position: absolute;
  top: 56px;
  left: 50%;
  translate: -50% 0;
  display: flex;
  gap: 10px;
  font-family: "Press Start 2P", monospace;
  font-size: 14px;
  text-shadow: 0 0 6px currentColor;
}
.hud-symbols .s-tri  { color: var(--ps-tri);  }
.hud-symbols .s-circ { color: var(--ps-circ); }
.hud-symbols .s-sq   { color: var(--ps-sq);   }
.hud-symbols .s-x    { color: var(--ps-x);    }

.nitro-btn {
  pointer-events: auto;
  position: absolute;
  bottom: calc(16px + env(safe-area-inset-bottom));
  right: 16px;
  width: 96px;
  height: 56px;
  background: var(--ps-circ);
  color: #000;
  border: 3px solid var(--ps-bone);
  font-family: "Press Start 2P", monospace;
  font-size: 12px;
  letter-spacing: 0.08em;
  box-shadow: 4px 4px 0 #000;
}
.nitro-btn:active { translate: 2px 2px; box-shadow: 2px 2px 0 #000; }

.back-btn {
  pointer-events: auto;
  position: absolute;
  top: calc(12px + env(safe-area-inset-top));
  right: 12px;
  background: rgba(0,0,0,0.55);
  border: 2px solid var(--ps-bone);
  color: var(--ps-bone);
  font-family: "Press Start 2P", monospace;
  font-size: 9px;
  letter-spacing: 0.08em;
  padding: 8px 10px;
  text-decoration: none;
  z-index: 10;
}

.endcard {
  position: absolute;
  inset: 0;
  background: #000;
  z-index: 20;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px;
  gap: 16px;
  text-align: center;
}
.endcard.show { display: flex; animation: endcardIn .8s ease-out both; }
.endcard h2 {
  font-family: "Orbitron", monospace;
  font-weight: 700;
  font-size: clamp(20px, 6vw, 32px);
  letter-spacing: 0.06em;
  background: linear-gradient(180deg, #ffffff 0%, #c8d2dc 50%, #6b7785 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 18px rgba(108, 214, 255, 0.35);
}
.endcard .then-now-label {
  font-family: "Press Start 2P", monospace;
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--ps-x);
  text-transform: uppercase;
}
.endcard video {
  width: 100%;
  max-width: 420px;
  aspect-ratio: 16 / 9;
  background: #050810;
  border: 3px solid var(--ps-bone);
  box-shadow: 6px 6px 0 #000;
}
.endcard .endcard-ctas {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  max-width: 320px;
  margin-top: 6px;
}
.endcard .endcard-ctas a,
.endcard .endcard-ctas button {
  display: block;
  width: 100%;
  padding: 12px 14px;
  background: #060812;
  color: var(--ps-bone);
  border: 2px solid var(--ps-bone);
  font-family: "Press Start 2P", monospace;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-decoration: none;
  text-align: center;
  cursor: pointer;
  box-shadow: 4px 4px 0 #000;
}
.endcard .endcard-ctas a:active,
.endcard .endcard-ctas button:active { translate: 2px 2px; box-shadow: 2px 2px 0 #000; }
.endcard .endcard-ctas .primary {
  background: var(--ps-x);
  color: #000;
}

@keyframes endcardIn {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}
