/* =====================================================================
   EMBEDDED FONT (backlog item 13)
   "Press Start 2P" by The Press Start 2P Project Authors (cody@zone38.net),
   licensed under the SIL Open Font License 1.1 (permits embedding).
   Source: https://github.com/google/fonts/tree/main/ofl/pressstart2p
   Full OFL text: https://scripts.sil.org/OFL
   Embedded as WOFF2 (converted from the source TTF with woff2_compress,
   no glyph subsetting tool was available in this container) — this cut
   the payload from 118204 bytes (TTF) to 29740 bytes (WOFF2), a single
   committed data URI, no network fetch, no separate font file. */
@font-face {
  font-family: "Press Start 2P";
  src: url(data:font/woff2;base64,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) format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* =====================================================================
   CABINET.CSS — arcade cabinet chrome (backlog item 11)
   Bezel, marquee, and readout panel around the game canvas. CRT
   treatment added in item 12. Embedded arcade font + overlay restyle
   added in item 13 (see EMBEDDED FONT above and OVERLAYS below). No
   responsive breakpoints yet (item 14) — desktop layout only.
   ===================================================================== */

:root {
  --bg: #141210;
  --stone: #3d3833;
  --stone-edge: #57504a;
  --ink: #e8e2d6;
  --dim: #8d857a;
  --accent: #e0a83c;
  --danger: #c9503c;

  --cabinet-shell: #26221e;
  --cabinet-shell-edge: #171512;
  --bezel-bg: #0a0908;
  --screen-bg: #000000;
  --panel-bg: #1b1815;
  --led-bg: #0d0b09;

  --font-arcade: "Press Start 2P", "Courier New", monospace;
}

* { box-sizing: border-box; }

/* Adaptive layout (backlog item 14): overflow-x:hidden is a safety net,
   not the fit mechanism — .screen's own width formula (see ADAPTIVE
   LAYOUT section) is sized to never exceed the viewport. */
html, body { overflow-x: hidden; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Courier New", monospace;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 100vh;
  justify-content: center;
  gap: 14px;
  padding: 16px;
}

.cabinet {
  display: inline-flex;
  flex-direction: column;
  max-width: 100%;
  background: var(--cabinet-shell);
  border: 2px solid var(--cabinet-shell-edge);
  border-radius: 14px;
  /* Fluid (item 14): all clamp() ceilings below reproduce the original
     fixed px value exactly once viewport width reaches ~900px, so any
     desktop-sized window is pixel-identical to item 13. */
  padding: clamp(8px, 2.2vw, 18px);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(255, 255, 255, 0.03);
}

/* ---------- Marquee ----------------------------------------------------- */
.marquee {
  text-align: center;
  padding: clamp(6px, 1.3vw, 10px) clamp(8px, 2.4vw, 20px) clamp(8px, 1.7vw, 14px);
  border-bottom: 3px solid var(--stone-edge);
  margin-bottom: clamp(8px, 1.9vw, 16px);
}

.marquee-title {
  font-family: var(--font-arcade);
  /* clamp() reaches its 20px ceiling by ~viewport 900px (3.2vw*900=28.8>20),
     so any desktop-width viewport renders the exact pre-item-14 20px. */
  font-size: clamp(10px, 3.2vw, 20px);
  letter-spacing: clamp(2px, 1vw, 6px);
  color: var(--accent);
  text-shadow: 0 0 10px rgba(224, 168, 60, 0.55);
}

/* ---------- Bezel + screen opening --------------------------------------- */
.bezel {
  background: var(--bezel-bg);
  border-radius: 8px;
  padding: clamp(8px, 2.6vw, 22px);
  border-width: clamp(3px, 0.75vw, 6px);
  border-style: solid;
  border-color: var(--stone-edge);
  /* Bug fix (post-item-14): .bezel's own width is stretched (cross-axis,
     default align-items:stretch on .cabinet's flex column) to match
     whichever chrome row is widest — normally itself, since .screen fills
     nearly all of it. But .screen's fluid width (ADAPTIVE LAYOUT section)
     is also bounded by viewport HEIGHT, and on a wide-but-short viewport
     that height bound can shrink .screen well below the other rows'
     width (e.g. the readout panel's own min-widths), leaving .bezel wider
     than its .screen child. Without centering here, .screen — a plain
     block box with no auto margins — sat flush at .bezel's left edge,
     reading as visibly off-center. flex + justify-content/align-items
     center .screen inside whatever width/height .bezel ends up with, at
     zero cost when they already match (full desktop size: unchanged). */
  display: flex;
  justify-content: center;
  align-items: center;
}

/* The "screen opening": a fixed viewport the canvas scales to fit.
   Its aspect ratio deliberately differs from the canvas's 720x480 (3:2)
   so the fit logic in main.js exercises both the integer-scale path and
   the letterboxed fallback path (see fitScreen()). */
.screen {
  width: 800px;
  height: 600px;
  background: var(--screen-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
  /* Adaptive layout (item 14): establishes a query container so overlay
     text (below) can size itself in cqw — relative to the screen opening
     itself, not the viewport — which stays correct however the opening
     is bounded (by width or by height, see ADAPTIVE LAYOUT section). */
  container-type: inline-size;
  /* Touch input (item 15): the screen's left/right halves mirror ◀/▶
     (see main.js's screenEl pointer listeners) — this is a live control
     surface exactly like the deck, so it gets the same touch-safety
     rules: no browser gesture (scroll/double-tap-zoom) hijacks a
     charge-hold, and no long-press text-selection/callout fires. */
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}

#game {
  background: #1b1815;
  display: block;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}

/* =====================================================================
   CRT TREATMENT (backlog item 12)
   Scanlines, phosphor glow, curvature, vignette, and flicker, hanging
   entirely off `.screen.crt`. Removing the `crt` class restores item
   11's exact appearance — nothing here touches `.bezel`, `.screen`'s
   base rules above, or `#game`. The canvas itself is never filtered,
   transformed, or resized by this section: only the two generated
   overlay layers (`::before`/`::after`) and static box-shadow/
   border-radius on the container change, so canvas raster output and
   pointer/coordinate math in main.js are unaffected. All overlay
   layers are `pointer-events: none` and painted above the canvas via
   z-index, never via a blend mode that would force software
   compositing. The only animated property is `opacity` (flicker),
   which is compositor-only and never triggers layout or a canvas
   repaint — the canvas keeps redrawing at its own game-loop cadence
   exactly as before.

   Tunables — intensities, spacing, glow, curvature, all in one place: */
:root {
  --crt-scanline-size: 3px;        /* px period of one scanline (line + gap) */
  --crt-scanline-opacity: 1.2;    /* darkness of each scanline stripe */
  --crt-glow-color: 224, 168, 60;  /* r,g,b of the inset phosphor glow (amber, matches --accent) */
  --crt-glow-opacity: 0.60;        /* strength of the inset phosphor glow */
  --crt-glow-radius: 50px;         /* blur radius of the inset phosphor glow */
  --crt-curvature-radius: 26px;    /* corner rounding used to suggest barrel curvature */
  --crt-vignette-opacity: 0.30;    /* strength of the corner-darkening vignette */
  --crt-vignette-inner: 70%;       /* radius (of screen box) where vignette starts fading in */
  --crt-flicker-amount: 0.54;      /* brightness dip amplitude of the flicker jitter (0 disables) */
  --crt-flicker-period: 0.96s;      /* duration of one fast stepped flicker cycle */
}

/* Curvature: a CSS-only illusion, not a real distortion. Rounding the
   screen container's corners plus darkening them via the vignette
   below reads as barrel curvature without resampling any pixels.
   The screen opening (800x600) is deliberately larger than the scaled
   canvas (720x480 at its current integer scale), so the corners this
   rounds and darkens are the container's own letterbox background,
   never gameplay pixels — no coordinate math in main.js's fitScreen()
   changes, and nothing gameplay-relevant is clipped. */
.screen.crt {
  border-radius: var(--crt-curvature-radius);
  box-shadow:
    inset 0 0 var(--crt-glow-radius) rgba(var(--crt-glow-color), var(--crt-glow-opacity)),
    inset 0 0 80px rgba(255, 255, 255, 0.08);
}

.screen.crt::before,
.screen.crt::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

/* Scanlines: a static repeating-gradient stripe pattern composited as
   plain alpha over the canvas — no blend mode, so it stays on the
   GPU-friendly compositor path. The pattern itself never changes
   frame to frame; only the canvas beneath it redraws. */
.screen.crt::before {
  background: repeating-linear-gradient(
    to bottom,
    rgba(0, 0, 0, var(--crt-scanline-opacity)) 0,
    rgba(0, 0, 0, var(--crt-scanline-opacity)) 1px,
    transparent 1px,
    transparent var(--crt-scanline-size)
  );
}

/* Vignette + flicker: a static radial gradient (corner darkening) on
   the same overlay, with a fast stepped opacity jitter for flicker —
   steps() timing hard-cuts between full and dipped opacity several
   times within each ~0.1s cycle, no easing or smooth ramp. Opacity-
   only keyframes stay compositor-only (no layout, no repaint of the
   canvas or the gradient itself). */
.screen.crt::after {
  background: radial-gradient(
    ellipse at center,
    transparent var(--crt-vignette-inner),
    rgba(0, 0, 0, var(--crt-vignette-opacity)) 100%
  );
  animation: crt-flicker var(--crt-flicker-period) steps(1) infinite;
}

@keyframes crt-flicker {
  0% { opacity: 1; }
  15% { opacity: calc(1 - var(--crt-flicker-amount)); }
  30% { opacity: 1; }
  45% { opacity: calc(1 - var(--crt-flicker-amount) * 0.5); }
  60% { opacity: 1; }
  80% { opacity: calc(1 - var(--crt-flicker-amount)); }
  100% { opacity: 1; }
}

/* ---------- Readout panel (LED/segment idiom) ---------------------------- */
.readout-panel {
  display: flex;
  justify-content: center;
  gap: clamp(8px, 2.9vw, 24px);
  padding: clamp(8px, 1.9vw, 16px) clamp(6px, 1.2vw, 10px) 4px;
}

.readout {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.readout-label {
  font-family: var(--font-arcade);
  font-size: clamp(8px, 1.4vw, 9px);
  letter-spacing: 2px;
  color: var(--dim);
  text-transform: uppercase;
}

.readout-value {
  min-width: clamp(64px, 18vw, 100px);
  text-align: center;
  padding: clamp(5px, 1.4vw, 8px) clamp(6px, 2vw, 12px);
  background: var(--led-bg);
  border: 1px solid var(--stone-edge);
  border-radius: 4px;
  font-family: var(--font-arcade);
  font-size: clamp(9px, 2.4vw, 16px);
  letter-spacing: 1px;
  color: var(--accent);
  text-shadow: 0 0 6px currentColor;
}

.readout-value.readout-danger {
  color: var(--danger);
}

#hud-best .readout-value,
.readout-value#hud-best {
  color: var(--dim);
  text-shadow: none;
}

/* =====================================================================
   CONTROL DECK (backlog item 15)
   Replaces the old .controls keybinding hint at every width — mouse on
   desktop, touch on phone/tablet, same markup and CSS throughout. Each
   .deck-btn is a Pointer-Event target (wiring in main.js); this file
   only supplies the arcade-dome look and the touch-safety rules
   (touch-action/user-select) — no input logic lives here.

   Layout: [◀][▶] direction pad on the left (thumb rests near the
   screen's bottom-left in two-hand landscape hold), small [C]/[R]
   service buttons tucked in the middle (classic cabinet coin-door
   placement — deliberately out of the way of normal play), [JUMP] on
   the right under the other thumb. Classic arcade convention splits
   movement and the primary action across the two hands; either side
   would work, this is the Dev's pick.

   Sizing: direction/jump are the actual gameplay controls, so their
   floor is a true 44px thumb target (WCAG/HIG minimum) at every width
   — the clamp() floor below is exactly 44px, never smaller. [C]/[R]
   are service buttons (per the item text) and stay visibly smaller,
   same as their real cabinet counterparts.
   ===================================================================== */
.deck {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: clamp(10px, 3vw, 22px);
  padding: clamp(8px, 2vw, 14px) clamp(8px, 1.9vw, 16px) clamp(10px, 2.2vw, 16px);
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}

.deck-group {
  display: flex;
  align-items: center;
  gap: clamp(6px, 1.6vw, 12px);
}

/* The dome: a raised arcade button rendered in pure CSS — a radial
   gloss highlight over a solid base, a hard drop shadow for lift, and
   an inset rim. `.pressed` (synced from the logical input state every
   frame by main.js, the same loop that writes the HUD) collapses the
   lift and darkens the gloss so the button visibly sinks — the same
   treatment for a keyboard press, a deck tap, or a screen-half tap. */
.deck-btn {
  --dome-color: var(--stone);
  --dome-edge: var(--stone-edge);
  --dome-ink: var(--ink);
  appearance: none;
  border: none;
  border-radius: 50%;
  min-width: 44px;
  min-height: 44px;
  width: clamp(44px, 11vw, 60px);
  height: clamp(44px, 11vw, 60px);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-arcade);
  font-size: clamp(11px, 3vw, 15px);
  color: var(--dome-ink);
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0) 45%),
    var(--dome-color);
  border: 2px solid var(--dome-edge);
  box-shadow:
    0 4px 0 var(--dome-edge),
    0 6px 8px rgba(0, 0, 0, 0.45);
  cursor: pointer;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
  transition: transform 0.04s ease-out, box-shadow 0.04s ease-out, filter 0.04s ease-out;
}

