/* ============================================================
   REVXL BOOKING FUNNEL — STYLES  ·  "BUSINESS MODE" SKIN
   Calm, premium re-skin of the old "Jarvis HUD" funnel.
   EFI / REVUP tokens kept verbatim; HUD chrome stripped
   (no bracket corners, no // STEP mono kickers, no glow-pulse).
   Mobile-first: base targets ~390px, enhanced at
   >=768px (tablet) and >=1200px (desktop).
   Fonts (Barlow Condensed / Barlow / JetBrains Mono) +
   Calendly widget.css load from index.html <head>.
   ============================================================ */

:root {
  /* color */
  --ink:   #f5f1ea;                /* warm off-white — primary text */
  --bg:    #070503;                /* warm near-black — page ground */
  --amber: #f0a13c;                /* engine amber — primary action */
  --gold:  #ffc869;                /* gold — emphasis + hover state */
  --cyan:  #3fd9e8;                /* HUD cyan — selected-answer accent */
  --dim:   rgba(245,241,234,0.62); /* muted ink — captions, idle nav */
  --on-cyan: #04222a;              /* dark teal — text on cyan fills */

  /* type families */
  --font-display: "Barlow Condensed", sans-serif;  /* 800/900 */
  --font-body:    "Barlow", system-ui, sans-serif; /* 400/500/600/800 */
  --font-mono:    "JetBrains Mono", monospace;      /* 400/600 */

  /* radii */
  --r-btn: 4px;
  --r-card: 10px;
  --r-pill: 999px;

  /* signature shadows / glows */
  --glow-amber: 0 0 40px rgba(240,161,60,0.35);
  --glow-cyan-text: 0 0 60px rgba(63,217,232,0.38);
  --lift-card: 0 14px 40px rgba(0,0,0,0.5), 0 0 26px rgba(240,161,60,0.12);
  --legibility: 0 2px 6px rgba(0,0,0,0.9), 0 4px 18px rgba(0,0,0,0.7), 0 8px 40px rgba(0,0,0,0.55);

  /* glass surfaces (derived from design-system cards) */
  --glass:        linear-gradient(165deg, rgba(255,255,255,0.045), rgba(255,255,255,0.01));
  --glass-border: rgba(255,255,255,0.12);
  --glass-hover-border: rgba(240,161,60,0.5);
  --glass-sel-border:   rgba(63,217,232,0.6);

  /* business-mode additions */
  --card-bg:      #100c08;                 /* floating dark-glass card body */
  --card-border:  rgba(240,161,60,0.22);   /* 1px amber-tinted card frame */
  --card-shadow:  0 20px 60px rgba(0,0,0,0.55), 0 0 40px rgba(240,161,60,0.06);
  --sel-fill:     rgba(63,217,232,0.10);   /* faint cyan fill on selected answer */
  --sel-glow:     0 0 22px rgba(63,217,232,0.22);

  /* layout */
  --shell-max: 720px;   /* quiz column cap */
  --page-max: 1080px;   /* landing sales column cap */
  --card-max: 560px;    /* floating card cap */
  --spin-ms: 340ms;     /* card-spin — MUST match funnel.js SPIN_MS */
}

/* ---------- animations ---------- */
@keyframes screenIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* card-spin OUT — subtle Y-axis tilt + lift + fade (mobile-friendly, no 3D wheel) */
@keyframes cardSpinOut {
  from { opacity: 1; transform: perspective(1100px) rotateY(0deg)   translateY(0)    scale(1); }
  to   { opacity: 0; transform: perspective(1100px) rotateY(-12deg) translateY(-10px) scale(0.97); }
}
/* card-spin IN — settles from the opposite tilt */
@keyframes cardSpinIn {
  from { opacity: 0; transform: perspective(1100px) rotateY(12deg)  translateY(10px)  scale(0.97); }
  to   { opacity: 1; transform: perspective(1100px) rotateY(0deg)   translateY(0)     scale(1); }
}

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

html {
  scrollbar-width: thin;
  scrollbar-color: rgba(240,161,60,0.4) transparent;
  scroll-behavior: smooth;
}

