/* ============================================================
   THE ARCADE SOCIAL — DESIGN SYSTEM
   Editorial, near-monochrome boutique style (à la premium
   photo-booth sites): white pages, black type, one pale warm-gray
   band, taped-print photo framing, black pill buttons, and a
   handwritten script for section accents. The only color is a
   muted LED pink — the arcade's quiet signature.
   ============================================================ */

/* ---------- Design tokens ---------- */
:root {
  /* Palette */
  --paper: #FFFFFF;          /* page background */
  --band: #E8E6E2;           /* pale warm-gray hero / CTA band */
  --band-soft: #F5F4F2;      /* whisper-gray panels */
  --ink: #141414;            /* near-black text */
  --ink-soft: #595959;       /* secondary text */
  --line: #E3E0DB;           /* hairline rules & photo frames */
  /* Logo palette — the rainbow underline's own colors */
  --brand-yellow: #FFC400;
  --brand-orange: #FF7A00;
  --brand-red: #F5265C;
  --brand-blue: #2F6FD0;
  --pink: var(--brand-red);   /* accent alias, kept for existing rules */
  --pink-soft: #FDE8EE;       /* soft tint of the logo red */
  --oak: var(--brand-yellow);
  --error: #A34A3C;

  /* Type */
  --font-serif: "Libre Baskerville", Georgia, "Times New Roman", serif;
  --font-sans: "Almarai", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-script: "Sacramento", cursive;

  /* Rhythm */
  --radius: 0px;             /* flat, editorial corners */
  --shadow-photo: 0 16px 34px rgba(20, 20, 20, 0.10);
  --section-pad: clamp(4rem, 9vw, 7.5rem);
  --container: 72rem;       /* reading width for content sections */
  --container-wide: 110rem; /* header + hero run nearly edge to edge */
  --overlap: 5rem;           /* hero photo overlap into the intro */
}

/* ---------- Reset & base ---------- */
*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 5.5rem;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 1rem;
  line-height: 1.7;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

::selection { background: rgba(255, 196, 0, 0.35); }

h1, h2, h3 {
  font-family: var(--font-serif);
  font-weight: 400;
  line-height: 1.25;
  margin: 0 0 0.7em;
  letter-spacing: 0.005em;
  text-wrap: balance;
}

h1 { font-size: clamp(1.9rem, 3.9vw, 3.75rem); }
h2 { font-size: clamp(1.6rem, 2.9vw, 2.35rem); }
h3 { font-size: 1.18rem; }

p { margin: 0 0 1rem; }
p:last-child { margin-bottom: 0; }

ul, ol { margin: 0 0 1rem; padding-left: 1.2rem; }

a { color: var(--ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--ink-soft); }

:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 3px;
}

.skip-link {
  position: absolute;
  left: 1rem; top: -4rem;
  z-index: 200;
  background: var(--ink);
  color: var(--paper);
  padding: 0.6rem 1rem;
  transition: top 0.2s ease;
}
.skip-link:focus { top: 1rem; }

/* Decorative rules run to the screen edges; clip so they can never
   widen the page (overflow-x: clip keeps sticky positioning intact). */
main, .section, .ticker { overflow-x: clip; }

/* ---------- Layout helpers ---------- */
.container {
  width: min(var(--container), 92%);
  margin-inline: auto;
}
.container.narrow { max-width: 46rem; }
.center { text-align: center; }

.section { padding-block: var(--section-pad); }

/* Script accent — the "Our Booths" treatment */
.eyebrow {
  font-family: var(--font-script);
  font-size: clamp(2rem, 3.4vw, 2.7rem);
  font-weight: 400;
  text-transform: lowercase;
  letter-spacing: 0;
  line-height: 1.1;
  color: var(--ink);
  margin-bottom: 0.85rem;   /* breathing room above the serif heading */
}

.lead {
  font-size: 1.06rem;
  color: var(--ink-soft);
}

.fine-print {
  font-size: 0.83rem;
  color: var(--ink-soft);
}

/* Quiet arcade DNA: tiny pixel triplet under section headings,
   in gallery-neutral tones with one pink pixel. */
.section h2::after {
  content: "";
  display: block;
  width: 6px; height: 6px;
  margin-top: 1.1rem;
  background: var(--brand-yellow);
  box-shadow: 12px 0 0 var(--brand-red), 24px 0 0 var(--brand-blue);
}
.center h2::after {
  margin-inline: auto;
  transform: translateX(-12px);
}
.corporate h2::after {
  background: var(--brand-yellow);
  box-shadow: 12px 0 0 var(--brand-red), 24px 0 0 var(--brand-blue);
}

/* ---------- Buttons: black pills, uppercase, letterspaced ---------- */
.btn {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-decoration: none;
  border-radius: 999px;
  padding: 1rem 2rem;
  border: 1px solid var(--ink);
  cursor: pointer;
  transition: transform 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}
.btn:hover { transform: translateY(-2px); }

.btn-primary {
  background: var(--ink);
  color: var(--paper);
}
.btn-primary:hover { background: #333; color: var(--paper); }

.btn-ghost {
  background: transparent;
  color: var(--ink);
}
.btn-ghost:hover { background: var(--ink); color: var(--paper); }

/* Inverted pill for dark sections */
.btn-gold {
  background: var(--paper);
  color: var(--ink);
  border-color: var(--paper);
}
.btn-gold:hover { background: var(--pink-soft); color: var(--ink); }

.btn-lg { padding: 1.1rem 2.5rem; font-size: 0.76rem; }

.text-link { font-weight: 700; }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--paper); /* always white */
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.94);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-shadow: 0 1px 0 var(--line);
}

.site-header .container { width: min(var(--container-wide), 94%); }
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1.1rem;
}

.wordmark {
  font-family: var(--font-serif);
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--ink);
  text-decoration: none;
}
.wordmark:hover { color: var(--ink); }
/* Logo image wordmark (header): multiply blends its white background
   into whatever the header is showing — gray band or scrolled white */
.wordmark-logo { display: inline-flex; align-items: center; }
.wordmark-logo img {
  height: 54px;
  width: auto;
  mix-blend-mode: multiply;
}
.wordmark.wordmark-logo::after { content: none; } /* no pixel cursor next to the logo */
/* Soft marquee-cursor block after the wordmark — a barely-there arcade wink */
.wordmark::after {
  content: "";
  display: inline-block;
  width: 0.36em; height: 0.36em;
  margin-left: 0.34em;
  background: var(--pink);
  vertical-align: baseline;
  animation: cursor-pulse 4s ease-in-out infinite;
}
@keyframes cursor-pulse {
  0%, 100% { opacity: 0.75; }
  50% { opacity: 0.3; }
}