/* Visibly depressed: the lift shadow collapses to nearly nothing and
   the button nudges down by the same amount, so it reads as pressed
   INTO the panel rather than merely recolored. */
.deck-btn.pressed {
  transform: translateY(3px);
  box-shadow:
    0 1px 0 var(--dome-edge),
    0 2px 4px rgba(0, 0, 0, 0.4);
  filter: brightness(0.85);
}

.deck-dir {
  --dome-color: var(--stone);
  --dome-edge: var(--stone-edge);
}

.deck-jump {
  --dome-color: var(--accent);
  --dome-edge: #a3781f;
  --dome-ink: #201804;
  width: clamp(56px, 15vw, 78px);
  height: clamp(56px, 15vw, 78px);
  font-size: clamp(9px, 2.4vw, 12px);
  letter-spacing: 1px;
  box-shadow:
    0 5px 0 #a3781f,
    0 8px 12px rgba(0, 0, 0, 0.5),
    0 0 14px rgba(224, 168, 60, 0.4);
}

.deck-jump.pressed {
  box-shadow:
    0 1px 0 #a3781f,
    0 2px 5px rgba(0, 0, 0, 0.45);
}

/* Small service buttons: real cabinet service/reset buttons are tiny
   and tucked away, not thumb targets meant for constant play — visual
   size follows that convention (well under the 44px gameplay floor). */