body {
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(240,161,60,0.06), transparent 60%),
    var(--bg);
  background-attachment: fixed;
  color: var(--ink);
  font-family: var(--font-body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

img, svg, iframe { display: block; max-width: 100%; }
a { color: var(--cyan); }

/* the [hidden] attribute drives screen + result + ladder visibility (funnel.js) */
[hidden] { display: none !important; }

/* visually-hidden — keeps the semantic <h1> for SEO / screen readers without altering the layout */
.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================
   PROGRESS BAR — spans the 6 numbered questions
   <div class="progress"><div class="progress-fill"></div></div>
   ============================================================ */
.progress {
  position: sticky;
  top: 0;
  z-index: 30;
  width: 100%;
  height: 4px;
  background: rgba(255,255,255,0.07);
  overflow: hidden;
}
.progress-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--amber), var(--gold));
  box-shadow: 0 0 14px rgba(240,161,60,0.55);
  border-radius: 0 var(--r-pill) var(--r-pill) 0;
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

/* ============================================================
   FUNNEL SHELL
   ============================================================ */
.funnel {
  width: 100%;
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 16px 56px;
}

/* ============================================================
   BRAND HEADER — persistent, compact
   header.brand > .logo ( .bolt · .logo-word ) + .decoder
   ============================================================ */
.brand {
  text-align: center;
  padding: 26px 12px 6px;
}
.logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
/* gold lightning-bolt bookends — sized to NOT overpower the semibold word */
.logo .bolt {
  width: 15px;
  height: auto;
  flex: 0 0 auto;
}
.logo-word {
  font-family: var(--font-body);
  font-weight: 600;                /* Barlow semibold — the locked logo weight */
  font-size: clamp(1.9rem, 8vw, 2.5rem);
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}
.logo-word .rev { color: var(--ink); }
.logo-word .xl  { color: var(--gold); }

/* decoder subhead — mirrors the mark's ink/gold highlight */
.decoder {
  margin-top: 8px;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: clamp(0.82rem, 3.4vw, 0.98rem);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--dim);
}
.decoder .rev { color: var(--ink); font-weight: 600; }
.decoder .xl  { color: var(--gold); font-weight: 600; }

/* ============================================================
   STAGE — amber radial spotlight behind the floating card
   .stage wraps every cycling section (.screen / .result / .ladder)
   ============================================================ */
.stage {
  position: relative;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 18px 0 8px;
}
/* soft amber spotlight — sits behind the card, never competes with it */
.stage::before {
  content: "";
  position: absolute;
  top: -4%;
  left: 50%;
  transform: translateX(-50%);
  width: min(140%, 760px);
  height: 560px;
  background: radial-gradient(50% 50% at 50% 38%,
              rgba(240,161,60,0.18),
              rgba(240,161,60,0.06) 45%,
              transparent 72%);
  filter: blur(6px);
  pointer-events: none;
  z-index: 0;
}

/* ============================================================
   SECTION — one cycling step (quiz / result / ladder rung)
   <section class="screen|result|ladder" ... hidden>
   Each holds a single .card. Sections stack centered on the stage.
   ============================================================ */
.screen,
.result,
.ladder {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--card-max);
  margin: 0 auto;
  padding: 8px 4px 20px;
}

/* ============================================================
   CARD — the floating dark-glass block (centerpiece)
   ============================================================ */
.card {
  position: relative;
  width: 100%;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: 14px;
  box-shadow: var(--card-shadow);
  padding: 28px 22px 30px;
  /* entrance is handled by .is-entering .card (cardSpinIn). NO base animation here —
     a base animation re-triggers when funnel.js removes .is-entering → screen flash. */
}

/* calm "Question X of 6" label — funnel.js fills .qlabel (NOT mono telemetry) */
.qlabel {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--amber);
  margin-bottom: 14px;
}

/* landing bridge line (under the qualifier question setup) */
.bridge {
  font-size: 0.96rem;
  line-height: 1.6;
  color: var(--dim);
  margin-bottom: 16px;
}

/* the question / result headline */
.card .question,
.card h2 {
  font-family: var(--font-display);
  font-weight: 800;
  text-transform: uppercase;
  line-height: 1.06;
  letter-spacing: 0.005em;
  color: var(--ink);
}
.card .question {
  font-size: clamp(1.5rem, 6.4vw, 2rem);
  margin-bottom: 18px;
}
.card h2 {
  font-size: clamp(1.45rem, 6vw, 1.95rem);
  margin-bottom: 12px;
}

/* hint under a multi-select question */
.hint {
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--dim);
  margin: -8px 0 16px;
}

/* RESONANCE (screen 3) — empathy beat. Smaller than a headline, multi-line,
   color-segmented (funnel.js sets it as innerHTML with .r1/.r2/.r3 spans). */