.site-nav { display: flex; align-items: center; gap: 1.6rem; }
.site-nav ul {
  display: flex;
  gap: 1.6rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-nav ul a {
  font-size: 0.86rem;
  font-weight: 400;
  color: var(--ink);
  text-decoration: none;
  padding-block: 0.3rem;
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s ease;
}
.site-nav ul a:hover { border-bottom-color: var(--ink); color: var(--ink); }

.nav-cta { padding: 0.75rem 1.4rem; font-size: 0.66rem; }

/* Circular outline social icons, header-right */
.nav-social { display: flex; gap: 0.55rem; }
.nav-social a {
  display: grid;
  place-items: center;
  width: 34px; height: 34px;
  border: 1px solid var(--ink);
  border-radius: 50%;
  color: var(--ink);
  transition: background-color 0.2s ease, color 0.2s ease;
}
.nav-social a:hover { background: var(--ink); color: var(--paper); }
.nav-social svg { width: 16px; height: 16px; }

.nav-toggle {
  display: none;
  background: none;
  border: none;
  padding: 0.6rem;
  cursor: pointer;
}
.nav-toggle-bar {
  display: block;
  width: 24px; height: 2px;
  background: var(--ink);
  margin: 5px 0;
  transition: transform 0.25s ease, opacity 0.25s ease;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:first-child { transform: translateY(3.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:last-child { transform: translateY(-3.5px) rotate(-45deg); }

/* ---------- Hero: pale studio band, machine right, title over the gray ----------
   The header carries the same gray at the top of the page, so header + band
   read as one surface — no negative-margin overlap tricks. */
.hero-band {
  position: relative;
  overflow: hidden;
  display: grid;
  align-items: center;
  min-height: clamp(24rem, 60vh, 46rem);
  background: #ECEAEB; /* matched to the machine photo's studio backdrop */
  text-align: center;
}
/* Small-screen CTA stack below the band — hidden on desktop, where the
   buttons live inside the band copy. */
.hero-cta { display: none; }

/* Title break element retired — the headline stays on one line at every size */
.mobile-br { display: none; }
.hero-copy h1 {
  white-space: nowrap;
  font-size: min(3.4vw, 3.4rem);
}
.hero-copy {
  max-width: 56rem; /* wide enough for the headline on one line at max size */
  margin-inline: auto;
}
.hero-sub {
  font-size: clamp(0.78rem, 0.85vw, 1rem);
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink);
  margin-bottom: 1.4rem;
}
/* Hero buttons grow a touch with the screen */
.hero-actions .btn { font-size: clamp(0.72rem, 0.72vw, 0.88rem); }
.hero-copy .lead { max-width: 34rem; margin-inline: auto; }
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.9rem;
  margin-block: 3rem 1.2rem;
}
.trust-line {
  font-size: 0.82rem;
  color: var(--ink-soft);
  letter-spacing: 0.03em;
}
.trust-line::before {
  content: "";
  display: inline-block;
  width: 26px; height: 1px;
  background: var(--ink);
  vertical-align: middle;
  margin-right: 0.6rem;
}

/* The hero photo: the full machine sits in the right of the band — zoomed
   out, never cropped — and simply scales down with the viewport. Its studio
   gray blends into the band so it floats on clean negative space. */
.hero-photo {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.hero-img {
  position: absolute;
  /* anchor to the wide hero container, not the viewport edge, so the
     copy + machine stay a centered pair on wide screens */
  right: max(calc((100vw - min(var(--container-wide), 94vw)) / 2), 1.5rem);
  bottom: 0;
  height: min(93%, 42rem); /* marquee rides high in the band */
  width: auto;
  /* feather the crop's side edges into the band gray */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
}

.hero-band .container {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); /* copy centers over the empty gray left */
  width: min(var(--container-wide), 94%);
}

/* ---------- Rainbow rule flanking every centered script eyebrow ----------
   Two short segments in the logo's colors, sitting either side of the
   wording with equal gaps and fading out quickly. */
.center .eyebrow,
.eyebrow-ruled {
  position: relative;
  display: inline-block;
}
.center .eyebrow::before,
.center .eyebrow::after,
.eyebrow-ruled::before,
.eyebrow-ruled::after {
  content: "";
  position: absolute;
  top: 52%;
  width: clamp(4rem, 16vw, 13rem);
  height: 11px;
  transform: translateY(-50%);
  background: linear-gradient(180deg,
    var(--brand-yellow) 0 25%,
    var(--brand-orange) 25% 50%,
    var(--brand-red) 50% 75%,
    var(--brand-blue) 75% 100%);
  opacity: 0.9;
  pointer-events: none;
}
.center .eyebrow::before,
.eyebrow-ruled::before {
  right: 100%;
  margin-right: 1.1rem;
  -webkit-mask-image: linear-gradient(to left, #000 35%, transparent 100%);
  mask-image: linear-gradient(to left, #000 35%, transparent 100%);
}
.center .eyebrow::after,
.eyebrow-ruled::after {
  left: 100%;
  margin-left: 1.1rem;
  -webkit-mask-image: linear-gradient(to right, #000 35%, transparent 100%);
  mask-image: linear-gradient(to right, #000 35%, transparent 100%);
}

/* ---------- Legal pages (privacy, terms) ---------- */
.legal { padding-top: calc(var(--section-pad) * 0.7); }
.legal h1 { font-size: clamp(2rem, 4vw, 3rem); margin-bottom: 0.35rem; }
.legal .legal-eyebrow { margin-bottom: 0.4rem; }
.legal-updated {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 2.2rem;
}
.legal h2 {
  font-size: 1.35rem;
  margin-top: 2.6rem;
  margin-bottom: 0.7rem;
}
.legal h2::after { display: none; }   /* no pixel dots on legal headings */
.legal p { color: var(--ink-soft); }
.legal .lead { color: var(--ink); margin-bottom: 0.5rem; }
.legal strong { color: var(--ink); }
.legal-list {
  list-style: none;
  padding: 0;
  margin: 0 0 1rem;
  display: grid;
  gap: 0.45rem;
  color: var(--ink-soft);
}
.legal-list li { position: relative; padding-left: 1.4rem; }
.legal-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.62em;
  width: 6px; height: 6px;
  background: var(--brand-yellow);
}
.legal-list li:nth-child(4n+2)::before { background: var(--brand-orange); }
.legal-list li:nth-child(4n+3)::before { background: var(--brand-red); }
.legal-list li:nth-child(4n+4)::before { background: #6FA0EA; }
.legal-back {
  margin-top: 3rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line);
  font-weight: 700;
}

/* ---------- Machine builder (IKEA-style configurator) ---------- */
.builder { background: var(--band-soft); border-top: 1px solid var(--line); }
.builder-grid {
  display: grid;
  grid-template-columns: minmax(0, 6fr) minmax(0, 6fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
  margin-top: 3rem;
  max-width: 64rem;
}
.builder-stage {
  background: #E9E8E7;
  border: 1px solid var(--line);
}
/* grid/flex children need min-width:0 or the nowrap swatch rows blow the
   column out past the viewport */
.builder-stage, .builder-options { min-width: 0; }
.builder-swatches { min-width: 0; max-width: 100%; }
.builder-stage { max-width: 27rem; margin-inline: auto; width: 100%; }
.builder-track {
  display: flex;
  aspect-ratio: 3 / 4;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.builder-track::-webkit-scrollbar { display: none; }
.builder-track img {
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
  object-fit: cover;
  scroll-snap-align: center;
  transition: opacity 0.35s ease;
}
.builder-track img.is-swapping { opacity: 0; }
.builder-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.85rem 0;
  background: var(--paper);
  border-top: 1px solid var(--line);
}
.bdot {
  width: 9px; height: 9px;
  border-radius: 50%;
  border: 1px solid var(--ink-soft);
  background: transparent;
  padding: 0;
  cursor: pointer;
}
.bdot.is-selected { background: var(--ink); border-color: var(--ink); }
.builder-hint {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-left: 0.6rem;
}
.builder-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-bottom: 0.6rem;
}
.builder-group { margin-bottom: 1.6rem; }
/* the rows scroll sideways — fades plus arrow buttons at each edge */
.builder-scroller { position: relative; }
.builder-scroller::before,
.builder-scroller::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  width: 3rem;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 1;
}
.builder-scroller::before {
  left: -4px;
  background: linear-gradient(270deg, rgba(245, 244, 242, 0), var(--band-soft) 70%);
}
.builder-scroller::after {
  right: -4px;
  background: linear-gradient(90deg, rgba(245, 244, 242, 0), var(--band-soft) 70%);
}
.builder-scroller.can-prev::before,
.builder-scroller.can-next::after { opacity: 1; }

.scroll-btn {
  position: absolute;
  top: 50%;
  z-index: 2;
  width: 30px; height: 30px;
  transform: translateY(-50%);
  display: none;
  place-items: center;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--paper);
  box-shadow: 0 2px 8px rgba(20, 20, 20, 0.12);
  cursor: pointer;
  transition: border-color 0.2s ease, transform 0.15s ease;
}
.scroll-btn:hover { border-color: var(--ink); transform: translateY(-50%) scale(1.06); }
.scroll-btn::before {
  content: "";
  width: 7px; height: 7px;
  border-right: 1.5px solid var(--ink);
  border-bottom: 1.5px solid var(--ink);
}
.scroll-btn.prev { left: -6px; }
.scroll-btn.next { right: -6px; }
.scroll-btn.prev::before { transform: rotate(135deg); margin-left: 3px; }
.scroll-btn.next::before { transform: rotate(-45deg); margin-right: 3px; }
.builder-scroller.can-prev .scroll-btn.prev,
.builder-scroller.can-next .scroll-btn.next { display: grid; }
.builder-swatches {
  display: flex;
  flex-wrap: nowrap;          /* one row — scroll sideways instead of stacking */
  gap: 0.5rem;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 4px;               /* room for the selection ring */
  margin: -4px;
  -webkit-overflow-scrolling: touch;
}
.builder-swatches::-webkit-scrollbar { display: none; }
.builder-swatches .swatch { flex: none; white-space: nowrap; }
/* "& more" marker: informative, not selectable */
.swatch-more {
  pointer-events: none;
  border-style: dashed;
  color: var(--ink-soft);
  font-weight: 400;
  padding-left: 1rem;
}
.swatch {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.5rem 1rem 0.5rem 0.55rem;
  cursor: pointer;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.swatch:hover { transform: translateY(-1px); border-color: var(--ink-soft); }
.swatch.is-selected { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
.swatch-chip {
  width: 26px; height: 26px;
  border-radius: 50%;
  border: 1px solid rgba(20, 20, 20, 0.15);
  display: inline-grid;
  place-items: center;
  font-size: 0.5rem;
  font-weight: 700;
  flex: none;
}
.chip-oak { background: linear-gradient(135deg, #E0C193, #C9A76E); }
.chip-walnut { background: linear-gradient(135deg, #6E4B32, #4A2F1E); }
.chip-white { background: #FFFFFF; }
.chip-blackwood { background: linear-gradient(135deg, #3A3330, #14100E); }
.chip-rainbow {
  background: linear-gradient(180deg,
    var(--brand-yellow) 0 25%, var(--brand-orange) 25% 50%,
    var(--brand-red) 50% 75%, var(--brand-blue) 75% 100%);
}
.chip-custom { background: #FDF9F2; color: var(--ink); font-family: var(--font-serif); }
.chip-led-pink { background: #FF7AC8; box-shadow: 0 0 8px rgba(255, 122, 200, 0.8); }
.chip-led-blue { background: #4FC3FF; box-shadow: 0 0 8px rgba(79, 195, 255, 0.8); }
.chip-led-purple { background: #A85CFF; box-shadow: 0 0 8px rgba(168, 92, 255, 0.8); }
.builder-options .fine-print { margin-bottom: 1.4rem; }

/* ---------- Game ticker: slow, seamless loop under the hero ---------- */
.ticker {
  position: relative;
  overflow: hidden;
  background: var(--ink);
  color: #EDEAE4;
  padding-block: 0.6rem;
}
/* Static callout pinned left; the tiles scroll behind it */
.ticker-callout {
  position: absolute;
  inset: 0 auto 0 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  background: var(--ink);
  padding-left: max(calc((100vw - min(var(--container-wide), 94vw)) / 2), 1.25rem);
  padding-right: 1.6rem;
}
.ticker-callout::after {
  content: "";
  position: absolute;
  left: 100%;
  top: 0; bottom: 0;
  width: 3.5rem;
  background: linear-gradient(90deg, var(--ink), transparent);
}
.ticker-callout b {
  font-family: var(--font-serif);
  font-size: 1.3rem;
  font-weight: 700;
  color: #FFFFFF;
  line-height: 1.15;
}
.ticker-callout span {
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pink);
}
.ticker-track {
  display: flex;
  width: max-content;
  animation: ticker-scroll 150s linear infinite;
}
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker-items {
  display: inline-flex;
  align-items: center;
  gap: 1.4rem;
  padding-right: 1.4rem;
  white-space: nowrap;
}
/* Each tile: game name above its banner art */
.ticker-tile {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.45rem;
  flex: none;
}
.ticker-tile b {
  font-size: 0.56rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: #B9B5AE;
}
.ticker-tile img {
  display: block;
  height: 46px;
  width: auto;
  border-radius: 2px;
}
/* pixel separator between titles — the arcade wink, in LED pink */
.ticker-items i {
  display: inline-block;
  width: 5px; height: 5px;
  background: var(--brand-yellow);
  flex: none;
}
@keyframes ticker-scroll {
  to { transform: translateX(-50%); }
}
/* If motion is reduced, the global override freezes the animation and the
   ticker simply reads as a static strip of titles. */

/* Desktop: the lounge copy lives in the white band left of the photos,
   centred within that column rather than in the page container. */
@media (min-width: 60.0625rem) {
  .lounge-headwrap,
  .lounge .container:not(.lounge-headwrap) {
    width: 46%;
    max-width: none;
    margin-inline: 0 auto;
    padding-inline: clamp(1.5rem, 4vw, 4rem) 1.5rem;
  }
  .lounge-head,
  .lounge-content { max-width: none; }
}

/* ---------- Grids & flat cards ---------- */
.card-grid {
  display: grid;
  gap: 1.4rem;
  margin-top: 3rem;
}
.card-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.card-grid.addons { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.benefit-card, .event-card, .addon-card, .pricing-card {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 2rem 1.7rem;
  transition: transform 0.25s ease, border-color 0.25s ease;
}
.benefit-card:hover, .event-card:hover, .addon-card:hover {
  transform: translateY(-3px);
  border-color: var(--brand-blue); /* logo-blue edge on hover */
}

.benefit-card { text-align: center; }
.benefit-icon {
  width: 44px; height: 44px;
  margin: 0 auto 1.1rem;
  display: grid;
  place-items: center;
  color: var(--ink);
}
.benefit-icon svg { width: 32px; height: 32px; }

.benefit-card p, .event-card p, .addon-card p {
  color: var(--ink-soft);
  font-size: 0.93rem;
}

.event-card h3 {
  font-size: 0.9rem;
  font-family: var(--font-sans);
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

/* Add-on cards */
.addon-card { position: relative; }
.addon-card.is-coming-soon { opacity: 0.75; }
.badge {
  position: absolute;
  top: 1.05rem; right: 1.05rem;
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-soft);
  background: var(--band-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.3rem 0.7rem;
}

/* ---------- Section rhythm ----------
   Sections alternate between white and a whisper-gray panel so the page
   reads as distinct chapters instead of one continuous sheet. */
.lounge, .additions, .footprint, .pricing, .faq {
  background: var(--paper);
}
.events, .how, .gallery, .testimonials {
  background: var(--band-soft);
}
.lounge, .events, .how, .gallery, .pricing, .testimonials {
  border-top: 1px solid var(--line);
}

/* --- Optional additions: each card gets a logo-colour top edge --- */
.addon-card { border-top: 3px solid var(--brand-yellow); }
.addon-card:nth-child(4n+2) { border-top-color: var(--brand-orange); }
.addon-card:nth-child(4n+3) { border-top-color: var(--brand-red); }
.addon-card:nth-child(4n+4) { border-top-color: var(--brand-blue); }

/* --- Intro tiles: a machine cut-out sitting on top of each card.
       Left mirrors the angled shot so the pair face inward. --- */
.benefit-machine {
  height: 215px;
  margin: -0.4rem auto 1.2rem;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.benefit-machine img {
  height: 100%;
  width: auto;
  object-fit: contain;
}
.machine-left img { transform: scaleX(-1); }   /* faces inward, toward the middle */
.machine-center img { height: 118%; }          /* full cabinet reads smaller — even it out */

/* --- Events: a photo per event type with its summary right below --- */
.events .event-card {
  background: transparent;
  border: none;
  padding: 0;
}
.events .event-card:hover { transform: translateY(-4px); }
.events .event-card img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  margin-bottom: 1.15rem;
  box-shadow: 0 10px 26px rgba(20, 20, 20, 0.09);
}
.events .event-card h3 { margin-bottom: 0.55rem; }
.events .event-card h3::after {
  content: "";
  display: block;
  width: 34px; height: 3px;
  margin-top: 0.6rem;
  background: linear-gradient(90deg,
    var(--brand-yellow), var(--brand-orange), var(--brand-red), var(--brand-blue));
}

/* --- How it works: the numbered circles stand on their own --- */
.how .step-number { background: var(--band-soft); }

/* --- FAQ + pricing keep the white sheet but gain a top rule (above) --- */

/* ---------- Split layouts ---------- */
.split {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(2.2rem, 5vw, 4.5rem);
  align-items: center;
}
.split.reverse .split-copy { order: 1; }
.split.reverse .split-media { order: 2; }
.split-media img {
  box-shadow: var(--shadow-photo);
}

/* The Arcade Lounge: rotating photos fill the right side of the section
   at near-full strength, feathered into white where the copy lives */
.lounge { position: relative; overflow: hidden; }
.lounge-bg {
  position: absolute;
  inset: 0 0 0 26%; /* photos bleed left, behind the copy */
  z-index: 0;
  /* short feather on the layer's left edge only */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 30%);
  mask-image: linear-gradient(90deg, transparent 0, #000 30%);
}
.lounge-bg img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 36% center; /* bias every photo's machines rightward */
  opacity: 0;
  transition: opacity 2.2s ease-in-out; /* slow crossfade for a seamless blend */
}
.lounge-bg img.is-active { opacity: 1; }
/* The white-backdrop photo frames its machines more centrally than the
   others — bias its crop so they sit further right, clear of the feather */
.lounge-bg img[src*="lounge-white"] { object-position: 18% center; }
.lounge-bg img[src*="lounge-vine"],
.lounge-bg img[src*="lounge-darkwood"] { object-position: 24% center; }
/* Ken Burns: each slide gets its own direction (in, out, drift left,
   drift right) so consecutive slides blend into each other instead of
   repeating the same move. Long linear motion + a slow crossfade keeps
   the handoff seamless. */
@keyframes kb-in    { from { transform: scale(1); }                     to { transform: scale(1.05); } }
@keyframes kb-out   { from { transform: scale(1.045); }                 to { transform: scale(1); } }
@keyframes kb-left  { from { transform: scale(1.015); }                 to { transform: scale(1.06) translateX(-1.2%); } }
@keyframes kb-right { from { transform: scale(1.055) translateX(1%); }  to { transform: scale(1.005); } }
.lounge-bg img.is-active { animation: kb-in 9s linear forwards; }
.lounge-bg img:nth-child(2).is-active { animation-name: kb-out; }
.lounge-bg img:nth-child(3).is-active { animation-name: kb-left; }
.lounge-bg img:nth-child(4).is-active { animation-name: kb-right; }
/* light wash only — the photos stay clearly visible */
.lounge-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    rgba(255, 255, 255, 0.85) 0%,
    rgba(255, 255, 255, 0.5) 22%,
    rgba(255, 255, 255, 0.08) 45%,
    rgba(255, 255, 255, 0.03) 100%);
}
.lounge .container { position: relative; z-index: 1; }
.lounge-content { max-width: 40rem; }
.lounge-headwrap { position: relative; z-index: 1; }
/* Lounge column is left-aligned top to bottom */
.lounge-head {
  max-width: 40rem;
  margin-bottom: 1.6rem;
  text-align: left;
}
.lounge-content { text-align: left; }
/* no rainbow rule beside this section's script heading */
.lounge-head .eyebrow::before,
.lounge-head .eyebrow::after { content: none; }

/* Two columns on the web; one column on phones (see the mobile block).
   Items never wrap, so the block stays short and the machines sit high. */
.lounge-content .check-list {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem 1.6rem;
  text-align: left;
  font-size: 0.85rem;
}
.lounge-content .check-list li { white-space: nowrap; }
.lounge-head .eyebrow { margin-bottom: 0.85rem; }
.lounge-head .lounge-title { margin-bottom: 0; }

.check-list {
  list-style: none;
  padding: 0;
  margin: 1.4rem 0;
  display: grid;
  gap: 0.55rem;
}
.check-list li {
  padding-left: 1.7rem;
  position: relative;
  font-size: 0.95rem;
}
.check-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.5em;
  width: 7px; height: 7px;
  background: var(--brand-yellow);
}
.check-list li:nth-child(4n+2)::before { background: var(--brand-orange); }
.check-list li:nth-child(4n+3)::before { background: var(--brand-red); }
.check-list li:nth-child(4n+4)::before { background: var(--brand-blue); }
.check-list.light li::before { background: var(--brand-yellow); }
.check-list.light li:nth-child(4n+2)::before { background: var(--brand-orange); }
.check-list.light li:nth-child(4n+3)::before { background: var(--brand-red); }
.check-list.light li:nth-child(4n+4)::before { background: #6FA0EA; }

/* Two-column lists flow row-wise, so colour them in PAIRS — that makes
   each column read yellow / orange / red / blue from the top down. */
.lounge-content .check-list li:nth-child(8n+1)::before,
.lounge-content .check-list li:nth-child(8n+2)::before,
.check-list.two-col li:nth-child(8n+1)::before,
.check-list.two-col li:nth-child(8n+2)::before { background: var(--brand-yellow); }
.lounge-content .check-list li:nth-child(8n+3)::before,
.lounge-content .check-list li:nth-child(8n+4)::before,
.check-list.two-col li:nth-child(8n+3)::before,
.check-list.two-col li:nth-child(8n+4)::before { background: var(--brand-orange); }
.lounge-content .check-list li:nth-child(8n+5)::before,
.lounge-content .check-list li:nth-child(8n+6)::before,
.check-list.two-col li:nth-child(8n+5)::before,
.check-list.two-col li:nth-child(8n+6)::before { background: var(--brand-red); }
.lounge-content .check-list li:nth-child(8n+7)::before,
.lounge-content .check-list li:nth-child(8n+0)::before,
.check-list.two-col li:nth-child(8n+7)::before,
.check-list.two-col li:nth-child(8n+0)::before { background: #6FA0EA; }
.check-list.two-col { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.note-card {
  background: var(--band-soft);
  border-left: 2px solid var(--ink);
  padding: 1rem 1.3rem;
  margin: 1.5rem 0;
  font-size: 0.92rem;
  color: var(--ink-soft);
}
.note-card p { margin: 0; }

.price-line {
  font-size: 1rem;
  color: var(--ink-soft);
  margin: 1.4rem 0;
}
.price {
  font-family: var(--font-serif);
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--ink);
  margin-left: 0.3rem;
}
/* The previous price, struck through. Deliberately smaller and lighter so
   the eye lands on the current price, not the old one. Hidden entirely if
   pricing.loungeOriginalPrice is null (main.js empties the element). */
.price-was {
  font-family: var(--font-serif);
  font-size: 1.15rem;
  font-weight: 400;
  color: var(--ink-soft);
  opacity: 0.65;
  margin-left: 0.3rem;
  text-decoration-thickness: 1px;
}
.price-was:empty { display: none; }

/* Pricing call-outs read as a row of small badges, not stacked sentences */
.price-notes {
  list-style: none;
  padding: 0;
  margin: 0.1rem 0 1.7rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.price-notes li {
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-soft);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.42rem 0.75rem;
  white-space: nowrap;
}
.price-notes b { font-weight: 700; color: var(--ink); }
.price-fine { margin-top: 1.2rem; max-width: 28rem; }

/* "Free Play" chip — the one whisper of LED pink */
.chip-led {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brand-blue);
  background: rgba(47, 111, 208, 0.08);
  border: 1px solid rgba(47, 111, 208, 0.45);
  border-radius: 999px;
  padding: 0.32rem 0.75rem;
  margin-left: 0.6rem;
  vertical-align: middle;
}

/* ---------- How it works ---------- */
.steps {
  list-style: none;
  padding: 0;
  margin-top: 3rem;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.6rem;
}
.step {
  text-align: center;
  padding: 1rem 0.6rem;
}
.step-number {
  display: inline-grid;
  place-items: center;
  width: 46px; height: 46px;
  border-radius: 50%;
  font-family: var(--font-serif);
  font-size: 1.15rem;
  color: var(--ink);
  border: 1px solid var(--ink);
  margin-bottom: 1.1rem;
}
.step h3 { font-size: 1.02rem; }
.step p { color: var(--ink-soft); font-size: 0.92rem; }

/* ---------- Footprint diagram ---------- */
.footprint-diagram {
  margin: 0;
  background: var(--paper);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-photo);
  padding: 1.6rem;
}
.footprint-diagram svg { width: 100%; height: auto; }
.footprint-diagram figcaption {
  font-size: 0.83rem;
  color: var(--ink-soft);
  margin-top: 0.8rem;
  text-align: center;
}
.d-wall { fill: #CFCBC4; }
.d-machine { fill: var(--paper); stroke: var(--ink); stroke-width: 1.5; }
.d-machine-label { font-family: var(--font-sans); font-size: 13px; fill: var(--ink-soft); }
.d-player { fill: var(--band-soft); stroke: #9B968E; stroke-width: 1.5; stroke-dasharray: 5 5; }
.d-label { font-family: var(--font-sans); font-size: 12.5px; letter-spacing: 0.04em; fill: var(--ink-soft); }
.d-measure { stroke: var(--ink); stroke-width: 1; fill: none; }

/* ---------- Corporate / trade show: the black band ---------- */
.corporate {
  background: #101010;
  color: #E8E8E8;
}
.corporate h2 { color: #FFFFFF; }
.corporate .eyebrow { color: #FFFFFF; }
.corporate p { color: #BDBDBD; }
.check-list.light li { color: #DFDFDF; }
.check-list.light li::before { border-color: var(--brand-yellow); }
.corporate .btn-gold { margin-top: 0.7rem; }
.corporate .split-media img {
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.5);
}

/* ---------- Gallery (masonry, white-matted prints) ---------- */
.masonry {
  margin-top: 3rem;
  columns: 3 16rem;
  column-gap: 1.4rem;
}
.masonry img {
  width: 100%;
  margin-bottom: 1.4rem;
  box-shadow: 0 10px 24px rgba(20, 20, 20, 0.07);
  break-inside: avoid;
  transition: transform 0.25s ease;
}
.masonry img:hover { transform: scale(1.01); }

/* ---------- Pricing ---------- */
.pricing-grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: 1.6rem;
  margin-top: 3rem;
  align-items: start;
}
.pricing-card.featured {
  border-top: 3px solid var(--ink);
  padding: 2.4rem 2.2rem;
}
.pricing-amount {
  font-family: var(--font-serif);
  font-size: 1.7rem;
  font-weight: 700;
  margin-bottom: 1.2rem;
}
.pricing-unit {
  font-family: var(--font-sans);
  font-size: 0.88rem;
  font-weight: 400;
  color: var(--ink-soft);
}
.pricing-side { display: grid; gap: 1.2rem; }
.pricing-side .pricing-card p { color: var(--ink-soft); font-size: 0.93rem; }
.pricing-side .pricing-amount { font-size: 1.35rem; margin-bottom: 0.2rem; }

/* ---------- Testimonials: spaced tiles ---------- */
.testimonials .card-grid { gap: 1.6rem; margin-top: 3.4rem; }
.quote-card {
  position: relative;
  background: var(--paper);
  border: 1px solid var(--line);
  text-align: center;
  padding: 3rem 1.9rem 2.2rem;
  margin: 0;
}
/* a quiet rainbow bar across the top of each tile */
.quote-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg,
    var(--brand-yellow), var(--brand-orange), var(--brand-red), var(--brand-blue));
}
.quote-card blockquote {
  font-family: var(--font-serif);
  font-size: 1rem;
  font-style: italic;
  line-height: 1.8;
  margin: 0 0 1.7rem;
  color: var(--ink);
}
.quote-card figcaption {
  display: grid;
  gap: 0.25rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
}
.quote-card figcaption b {
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink);
}
.quote-card figcaption span {
  font-size: 0.8rem;
  color: var(--ink-soft);
}

/* ---------- FAQ: flat hairline accordion ---------- */
.faq-list {
  max-width: 46rem;
  margin-top: 3rem;
  border-top: 1px solid var(--line);
}
.faq-item {
  border-bottom: 1px solid var(--line);
}
.faq-item summary {
  list-style: none;
  cursor: pointer;
  padding: 1.2rem 3rem 1.2rem 0.2rem;
  font-weight: 700;
  font-size: 0.95rem;
  position: relative;
  transition: color 0.2s ease;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "";
  position: absolute;
  right: 0.9rem; top: 50%;
  width: 0.5em; height: 0.5em;
  border-right: 1.5px solid var(--ink);
  border-bottom: 1.5px solid var(--ink);
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.25s ease;
}
.faq-item[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.faq-item[open] summary { color: var(--ink-soft); }
.faq-answer {
  padding: 0 2.5rem 1.3rem 0.2rem;
  color: var(--ink-soft);
  font-size: 0.94rem;
}

/* ---------- Final CTA / form: the gray band returns ---------- */
.final-cta {
  background: var(--band);
}
.form-wrap {
  max-width: 46rem;
  margin-top: 3rem;
  background: var(--paper);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-photo);
  padding: clamp(1.6rem, 4vw, 2.8rem);
}

.form-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.2rem;
}
.form-field { margin-bottom: 1.2rem; }
.form-field label, .checks legend {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin-bottom: 0.45rem;
}
.form-field label span { color: var(--error); }

input, select, textarea {
  width: 100%;
  font: inherit;
  font-size: 0.95rem;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid #C9C5BE;
  border-radius: 0;
  padding: 0.75rem 0.9rem;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(20, 20, 20, 0.08);
}
input[aria-invalid="true"], select[aria-invalid="true"] {
  border-color: var(--error);
}
textarea { resize: vertical; }

.checks {
  border: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.35rem;
}
.checks label {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  font-weight: 400;
  font-size: 0.92rem;
  letter-spacing: 0;
  text-transform: none;
  margin: 0;
}
.checks input[type="checkbox"] {
  width: 1.05rem; height: 1.05rem;
  accent-color: var(--ink);
  padding: 0;
}

.field-error {
  color: var(--error);
  font-size: 0.8rem;
  margin: 0.35rem 0 0;
}
.field-error:empty { display: none; }

.form-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  align-items: center;
  margin-top: 0.6rem;
}
.form-status { margin-top: 1rem; font-size: 0.9rem; color: var(--ink-soft); }
.form-status.is-error { color: var(--error); }

.form-success {
  text-align: center;
  padding: 2.5rem 1rem;
}
.form-success h3 {
  font-family: var(--font-script);
  font-size: 2.6rem;
  text-transform: lowercase;
  color: var(--ink);
}

/* ---------- Footer ---------- */
.site-footer {
  background: #101010;
  color: #BDBDBD;
  padding-block: 3.8rem 1.8rem;
  font-size: 0.9rem;
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 2.5rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.site-footer .wordmark { color: #FFFFFF; font-size: 1.2rem; display: inline-block; margin-bottom: 0.4rem; }
/* Footer logo: dark version — screen blends its black background
   straight into the footer */
.site-footer .wordmark-logo { margin: 0 0 0.9rem; }
.site-footer .wordmark-logo img {
  mix-blend-mode: screen;
  height: 44px;
}
.footer-area { font-size: 0.82rem; opacity: 0.7; }
.site-footer h3 {
  font-family: var(--font-sans);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #FFFFFF;
  margin-bottom: 0.9rem;
}
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.site-footer a { color: #DDDDDD; text-decoration: none; }
.site-footer a:hover { color: var(--brand-yellow); text-decoration: underline; }

.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding-top: 1.6rem;
  font-size: 0.8rem;
  opacity: 0.75;
}
.footer-legal { display: flex; gap: 1.4rem; }
.footer-bottom p { margin: 0; }

/* ---------- Scroll animations ---------- */
.fade-up {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-up.is-visible {
  opacity: 1;
  transform: none;
}
.no-observer .fade-up { opacity: 1; transform: none; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .fade-up { opacity: 1; transform: none; }
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

/* Tablet */
@media (max-width: 60rem) {
  /* keep three-up grids from orphaning a lone tile on the second row */
  .card-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
  .card-grid.addons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .split { grid-template-columns: 1fr; }
  .split.reverse .split-copy { order: 0; }
  /* the brands & booths column centres, and its photo spans the page */
  .corporate .split-copy { text-align: center; }
  .corporate h2::after { margin-inline: auto; transform: translateX(-12px); }
  .corporate .check-list {
    display: inline-grid;
    text-align: left;
    justify-content: center;
  }
  .corporate .split-media {
    width: 100vw;
    max-width: none;
    margin-left: calc(50% - 50vw);
  }
  .corporate .split-media img { width: 100%; }
  .split-media { max-width: 34rem; margin-inline: auto; }
  .pricing-grid { grid-template-columns: 1fr; }
  .masonry { columns: 2 14rem; }

  /* Narrow widths: title and subtitle sit centered ABOVE the machine,
     which shows in full — no crop. Buttons move to their own stack
     below the band. */
  .hero-band {
    display: flex;
    flex-direction: column;
    min-height: 0;
    text-align: center;
    padding-top: clamp(0.5rem, 1.5vw, 1.25rem);
  }
  .hero-band .container { display: block; width: min(40rem, 92%); }
  .hero-copy {
    max-width: none;
    margin-inline: auto;
    text-align: center;
  }
  .hero-actions-band, .trust-line-band { display: none; }

  /* Events photos read as tidy cards, not full-bleed posters */
  .events .event-card img { aspect-ratio: 16 / 10; }

  /* Builder stacks: image, then centred options */
  .builder-grid { grid-template-columns: 1fr; max-width: 34rem; }
  .builder-options { text-align: center; }
  .builder-swatches { justify-content: safe center; }
  .builder-group { margin-bottom: 1.3rem; }
  .swatch { font-size: 0.74rem; padding: 0.42rem 0.8rem 0.42rem 0.48rem; gap: 0.45rem; }
  .swatch-more { padding-left: 0.85rem; }
  .swatch-chip { width: 22px; height: 22px; }

  /* Lounge on stacked layouts: a swipeable, auto-advancing photo
     carousel ABOVE the copy — no Ken Burns, no crossfade */
  .lounge { display: flex; flex-direction: column; padding-top: 0; }
  .lounge-headwrap { order: 1; padding-top: var(--section-pad); }
  /* once stacked, the whole lounge column centres */
  .lounge-head, .lounge-content { text-align: center; margin-inline: auto; }
  .lounge-content .check-list {
    display: inline-grid;
    text-align: left;
    justify-content: center;
  }
  .lounge-content .price-notes { justify-content: center; }
  .lounge-content .price-fine { margin-inline: auto; }
  .lounge-title::after { margin-inline: auto; transform: translateX(-12px); }
  .lounge-bg { order: 2; }
  .lounge .container:not(.lounge-headwrap) { order: 3; }
  .lounge-bg {
    position: relative;
    inset: auto;
    height: 60vw;
    max-height: 22rem;
    margin-bottom: 2rem;
    -webkit-mask-image: none;
    mask-image: none;
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }
  .lounge-bg::-webkit-scrollbar { display: none; }
  .lounge-bg img {
    position: static;
    flex: 0 0 100%;
    scroll-snap-align: center;
    opacity: 1;
    transition: none;
    animation: none !important;
    object-position: center;
  }
  .lounge-bg::after { display: none; }

  .lounge-head { display: block; margin-bottom: 0; text-align: center; }
  /* rules reach the screen edges on phones */
  .center .eyebrow::before, .center .eyebrow::after,
  .eyebrow-ruled::before, .eyebrow-ruled::after { width: 50vw; }
  /* breathing room between the dots and the photo carousel */
  .lounge-headwrap { padding-bottom: 2.2rem; }
  .lounge-title::after { margin-inline: auto; transform: translateX(-12px); }
  .hero-photo {
    position: static;
    order: 2;
    display: flex;
    justify-content: center;
    margin-top: clamp(1rem, 3vw, 2rem);
  }
  .hero-img {
    position: static;
    right: auto;
    bottom: auto;
    transform: none;
    height: auto;
    width: min(62vw, 28rem);
    opacity: 1;
  }
  .hero-cta {
    display: block;
    padding-block: 1.6rem 0.4rem;
    text-align: center;
  }
  .hero-cta .hero-actions {
    justify-content: center;
    margin-block: 0 1rem;
  }
}

/* Mobile nav + small screens */
@media (max-width: 48rem) {
  :root { --section-pad: 3.25rem; }

  /* Tighter mobile type scale */
  h1 { font-size: 1.75rem; }
  h2 { font-size: 1.45rem; }
  h3 { font-size: 1.08rem; }
  .eyebrow { font-size: 1.8rem; }
  .lead { font-size: 0.98rem; }
  body { line-height: 1.62; }
  .section h2::after { margin-top: 0.85rem; }

  /* Tighter mobile hero: machine slides further off the right edge,
     CTAs stack full-width below the band. The whole hero (band + buttons)
     fills the first phone screen — the next section starts below the fold. */
  .hero {
    display: flex;
    flex-direction: column;
    /* viewport minus sticky header (~5.6rem) and the games ticker (~62px) */
    min-height: calc(100vh - 5.6rem - 62px);
    min-height: calc(100svh - 5.6rem - 62px); /* stable on iOS Safari */
  }
  .hero-band {
    flex: 1;
    min-height: clamp(16rem, 72vw, 22rem);
    justify-content: space-between; /* copy up top, machine at the base */
  }
  .hero-band .container { padding-top: 1.5rem; }
  /* The whole hero carries the gray, so the machine can bleed down past
     the band and feather away behind the buttons. */
  .hero { background: #ECEAEB; }
  .hero-band { background: transparent; overflow: visible; }
  .hero-photo { margin-bottom: -1.6rem; }  /* photo eases in behind the CTAs */
  .hero-cta {
    width: 100%;
    max-width: none;
    padding: 3.1rem 4% 2.6rem;
    background: transparent;
    position: relative;
    z-index: 2;                            /* buttons sit over the photo */
  }

  /* Title stays on ONE line, scaling with the viewport;
     subtitle is pinned to a single line too */
  .hero-copy h1 {
    font-size: clamp(1rem, 6.2vw, 2.2rem);
    white-space: nowrap;
  }
  /* The machine fills ALL the space between the subtitle and the CTA
     stack — as large as the screen allows, never overflowing the fold */
  .hero-photo {
    flex: 1 1 0;
    align-self: stretch; /* full band width for the absolute image inside */
    min-height: 0;
    position: relative;
    margin-top: 0.9rem;
  }
  .hero-img {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: auto;
    margin-inline: auto;
    width: 100%;
    height: 93%;          /* slightly smaller machine, space beneath it */
    max-width: none;
    /* contain = the whole machine shows, control panel and all, scaled to
       the screen width with natural space beneath it */
    object-fit: contain;
    object-position: center top;
    /* soft edges; the bottom fade starts low so the control panel stays
       readable and only dissolves as it reaches the buttons */
    -webkit-mask-image:
      linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%),
      linear-gradient(180deg, transparent 0, #000 4%, #000 76%, transparent 100%);
    mask-image:
      linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%),
      linear-gradient(180deg, transparent 0, #000 4%, #000 76%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
  }
.hero-sub {
    white-space: nowrap; /* always a single line */
    font-size: clamp(0.5rem, 2.5vw, 0.8rem);
    letter-spacing: 0.13em;
    margin-bottom: 0;
  }
  .hero-cta .hero-actions {
    flex-direction: column;
    align-items: center;
    gap: 0.7rem;
  }
  .hero-cta .btn {
    width: min(100%, 20rem);
    text-align: center;
  }
  .hero-actions { margin-block: 1.4rem 1rem; gap: 0.7rem; }
  .btn { padding: 0.9rem 1.7rem; }
  .card-grid { gap: 1rem; margin-top: 2.2rem; }
  .benefit-card, .event-card, .addon-card { padding: 1.5rem 1.3rem; }
  .steps { gap: 0.6rem; margin-top: 2.2rem; }
  .step { padding: 0.8rem 0.4rem; }
  .form-wrap, .faq-list, .pricing-grid, .masonry { margin-top: 2.2rem; }
  .pricing-card.featured { padding: 1.8rem 1.4rem; }
  .faq-item summary { font-size: 0.9rem; padding-block: 1.05rem; }
  .faq-answer { padding-right: 1.5rem; }
  .footprint-diagram { padding: 1rem; }
  .quote-card { padding: 0.8rem 0.4rem; }

  /* Slimmer ticker on phones */
  .ticker { padding-block: 0.4rem; }
  .ticker-tile { gap: 0.3rem; }
  .ticker-tile img { height: 34px; }
  .ticker-tile b { font-size: 0.5rem; letter-spacing: 0.12em; }
  .ticker-callout b { font-size: 1.05rem; }
  .ticker-callout span { font-size: 0.52rem; }

  .card-grid.three, .card-grid.addons, .steps { grid-template-columns: 1fr; }
  /* stacked: there is no "inward", and a mirror would reverse the
     ARCADE / PRESS START lettering — show it the right way round */
  .machine-left img { transform: none; }
  .check-list.two-col { grid-template-columns: 1fr; }
  .lounge-content .check-list { grid-template-columns: 1fr; font-size: 0.95rem; }
  .lounge-content .check-list li { white-space: normal; }
  /* stacked lists read top to bottom, so the rainbow runs in order again */
  .lounge-content .check-list li::before,
  .check-list.light li::before { background: var(--brand-yellow); }
  .lounge-content .check-list li:nth-child(4n+2)::before,
  .check-list.light li:nth-child(4n+2)::before { background: var(--brand-orange); }
  .lounge-content .check-list li:nth-child(4n+3)::before,
  .check-list.light li:nth-child(4n+3)::before { background: var(--brand-red); }
  .lounge-content .check-list li:nth-child(4n+4)::before,
  .check-list.light li:nth-child(4n+4)::before { background: #6FA0EA; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .masonry { columns: 1; }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
}

/* Short phones (e.g. iPhone SE): smaller machine so title, machine,
   and buttons still share one screen */
@media (max-width: 48rem) and (max-height: 700px) {
  .hero-band .container { padding-top: 1.1rem; }
  .hero-copy h1 { font-size: min(1.5rem, 6.2vw); }
  /* object-fit: contain sizing handles the smaller machine automatically */
}


/* ---------- Full-screen menu (switches over well before phone width) ---------- */
@media (max-width: 64rem) {
  .nav-toggle { display: block; }

  .site-nav {
    position: fixed;
    inset: 0;
    z-index: 90;              /* under the header bar, so the close button shows */
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0;
    background: var(--paper);
    padding: 6rem 1.5rem 3rem;
    overflow-y: auto;
    height: 100vh;
    height: 100dvh;
  }
  .site-nav.is-open { display: flex; }
  /* keep the logo and close button above the overlay so the menu
     can always be dismissed */
  .site-header .wordmark,
  .nav-toggle { position: relative; z-index: 95; }
  /* the header's backdrop-filter would otherwise become the containing
     block for the fixed menu and trap it inside the bar */
  .site-header:has(.site-nav.is-open) {
    background: var(--paper);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  body.nav-open { overflow: hidden; }   /* the page behind stays put */

  .site-nav ul {
    flex-direction: column;
    align-items: center;
    gap: 0;
    width: min(26rem, 100%);
  }
  .site-nav ul li { width: 100%; }
  .site-nav ul a {
    display: block;
    text-align: center;
    padding: 1.05rem 0.3rem;
    font-size: 1.15rem;
    border-bottom: 1px solid var(--line);
  }
  .site-nav ul li:first-child a { border-top: 1px solid var(--line); }
  .nav-cta {
    margin-top: 2rem;
    text-align: center;
    padding: 1.05rem 2.6rem;
    font-size: 0.74rem;
  }
  .nav-social { justify-content: center; margin-top: 2rem; }
}

/* Honeypot spam trap — visually and programmatically hidden, but still
   present in the DOM for bots to fall into. Not display:none, because
   some bots skip those. */
.hp-field {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