.deck-svc {
  --dome-color: var(--panel-bg);
  --dome-edge: var(--stone-edge);
  --dome-ink: var(--dim);
  width: clamp(28px, 6vw, 34px);
  height: clamp(28px, 6vw, 34px);
  min-width: 28px;
  min-height: 28px;
  font-size: clamp(9px, 2vw, 11px);
  box-shadow:
    0 2px 0 var(--dome-edge),
    0 3px 5px rgba(0, 0, 0, 0.4);
}

.deck-svc.pressed {
  transform: translateY(2px);
  box-shadow:
    0 0.5px 0 var(--dome-edge),
    0 1px 3px rgba(0, 0, 0, 0.35);
}

/* =====================================================================
   OVERLAYS (backlog item 13)
   Pre-game and game-over messages, formerly drawn with ctx.fillText in
   render.js, now HTML positioned over the screen opening. Each overlay
   is an absolutely-positioned sibling of the canvas inside `.screen`,
   z-index 1 — above the canvas (auto) but below the CRT scanline/
   vignette pseudo-elements (`.screen.crt::before/::after`, z-index 2),
   so they read as lit ON the tube, not stuck to the glass on top of it.
   Visibility is toggled by main.js (`.visible`) off the same `started`/
   `gameOver` run-state booleans render.js used to key its fillText
   branches on — no new state, no logic-file involvement. Content text
   is preserved verbatim in the markup; text-transform: uppercase here
   is presentation only. */
.overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  text-align: center;
  /* Fluid to match the screen opening (cqw, see .screen's container-type
     above); reproduces item 13's fixed 48px exactly at the 800px screen
     width (6cqw * 800 / 100 = 48px). */
  padding: 0 clamp(10px, 6cqw, 48px);
  pointer-events: none;
  font-family: var(--font-arcade);
}

.overlay.visible { display: flex; }

.overlay-gameover.visible {
  background: rgba(20, 18, 16, 0.82);
}

.overlay-title {
  margin: 0;
  /* cqw is relative to .screen's own inline-size (container-type above),
     not the viewport — correct whether the screen opening is bounded by
     viewport width or height. Ceiling of 22px reproduces item 13's fixed
     size exactly once the screen is at its 800px desktop width
     (5.5cqw * 800 / 100 = 44px, already past the ceiling). Floor of 14px
     keeps the bitmap font legible (Press Start 2P degrades below ~8px;
     the title carries more weight than body lines so it floors higher). */
  font-size: clamp(14px, 5.5cqw, 22px);
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--ink);
  text-shadow: 0 0 14px rgba(232, 226, 214, 0.55);
}

.overlay-line {
  margin: 0;
  /* Same container-relative reasoning as .overlay-title; ceiling
     reproduces item 13's fixed 10px exactly at the 800px screen width. */
  font-size: clamp(8px, 2.8cqw, 10px);
  line-height: 2;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--ink);
  text-shadow: 0 0 8px rgba(224, 168, 60, 0.35);
}