.screen[data-q="resonance"] .question {
  font-size: clamp(1.3rem, 5.2vw, 1.7rem);
  line-height: 1.26;
}
[data-resonance-text] .r1 { color: var(--ink); }
[data-resonance-text] .r2 { color: var(--gold); }
[data-resonance-text] .r3 { color: var(--ink); }

/* generic body copy inside result + ladder cards */
.result p,
.ladder p {
  font-size: 1rem;
  line-height: 1.62;
  color: rgba(245,241,234,0.85);
  margin-bottom: 16px;
}

/* muted stub note for TODO-WIRE copy */
.stub-note {
  display: inline;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: rgba(245,241,234,0.4);
}

/* ============================================================
   ANSWERS — two layouts
   .answers.rows  → stacked full-width list rows (icon left of label)
   .answers.boxes → icon-forward grid (icon above label, centered)
   Plain .answers (resonance/transition/ladder) → single column actions
   ============================================================ */
.answers {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  width: 100%;
}

/* ----- the answer button (business mode — NO bracket frames) ----- */
.answer {
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  text-align: left;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1.02rem;
  line-height: 1.3;
  color: var(--ink);
  letter-spacing: 0.01em;
  padding: 16px 18px;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-card);
  background: var(--glass);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform 0.2s ease, border-color 0.25s ease,
              box-shadow 0.25s ease, background 0.25s ease;
}

/* hover (desktop pointers) — warm amber lift, calm */
@media (hover: hover) {
  .answer:hover {
    transform: translateY(-2px);
    border-color: var(--glass-hover-border);
    box-shadow: var(--lift-card);
    background: linear-gradient(165deg, rgba(255,255,255,0.06), rgba(255,255,255,0.012));
  }
}

.answer:focus-visible {
  outline: none;
  border-color: var(--cyan);
  box-shadow: 0 0 0 2px rgba(63,217,232,0.4);
}

/* SELECTED answer = CYAN (EFI .is-selected convention):
   cyan border + faint cyan fill + soft glow. No pulse. */
.answer.is-selected {
  border-color: var(--glass-sel-border);
  background: linear-gradient(165deg, var(--sel-fill), rgba(63,217,232,0.02)), var(--card-bg);
  box-shadow: var(--sel-glow);
}
.answer.is-selected .answer-icon { color: var(--cyan); }

/* answer text — inherits the button's weight/size; fills remaining row width */
.answer-label { flex: 1 1 auto; }
.answers.boxes .answer-label { flex: 0 0 auto; }

/* ----- ROWS layout: icon sits left, label flows right ----- */
.answers.rows .answer {
  justify-content: flex-start;
}

/* ----- BOXES layout: icon-forward grid, icon stacked above label ----- */
.answers.boxes {
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.answers.boxes .answer {
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 12px;
  padding: 20px 14px;
  min-height: 132px;
  justify-content: center;
}
/* "All of the above" sits as a normal grid cell — 6 options read as a clean 3×2.
   (.is-all kept on the button for confetti/logic targeting, no layout override.) */

/* ============================================================
   ANSWER ICON — Tabler glyph(s) injected by icons.js
   Single glyph (amber/gold), OR a row of N copies for escalating
   data-count tiers (clients / revenue / budget).
   ============================================================ */
.answer-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;                /* spacing between escalating copies */
  flex: 0 0 auto;
  color: var(--amber);
  line-height: 0;
}
.answer-icon svg {
  width: 24px;
  height: 24px;
  display: block;
  stroke: currentColor;
  fill: none;
}
/* in BOXES, the single icon reads a touch larger + gold-leaning */
.answers.boxes .answer .answer-icon svg {
  width: 30px;
  height: 30px;
}
/* escalating count rows stay compact so 4–5 glyphs fit a row cleanly */
.answer-icon[data-count] svg {
  width: 20px;
  height: 20px;
}

/* ============================================================
   ADVANCE / CONTINUE — amber primary action
   <button class="advance" data-advance> (resonance, bottleneck, transition)
   ============================================================ */
.advance {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin-top: 6px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1.04rem;
  letter-spacing: 0.04em;
  text-align: center;
  text-decoration: none;
  color: var(--bg);
  padding: 16px 26px;
  border: none;
  border-radius: var(--r-btn);
  background: var(--amber);
  box-shadow: var(--glow-amber);
  cursor: pointer;
  transition: transform 0.2s ease, background 0.25s ease, opacity 0.2s ease;
}
@media (hover: hover) {
  .advance:hover {
    background: var(--gold);
    transform: translateY(-2px);
  }
}
.advance:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

/* fit-line on the transition card (screen 9) */
.fit-line {
  font-family: var(--font-display);
  font-weight: 800;
  text-transform: uppercase;
  line-height: 1.05;
  font-size: clamp(1.4rem, 6vw, 1.95rem);
  color: var(--amber);
  margin-bottom: 22px;
}

/* ============================================================
   OPT-IN FORM — screen 10  (KEPT, calmed to business mode)
   <form id="optin"> name / email / phone + submit
   ============================================================ */
#optin {
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: 100%;
}

/* first + last name side by side (maps cleanly to Calendly's First/Last fields) */
.optin-row { display: flex; gap: 12px; }
.optin-row input { flex: 1 1 0; min-width: 0; }

#optin label {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--amber);
  margin-bottom: -6px;
}

#optin input {
  width: 100%;
  font-family: var(--font-body);
  font-size: 1.02rem;
  color: var(--ink);
  padding: 15px 16px;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-btn);
  background: rgba(255,255,255,0.03);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
#optin input::placeholder { color: rgba(245,241,234,0.45); }
#optin input:hover { border-color: rgba(240,161,60,0.4); }
#optin input:focus {
  outline: none;
  border-color: var(--cyan);
  background: rgba(63,217,232,0.04);
  box-shadow: 0 0 0 2px rgba(63,217,232,0.25);
}
/* native invalid state after a submit attempt */
#optin input:user-invalid {
  border-color: #f06a6a;
  box-shadow: 0 0 0 2px rgba(240,106,106,0.22);
}

#optin button[type="submit"] {
  margin-top: 6px;
  width: 100%;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1.06rem;
  letter-spacing: 0.04em;
  color: var(--bg);
  padding: 17px 26px;
  border: none;
  border-radius: var(--r-btn);
  background: var(--amber);
  box-shadow: var(--glow-amber);
  cursor: pointer;
  transition: transform 0.2s ease, background 0.25s ease;
}
@media (hover: hover) {
  #optin button[type="submit"]:hover {
    background: var(--gold);
    transform: translateY(-2px);
  }
}
#optin button[type="submit"]:disabled {
  opacity: 0.55;
  cursor: progress;
  transform: none;
}

/* small reassurance / privacy line under the form */
.optin-fineprint {
  margin-top: 14px;
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  line-height: 1.6;
  color: var(--dim);
}

/* ============================================================
   RESULT SECTIONS — hidden until routed  (base KEPT)
   <section class="result" data-result="strategy|check" hidden>
   ============================================================ */
.result h2 .accent { color: var(--amber); }

/* CALENDLY CTA MOUNT — funnel.js injects the "Pick your time" button here;
   the booking opens as a FLOATING Calendly popup (cleaner than an inline embed). */
.cal-mount {
  width: 100%;
  margin-top: 22px;
  display: flex;
  justify-content: center;
}
.cal-open { min-width: 260px; }

/* ============================================================
   DOWNSELL LADDER — D1 $97 → D2 $27 → D3 free
   <section class="ladder" data-ladder="d1|d2|d3" hidden>
   .ladder-yes = amber CTA (styled via .advance) · .ladder-no = quiet text
   ============================================================ */
.ladder .answers {
  gap: 12px;
  margin-top: 4px;
}
/* .ladder-yes inherits .advance (amber primary) from markup; ensure link form sits right */
.ladder-yes { width: 100%; }

/* .ladder-no — quiet text button ("Not right now"), never competes with the CTA */
.ladder-no {
  width: 100%;
  margin-top: 2px;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.94rem;
  letter-spacing: 0.02em;
  color: var(--dim);
  background: none;
  border: none;
  padding: 10px 8px;
  cursor: pointer;
  transition: color 0.2s ease;
}
@media (hover: hover) {
  .ladder-no:hover { color: var(--ink); }
}

/* ============================================================
   CARD-SPIN TRANSITION
   funnel.js toggles .is-leaving (outgoing section) and
   .is-entering (revealed section); SPIN_MS = 340. We animate the
   inner .card so the spotlight + stage stay put. Subtle Y-tilt,
   NO 3D wheel. Wrapped in the reduced-motion guard below.
   ============================================================ */