.overlay-dim {
  color: var(--dim);
  text-shadow: none;
}

/* Hard on/off blink for the actionable prompt (PRESS R…), matching the
   CRT flicker's stepped-jitter idiom already used in this file. */
.overlay-blink {
  color: var(--accent);
  animation: overlay-blink 1s steps(1) infinite;
}

@keyframes overlay-blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

/* Softer ease-pulse for the longer pre-game instruction line — a full
   sentence reads better pulsing than hard-blinking. */
.overlay-pulse {
  color: var(--accent);
  animation: overlay-pulse 1.6s ease-in-out infinite;
}

@keyframes overlay-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.45; }
}

/* =====================================================================
   ADAPTIVE LAYOUT (backlog item 14; deck accounted for in item 15)
   Everything above this point already reflows fluidly via clamp() —
   paddings, borders, gaps, and font sizes all reach their ceiling by
   viewport ~900px, so any desktop-sized window renders pixel-identical
   to item 13. What's left is structural: the screen opening's own size
   (which drives the canvas's on-screen scale via main.js's fitScreen(),
   now ResizeObserver-driven — see main.js) and one binary reflow
   decision (the marquee) that can't be a continuous clamp. The control
   deck (item 15) replaced the old controls hint at every width — unlike
   the hint, it is NEVER hidden (it's the only touch input path), so it
   no longer needs its own width-based hide tier; only its ceiling
   height still has to be budgeted into --chrome-h below.

   --chrome-w / --chrome-h estimate the fixed chrome around the screen
   opening (body/cabinet/bezel padding+border, plus marquee/readout/deck
   height where visible) so the screen can claim exactly what's left.
   They intentionally use each element's *ceiling* (clamp max) rather
   than the true fluid-shrunk figure — real chrome at any given viewport
   is always <= this estimate, so the screen is sized conservatively: it
   never overflows, at the cost of a few spare px of margin instead of a
   mathematically perfect fit. Each constant carries a further buffer on
   top of that for rounding safety. Below 960px is treated as "not full
   size"; per the acceptance note, "full size" means item 13's fixed
   desktop layout already fits the viewport without shrinking (true from
   ~928px up), so the 960px gate has margin on both sides and never
   clips a desktop window. */
@media (max-width: 960px) {
  :root {
    --chrome-w: 136px;   /* body 32 + cabinet border 4 + cabinet pad 36 + bezel border 12 + bezel pad 44 + buffer 8 */
    --chrome-h: 360px;   /* same horizontal set (116) + marquee ~67 + readout ~69 + deck ~92 (padding ceiling 30 + JUMP ceiling 78, gap fudge) + buffer 16 */
  }

  /* The screen opening: an aspect-ratio-locked box that claims the most
     space available under BOTH the width budget and the height budget,
     capped at item 13's original 800x600 so it can only ever shrink.
     aspect-ratio keeps it 4:3 exactly as before; height:auto lets the
     ratio (not a second fixed number) drive the vertical size. This is
     what makes portrait AND landscape phones both work from one rule:
     whichever axis is tighter (viewport width in portrait, viewport
     height in landscape) naturally wins the min(). */
  .screen {
    width: min(800px, calc(100vw - var(--chrome-w)), calc((100vh - var(--chrome-h)) * 4 / 3));
    height: auto;
    aspect-ratio: 4 / 3;
  }
}