.is-leaving .card {
  animation: cardSpinOut var(--spin-ms) cubic-bezier(0.4, 0, 0.6, 1) forwards;
}
.is-entering .card {
  animation: cardSpinIn var(--spin-ms) cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* ============================================================
   SHARED — error banner / network failure for the POST step
   ============================================================ */
.form-error {
  margin-top: 14px;
  font-size: 0.9rem;
  line-height: 1.55;
  color: #f06a6a;
}

/* ============================================================
   TESTIMONIAL RAIL — social-proof double-down (style-C, shrunk)
   aside.rail > .rail-label + .rail-track > figure.tcard
   Dark glass · 2px GOLD frame · CYAN left energy-rail · 44px avatar
   · Barlow-Condensed name. Visually SECONDARY to the card.
   ============================================================ */
.rail {
  width: 100%;
  max-width: var(--page-max);
  margin: 28px auto 0;
  padding: 0 4px;
  overflow: hidden;            /* clip the marquee track */
}
.rail-label {
  font-family: var(--font-display);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.1;
  font-size: clamp(1.05rem, 4.6vw, 1.4rem);
  color: var(--dim);            /* secondary to the card headline */
  text-align: center;
  margin-bottom: 16px;
}

/* auto-scrolling marquee — cards drift continuously (the "counter-scroll" rail).
   Track holds 2 copies of the set; translateX(-50%) loops one set seamlessly
   (per-card margin-right, not flex gap, keeps the seam exact). Pauses on hover;
   falls back to manual scroll under reduced-motion. */
@keyframes railScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.rail-track {
  display: flex;
  width: max-content;
  padding: 4px 2px 10px;
  animation: railScroll 132s linear infinite;
}
@media (hover: hover) {
  .rail:hover .rail-track { animation-play-state: paused; }
}

/* style-C testimonial card — shrunk */
.tcard {
  position: relative;
  flex: 0 0 auto;
  width: clamp(240px, 78vw, 300px);
  margin-right: 14px;          /* inter-card gap as margin → exact -50% marquee seam */
  display: grid;
  grid-template-columns: 44px 1fr;
  grid-template-areas:
    "avatar quote"
    "avatar name";
  align-items: start;
  gap: 4px 14px;
  background: var(--card-bg);
  border: 2px solid rgba(255,200,105,0.55);   /* 2px gold frame */
  border-radius: var(--r-card);
  padding: 16px 18px 16px 20px;
  overflow: hidden;
}
/* cyan left energy-rail */
.tcard::before {
  content: "";
  position: absolute;
  top: 0; left: 0; bottom: 0;
  width: 3px;
  background: var(--cyan);
  box-shadow: 0 0 12px rgba(63,217,232,0.5);
}
.tavatar {
  grid-area: avatar;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.04);
}
.tquote {
  grid-area: quote;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.9rem;
  line-height: 1.5;
  color: rgba(245,241,234,0.88);
}
.tname {
  grid-area: name;
  font-family: var(--font-display);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-size: 0.92rem;
  color: var(--gold);
  margin-top: 4px;
}

/* respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  /* spin collapses to a plain fade so the card never freezes mid-tilt */
  .is-leaving .card  { animation: none; opacity: 0; transform: none; }
  .is-entering .card { animation: none; opacity: 1; transform: none; }
  /* marquee stops; rail falls back to manual horizontal scroll */
  .rail-track { animation: none; width: auto; overflow-x: auto; }
}

/* ============================================================
   TABLET — >=768px
   ============================================================ */
@media (min-width: 768px) {
  .funnel { padding: 0 24px 64px; }
  .brand { padding-top: 24px; }

  .stage { padding-top: 18px; }
  .stage::before { height: 560px; width: min(120%, 820px); }

  /* compact card so it doesn't dominate the viewport — keeps the rail in view */
  .card { padding: 26px 30px 28px; }

  /* boxes can breathe; rows stay single-column (they're a ranked list) */
  .answers.boxes { gap: 14px; }

  /* rail cards firm up to a fixed comfortable width */
  .tcard { width: 300px; }
}

/* ============================================================
   DESKTOP — >=1200px
   ============================================================ */
@media (min-width: 1200px) {
  .brand { padding-top: 26px; }
  .stage { padding-top: 18px; }

  /* keep the card compact on wide screens — headline near mobile size, tighter padding */
  .card { padding: 28px 34px 30px; }

  .card .question { font-size: clamp(1.55rem, 1.6vw, 1.8rem); }

  .answer {
    font-size: 1.05rem;
    padding: 17px 20px;
  }
}