/* Short viewports (phone landscape, e.g. 740x360): height is the scarce
   resource here, scarce enough that the marquee has to go — it alone
   costs ~67px of fixed vertical chrome the screen needs more. The deck
   cannot go the same way (item 15: it's the only touch input path and
   must stay reachable at every width/height), so unlike item 14's
   original version of this rule, the deck's ceiling height stays in the
   budget rather than dropping to 0. Independent of the width-based tier
   above (a wide-but-short window hits this rule even above 960px
   width), and declared last so it wins the cascade for any viewport
   both rules match. */
@media (max-height: 480px) {
  .marquee { display: none; }
  :root { --chrome-h: 297px; }  /* horizontal-only chrome set (116) + readout ~69 + deck ~92 + buffer 20, marquee 0 */
}

/* =====================================================================
   PHONE-WIDTH RIM COLLAPSE (backlog item 15, Director pass 2)
   The tiers above already make the cabinet fluid, but body/.cabinet/
   .bezel keep desktop-proportioned padding+border all the way down to
   360px wide — on an actual phone that's real width (~90px combined)
   spent on decorative margin/rim instead of the screen. This tier
   collapses that padding+border to a fixed minimal rim (thin enough to
   still read as a cabinet edge, per the Director's phrasing) so
   --chrome-w shrinks and the screen's width formula above claims
   effectively the full viewport width.

   Tier choice: NOT the existing 960px tier — at 900px there's no real
   width pressure (clamp() paddings are already near their ceiling
   there, looking essentially like desktop), so forcing a minimal rim
   that wide would be a visible regression with no upside. Instead this
   reuses the 480px threshold already load-bearing elsewhere in this
   file (it used to gate the old controls-hint hide, and still gates
   the marquee-hide above) — a boundary already established as "phone,
   not tablet" by this file's own prior design, so no new magic number.

   Two conditions, because "phone width" means both orientations:
     - (max-width: 480px): phone PORTRAIT — width is what's scarce.
     - (max-width: 960px) and (max-height: 480px): phone LANDSCAPE
       (e.g. 740x360) — width alone doesn't cross 480px, but height
       does, and the *screen* is still height-bound there exactly as
       item 14 intended. The extra `max-width: 960px` guard keeps this
       out of pathological short-but-wide DESKTOP windows (e.g.
       1400x400): those aren't a phone, so they keep the existing
       (unchanged) fallback chrome-w/h from the two tiers above rather
       than collapsing to a phone-sized rim.
   Both conditions get the SAME minimal rim (padding/border/chrome-w
   below); only --chrome-h differs between them (portrait keeps the
   marquee, landscape drops it per the block above), which is why that
   piece is split into two small rules further down instead of folded
   in here. */
@media (max-width: 480px), (max-width: 960px) and (max-height: 480px) {
  body { padding: 4px; }
  .cabinet { padding: 4px; }
  .bezel { padding: 3px; border-width: 2px; }
  :root {
    --chrome-w: 38px;  /* body 8 + cabinet border 4 + cabinet pad 8 + bezel border 4 + bezel pad 6 + buffer 8 */
  }
}

/* Portrait phone: marquee is still visible here (the marquee-hide rule
   above only fires when height <= 480px too), so its ~67px ceiling
   stays in the height budget. */
@media (max-width: 480px) {
  :root { --chrome-h: 272px; }  /* minimal-rim fixed set (30) + marquee ~67 + readout ~69 + deck ~92 + buffer 14 */
}

/* Landscape phone: declared last so it wins the cascade whenever both
   conditions match (e.g. a short AND narrow window) — correct in that
   overlap because the marquee-hide rule above unconditionally drops
   the marquee whenever height <= 480px, matching this block's smaller,
   marquee-less estimate. */
@media (max-width: 960px) and (max-height: 480px) {
  :root { --chrome-h: 205px; }  /* minimal-rim fixed set (30) + readout ~69 + deck ~92 + buffer 14, marquee 0 */
}
