/* ============================================================
   Enterprise Sweepstakes — Shared Stylesheet
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;600;700;800;900&family=Inter:wght@300;400;500;600;700;800&family=Source+Sans+Pro:wght@400;600;700&display=swap');

/* ── DIN Next LT Pro (brand font, non-condensed) ────────────── */
@font-face {
  font-family: 'DIN Next LT Pro';
  src: url('../DIN%20Next%20LT%20Pro%20Medium.otf') format('opentype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'DIN Next LT Pro';
  src: url('../DIN%20Next%20LT%20Pro%20Regular.otf') format('opentype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'DIN Next LT Pro';
  src: url('../din-next-lt-pro-light.ttf') format('truetype');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'DIN Next LT Pro';
  src: url('../DIN%20Next%20LT%20Pro%20Bold.otf') format('opentype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ── DIN Next LT Pro Bold Condensed (fonnts.com) ─────────────
   Used for body text and subheadlines — i.e. everywhere
   except the site header navigation. */
@font-face {
  font-family: 'DIN Next LT Pro Cond';
  src: url('../fonnts.com-DINNextLTPro-BoldCondensed-1.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'DIN Next LT Pro Cond';
  src: url('../din-next-lt-pro-light-condensed.ttf') format('truetype');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

/* ── Custom Properties ─────────────────────────────────────── */
:root {
  --green:        #4aa36a;
  --green-dark:   #4aa36a;
  --green-mid:    #4aa36a;
  --green-light:  #4aa36a;
  --green-pale:   rgba(74,163,106,.1);
  --white:        #ffffff;
  --off-white:    #f5f5f5;
  --light-gray:   #c8c8c8;
  --mid-gray:     #aaaaaa;
  --dark-gray:    #555555;
  --enterprise-gray: #414042;
  --text:         #414042; /* brand charcoal — replaces black */
  --text-secondary: #5a5a5a;
  --error:        #c0392b;
  --success:      #4aa36a;
  --warning:      #f39c12;

  /* Body text → DIN Next LT Pro Medium (500). Inherits from <body>. */
  --font:           'DIN Next LT Pro', 'Helvetica Neue', Arial, sans-serif;
  /* Headlines / subheadlines → fonnts.com DIN Next LT Pro Bold Condensed. */
  --font-condensed: 'DIN Next LT Pro Cond', 'DIN Next LT Pro', 'Barlow Condensed', 'Arial Narrow', Arial, sans-serif;
  /* Site header nav → DIN Next LT Pro (non-condensed). */
  --font-nav:       'DIN Next LT Pro', 'Helvetica Neue', Arial, sans-serif;

  --radius:    4px;
  --radius-lg: 8px;
  --radius-xl: 16px;
  --radius-pill: 999px;

  --shadow-sm: 0 1px 4px rgba(0,0,0,.10);
  --shadow-md: 0 4px 16px rgba(0,0,0,.14);
  --shadow-lg: 0 8px 40px rgba(0,0,0,.18);

  --ease: 0.2s ease;

  --max-w: 1200px;
  --hdr-h: 72px;
}

/* ── Reset ─────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
  scroll-behavior: smooth;
  overflow-x: hidden;
  /* Green html background fills the area visible during overscroll
     (keeps native scroll behavior intact — no overscroll-behavior trickery). */
  background: var(--green);
}
body {
  font-family: var(--font);
  font-weight: 500; /* DIN Next LT Pro Medium for all body copy */
  font-size: 16px;
  line-height: 1.6;
  color: var(--text);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* Subheadlines (h1–h6) default to the brand condensed bold */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-condensed);
  font-weight: 700;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--green); text-decoration: none; transition: color var(--ease); }
a:hover { color: var(--green-dark); }
ul { list-style: none; }
button { cursor: pointer; font-family: var(--font); border: none; background: none; }
input, select, textarea { font-family: var(--font); font-size: 1rem; }

/* ── Layout ────────────────────────────────────────────────── */
.container {
  width: 100%;
  max-width: var(--max-w);
  margin-inline: auto;
  padding-inline: 1.5rem;
}
.container--narrow { max-width: 760px; }
.container--wide   { max-width: 1400px; }

.section { padding-block: 5rem; }
.section--sm { padding-block: 3rem; }
.section--lg { padding-block: 7rem; }
.section--green  { background: var(--green); color: var(--white); }
.section--off-white { background: var(--off-white); }
.section--dark   { background: #0d1f14; color: var(--white); }

/* ── Header ────────────────────────────────────────────────── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  height: var(--hdr-h);
  background: transparent;
  box-shadow: none;
}
.site-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  height: 100%;
  padding-inline: 0;
  max-width: 100%;
}

/* Site Logo */
.site-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.site-logo__img {
  height: 44px;
  width: auto;
  object-fit: contain;
}
.site-logo__name {
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--white);
  letter-spacing: .01em;
  text-transform: uppercase;
  line-height: 1.15;
}
.site-logo__name small {
  display: block;
  font-size: .62rem;
  font-weight: 400;
  letter-spacing: .14em;
  opacity: .75;
}

/* Site Nav */
.site-nav {
  display: flex;
  align-items: center;
  /* Font scales with the viewport, and the gaps are in `em` so the spacing
     grows with the text — keeping the links evenly spaced relative to their
     size at every width (instead of a fixed 14px / 6rem that never scaled). */
  font-size: clamp(16px, 1.3vw, 24px);
  gap: 2em;
  padding-inline: 1.5rem;
}
/* Left nav: the three links spread across the ENTIRE left column — Home at the
   far-left edge, FAQs out by the logo, How to Play centered between them.
   space-between fills the whole 1fr grid column; the em gap is just a minimum
   so they never collide on narrower desktops. Padding insets them from the
   viewport edge (start) and from the logo (end). */
.site-nav--left {
  justify-content: space-between;
  gap: 1.5em;
  padding-inline: 3em 4em;
}
.site-nav--right { justify-content: flex-end; }
.site-nav a {
  /* Site header nav keeps the original (non-condensed) DIN Pro per direction. */
  font-family: var(--font-nav);
  font-weight: 700;
  font-size: 1em;              /* inherits the responsive size from .site-nav */
  line-height: 1.48;
  letter-spacing: 0;
  text-transform: uppercase;
  color: #ffffff;
  text-decoration: none;
  transition: color var(--ease);
  white-space: nowrap;
}
.site-nav a:hover { color: #ffffff; opacity: .85; }

/* Hamburger button — hidden on desktop */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  z-index: 110;
}
.hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--white);
  border-radius: 2px;
  transition: transform .25s ease, opacity .25s ease;
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav panel — hidden by default */
.mobile-nav {
  display: none;
  flex-direction: column;
  background: var(--enterprise-gray);
  padding: 0;
  max-height: 0;
  overflow: hidden;
  transition: max-height .3s ease, padding .3s ease;
}
.mobile-nav.open {
  max-height: 300px;
  padding: .75rem 0;
}
.mobile-nav a {
  font-family: var(--font-nav);
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #ffffff;
  text-decoration: none;
  padding: .75rem 1.5rem;
  border-bottom: 1px solid rgba(255,255,255,.08);
  transition: background var(--ease), color var(--ease);
}
.mobile-nav a:last-child { border-bottom: none; }
.mobile-nav a:hover { background: rgba(255,255,255,.08); color: var(--white); }

/* Legacy lang switcher (still used in some pages) */
.site-header__right {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  justify-content: flex-end;
}
.lang-switcher {
  display: flex;
  align-items: center;
  gap: .25rem;
}
.lang-btn {
  padding: .28rem .45rem;
  font-size: .75rem;
  font-weight: 600;
  color: rgba(255,255,255,.7);
  border-radius: var(--radius);
  transition: all var(--ease);
  letter-spacing: .04em;
  border: 1px solid transparent;
  background: none;
  cursor: pointer;
}
.lang-btn:hover,
.lang-btn.active {
  color: var(--white);
  background: rgba(255,255,255,.15);
  border-color: rgba(255,255,255,.3);
}
.lang-btn.active { font-weight: 700; }
.lang-divider { color: rgba(255,255,255,.3); font-size: .75rem; }
.header-cta {
  padding: .5rem 1.25rem;
  background: var(--white);
  color: var(--green);
  border-radius: var(--radius);
  font-size: .875rem;
  font-weight: 700;
  transition: all var(--ease);
  white-space: nowrap;
}
.header-cta:hover {
  background: var(--off-white);
  color: var(--green-dark);
}

/* ── Language Dropdown (hero) ──────────────────────────────── */
.lang-dropdown {
  position: relative;
}
.lang-dropdown-btn {
  background: rgba(0,0,0,.45);
  color: var(--white);
  border: 2px solid rgba(255,255,255,.55);
  padding: .6rem 1.25rem;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: .95rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--ease);
}
.lang-dropdown-btn:hover { background: rgba(0,0,0,.65); }
.lang-dropdown-menu {
  display: none;
  position: absolute;
  bottom: calc(100% + 8px);
  right: 0;
  background: #1a1a1a;
  border: 1px solid rgba(255,255,255,.15);
  min-width: 170px;
  z-index: 10;
}
.lang-dropdown.open .lang-dropdown-menu { display: block; }
.lang-dropdown-menu .lang-btn {
  display: block;
  width: 100%;
  text-align: left;
  padding: .65rem 1.25rem;
  color: rgba(255,255,255,.75);
  font-size: .9rem;
  font-weight: 600;
  border-radius: 0;
  border: none;
  letter-spacing: .03em;
}
.lang-dropdown-menu .lang-btn:hover { background: var(--green); color: var(--white); }
.lang-dropdown-menu .lang-btn.active { background: var(--green-dark); color: var(--white); }

/* ── Hero (campaign main hero) ─────────────────────────────── */
.hero-main {
  position: relative;
  /* Lock to the desktop key-visual's aspect (1440x749) so the full
     image is visible without cropping. */
  aspect-ratio: 1440 / 749;
  min-height: 520px;
  display: flex;
  flex-direction: column;
  color: var(--white);
  overflow: hidden;
  margin-top: calc(-1 * var(--hdr-h));
  padding-top: var(--hdr-h);
}
.hero-main__bg-wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.hero-main__bg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.persp-letter {
  display: inline-block;
  line-height: 1;
}
/* Body row: content pushed toward top so the car illustration below stays visible. */
.hero-main__body {
  position: relative;
  z-index: 2;
  flex: 1;
  display: flex;
  align-items: flex-start;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.hero-main__content {
  flex: 1;
  text-align: center;
  padding: 1rem 1.5rem 1rem;
}

/* "WIN A CAR" highlight — text inherits the surrounding subtitle font/size
   exactly, so the green paints behind the lettering with no padding and no
   resizing. line-height: 1 keeps the box height equal to the inherited
   font-size so the green hugs the cap area as tightly as possible.
   `transform: translateY` on the OUTER span positions the whole highlight
   (green + text together) on the page; `transform: translateY` on the INNER
   span shifts only the lettering vertically inside the green box, leaving
   the green's position and size untouched. */
.btn-win-a-car {
  display: inline-block;
  background: var(--green);
  color: var(--white);
  /* padding-block: top + bottom padding around the text. em units so the
     gap scales proportionally with the font-size of whatever context the
     box is dropped into.
     padding-inline: left + right padding. px units so you can tweak the
     box width 1–2 px at a time without affecting the vertical sizing. */
  padding-block: 0.05em;
  padding-inline: 3px;
  font-family: inherit;
  font-weight: inherit;
  font-size: inherit;
  line-height: 1;
  letter-spacing: inherit;
  text-transform: inherit;
  vertical-align: baseline;
  /* Knob 1: position of the whole highlight on the page. */
  transform: translateY(-0.1em);
  /* Inline content within doesn't accept margins/transforms directly — the
     inner <span> wrapper is where text-only positioning happens. */
  overflow: visible;
}
/* Knob 2: lettering position INSIDE the green box. Translate only — does
   not affect the outer's size or position. Increase the value (less negative
   or positive) to drop the text lower inside the green. */
.btn-win-a-car > span {
  display: inline-block;
  transform: translateY(0.1em);
}

/* Hero language dropdown wrapper — sits in bottom bar, right side */
.hero-lang-dropdown {
  position: relative;
  z-index: 3;
}
.hero-lang-trigger {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(.3rem, .8vw, .6rem);
  background: var(--green);
  color: var(--white);
  border: none;
  padding: clamp(.35rem, .9vw, .55rem) clamp(.5rem, 1.5vw, 1rem);
  font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 600;
  font-size: clamp(14px, 2.2vw, 29.34px);
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--ease);
  white-space: nowrap;
  text-align: center;
}
.hero-lang-trigger::before {
  content: '+';
  /* Match the language text size, full opacity per direction. */
  font-size: inherit;
  line-height: inherit;
  opacity: 1;
}
.hero-lang-trigger:hover { background: var(--green-dark); }
.hero-lang-trigger__flag {
  width: clamp(20px, 1.5vw, 28px);
  height: auto;
  display: inline-block;
  vertical-align: middle;
}

/* Rules panel — drops UP above the trigger */
.hero-lang-dropdown .lang-dropdown-menu {
  display: none;
  position: absolute;
  bottom: 100%;
  top: auto;
  right: 0;
  background: transparent;
  border: none;
  min-width: unset;
  z-index: 20;
}
.hero-lang-dropdown.open .lang-dropdown-menu { display: flex; }

/* Individual flag+language rows — matches FULL Drop down button.png */
.rules-lang-panel {
  flex-direction: column;
  gap: 0;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 6px 20px rgba(0,0,0,.25);
}
.rules-lang-btn {
  display: grid;
  grid-template-columns: 36px 18px 1fr;
  align-items: center;
  gap: .6rem;
  background: var(--green);
  border: none;
  color: #ffffff;
  padding: .55rem 1rem;
  /* Source Sans Pro per the dropdown design export. */
  font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 600;
  font-size: 29.34px;
  line-height: 28.43px;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
  transition: background var(--ease), filter var(--ease);
  min-width: 240px;
  white-space: nowrap;
  border-bottom: 1px solid rgba(255,255,255,.12);
}
.rules-lang-panel .rules-lang-btn:last-child { border-bottom: none; }
.rules-lang-btn:hover,
.rules-lang-btn:focus-visible {
  background: var(--green);
  filter: brightness(1.08);
  color: var(--white);
}
.rules-lang-btn__flag {
  width: 32px;
  height: auto;
  display: block;
  margin-inline: auto;
  image-rendering: -webkit-optimize-contrast;
}
.rules-lang-btn::before {
  content: '+';
  /* + sign matches the text size per direction, full opacity. */
  font-size: inherit;
  line-height: inherit;
  opacity: 1;
  text-align: center;
}

/* Hero legal fine print */
.hero-legal {
  font-size: .68rem;
  color: #ffffff;
  text-transform: uppercase;
  letter-spacing: .04em;
  line-height: 1.5;
  text-align: right;
}

/* Hero "No Purchase Necessary" stanza — center flex item inside the bottom bar. */
.hero-main__npn {
  flex: 1;
  text-align: center;
  font-family: var(--font);
  font-weight: 500;
  font-size: 8pt;
  line-height: 1.2;
  color: #ffffff;
  letter-spacing: 0;
  padding-inline: 1rem;
  /* Narrow the stanza so it wraps onto a few roughly-equal lines instead of one very long row. */
  max-width: 36rem;
  margin-inline: auto;
  position: relative;
  top: .75rem;
}
@media (max-width: 1024px) {
  .hero-main__npn { display: none; }
}
.hero-main__hashtag {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(3.5rem, 11vw, 9.5rem);
  text-transform: uppercase;
  line-height: .92;
  letter-spacing: .01em;
  margin-bottom: 0.75rem;
}
.hero-main__hashtag .hl-green { color: var(--green-light); }
.hero-main__logo {
  display: block;
  margin-inline: auto;
  /* Cap raised from 704px → 1000px so the logo continues scaling on wide
     displays (above ~1257px viewport, where 56vw hits the old cap). The
     hero-main__subtitle in index.html is paired to this same clamp — keep
     its max in sync if changing this. */
  width: clamp(180px, 44vw, 800px);
  height: auto;
}
.hero-main__subtitle {
  font-family: var(--font-condensed);
  font-weight: 700;
  /* Matches .btn-rules ("Official Rules" button below) so the two read at the
     same visual size on desktop. The slower 2.2vw growth rate (vs. an earlier
     3.375vw) means iPad widths stay smaller than the 29.34 px desktop max —
     critical so the wrapped subtitle doesn't bulk down and overlap the car
     in the key visual as the hero collapses from desktop → iPad. */
  font-size: clamp(12px, 2.2vw, 30px) !important;
  line-height: 1.1;
  letter-spacing: 0;
  text-transform: uppercase;
  max-width: 680px;
  margin: 0 auto;
  color: #ffffff;
}

/* Hero bottom bar */
.hero-main__bottom {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: clamp(.75rem, 2vw, 1.5rem) clamp(1rem, 2.5vw, 2rem);
  gap: clamp(.5rem, 1.5vw, 1rem);
  z-index: 2;
}
.hero-main__bottom > .btn-rules,
.hero-main__bottom > .lang-dropdown {
  position: relative;
  bottom: clamp(1rem, 2.5vw, 2.5rem);
}
/* Live page hero bottom bar — column flex:
   Row 1: .hero-main__buttons row (4 equal-width children)
   Row 2: .hero-main__npn (legal text, full-width, below) */
.hero-main__bottom--live {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1.5rem;
  padding-inline: clamp(1rem, 3vw, 3rem);
}
/* Inner row that holds the 4 button-style children. flex: 1 1 0 on each
   child forces equal width regardless of content length. */
.hero-main__buttons {
  display: flex;
  justify-content: center;
  align-items: stretch;
  gap: clamp(1.5rem, 3vw, 3rem);
  width: 100%;
}
.hero-main__buttons > .btn-rules,
.hero-main__buttons > .btn-post-x,
.hero-main__buttons > .hero-lang-dropdown {
  /* Content-width like the coming-soon hero buttons (source of truth): each
     button hugs its label instead of being stretched to a 280px column. */
  flex: 0 0 auto;
}
.hero-main__buttons > .hero-lang-dropdown {
  display: flex;
  flex-direction: column;
}
.hero-main__buttons > .hero-lang-dropdown .hero-lang-trigger {
  width: 100%;
  flex: 1;
}
.btn-rules {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--green);
  color: var(--white);
  /* Match the English language selector (.hero-lang-trigger) exactly: same
     padding, font, size — restores the compact deployed coming-soon sizing
     that a later live-page edit had enlarged (padding 2–4rem / var(--font-nav)). */
  padding: clamp(.35rem, .9vw, .55rem) clamp(.5rem, 1.5vw, 1rem);
  font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 600;
  font-size: clamp(14px, 2.2vw, 29.34px);
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
  transition: background var(--ease);
  white-space: nowrap;
}
.btn-rules:hover { background: var(--green-dark); color: var(--white); }
.btn-rules:hover { background: var(--green-dark); color: var(--white); }

/* ── Countdown Section (campaign) ──────────────────────────── */
.cd-section {
  background: var(--white);
  /* Vertical padding scales with viewport so the gap above + below the
     gray-line separator stays proportional on mobile (was a fixed 3.5 rem
     ≈ 56 px which looked oversized on small phones). */
  padding: clamp(1.5rem, 5vw, 3.5rem) clamp(1rem, 3vw, 1.5rem);
  text-align: center;
  border-bottom: 1px solid var(--light-gray);
}
.cd-section__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(28px, 8.5vw, 72.85px);
  /* Matches the FAQ heading's ~1.07 ratio so the two lines of
     "COUNTDOWN TO KICK-OFF" don't overlap when wrapped on phones. */
  line-height: 1.05;
  text-transform: uppercase;
  letter-spacing: 0;
  color: var(--text);
  margin-bottom: 2rem;
}
.cd-tiles {
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.cd-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .35rem;
  min-width: 143px;
}
.cd-tile__num {
  background: var(--green-light);
  /* Fixed box per design spec: 143 × 98 with the digits centered. */
  width: 143px;
  height: 98px;
  /* Asymmetric padding compensates for the condensed font's high cap-position
     so the digits sit visually centered in the box rather than skewed up. */
  padding: 10px 0 0 0;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 80px;
  line-height: 1;
  color: var(--white);
  font-variant-numeric: tabular-nums;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cd-tile__label {
  font-family: var(--font);
  font-weight: 500;
  font-size: 39.06px;
  line-height: 1;
  margin-top: .2rem;
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--green-light);
}

/* ── Brand / Car Section ───────────────────────────────────── */
.brand-section {
  position: relative;
  /* Match source image aspect (1920x1080 = 16:9) so cover doesn't crop. */
  aspect-ratio: 16 / 9;
  /* Default = global storefront. US locales swap via body.locale-us below. */
  background: url('../were-on-your-corner-global.jpg') center / cover no-repeat;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
body.locale-us .brand-section {
  background-image: url('../were-on-your-corner-us.jpg');
}
.brand-section__content {
  position: relative;
  z-index: 1;
  /* Bottom padding kept small so the text drops onto the pavement portion
     of the image, which serves as the dark backdrop for legibility (in
     place of the previous overlay). */
  padding: 3.5rem 3rem 1rem;
  /* Widened so the body lines "On corners…" and "With a chance…" fit on a
     single line each (the longer English line is ~760 px at 21.39 px). */
  max-width: 880px;
  color: var(--white);
}
.brand-section__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 48.39px;
  line-height: 53.52px;
  letter-spacing: 0;
  text-transform: uppercase;
  margin-bottom: 1.25rem;
}
/* "on your corner." highlight — same approach: inherit the title font/size
   exactly, no padding, line-height: 1 so the green hugs the lettering
   instead of padding to the parent's larger line-height. Outer translateY
   positions the whole highlight; inner <span> translateY shifts only the
   lettering inside without resizing the green. */
.brand-section__hl {
  display: inline-block;
  background: var(--green-light);
  color: var(--white);
  /* padding-block: top + bottom padding around the text. em units so the
     gap scales proportionally with the font-size — same value works for
     "on your corner." at 48.39 px and "updates" at 58.9 px.
     padding-inline: left + right padding. px units so you can tweak the
     box width 1–2 px at a time without affecting the vertical sizing. */
  padding-block: 0.03em;
  padding-inline: 5px;
  font-family: inherit;
  font-weight: inherit;
  font-size: inherit;
  line-height: 1;
  letter-spacing: inherit;
  text-transform: inherit;
  vertical-align: baseline;
  /* Knob 1: position of the whole highlight on the page. */
  transform: translateY(-0.1em);
  overflow: visible;
}
/* Knob 2: lettering position INSIDE the green box. */
.brand-section__hl > span {
  display: inline-block;
  transform: translateY(0.1em);
}
.brand-section__body {
  font-family: var(--font);
  font-size: 21.39px;
  line-height: 25.4px;
  margin-bottom: 1rem;
  /* Regular weight applies to the whole stanza, including the lead-in text
     "Enterprise is here for X fans." that sits as a bare text node before the
     merged span. !important required to win against the coming-soon-wide
     `body, body * { font-weight: 700 !important }` override. */
  font-weight: 400 !important;
  color: #ffffff;
}
/* Merged "On corners… With a chance…" stanza — flowing inline as one
   paragraph and rendered at regular weight. !important required to win
   against the coming-soon-wide `body, body * { font-weight: 700 !important }`
   override declared in sites/coming-soon/index.html.
   max-width caps the line length to ~80% of the brand-section content area
   so the natural wrap falls inside the storefront art rather than spanning
   the full image. inline-block lets max-width take effect on a phrasing span. */
.brand-section__body-merged {
  font-weight: 400 !important;
  display: inline-block;
  max-width: 80%;
}
.brand-section__tagline {
  font-family: var(--font);
  font-weight: 700;
  font-size: 21.39px;
  line-height: 25.4px;
  color: #ffffff;
}
.brand-section__legal {
  font-family: var(--font);
  font-size: 8pt;
  line-height: 1.2;
  color: #ffffff;
  letter-spacing: 0;
  margin-top: 1rem;
  font-weight: 500;
  /* Each sentence (separated by <br>) stays on a single line; no wrapping. */
  white-space: nowrap;
}
/* Live page brand section — F5 photo + bottom-left content cluster + pill CTA.
   Photo bottom half is asphalt road (designed negative space); content sits
   there so the building, employee, car, and ball above stay unobstructed. */
.brand-section--live {
  aspect-ratio: 1250 / 584;
  /* Fallback color shows if the photo fails to load, so white-on-photo text
     never lands on a white page background and disappears. */
  background-color: var(--enterprise-gray);
  background-image: url('/assets/Enterprise_Brand_F5-RGB.jpg');
  background-position: center right;
  background-size: cover;
  background-repeat: no-repeat;
  align-items: flex-start;
  min-height: 500px;
}
body.locale-us .brand-section--live {
  background-image: url('/assets/Enterprise_Brand_F5-RGB.jpg');
}
.brand-section--live .brand-section__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  padding: clamp(2.5rem, 5vh, 4rem) 2rem 0 clamp(2rem, 5vw, 5rem);
  max-width: 640px;
}
.brand-section--live .brand-section__title {
  font-size: clamp(2rem, 5vw, 4rem);
  line-height: 1.05;
  color: var(--white);
  margin: 0;
}
.brand-section--live .brand-section__cta {
  margin-top: 0;
}
.brand-section--live .brand-section__legal {
  font-size: .7rem;
  line-height: 1.4;
  margin: 0;
  white-space: normal;
  color: var(--white);
}

/* ── Live page brand section: smaller text to match PSD ─────── */
.brand-section--top .brand-section__content {
  /* Desktop vertical position of the whole cluster (title + paragraph +
     tagline). Lowered from 3.75rem to lift the group up on the image; their
     relative spacing is unchanged. Mobile keeps its own padding-top in the
     max-width:768 block. */
  padding-top: 2.5rem;
  /* Left margin matches the Follow Us section on desktop. */
  padding-left: clamp(4.5rem, 6.5vw, 6.5rem);
}
.brand-section--top .brand-section__title {
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  line-height: 1.1;
  margin-bottom: .75rem;
}
.brand-section--top .brand-section__body {
  font-size: clamp(.75rem, 1.15vw, .95rem);
  line-height: 1.3;
}
.brand-section--top .brand-section__tagline {
  /* Match the paragraph above (which the inline <style> sets to 21.39px on
     desktop). Mobile keeps its own size in the max-width:768 block. */
  font-size: 21.39px;
  line-height: 25.4px;
}

/* ── How to Play Section ───────────────────────────────────── */
.htp-section {
  position: relative;
  background: #fff;
  /* Bottom padding kept small so the .htp-legal stanza sits at the bottom
     edge of the section (like cs-footer__npn and brand-section__legal),
     instead of floating in the middle with empty space below it.
     Top padding scales with viewport so the gap below the gray-line
     separator stays proportional on mobile. */
  padding: clamp(2rem, 6vw, 5rem) 0 1.5rem;
  /* Subtle separator from the Stay-in-Touch section above, matching the
     border-bottom on .cd-section. */
  border-top: 1px solid var(--light-gray);
}
.htp-section__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(22px, 5vw, 52px);
  line-height: 1.05;
  text-transform: uppercase;
  text-align: center;
  color: var(--text);
  letter-spacing: 0;
  margin-bottom: 2.5rem;
  white-space: nowrap;
}
/* 5-column grid that all 4 step rows share, so img/num/title/divider/desc
   line up vertically across rows. Each `auto` column auto-sizes to the
   widest content in that column across all rows; `1fr` fills the rest. */
/* The shared `.container` caps at 1200px (--max-w); on wide displays this
   was throttling the grid below it. Let the htp-section's container grow
   so the steps' own max-width (set on `.htp-steps`) can actually take
   effect. Heading is text-align: center so it stays centered as the
   container widens. */
.htp-section .container {
  max-width: clamp(1300px, 85vw, 1700px);
}
.htp-steps {
  /* Max-width grows with viewport above ~1530px so the desc column (1fr in
     the grid below) gets extra room on wider monitors instead of the text
     wrapping into 3+ short lines. Caps at 1700px so the grid doesn't go
     silly-wide on ultra-wide displays. `margin-inline: auto` keeps the
     whole grid centered as the container expands. */
  max-width: clamp(1300px, 85vw, 1700px);
  margin-inline: auto;
  padding-inline: 2rem;
  display: grid;
  grid-template-columns: auto auto auto auto 1fr;
  /* Column gap shrinks more aggressively on phones (8 px floor instead of
     16 px) so the bigger referee image has room to breathe alongside the
     description text without overflowing the viewport. */
  column-gap: clamp(.5rem, 2.5vw, 3rem);
  row-gap: clamp(1rem, 2vw, 1.5rem);
  align-items: center;
  /* Title now lives in .htp-step__right (next to desc) so that mobile can
     restructure title+desc as a single flex-column block. DOM order is now
     img, num, divider, title, desc; explicit grid-column on each child
     keeps the desktop visual order img | num | title | divider | desc.
     `dense` lets the auto-placer fill the col-3 hole left when col-4 is
     placed before col-3 in the source. */
  grid-auto-flow: row dense;
}
.htp-step__img      { grid-column: 1; }
.htp-step__num      { grid-column: 2; }
.htp-step__title    { grid-column: 3; }
.htp-step__divider  { grid-column: 4; }
.htp-step__desc     { grid-column: 5; }
/* `.htp-step` and its left/right wrappers dissolve into the parent grid so
   their children (img, num, title, divider, desc) sit as direct grid
   items — required for the shared-column-tracks alignment. */
.htp-step,
.htp-step__left,
.htp-step__right {
  display: contents;
}
.htp-step:first-child .htp-step__right {
  transform: translateX(-30px);   /* negative = left, positive = right */
}
.htp-step__img {
  /* Bumped mobile min from 80 → 110 so the referee stays a visual anchor
     instead of shrinking smaller than the number circle on phones. */
  width: clamp(110px, 18vw, 220px);
  height: auto;
  object-fit: contain;
  flex-shrink: 0;
  /* Step 1 is wider than steps 2-4, so the auto-sized image column is wider
     than steps 2-4 need. Center every image in the column so each referee's
     canvas — and therefore the body inside it — lines up vertically. */
  justify-self: center;
}
/* Step 1's referee shares its canvas with the flag, making the body read
   smaller than steps 2-4. Enlarge the image and pull step 2 up with a
   negative margin so step 2's image overlaps the flag tail — the four
   referee bodies appear similar in size, and the flag still anchors the
   "watch for the signal" cue without bleeding into step 2's frame. */
.htp-step__img[src*="Signal1"] {
  width: clamp(150px, 24vw, 300px);   /* was 130 / 21vw / 260 */
  margin-bottom: clamp(-2.25rem, -4vw, -1rem);
  /* HORIZONTAL ALIGNMENT — Signal1 (negative = left, positive = right) */
  transform: translateX(-2%);
}
/* The Signal*.png assets are transparent PNGs. Signal2 sits on top of
   Signal1's flag tail via the negative margin above, so it needs an opaque
   white fill (matching the section background) to actually cover the flag. */
.htp-step__img[src*="Signal2"] {
  background: #fff;
  position: relative;
  /* HORIZONTAL ALIGNMENT — Signal2 (negative = left, positive = right) */
  transform: translateX(6%);
}
.htp-step__img[src*="Signal3"] {
  /* HORIZONTAL ALIGNMENT — Signal3 (negative = left, positive = right) */
  transform: translateX(-4%);
}
.htp-step__num {
  /* Lowered mobile min from 70 → 55 so the circle yields visual priority
     to the bigger referee image at narrow widths. */
  --circle-size: clamp(55px, 9vw, 130px);
  width: var(--circle-size);
  height: var(--circle-size);
  border-radius: 50%;
  border: clamp(3px, .35vw, 5px) solid var(--green);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: calc(var(--circle-size) * 0.58);
  line-height: 1;
  color: var(--green);
  flex-shrink: 0;
  /* DIN Next's number glyphs have asymmetric ascender / sidebearing metrics
     that make the digit appear nudged toward 11 o'clock inside a perfect
     circle. border-box keeps the circle's outer size locked while small
     padding-top / padding-left nudge the flex-centered digit toward true
     visual center (down + right). */
  box-sizing: border-box;
  padding-top: 0.15em;
  /* padding-left: 0.02em; */
}
.htp-step__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  /* Scales proportionally across viewport just like the number circle:
     desktop max matches the original 40.13 px; min keeps readability on phones. */
  font-size: clamp(16px, 3vw, 40.13px);
  line-height: 1.05;
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--green);
  flex-shrink: 0;
}
.htp-step__divider {
  width: clamp(2px, .25vw, 3px);
  height: clamp(60px, 9vw, 110px);
  background: var(--text);
  /* Extra breathing room around the divider on top of the grid column-gap,
     preserving the visual emphasis from the original design. */
  margin-inline: clamp(.5rem, 2vw, 2rem);
}
.htp-step__desc {
  /* Bold condensed to match the step title across the divider.
     Scales proportionally with the title and the number circle so the
     right-side text shrinks at the same rate as everything else. */
  font-family: var(--font-condensed);
  font-size: clamp(16px, 1.9vw, 25.19px);
  line-height: 1.2;
  font-weight: 700;
  color: #000;
  letter-spacing: 0;
}
/* Legal stanza — flows below the step rows as the last visible block, like
   cs-footer__npn and brand-section__legal. Spacing lives above it (so it
   anchors visually to the section's bottom edge); the section's small
   padding-bottom is what's left below. */
.htp-legal {
  font-family: var(--font);
  font-weight: 500;
  font-size: 7pt;
  line-height: 1.25;
  color: var(--text);
  letter-spacing: 0;
  text-align: left;
  margin: clamp(2rem, 4.5vw, 3.5rem) 0 0;
  padding-inline: 1.5rem;
  /* Per design direction: this abbreviated-terms stanza is shown only on
     mobile (it sits below How to Play on small viewports). The mobile rule
     in the @media block below flips it back to display: block. */
  display: none;
}

/* ── Follow Us Section ─────────────────────────────────────── */
.follow-section {
  position: relative;
  /* Match kick-still aspect (1920x1080 = 16:9) so cover doesn't crop. */
  aspect-ratio: 16 / 9;
  background: url('../kick-still.jpg') center / cover no-repeat;
  display: flex;
  align-items: flex-start;
  overflow: hidden;
}
/* Top-fade shadow overlay replicating the PSD vignette */
.follow-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,.82) 0%, rgba(0,0,0,0) 50%);
  z-index: 0;
  pointer-events: none;
}
.follow-section__content {
  position: relative;
  z-index: 1;
  padding: 5.25rem 3rem 3rem clamp(4.5rem, 6.5vw, 6.5rem);
}
.follow-section__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  /* ~20% larger than the brand-section headline scale per direction. */
  font-size: 58.07px;
  line-height: 58.39px;
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--white);
  margin-bottom: .25rem;
}
/* Link sized to match the heading so "@Enterprise" and "Follow us for
   updates" render at the same visual weight, per design direction. */
.follow-section__link {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 58.07px;
  line-height: 1;
  letter-spacing: 0;
  color: var(--white);
  text-decoration: none;
}
.follow-section__link:hover { color: var(--green-light); }
.follow-section__legal {
  font-family: var(--font);
  font-size: 8pt;
  line-height: 1.2;
  color: #ffffff;
  letter-spacing: 0;
  margin-top: 1rem;
  font-weight: 500;
}

/* ── Legacy Hero (sweepstakes.html until redesigned) ───────── */
.hero {
  position: relative;
  background: var(--green);
  color: var(--white);
  overflow: hidden;
  text-align: center;
  padding-block: 6rem 5rem;
}
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(74,163,106,.18) 0%, transparent 60%),
    radial-gradient(ellipse at 80% 20%, rgba(74,163,106,.3) 0%, transparent 50%);
  pointer-events: none;
}
.hero--cs {
  padding-block: 8rem 7rem;
  background: var(--green);
}
.hero__eyebrow {
  display: inline-block;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--green-light);
  background: rgba(74,163,106,.15);
  border: 1px solid rgba(74,163,106,.35);
  padding: .35rem 1rem;
  border-radius: var(--radius-pill);
  margin-bottom: 1.5rem;
}
.hero__title {
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -.02em;
  margin-bottom: 1.25rem;
  position: relative;
}
.hero__title .accent { color: var(--green-light); }
.hero__subtitle {
  font-size: clamp(1rem, 2.5vw, 1.3rem);
  font-weight: 400;
  opacity: .85;
  max-width: 620px;
  margin-inline: auto;
  margin-bottom: 2.5rem;
}
.hero__actions {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* ── Countdown (legacy — used by sweepstakes hero) ─────────── */
.countdown-wrap { margin-bottom: 3rem; }
.countdown-label {
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .15em;
  text-transform: uppercase;
  opacity: .7;
  margin-bottom: 1rem;
}
.countdown {
  display: flex;
  gap: 1rem;
  justify-content: center;
  align-items: flex-start;
  flex-wrap: wrap;
}
.countdown__unit {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .4rem;
}
.countdown__digits { display: flex; gap: .25rem; }
.countdown__digit {
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.2);
  border-radius: var(--radius-lg);
  width: 54px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  backdrop-filter: blur(4px);
  transition: background .3s;
}
.countdown__label-unit {
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: .65;
}
.countdown__sep {
  font-size: 2.5rem;
  font-weight: 700;
  opacity: .4;
  padding-top: .4rem;
}

/* ── Buttons ───────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .8rem 2rem;
  border-radius: var(--radius);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: .01em;
  transition: all var(--ease);
  white-space: nowrap;
  border: 2px solid transparent;
}
.btn--primary {
  background: var(--green);
  color: var(--white);
  border-color: var(--green);
}
.btn--primary:hover { background: var(--green-dark); border-color: var(--green-dark); color: var(--white); }
.btn--white {
  background: var(--white);
  color: var(--green);
  border-color: var(--white);
}
.btn--white:hover { background: var(--off-white); color: var(--green-dark); border-color: var(--off-white); }
.btn--outline {
  background: transparent;
  color: var(--white);
  border-color: rgba(255,255,255,.5);
}
.btn--outline:hover { background: rgba(255,255,255,.1); border-color: var(--white); color: var(--white); }
.btn--outline-green {
  background: transparent;
  color: var(--green);
  border-color: var(--green);
}
.btn--outline-green:hover { background: var(--green); color: var(--white); }
.btn--lg  { padding: 1rem 2.5rem; font-size: 1.1rem; }
.btn--sm  { padding: .5rem 1.25rem; font-size: .875rem; }
.btn--full { width: 100%; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn .spinner {
  width: 1em;
  height: 1em;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: spin .6s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Subscribe Form ────────────────────────────────────────── */
.subscribe-form {
  display: flex;
  gap: .75rem;
  max-width: 500px;
  margin-inline: auto;
  flex-wrap: wrap;
}
.subscribe-form input[type="email"] {
  flex: 1;
  min-width: 220px;
  padding: .85rem 1.25rem;
  border: 2px solid rgba(255,255,255,.3);
  border-radius: var(--radius);
  background: rgba(255,255,255,.1);
  color: var(--white);
  font-size: 1rem;
  outline: none;
  transition: border-color var(--ease);
}
.subscribe-form input[type="email"]::placeholder { color: rgba(255,255,255,.5); }
.subscribe-form input[type="email"]:focus { border-color: var(--green-light); }
.subscribe-form .btn { flex-shrink: 0; }
.form-note {
  font-size: .78rem;
  opacity: .6;
  margin-top: .75rem;
  text-align: center;
}

/* ── Alert / Message Banner ────────────────────────────────── */
.alert {
  padding: 1rem 1.5rem;
  border-radius: var(--radius-lg);
  font-size: .9rem;
  font-weight: 400;
  margin-top: 1rem;
  display: none;
}
.alert--success { background: rgba(74,163,106,.12); border: 1px solid rgba(74,163,106,.35); color: var(--green); }
.alert--error   { background: rgba(192,57,43,.08); border: 1px solid rgba(192,57,43,.3);  color: var(--error); }
.alert.visible  { display: block; }

/* ── Feature Cards ─────────────────────────────────────────── */
.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}
.card {
  background: var(--white);
  border: 1px solid var(--light-gray);
  border-radius: var(--radius-xl);
  padding: 2rem;
  transition: box-shadow var(--ease), transform var(--ease);
}
.card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.card__icon {
  width: 56px;
  height: 56px;
  background: var(--green-pale);
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.25rem;
}
.card__icon svg { width: 28px; height: 28px; fill: var(--green); }
.card__title { font-size: 1.1rem; font-weight: 700; margin-bottom: .6rem; color: var(--text); }
.card__body { font-size: .9rem; color: var(--text-secondary); line-height: 1.7; }

/* ── Steps ─────────────────────────────────────────────────── */
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 2rem; }
.step { text-align: center; position: relative; }
.step__num {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--green);
  color: var(--white);
  font-size: 1.5rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.25rem;
  box-shadow: 0 4px 16px rgba(74,163,106,.35);
}
.step__title { font-size: 1.05rem; font-weight: 700; margin-bottom: .5rem; }
.step__body { font-size: .9rem; color: var(--text-secondary); }

/* ── Prize Section ─────────────────────────────────────────── */
.prize-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}
.prize-card {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: var(--radius-xl);
  padding: 2rem;
  text-align: center;
  transition: background var(--ease), transform var(--ease);
}
.prize-card:hover { background: rgba(255,255,255,.13); transform: translateY(-3px); }
.prize-card--grand {
  background: rgba(255,255,255,.14);
  border-color: rgba(74,163,106,.5);
  box-shadow: 0 0 0 1px rgba(74,163,106,.25);
}
.prize-card__badge {
  display: inline-block;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  background: var(--green-light);
  color: var(--white);
  padding: .3rem .8rem;
  border-radius: var(--radius-pill);
  margin-bottom: 1rem;
}
.prize-card__value { font-size: 2.5rem; font-weight: 800; color: var(--green-light); margin-bottom: .25rem; line-height: 1; }
.prize-card__title { font-size: 1.1rem; font-weight: 700; color: var(--white); margin-bottom: .5rem; }
.prize-card__desc { font-size: .85rem; opacity: .75; }

/* ── Registration Form ─────────────────────────────────────── */
.form-page {
  background: var(--off-white);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.form-card {
  background: var(--white);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.form-card__header {
  background: var(--green);
  color: var(--white);
  padding: 2rem 2.5rem;
}
.form-card__title { font-size: 1.6rem; font-weight: 800; margin-bottom: .25rem; }
.form-card__subtitle { opacity: .8; font-size: .95rem; }
.form-card__body { padding: 2.5rem; }

.form-section-title {
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--green);
  margin-bottom: 1.25rem;
  padding-bottom: .5rem;
  border-bottom: 2px solid var(--green-pale);
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}
.form-grid--3 { grid-template-columns: 1fr 1fr 1fr; }
.form-group { display: flex; flex-direction: column; gap: .4rem; }
.form-group--full { grid-column: 1 / -1; }
.form-label { font-size: .85rem; font-weight: 600; color: var(--text); }
.form-label .req { color: var(--error); margin-left: .15rem; }
.form-input {
  padding: .75rem 1rem;
  border: 1.5px solid var(--light-gray);
  border-radius: var(--radius);
  font-size: .95rem;
  color: var(--text);
  background: var(--white);
  outline: none;
  transition: border-color var(--ease), box-shadow var(--ease);
}
.form-input:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(74,163,106,.1); }
.form-input.error { border-color: var(--error); }
.form-input::placeholder { color: var(--mid-gray); }
.form-select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23555' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.5rem; }
.field-error { font-size: .78rem; color: var(--error); }
.form-hint { font-size: .78rem; color: var(--dark-gray); }

.checkbox-group { display: flex; gap: .75rem; align-items: flex-start; }
.checkbox-group input[type="checkbox"] {
  width: 18px; height: 18px;
  accent-color: var(--green);
  flex-shrink: 0;
  margin-top: .15rem;
  cursor: pointer;
}
.checkbox-label { font-size: .875rem; color: var(--text-secondary); line-height: 1.5; }
.checkbox-label a { color: var(--green); font-weight: 600; }

.form-footer {
  padding: 1.5rem 2.5rem 2rem;
  border-top: 1px solid var(--light-gray);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.form-footer__note { font-size: .8rem; color: var(--dark-gray); }
.form-footer__note a { color: var(--green); }

.progress-bar-wrap { height: 4px; background: var(--light-gray); border-radius: 2px; margin-bottom: 2rem; }
.progress-bar { height: 100%; background: var(--green); border-radius: 2px; transition: width .4s ease; }
.progress-steps { display: flex; gap: 0; margin-bottom: 2.5rem; }
.progress-step { flex: 1; text-align: center; position: relative; }
.progress-step__dot {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--light-gray);
  border: 2px solid var(--light-gray);
  color: var(--mid-gray);
  font-size: .8rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto .5rem;
  transition: all var(--ease);
}
.progress-step__dot.done  { background: var(--green); border-color: var(--green); color: var(--white); }
.progress-step__dot.active { background: var(--white); border-color: var(--green); color: var(--green); }
.progress-step__label { font-size: .72rem; font-weight: 600; color: var(--mid-gray); }
.progress-step__label.active { color: var(--green); }
.progress-step::before {
  content: '';
  position: absolute;
  top: 13px; right: 50%; left: -50%;
  height: 2px;
  background: var(--light-gray);
}
.progress-step:first-child::before { display: none; }
.progress-step.done::before { background: var(--green); }

/* ── Section Headings ──────────────────────────────────────── */
.section-head { text-align: center; margin-bottom: 3.5rem; }
.section-head__eyebrow {
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--green);
  margin-bottom: .75rem;
}
.section-head--white .section-head__eyebrow { color: var(--green-light); }
.section-head__title {
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1.15;
  margin-bottom: .75rem;
}
.section-head--white .section-head__title { color: var(--white); }
.section-head__sub { font-size: 1.05rem; color: var(--text-secondary); max-width: 560px; margin-inline: auto; }
.section-head--white .section-head__sub { color: rgba(255,255,255,.75); }

/* ── Accordion / FAQ ───────────────────────────────────────── */
.accordion { display: flex; flex-direction: column; gap: .75rem; }
.accordion-item {
  background: var(--white);
  border: 1px solid var(--light-gray);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.accordion-btn {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.25rem 1.5rem;
  font-size: .95rem;
  font-weight: 600;
  color: var(--text);
  text-align: left;
  gap: 1rem;
  transition: background var(--ease);
}
.accordion-btn:hover { background: var(--off-white); }
.accordion-btn .icon {
  width: 20px; height: 20px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--green-pale);
  color: var(--green);
  font-size: 1.1rem;
  transition: transform var(--ease);
}
.accordion-item.open .accordion-btn .icon { transform: rotate(45deg); }
.accordion-body { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.accordion-body p { padding: 0 1.5rem 1.25rem; font-size: .9rem; color: var(--text-secondary); line-height: 1.7; }

/* ── Footer ────────────────────────────────────────────────── */
.site-footer {
  background: #0d1f14;
  color: rgba(255,255,255,.6);
  padding-block: 3rem 2rem;
}
.site-footer__grid {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2rem;
  align-items: start;
  margin-bottom: 2.5rem;
}
.footer-brand__name { font-size: 1rem; font-weight: 700; color: var(--white); margin-bottom: .35rem; }
.footer-brand__tagline { font-size: .8rem; }
.footer-links { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.footer-links a { color: rgba(255,255,255,.6); font-size: .85rem; transition: color var(--ease); }
.footer-links a:hover { color: var(--white); }
.site-footer__bottom {
  border-top: 1px solid rgba(255,255,255,.1);
  padding-top: 1.5rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  font-size: .8rem;
}
.footer-legal { display: flex; gap: 1.25rem; flex-wrap: wrap; }
.footer-legal a { color: rgba(255,255,255,.5); font-size: .78rem; }
.footer-legal a:hover { color: var(--white); }

/* ── Legal Sub-page ────────────────────────────────────────── */
.legal-page { background: var(--off-white); min-height: 100vh; }
.legal-content {
  background: var(--white);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  padding: 3rem;
  margin-block: 2rem;
}
.legal-content h1 { font-size: 2rem; font-weight: 800; margin-bottom: .5rem; color: var(--green); }
.legal-content .meta { font-size: .85rem; color: var(--mid-gray); margin-bottom: 2rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--light-gray); }
.legal-content h2 { font-size: 1.2rem; font-weight: 700; margin-top: 2rem; margin-bottom: .75rem; }
.legal-content p, .legal-content li { font-size: .95rem; color: var(--text-secondary); line-height: 1.8; margin-bottom: .75rem; }
.legal-content ul { list-style: disc; padding-left: 1.5rem; }
.legal-content a { color: var(--green); }

/* ── Success / Shutdown States ─────────────────────────────── */
.state-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 3rem 1.5rem;
  background: var(--green);
  color: var(--white);
}
.state-icon {
  width: 100px; height: 100px;
  background: rgba(255,255,255,.12);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 2rem;
  font-size: 3rem;
  border: 2px solid rgba(255,255,255,.2);
}
.state-title { font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; margin-bottom: 1rem; }
.state-body { font-size: 1.1rem; opacity: .8; max-width: 520px; margin-inline: auto; margin-bottom: 2.5rem; }

/* ── Success overlay ───────────────────────────────────────── */
.success-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 200;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}
.success-overlay.visible { display: flex; }
.success-modal {
  background: var(--white);
  border-radius: var(--radius-xl);
  padding: 3rem 2.5rem;
  max-width: 500px;
  width: 100%;
  text-align: center;
  box-shadow: var(--shadow-lg);
}
.success-modal__icon { font-size: 3.5rem; margin-bottom: 1rem; }
.success-modal__title { font-size: 1.6rem; font-weight: 800; margin-bottom: .5rem; }
.success-modal__body { color: var(--text-secondary); margin-bottom: 2rem; }

/* ── Trust Strip ───────────────────────────────────────────── */
.trust-strip {
  border-top: 1px solid var(--light-gray);
  border-bottom: 1px solid var(--light-gray);
  padding-block: 1rem;
  background: var(--off-white);
}
.trust-strip__inner {
  display: flex;
  justify-content: center;
  gap: 2.5rem;
  flex-wrap: wrap;
  align-items: center;
}
.trust-item {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .8rem;
  font-weight: 600;
  color: var(--dark-gray);
}
.trust-item svg { width: 18px; height: 18px; fill: var(--green); }

/* ── Toast ─────────────────────────────────────────────────── */
.toast {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  background: var(--text);
  color: var(--white);
  padding: 1rem 1.5rem;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  font-size: .9rem;
  font-weight: 400;
  z-index: 300;
  transform: translateY(120%);
  transition: transform .3s ease;
  max-width: 340px;
}
.toast.visible { transform: translateY(0); }
.toast--success { background: var(--green); }
.toast--error   { background: var(--error); }

/* ── Utility ───────────────────────────────────────────────── */
.text-center  { text-align: center; }
.text-green   { color: var(--green); }
.text-light   { color: rgba(255,255,255,.75); }
.font-bold    { font-weight: 700; }
.mt-1 { margin-top: .5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }
.mt-4 { margin-top: 2rem; }
.mb-1 { margin-bottom: .5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-4 { margin-bottom: 2rem; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.divider { height: 1px; background: var(--light-gray); margin-block: 2rem; }
.hidden { display: none !important; }

/* ── Responsive ────────────────────────────────────────────── */
/* ── Utility ─── */
.hl-green { color: var(--green-light); }

/* ── Post-Launch: POST ON X button ────────────────────────── */
.btn-post-x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--green);
  color: var(--white);
  /* Sibling of .btn-rules in the live hero row — keep them identical so the
     four hero buttons read uniform at the compact coming-soon size. */
  padding: clamp(.35rem, .9vw, .55rem) clamp(.5rem, 1.5vw, 1rem);
  font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 600;
  font-size: clamp(14px, 2.2vw, 29.34px);
  /* Match .btn-rules / .hero-lang-trigger so all four hero buttons are the
     same height — without this the default ~1.2 line-height made "Post on X"
     taller than its siblings. */
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition: background var(--ease);
  white-space: nowrap;
}
.btn-post-x:hover { background: var(--green-dark); color: var(--white); }

/* ── Post-Launch: Extra Chance to Win form ─────────────────── */
.sw-entry-section {
  background: var(--white);
  padding: 4.5rem 1.5rem;
  text-align: center;
}
/* Post-submission: the thank-you content is shorter than the form, so trim the
   section's bottom padding to keep the gap above the How-to-Play divider tidy.
   The :has() selector fires whenever #sw-thankyou is actually shown (its inline
   display is no longer "none"), so this applies on real submission AND any
   manual/JS reveal — it does not depend on the app.js class being added. */
.sw-entry-section--thankyou,
.sw-entry-section:has(#sw-thankyou:not([style*="none"])) { padding-bottom: 1.5rem; }
.sw-entry-section__title {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: 1.1;
  text-transform: uppercase;
  color: var(--text);
  letter-spacing: 0;
  margin-bottom: .75rem;
}
/* Title stays on one line on desktop; the <br> in the (English) string only
   takes effect at mobile widths, splitting it to "Want an Extra" /
   "Chance to Win?". */
.sw-entry-section__title br { display: none; }
@media (max-width: 768px) {
  .sw-entry-section__title br { display: inline; }
}
.sw-entry-section__sub {
  font-size: 21.39px;
  line-height: 25.4px;
  font-weight: 500;
  color: var(--green);
  /* Wide enough that "...entered into a drawing" stays on one line (the
     intended break is the <br> before "to win a car"); was 560px, which
     forced an early wrap. */
  max-width: 760px;
  margin: 0 auto 2.5rem;
}
/* Mobile tweaks for the Extra-Chance section. Placed after the base rules so
   they win the cascade; desktop is untouched. */
@media (max-width: 768px) {
  /* "How to Play" matches the "Want an Extra Chance to Win" title size. */
  .htp-section__title { font-size: clamp(2rem, 5vw, 3.2rem); }
  /* Lift the title closer to the hero image above. */
  .sw-entry-section { padding-top: 2rem; }
  /* Sized so each half of the sentence stays on one line (two lines total),
     with a tighter gap down to the first-name field. */
  .sw-entry-section__sub {
    font-size: clamp(13px, 3.6vw, 18px);
    line-height: 1.3;
    margin-bottom: 1rem;
  }
}
.sw-form {
  max-width: 680px;
  margin-inline: auto;
  text-align: left;
}
.sw-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .75rem;
  margin-bottom: .75rem;
}
.sw-form-row--full { grid-template-columns: 1fr; }
.sw-input {
  width: 100%;
  padding: .85rem 1rem;
  border: 1.5px solid var(--text);
  border-radius: 0;
  background: var(--white);
  font-size: .95rem;
  color: var(--text);
  outline: none;
  transition: border-color var(--ease);
  font-family: var(--font);
}
.sw-input:focus { border-color: var(--green); border-width: 2px; }
.sw-input.error { border-color: var(--error); border-width: 2px; }
.sw-input::placeholder { color: var(--enterprise-gray); }
.sw-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23555' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
  background-color: var(--white);
  padding-right: 2.5rem;
  cursor: pointer;
}
.sw-form-checks {
  margin: 1.25rem 0 .75rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .65rem;
  text-align: center;
}
.sw-check-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-size: .88rem;
  /* Brand green per the creative — applies to both the rules-agreement and
     the marketing opt-in labels (the inline "Official Rules" link inherits it). */
  color: var(--green);
  font-weight: 400;
  line-height: 1.2;
  text-align: center;
  /* Keep each label on one line (the label is short enough to fit the form). */
  white-space: nowrap;
}
.sw-check-row input[type="checkbox"] {
  width: 16px; height: 16px;
  accent-color: var(--green-dark);
  margin: 0;
  flex-shrink: 0;
  cursor: pointer;
}
.sw-form-legal {
  font-size: 9.5pt;
  color: var(--text);
  text-align: center;
  margin: .5rem 0 .5rem;
}
.sw-form-legal a { color: var(--text); font-weight: 600; }
.btn-sw-submit {
  display: block;
  margin-inline: auto;
  margin-top: 1.75rem;
  padding: .3rem 1.75rem .1rem;
  background: var(--green);
  color: var(--white);
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 29.34px;
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  border: none;
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--ease);
  min-width: 8rem;
}
.btn-sw-submit:hover { background: var(--green-dark); }
.btn-sw-submit:disabled { opacity: .5; cursor: not-allowed; }

/* ── Post-submission thank-you (replaces the form in place) ──────
   Desktop layout mirrors the approved creative: centered headline +
   two intro lines, then a two-column SMS-program block (title | body)
   split by a vertical rule, then the left-aligned terms fine print. */
.sw-thankyou {
  max-width: 1040px;
  margin-inline: auto;
  text-align: center;
}
.sw-thankyou__title {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(2.2rem, 4.5vw, 3.6rem);
  line-height: 1.05;
  text-transform: uppercase;
  color: var(--green);
  margin-bottom: 1.75rem;
}
.sw-thankyou__body {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.25rem, 2.2vw, 1.7rem);
  line-height: 1.2;
  color: var(--text);
  max-width: 760px;
  margin: 0 auto 1.5rem;
}
/* The "You received one (1) entry…" line is brand green; the reminder
   line below it stays charcoal. */
.sw-thankyou__body--accent { color: var(--green); }
/* Constrain the reminder line to roughly the width of the shorter "You received
   one (1) entry…" line above it so the two intro lines share a block width.
   No effect on mobile, where the line already fills the narrower viewport. */
.sw-thankyou__body--narrow { max-width: 530px; }

/* The SMS opt-in program is en-US ONLY (it's a US English short-code program).
   All other locales — including es-US — show just the headline + two intro
   lines. Gated on the exact locale via body[data-locale] (set in i18n.js),
   not the broader body.locale-us which also matches es-US. */
.sw-thankyou__sms {
  display: none;
  margin-top: 3.25rem;
  text-align: left;
}
body[data-locale="en-US"] .sw-thankyou__sms { display: block; }
/* Two columns on desktop: SMS-program title | message body, divided by a
   thin charcoal rule that spans the taller (right) column. */
.sw-thankyou__sms-grid {
  display: grid;
  /* minmax(0,1fr) (not bare 1fr) so the track can shrink below its content's
     min-content width — otherwise the grid blows out past narrow viewports. */
  grid-template-columns: minmax(0, 1fr);
  gap: 1.25rem 0;
  max-width: 880px;
  margin-inline: auto;
}
.sw-thankyou__sms-title {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.55rem, 2.7vw, 2.3rem);
  line-height: 1.05;
  text-transform: uppercase;
  color: var(--text);
  margin: 0;
}
.sw-thankyou__sms-body {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.2rem, 2vw, 1.55rem);
  line-height: 1.15;
  color: var(--text);
  margin: 0 0 .6rem;
}
.sw-thankyou__sms-cta {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.2rem, 2vw, 1.55rem);
  line-height: 1.15;
  color: var(--green);
  margin: 0 0 .6rem;
}
.sw-thankyou__sms-cta strong { font-weight: 700; }
.sw-thankyou__sms-legal {
  font-family: var(--font-condensed);
  font-weight: 300;
  font-size: .82rem;
  line-height: 1.25;
  color: var(--text);
  margin: 0;
}
.sw-thankyou__sms-terms {
  font-family: var(--font-condensed);
  font-weight: 300;
  font-size: .84rem;
  line-height: 1.45;
  color: var(--text);
  max-width: 820px;
  margin: 1.25rem auto 0;
}
/* "TERMS AND PRIVACY POLICY" heading sits on its own line, single-spaced
   directly above the body copy (no extra gap). */
.sw-thankyou__sms-terms strong { font-weight: 700; display: block; margin-bottom: 0; }
/* "Click here to view Terms and Conditions and Privacy Policy" — sits between
   the SMS grid (with its vertical divider) and the terms paragraph, centered on
   all breakpoints, sized to match the terms fine print. Its top margin nudges
   the terms paragraph below down slightly to make room. */
.sw-thankyou__sms-links {
  font-family: var(--font-condensed);
  font-weight: 300;
  font-size: .84rem;
  line-height: 1.45;
  color: var(--text);
  text-align: center;
  max-width: 820px;
  margin: 1.25rem auto 0;
}

/* Forced line break inside the SMS title/body — only active on mobile, where
   the single column needs a controlled two-line split. Hidden on desktop so
   the two-column layout wraps naturally (the leading space keeps word spacing
   when the break is suppressed). */
.sms-mbr { display: none; }

/* Desktop: split the SMS block into title | rule | body. */
@media (min-width: 769px) {
  .sw-thankyou__sms-grid {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    column-gap: 2.5rem;
    align-items: stretch;
  }
  .sw-thankyou__sms-title { align-self: center; text-align: center; }
  .sw-thankyou__sms-right {
    border-left: 2.5px solid var(--text);
    padding-left: 2.5rem;
  }
}

/* Mobile: single column, everything centered. Forced two-line breaks in the
   SMS title/body, intro copy sized to fit two lines, and very small fine print
   so "Msg freq varies…" fits on a single line (legal + terms share that size). */
@media (max-width: 768px) {
  .sw-thankyou__sms { text-align: center; }
  .sms-mbr { display: inline; }
  /* Intro lines a touch smaller so "Don't forget…" stays two lines on phones. */
  .sw-thankyou__body { font-size: 1rem; }
  .sw-thankyou__sms-terms strong { margin-bottom: 0; }
  .sw-thankyou__sms-legal,
  .sw-thankyou__sms-links,
  .sw-thankyou__sms-terms { font-size: .5rem; }
}

/* ── Post-Launch: Cars Won section ─────────────────────────── */
.cars-won-section {
  background: var(--white);
  padding: 7.5rem 1.5rem 6.5rem;
  position: relative;
  /* Clip horizontally only (keeps the winners-ticker marquee from causing
     side-scroll), but let the floating cars overflow vertically so the top
     row spills a little onto the section above instead of being cut off at
     the edge. overflow-x:clip + overflow-y:visible is a valid pair — clip
     doesn't force the other axis to auto the way hidden does. */
  overflow-x: clip;
  overflow-y: visible;
  text-align: center;
  min-height: 820px;
}
.cars-won-bubbles {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}
.car-bubble {
  position: absolute;
  width: clamp(50px, 6vw, 90px);
  height: auto;
  pointer-events: none;
  animation: bubbleFloat 6s ease-in-out infinite;
}
.car-bubble img {
  width: 100%;
  height: auto;
  display: block;
}
@keyframes bubbleFloat {
  0%, 100% { transform: translateY(0) rotate(-3deg); }
  50%       { transform: translateY(-18px) rotate(3deg); }
}
/* Vary rotation per bubble — applied to the inner <img> so the outer
   bubbleFloat animation transform stays untouched. */
.car-bubble:nth-child(1)  img { transform: rotate(-15deg); }
.car-bubble:nth-child(2)  img { transform: rotate(22deg); }
.car-bubble:nth-child(3)  img { transform: rotate(-8deg) scaleX(-1); }
.car-bubble:nth-child(4)  img { transform: rotate(35deg); }
.car-bubble:nth-child(5)  img { transform: rotate(-28deg); }
.car-bubble:nth-child(6)  img { transform: rotate(12deg); }
.car-bubble:nth-child(7)  img { transform: rotate(-20deg) scaleX(-1); }
.car-bubble:nth-child(8)  img { transform: rotate(8deg); }
.car-bubble:nth-child(9)  img { transform: rotate(-12deg); }
.car-bubble:nth-child(10) img { transform: rotate(25deg); }
.car-bubble:nth-child(11) img { transform: rotate(-18deg) scaleX(-1); }
.car-bubble:nth-child(12) img { transform: rotate(15deg); }
.car-bubble:nth-child(13) img { transform: rotate(-22deg); }
/* Varied sizes so the scattered cars don't read as a uniform set. */
.car-bubble:nth-child(1)  { width: clamp(64px, 7.5vw, 122px); }
.car-bubble:nth-child(2)  { width: clamp(40px, 4.3vw, 66px); }
.car-bubble:nth-child(3)  { width: clamp(58px, 6.6vw, 104px); }
.car-bubble:nth-child(4)  { width: clamp(36px, 3.8vw, 56px); }
.car-bubble:nth-child(5)  { width: clamp(74px, 8.5vw, 138px); }
.car-bubble:nth-child(6)  { width: clamp(48px, 5.4vw, 82px); }
.car-bubble:nth-child(7)  { width: clamp(60px, 6.8vw, 108px); }
.car-bubble:nth-child(8)  { width: clamp(40px, 4.2vw, 62px); }
.car-bubble:nth-child(9)  { width: clamp(68px, 7.4vw, 120px); }
.car-bubble:nth-child(10) { width: clamp(44px, 4.8vw, 74px); }
.car-bubble:nth-child(11) { width: clamp(54px, 6vw, 96px); }
.car-bubble:nth-child(12) { width: clamp(34px, 3.6vw, 54px); }
.car-bubble:nth-child(13) { width: clamp(62px, 7vw, 112px); }
.cars-won-center {
  position: relative;
  z-index: 2;
}
/* Stat row — three green number boxes (matches / corner kicks / cars won). */
.cars-won-stats {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: clamp(3rem, 13vw, 10rem);
  flex-wrap: wrap;
  margin-bottom: 3rem;
}
.cars-won-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .9rem;
}
.cars-won-stat__num {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--green);
  color: var(--white);
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(1.75rem, 4vw, 3rem);
  line-height: 1;
  padding: 0 .42em;
  height: clamp(2.2rem, 5vw, 3.8rem);
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.cars-won-stat__label {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(1.35rem, 3vw, 2.25rem);
  text-transform: uppercase;
  color: #414042;
  line-height: 1.05;
  max-width: 8em;
  text-align: center;
  white-space: pre-line;
}
/* Desktop only — match desktop-cars.png: bigger green boxes + numbers, and the
   three stats spread evenly across the section (each flex:1 third, centered)
   rather than bunched in the middle. Mobile keeps its own sizes/stacking in the
   max-width:768 block lower in this file. */
@media (min-width: 769px) {
  .cars-won-stats {
    width: 100%;
    max-width: 1150px;
    margin-inline: auto;
    gap: clamp(1.5rem, 5vw, 4rem);
  }
  .cars-won-stat {
    flex: 1 1 0;                              /* equal thirds → even spread */
  }
  .cars-won-stat__num {
    font-size: clamp(2.5rem, 5.5vw, 5rem);   /* bigger numbers */
    height: auto;                            /* box hugs the number height… */
    /* line-height < 1 trims the font's built-in line-box whitespace (the main
       source of the extra green); padding then adds just a hair, top-biased to
       keep the condensed numerals optically centered. */
    line-height: .78;
    /* Width: just enough for 3 digits. tabular-nums makes every digit 1ch wide,
       so min-width:3ch sizes all boxes to "130" and the 2-digit ones (45, 10)
       match it. content-box keeps the digits from being squeezed by padding. */
    box-sizing: content-box;
    min-width: 2ch;
    padding: .20em .22em .04em;
  }
  .cars-won-stat__label {
    font-size: clamp(2.8rem, 4.8vw, 3.8rem); /* scaled to match the numbers */
  }
}
.cars-won-sub {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.75rem, 3.4vw, 2.9rem);
  line-height: 1.15;
  text-align: center;
  text-transform: uppercase;
  color: var(--green);
  white-space: pre-line;
  max-width: 820px;
  margin: 0 auto 3.5rem;
}
.cars-won-source {
  /* Match the scrolling winners-list name typeface (.winner-tag__name). */
  font-family: var(--font-condensed);
  /* Match the winners-list names: bold, non-italic. */
  font-weight: 700;
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  /* Match the scrolling winners-list name size (.winner-tag__name). */
  font-size: 1.4rem;
  line-height: 1.4;
  text-align: center;
  color: #000;
  max-width: 760px;
  margin: -2rem auto 3rem;
}
.winners-ticker {
  overflow: visible;
  position: relative;
  z-index: 1;
}
.winners-ticker__track {
  display: flex;
  gap: 3rem;
  animation: tickerScroll 24s linear infinite;
  width: max-content;
}
@keyframes tickerScroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.winner-tag {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  flex-shrink: 0;
}
/* Mobile: replace the auto-marquee with a manual swipe scroller. Native
   horizontal scroll (touch swipe + momentum), hidden scrollbar, gentle card
   snapping. No animation loop, so nothing to judder on address-bar resize —
   the JS (initCarsWon) renders a single winner set at this breakpoint. Desktop
   is unchanged and keeps the auto-scroll marquee above. */
@media (max-width: 768px) {
  .winners-ticker {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;            /* Firefox */
    scroll-snap-type: x proximity;
    scroll-padding-inline: 1.25rem;
  }
  .winners-ticker::-webkit-scrollbar { display: none; }  /* Chrome/Safari */
  .winners-ticker__track {
    animation: none !important;
    padding-inline: 1.25rem;          /* breathing room + hints scrollability */
  }
  .winner-tag { scroll-snap-align: center; }
}
.winner-tag__name {
  position: relative;
  z-index: 2;
  background: transparent;
  border: 4px solid var(--green);
  border-radius: 0;
  padding: .65rem 1.5rem;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #000;
  white-space: nowrap;
}
/* Wrapper: flex item, no z-index so children share winner-tag stacking context */
.winner-tag__pendant-wrap {
  position: relative;
  margin-top: -10px;
  width: 48px;
  flex-shrink: 0;
}
/* Full image behind the name box */
.winner-tag__pendant {
  position: relative;
  z-index: 1;
  width: 100%;
  height: auto;
  display: block;
}
/* Right-half ring clipped, above the name box */
.winner-tag__pendant-over {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: auto;
  z-index: 3;
  clip-path: polygon(50% 0, 100% 0, 100% 32%, 50% 32%);
  pointer-events: none;
}

/* ── Post-Launch: Brand section CTA ────────────────────────── */
.brand-section__cta {
  display: inline-block;
  margin-top: 1.75rem;
  background: var(--green);
  color: var(--white);
  padding: .85rem 3rem;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 29.34px;
  line-height: 28.43px;
  letter-spacing: 0;
  text-transform: uppercase;
  border-radius: 6px;
  text-decoration: none;
  transition: background var(--ease);
  min-width: 15rem;
  text-align: center;
}
.brand-section__cta:hover { background: var(--green-dark); color: var(--white); }
.brand-section__cta--pill {
  border-radius: var(--radius-pill);
  padding: .85rem 3rem;
  font-size: 29.34px;
  line-height: 28.43px;
  font-weight: 700;
  min-width: 15rem;
}

/* ── Post-Launch: Inline FAQ ────────────────────────────────── */
.faq-inline-section {
  background: #f5f5f5;
  color: var(--text);
  padding: 4.5rem 1.5rem;
}
.faq-inline-section__heading {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 27.5pt;
  line-height: 29.38pt;
  text-transform: uppercase;
  text-align: center;
  color: var(--text);
  letter-spacing: 0;
  margin-bottom: 2.5rem;
}
.faq-inline-list {
  max-width: 860px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.faq-inline-item__q {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 25.19px;
  line-height: 29.49px;
  text-transform: uppercase;
  letter-spacing: 0;
  color: var(--green);
  margin-bottom: .35rem;
}
.faq-inline-item__a {
  font-family: var(--font);
  font-weight: 500;
  font-size: .97rem;
  color: var(--text);
  line-height: 1.75;
  margin-top: .35rem;
}

/* ── Post-Launch: Official Rules section ───────────────────── */
.rules-section {
  background: var(--green-light);
  padding: 5rem 1.5rem;
  text-align: center;
  border-top: 2px solid rgba(0,0,0,.1);
}
.rules-section__eyebrow {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(1.4rem, 3vw, 2.2rem);
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--white);
  margin-bottom: 1rem;
}
.rules-section__title {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(2rem, 5vw, 3.5rem);
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--white);
  margin-bottom: 2rem;
}
.rules-section__tbd {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(1.5rem, 3.5vw, 2.5rem);
  text-transform: uppercase;
  color: var(--white);
}

/* ── Responsive: post-launch additions ─────────────────────── */
/* Header nav collapse threshold — kicks in at the same width as the footer
   stacks (see 1050 px footer rule below), so both transitions happen on the
   same screen size instead of jumping in two separate steps. */
@media (max-width: 1050px) {
  .site-nav--left,
  .site-nav--right { display: none; }
  .hamburger { display: flex; position: absolute; right: 1rem; }
  .mobile-nav { display: flex; }
  .site-header__inner { display: flex; justify-content: center; align-items: center; position: relative; padding-inline: 1rem; }
  .site-logo { margin: 0 auto; }

  /* Hero: release the aspect-ratio lock so the section grows to fit its
     content (logo + subtitle + bottom bar) instead of clipping against
     a too-short fixed-proportion box. Min-height keeps it tall enough. */
  .hero-main { aspect-ratio: auto; }
}

/* Footer logo "stubborn" threshold — stack to a column the moment the
   grid's first 1fr column would become narrower than the now-larger
   Enterprise logo (~265-340 px wide), or the 7-link nav row (after adding
   Privacy Choices) stops fitting inside the middle auto column. Threshold
   raised to 1200 px to give the wider nav row room before stacking.
   Above this, grid layout. Below, logo on its own row above the links. */
@media (max-width: 1200px) {
  .cs-footer__top {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.5rem;
  }
  .cs-footer__nav-link + .cs-footer__nav-link::before { display: none; }
  .cs-footer__nav-link { padding: 0 .5rem 0 0; }
}

@media (max-width: 768px) {
  :root { --hdr-h: 62px; }

  /* Stay in Touch — vertical padding still handled by the clamp() in the
     .stay-touch-section base styles. The mobile horizontal-padding override
     lives in the later @media block at the bottom of this file, because the
     base rule sits AFTER this one and would otherwise win the cascade. */
  .stay-touch-h2 { font-size: .97rem; }
  /* .stay-touch-btn mobile styling lives in the later @media block at the
     bottom of this file — the base rule (~line 2966) sits AFTER this block
     and would otherwise win the cascade. */

  .hero-main {
    /* Mobile: stretch the hero tall enough that top content (logo + subtitle)
       and bottom content (buttons + legal) sit apart, leaving the middle
       of the background image (car illustration) visible between them.
       padding-top still reserves space for the sticky header (--hdr-h is
       62px on mobile) plus a small visual breathing strip. */
    aspect-ratio: auto;
    min-height: 80vh;
    justify-content: space-between;
    padding-top: calc(var(--hdr-h) + clamp(.5rem, 2vh, 1.5rem));
    /* Small bottom padding: the legal line (added below the buttons) now sits
       in this space instead of adding height. Reduced further to drop the
       buttons + legal group a bit lower toward the image edge. */
    padding-bottom: clamp(.05rem, .3vh, .15rem);
  }
  /* Logo: slightly reduced from 80vw per direction. */
  .hero-main__logo { max-width: 70vw; width: 100%; height: auto; }
  /* Drop flex: 1 so space-between can push body up and bottom down. Add
     padding-top for a small breathing strip between header and logo. */
  .hero-main__body {
    flex: 0 0 auto;
    align-items: flex-start;
    padding-top: clamp(1rem, 3vh, 2rem);
    padding-bottom: 0;
  }
  .hero-main__content { text-align: center; }
  /* Bottom bar joins the flex flow so space-between can place it at the bottom. */
  .hero-main__bottom {
    position: static;
    padding: 1rem 1.25rem;
    /* Let the legal line wrap to its own full-width row below the buttons. */
    flex-wrap: wrap;
    row-gap: .02rem;
  }
  /* Base raises the buttons by clamp(1rem,2.5vw,2.5rem); shrink that on mobile
     so they sit lower (and closer to the legal line below). */
  .hero-main__bottom > .btn-rules,
  .hero-main__bottom > .lang-dropdown { bottom: .35rem; }
  .hero-main__bottom--live { align-self: stretch; width: 100%; }
  .hero-main__hashtag { font-size: clamp(3rem, 14vw, 6rem); }
  .hero-main__subtitle { line-height: 1.1; }
  /* Show the hero legal line on mobile too (the base rule hides it ≤1024px).
     order:3 + flex:0 0 100% drops it onto its own full-width row beneath the
     Official Rules + language buttons, center-justified. It sits in the hero's
     (now reduced) bottom padding so the buttons don't shift. */
  .hero-main__npn {
    display: block;
    order: 3;
    flex: 0 0 100%;
    width: 100%;
    margin: 0;
    /* Lift the legal up toward the buttons. */
    position: relative;
    bottom: .5rem;
    /* Smaller + tighter side padding so the legal fits on two lines. */
    font-size: clamp(5px, 1.4vw, 6.5px);
    line-height: 1.3;
    opacity: 0.85;
    text-align: center;
    padding-inline: .4rem;
  }
  /* Hero text stays at top on mobile */
  .hero-main__body { align-items: flex-start; padding-top: 0.5rem; padding-bottom: 0.5rem; }
  .hero-main__content { padding: 1rem 1rem 1rem; }

  /* Bottom bar: equal-height buttons */
  .hero-main__bottom { padding: 1rem 1.25rem; }
  .btn-rules,
  .btn-post-x,
  .hero-lang-trigger {
    font-size: clamp(12px, 3.5vw, 14px);
    padding: clamp(.45rem, 1.6vw, .6rem) clamp(.8rem, 2.8vw, 1.1rem);
    line-height: 1;
  }
  /* Mobile: flex column stays, inner row stretches full viewport, max-width
     cap removed so each button just takes its 1/4 share. Aggressive shrink
     applied to font + padding on the buttons. */
  .hero-main__bottom--live {
    padding-inline: 0;
  }
  .hero-main__buttons {
    gap: clamp(.2rem, .8vw, 1rem);
  }
  .hero-main__buttons > .btn-rules,
  .hero-main__buttons > .btn-post-x,
  .hero-main__buttons > .hero-lang-dropdown {
    max-width: none;
  }
  .btn-rules,
  .btn-post-x,
  .hero-lang-trigger {
    font-size: clamp(.5rem, 1.3vw, 1.1rem);
    padding: clamp(.4rem, 1vw, .9rem) clamp(.3rem, 1vw, 2rem);
  }
  .hero-lang-trigger__flag { width: clamp(12px, 2vw, 28px); }

  .hero-main__content { padding: .5rem 1rem 0; }
  /* Language dropdown rows */
 .rules-lang-btn {
    font-size: clamp(12px, 3.5vw, 14px);
    padding: clamp(.45rem, 1.6vw, .6rem) clamp(.8rem, 2.8vw, 1.1rem);
    min-width: clamp(100px, 35vw, 140px);
    grid-template-columns: 20px 12px 1fr;
    gap: .35rem;
    justify-content: center;
    line-height: 1;

  }
  .rules-lang-btn::before { font-size: clamp(12px, 3.5vw, 14px); }
  .rules-lang-btn__flag { width: clamp(16px, 5vw, 20px); }
  .hero-legal { font-size: .6rem; text-align: left; }

  .sw-form-row { grid-template-columns: 1fr; }
  .sw-form-checks {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    width: 100%;
    text-align: center;
  }
  .sw-check-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
  }
  .cars-won-section { min-height: 440px; padding: 3.5rem 1.5rem 3rem; }
  .car-bubble { width: clamp(36px, 10vw, 60px); }

  .cd-tile { min-width: 0; }
  .cd-tile__num {
    width: clamp(60px, 17vw, 143px);
    height: clamp(45px, 13vw, 98px);
    font-size: clamp(36px, 12vw, 80px);
    padding: 4px 0 0 0;
  }
  .cd-tile__label { font-size: clamp(13px, 3.5vw, 39.06px); }
  /* How to Play — mobile redesign per design direction:
     - shared 5-column desktop grid → flex column, one step per row
     - each step is a 2-item flex row: image | text-stack
     - text-stack is .htp-step__right (now contains both title and desc)
       laid out as a vertical flex column, centered against the image
     - vertical divider and number circle hide (the mobile signal art
       has the number circle baked into the image)
     - title (green) sits above description (black)
     - title BRs are suppressed so each title reads on a single line
       (i18n strings have a leading space before each <br> for spacing) */
  .htp-steps {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 5vw, 2.5rem);
    /* Block widened (380px → 460px) and inner padding tightened
       (1rem → .25rem) so the image sits further left and the text
       column gets more horizontal room to stretch to the right. The
       block still centers in the viewport via `margin-inline: auto`. */
    max-width: 460px;
    margin-inline: auto;
    padding-inline: .25rem;
    /* Reset desktop grid props so the flex layout takes over cleanly. */
    grid-template-columns: none;
  }
  /* Two-column grid with an explicit, fixed image column. minmax(0, 1fr)
     stops grid from auto-expanding column 2 when the text's min-content
     (longest unbreakable word) exceeds the 1fr space — that auto-expansion
     can shift columns differently across locales because word lengths vary
     by language (e.g. German "Gewinnspielen" vs English "win"). Explicit
     grid-column on the children pins them so they can't auto-flow elsewhere
     if a future child is added/reordered. */
  .htp-step {
    display: grid;
    grid-template-columns: clamp(80px, 22vw, 130px) minmax(0, 1fr);
    column-gap: clamp(.75rem, 3vw, 1.5rem);
    align-items: start;
    /* Force the grid container to fill its flex parent (.htp-steps). Without
       this, a grid-container-as-flex-item shrinks to its content's max-content
       when that max-content fits within the parent's cross-size — which then
       centers the whole row. Short-title locales (en, es) triggered this,
       longer-title locales (fr, de) did not, producing a locale-dependent
       horizontal shift of Signal1. `minmax(0, 1fr)` alone wasn't enough
       because it only caps col-2's TRACK at 1fr; it doesn't stop the grid
       CONTAINER from shrink-fitting around its content. */
    width: 100%;
  }
  .htp-step__left {
    display: flex;
    align-items: flex-start;
    min-width: 0;
    grid-column: 1;
  }
  .htp-step__right {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: .15rem;
    min-width: 0;
    grid-column: 2;
  }
  /* Reset the desktop-only -30px nudge applied to the first step's right
     column. That rule (above, outside the media query) is for the desktop
     grid layout where it aligns the first title with the row's text track;
     on mobile it shifts step 1's text 30px left of steps 2-4 and breaks the
     vertical column alignment. */
  .htp-step:first-child .htp-step__right { transform: none; }
  .htp-step__num,
  .htp-step__divider { display: none; }
  /* Reset the desktop explicit grid-column on every child so they fall
     back to natural flex flow. */
  .htp-step__img,
  .htp-step__title,
  .htp-step__desc { grid-column: auto; }
  .htp-step__img {
    width: clamp(80px, 22vw, 130px);
    /* Reset desktop step-specific overrides so the mobile signal art lays
       out cleanly without negative margins, transforms, or backgrounds. */
    margin: 0;
    transform: none;
    background: transparent;
  }
  /* Neutralize the desktop Signal1 / Signal2 / Signal3 overrides (larger
     width, negative margin, white fill, x-shifts) — the mobile signal art
     is sized and framed independently per step. */
  /* All four mobile signal PNGs have their referee bodies at roughly the
     same horizontal offset within the canvas (~+17% right of center), so
     Signal1 with no transform aligns naturally with Signal4 (also no
     transform). The visible misalignment is between Signal2 / Signal3
     (which carry their own X nudges below) and the Signal1 / Signal4
     baseline — tune the knobs on Signal2 / Signal3 to align them with
     step 1. */
  .htp-step__img[src*="Signal1"] {
    width: clamp(80px, 22vw, 130px);
    margin: 0;
    transform: none;
  }
  /* KNOB — Signal2 horizontal nudge on mobile.
     Negative = shift left, positive = shift right. Tune until step 2's
     referee aligns vertically with step 1's referee. */
  .htp-step__img[src*="Signal2"] { background: transparent; transform: translateX(-2%); }
  /* Signal3's mobile asset has its visible figure offset right inside the
     transparent canvas, so a small negative X nudge re-centers the referee
     in line with the other steps' images. */
  .htp-step__img[src*="Signal3"] { transform: translateX(-4%); }
  .htp-step__title {
    font-size: clamp(20px, 5.5vw, 28px);
    line-height: 1.1;
    margin: 0;
  }
  /* Drop the desktop stacking <br>s on mobile — titles read as a single
     line. The leading-space pattern in the i18n string keeps the words
     separated visually after the BR collapses. */
  .htp-step__title br { display: none; }
  .htp-step__desc { margin: 0; }
  /* Steps 1-3 stay top-aligned (set by `align-items: flex-start` on
     .htp-step above) so their titles line up with the top of the figure.
     Step 4's mobile asset puts the referee at the top of the canvas with
     the numbered circle below, so the figure's vertical midpoint is in
     the upper half of the image — centering the text-stack against the
     full image bounding box lines "Play Again" up with the referee
     figure rather than stranding it at the top of the empty area above. */
  .htp-step:last-child { align-items: center; }
  /* Brand section — aspect-ratio removed so section grows for content.
     Swap to mobile storefront art (the desktop crop pixelates on small viewports).
     Anchor content to the TOP on mobile so the copy sits above the storefront
     scene instead of overlapping it. */
  .brand-section {
    aspect-ratio: auto;
    min-height: 460px;
    background-image: url('../storefront-mobile.png');
    align-items: flex-start;
  }
  /* US locales (en-US / es-US) get the Enterprise Car Sales storefront on
     mobile, mirroring the desktop swap from were-on-your-corner-global.jpg
     → were-on-your-corner-us.jpg in the base rule above. */
  body.locale-us .brand-section {
    background-image: url('../storefront-car-sales-mobile.png');
  }
  /* Live brand section keeps its F5 desktop photo and bottom alignment on mobile —
     only aspect-ratio and min-height inherit from the .brand-section override. */
  .brand-section--live,
  body.locale-us .brand-section--live {
    background-image: url('/assets/Enterprise_Brand_F5-RGB.jpg');
    align-items: flex-end;
  }
  /* Live brand section keeps its F5 desktop photo and bottom alignment on mobile —
     only aspect-ratio and min-height inherit from the .brand-section override. */
  .brand-section--live,
  body.locale-us .brand-section--live {
    background-image: url('/assets/Enterprise_Brand_F5-RGB.jpg');
    align-items: flex-end;
  }
  /* Padding scales with viewport so the gap between heading/body/tagline
     stays visually proportional as the screen shrinks (the previous fixed
     rem values made the spacing look too generous on narrow viewports).
     Top padding is bumped extra so the heading sits a bit below the section
     edge rather than crowding it. */
  .brand-section__content {
    padding: clamp(2rem, 8vw, 3rem) clamp(1rem, 4vw, 1.5rem) clamp(.5rem, 2vw, .75rem);
  }
  /* Higher font-size floor + faster growth rate so the title holds its
     visual weight on narrow viewports instead of collapsing to 1.6rem.
     margin-bottom scales with viewport to match. */
  .brand-section__title {
    white-space: normal;
    font-size: clamp(2rem, 7.5vw, 2.8rem);
    line-height: 1.1;
    margin-bottom: clamp(.5rem, 2.5vw, 1.25rem);
  }
  .brand-section__body {
    white-space: normal;
    font-size: clamp(15px, 4vw, 21.39px);
    line-height: 1.35;
    margin-bottom: clamp(.5rem, 2vw, 1rem);
  }
  .brand-section__tagline { font-size: clamp(15px, 4vw, 21.39px); }
  .brand-section__legal {
    white-space: normal;
    font-size: 8pt;
    margin-top: 0.75rem;
  }
  /* Follow section — aspect-ratio drives height.
     Swap to mobile kick-still art (the desktop crop pixelates on small viewports).
     Anchor content to the TOP so the heading + link sit above the kick still
     image, matching the storefront treatment. */
  .follow-section {
    background-image: url('../kick-still-mobile.png');
    align-items: flex-start;
  }
  .follow-section__content {
    padding: clamp(2rem, 8vw, 3rem) clamp(1rem, 4vw, 1.5rem);
  }
  .follow-section__title {
    font-size: clamp(2rem, 7.5vw, 2.8rem);
    line-height: 1.1;
    margin-bottom: clamp(.1rem, .8vw, .35rem);
  }
  /* Match the heading size so "@Enterprise" reads at the same weight. */
  .follow-section__link { font-size: clamp(2rem, 7.5vw, 2.8rem); line-height: 1; }

  /* Countdown — bump top-padding so the heading isn't crowded against the
     hero image above, and tighten the gap between the heading and the
     countdown tiles below (the desktop 2 rem margin-bottom reads as too
     much vertical air at mobile scale). */
  .cd-section { padding-top: 2.5rem; }
  .cd-section__title { margin-bottom: 1rem; }

  /* (Get Notified top-padding bump lives in the later @media block at the
     bottom of the file, because the .optin-section base rule sits AFTER
     this @media block and would otherwise win the cascade.) */

  /* Opt-in form — section padding handled by base clamp() now.
     Mobile-only font + line-height tweaks so the wrapped disclaimer and
     checkbox label read tighter than the desktop defaults (1.6 line-height
     on the disclaimer and the inherited ~1.5 on the checkbox row drift too
     loose when the text wraps onto 2-3 lines at narrow widths). */
  .optin-disclaimer { font-size: .75rem; line-height: 1.3; margin-bottom: 1.5rem; }
  .optin-check-row { font-size: .88rem; line-height: 1.2; text-align: left; }
  .optin-submit { padding: .7rem 2rem .3rem; font-size: 29.34px; width: 100%; }

  /* Coming soon FAQ — section padding handled by base clamp(). The bottom
     mobile bump lives in the later @media block at the bottom of the file,
     because the .faq-cs-section base rule sits AFTER this @media block and
     would otherwise win the cascade. */
  .faq-cs-list { gap: 1.25rem; }
  .faq-cs-item__q { font-size: 1rem; }
  .faq-cs-item__a { font-size: .9rem; }

  /* Coming soon footer */
  .cs-footer { padding: 3.5rem 1.5rem; }

  .hero { padding-block: 4rem 3.5rem; }
  .hero--cs { padding-block: 5rem 4rem; }
  .section { padding-block: 3.5rem; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid--3 { grid-template-columns: 1fr; }
  .form-card__body { padding: 1.5rem; }
  .form-card__header { padding: 1.5rem; }
  .form-footer { padding: 1.25rem 1.5rem 1.5rem; flex-direction: column; align-items: flex-start; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .site-footer__bottom { flex-direction: column; align-items: flex-start; }
  .legal-content { padding: 1.75rem; }
  .countdown__digit { width: 44px; height: 54px; font-size: 1.6rem; }
  .header-cta { display: none; }
  .progress-step__label { font-size: .65rem; }
  .subscribe-form { flex-direction: column; }
  .subscribe-form input[type="email"] { min-width: unset; }
}

@media (max-width: 480px) {
  .countdown { gap: .5rem; }
  .countdown__digit { width: 38px; height: 46px; font-size: 1.4rem; }
  .countdown__sep { font-size: 2rem; }
  .prize-card__value { font-size: 2rem; }
  .cd-tiles { gap: .5rem; }
  .cd-tile { min-width: 60px; }

  /* Coming soon: small phones */
  .hero-main__content { padding: 1rem 1rem .75rem; }
  .hero-main__hashtag { font-size: clamp(2.4rem, 12vw, 4rem); }
  .optin-title { font-size: clamp(1.6rem, 7vw, 2.4rem); }
  .optin-ty-h1 { font-size: clamp(2.4rem, 10vw, 4rem); }
  .optin-ty-h2 { font-size: clamp(1rem, 4.5vw, 1.5rem); }
  .cs-footer { padding: 2.5rem 1rem; }
  /* .faq-cs-section padding handled by base clamp(). */

  /* Entry-form checkbox labels: the marketing label can't fit one line on a
     true phone, so allow it to wrap here (desktop/tablet stay one line). */
  .sw-check-row {
    white-space: normal;
    align-items: flex-start;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

@media print {
  .site-header, .site-footer, .btn { display: none !important; }
  .legal-content { box-shadow: none; padding: 0; }
  body { font-size: 12pt; }
}

/* ── Coming Soon: Opt-in Thank You state ───────────────────── */
.optin-thankyou {
  display: none;
}
.optin-thankyou.visible {
  display: block;
}
.optin-ty-h1 {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(3rem, 7vw, 5.5rem);
  text-transform: uppercase;
  color: var(--green);
  line-height: 1;
  margin-bottom: 1.25rem;
}
.optin-ty-h2 {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.25rem, 3vw, 2rem);
  color: var(--text);
  line-height: 1.3;
  max-width: 620px;
  margin-inline: auto;
}

/* ── Coming Soon: FAQ ──────────────────────────────────────── */
.faq-cs-section {
  background: #fff;
  padding: clamp(2.5rem, 6vw, 5.5rem) clamp(1rem, 3vw, 1.5rem) clamp(1.5rem, 5vw, 4.5rem);
  border-top: 1px solid var(--light-gray);
}
.faq-cs-section__heading {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: 1.1;
  text-transform: uppercase;
  text-align: center;
  color: var(--text);
  letter-spacing: 0;
  margin-bottom: 2.5rem;
}
.faq-cs-list {
  max-width: 860px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.faq-cs-item__q {
  /* FAQ questions match step description size per direction. */
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 25.19px;
  line-height: 29.49px;
  text-transform: uppercase;
  letter-spacing: 0;
  color: var(--green);
  margin-bottom: .35rem;
}
.faq-cs-item__a {
  /* Body text: medium, not condensed, pure black.
     Unbolded for coming-soon via inline !important override (the global
     body * { font-weight: 700 !important } in coming-soon/index.html would
     otherwise force the answers bold). */
  font-family: var(--font);
  font-weight: 400;
  font-size: .97rem;
  color: #000;
  line-height: 1.4;
}

/* ── Coming Soon: Opt-in Form ──────────────────────────────── */
.optin-section {
  background: #fff;
  /* Sits between the cd-section gray-line (above) and the htp-section
     gray-line (below) — vertical padding scales with viewport so neither
     gap reads as oversized on mobile. */
  padding: clamp(1.5rem, 5vw, 4rem) clamp(1rem, 3vw, 1.5rem);
}
.optin-inner {
  max-width: 780px;
  margin-inline: auto;
  text-align: center;
}
.optin-title {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(2rem, 5vw, 3.2rem);
  color: var(--text);
  line-height: 1.1;
  margin-bottom: 1rem;
  text-transform: uppercase;
}
.optin-sub {
  font-size: 17px;
  line-height: 1.3;
  color: #000;
  margin-bottom: .75rem;
}
/* The i18n string puts a hard <br> before "launch" so desktop reads as
   two lines ("...tournament and sweepstakes" / "launch on June 11, 2026.").
   On mobile the natural wrap is already two lines (and at a different
   point), so suppress the forced break to avoid a stranded third row.
   Trailing space before the <br> survives the hidden BR so words stay
   separated. */
@media (max-width: 768px) {
  .optin-sub br { display: none; }
}
.optin-disclaimer {
  font-size: .8rem;
  color: #000;
  line-height: 1.6;
  margin-bottom: 2rem;
  /* Narrow the disclaimer so it wraps onto two roughly-equal lines. */
  max-width: 31rem;
  margin-inline: auto;
}
.optin-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1.25rem;
}
.optin-input {
  width: 100%;
  padding: .75rem 1rem;
  border: 1.5px solid #000;
  border-radius: 0;
  font-size: 1rem;
  font-family: var(--font);
  color: var(--text);
  background: #fff;
  outline: none;
  transition: border-color .2s;
}
.optin-input:focus { border-color: var(--green); }
.optin-select { cursor: pointer; }
/* Force the same placeholder gray on both the text inputs and the unselected
   country dropdown. Browser default ::placeholder uses ~54%-of-black (≈#757575),
   not 54%-of-input-color, so we set the value explicitly on both so they
   read as identical. Options themselves stay full-color when the menu opens. */
.optin-input::placeholder { color: #757575; opacity: 1; }
.optin-select:invalid { color: #757575; }
.optin-select option { color: var(--text); }
.optin-check-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  font-size: .95rem;
  color: #000;
  margin-bottom: 1.5rem;
  cursor: pointer;
}
.optin-check-row input[type="checkbox"] {
  width: 22px;
  height: 22px;
  /* appearance: none + manual border so the box gets a reliable black
     outline across browsers (native checkboxes ignore plain `border`).
     :checked rule restores the visual tick via a CSS background-image. */
  appearance: none;
  -webkit-appearance: none;
  border: 1.5px solid #000;
  border-radius: 2px;
  background: #fff;
  flex-shrink: 0;
  cursor: pointer;
  display: inline-block;
}
.optin-check-row input[type="checkbox"]:checked {
  background: var(--green);
  border-color: var(--green);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' d='M3 8.5l3.5 3.5L13 5'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 16px 16px;
}
.optin-submit {
  background: var(--green);
  color: #fff;
  border: none;
  /* Asymmetric vertical padding (top .7rem / bottom .3rem) keeps the total
     button height the same as the prior symmetric .5rem/.5rem but nudges
     the text down to true visual center — DIN Next Condensed's metrics
     place the glyph slightly above the line-box's geometric center. */
  padding: .7rem 3rem .3rem;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 29.34px;
  line-height: 28.43px;
  letter-spacing: 0;
  text-align: center;
  text-transform: uppercase;
  border-radius: 6px;
  cursor: pointer;
  transition: background .2s;
  /* Match the natural width of .stay-touch-btn ("Click Here" is wider than "Submit"). */
  min-width: 15rem;
}
.optin-submit:hover { background: var(--green-dark); }
@media (max-width: 600px) {
  .optin-fields { grid-template-columns: 1fr; }
}

/* ── Coming Soon: Stay in Touch ───────────────────────────── */
.stay-touch-section {
  background: #fff;
  /* Vertical padding scales with viewport — both the gap above (below the
     follow-section image) and the gap below (above the gray-line separator
     under the Click Here button) get the same breathing room. Floor raised
     from 1.5rem to 2rem and max from 4rem to 4.5rem for a touch more space. */
  padding: clamp(2rem, 5.5vw, 4.5rem) 4rem;
}
.stay-touch-inner {
  /* Widened so the larger body text spans more than half the screen and stays
     ~2 lines instead of wrapping. Caps at 92vw so it never overflows mobile. */
  max-width: min(1150px, 92vw);
  margin-inline: 0;
  text-align: left;
}
.stay-touch-h1 {
  font-family: var(--font-condensed);
  font-weight: 900;
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: 1.1;
  text-transform: uppercase;
  color: var(--text);
  letter-spacing: 0;
  margin-bottom: 1rem;
}
.stay-touch-h2 {
  font-family: var(--font);
  /* Medium weight: !important + the class's higher specificity beat the
     page-wide `body, body * { font-weight: 700 !important }` override. */
  font-weight: 500 !important;
  /* Sized so the two lines fill more than half the width (less white space).
     Mobile keeps its own size in the max-width:768 block. */
  font-size: clamp(16px, 1.7vw, 24px);
  line-height: 1.3;
  color: #000;
  margin-bottom: 2rem;
  padding-left: 0;
}
/* The i18n string puts a hard <br> before "delivered" so desktop reads
   as two lines ("...and special offers" / "delivered directly to your
   inbox."). Suppress on mobile so the narrow viewport gets a natural
   wrap instead of a stranded third row. Trailing space before the <br>
   survives the hidden BR so "offers delivered" stays separated. */
@media (max-width: 768px) {
  .stay-touch-h2 br { display: none; }
}
.stay-touch-btn {
  display: inline-block;
  background: var(--green);
  color: #fff;
  /* Same asymmetric padding as .optin-submit — nudges "Click Here" down
     to true visual center against the DIN Next Condensed glyph metrics. */
  padding: .7rem 3rem .3rem;
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 29.34px;
  line-height: 28.43px;
  letter-spacing: 0;
  text-align: center;
  text-transform: uppercase;
  text-decoration: none;
  border-radius: 9999px;
  transition: background var(--ease);
  /* Match the Submit button so both render at the same size. */
  min-width: 15rem;
}
.stay-touch-btn:hover { background: var(--green-dark); color: #fff; }

/* ── Coming Soon: Footer ─────────────────────────────────── */
.cs-footer {
  background: var(--green);
  padding: 3.5rem 4rem 3rem;
  scroll-margin-top: var(--hdr-h);
}
.cs-footer__top {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2.5rem;
  margin-bottom: 2rem;
}
.cs-footer__logo-link { display: block; flex-shrink: 0; }
.cs-footer__logo-img {
  /* Matches .site-logo__img (44px) so the header and footer logos read at
     the same scale. max-width override stops the global `img { max-width:
     100% }` rule from shrinking the SVG when its parent column narrows. */
  height: 44px;
  width: auto;
  max-width: none;
  display: block;
}
.cs-footer__nav {
  display: flex;
  align-items: center;
  /* Center the footer links per client direction; the cs-footer__nav-break
     still forces the two-line split, so each row is centered independently. */
  justify-content: center;
  /* Allow the row of footer links to wrap onto a second line at narrower
     viewports (between full desktop and the <=768px column stack) so
     items have adequate room and the privacy-choices icon stops crowding
     the next link's vertical separator. */
  flex-wrap: wrap;
  row-gap: .5rem;
  width: 100%;
}
.cs-footer__nav-link {
  /* Match the FAQ questions' typeface (condensed), per direction — size unchanged. */
  font-family: var(--font-condensed);
  font-weight: 500;
  /* Desktop nav links sized 1.5x the former 17.6px (mobile keeps its own
     1.4rem override below). */
  font-size: 26.4px;
  color: #fff;
  text-decoration: none;
  /* Responsive horizontal padding — 24 px on desktop, shrinks to ~10 px just
     before the 768 px stack-to-column breakpoint so the 6-link row doesn't
     overflow the footer's middle grid column in the 800-900 px range. */
  padding: 0 clamp(.6rem, 1.5vw, 1.5rem);
  white-space: nowrap;
  position: relative;
}
/* Vertical separators between footer nav links removed per design. */
.cs-footer__nav-link + .cs-footer__nav-link::before { display: none; }
/* When the nav wraps to multiple lines, the first link of each new row
   is tagged via JS (markFooterRowStarts in app.js) so its leading
   vertical separator is suppressed. Without this the row-start link
   shows a stray pipe at its left edge. */
.cs-footer__nav-link--row-start::before { display: none; }
.cs-footer__nav-link:first-child { padding-left: 0; }
.cs-footer__nav-break { width: 100%; height: 0; }
.cs-footer__nav-break + .cs-footer__nav-link { padding-left: 0; }
.cs-footer__nav-link:hover { color: #fff; text-decoration: underline; text-decoration-color: #fff; }
/* Privacy Choices CCPA icon — sits inline before the link text. The link
   uses an inner span for i18n so locale changes don't replace the icon. */
.cs-footer__nav-link--with-icon {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
}
.cs-footer__privacy-icon {
  height: .85em;
  width: auto;
  flex-shrink: 0;
}
.cs-footer__locale { flex-shrink: 0; }
.cs-footer__locale-select {
  background: transparent;
  border: 1px solid #fff;
  color: #fff;
  padding: .35rem .75rem;
  font-family: var(--font);
  font-size: .9rem;
  cursor: pointer;
  border-radius: 2px;
}
.cs-footer__locale-select option { color: #000; }
.cs-footer__npn {
  font-family: var(--font);
  font-weight: 400;
  font-size: 6.5pt;
  line-height: 1.5;
  color: #ffffff;
  text-align: center;
  max-width: 950px;
  margin-inline: auto;
  margin-top: 3rem;
}
.cs-footer__npn strong { font-weight: 700; }
/* Trademark / copyright stanza beneath the NPN sweepstakes legal copy.
   Same white-on-green styling and size as .cs-footer__npn; the margin-top
   adds the visual gap requested between the two legal blocks. */
.cs-footer__trademark {
  font-family: var(--font);
  font-weight: 400;
  font-size: 10pt;
  line-height: 1.5;
  color: #ffffff;
  text-align: center;
  max-width: 700px;
  margin-inline: auto;
  margin-top: 1.5rem;
}
@media (max-width: 768px) {
  /* Brand section — adjusted size and position on mobile */
  .brand-section--top .brand-section__content {
    padding-top: 2.5rem;
    /* Match the Follow Us section's mobile left padding. Needed here because the
       desktop --top rule sets padding-left:clamp(3rem,5vw,5rem) with higher
       specificity and no media query, so it would otherwise over-indent this
       section on mobile. */
    padding-left: clamp(1rem, 4vw, 1.5rem);
  }
  .brand-section--top .brand-section__title { font-size: clamp(1.6rem, 7vw, 2.4rem); }
  .brand-section--top .brand-section__body { font-size: clamp(.85rem, 3.5vw, 1.1rem); line-height: 1.25; }
  .brand-section--top .brand-section__tagline { font-size: clamp(.85rem, 3.5vw, 1.1rem); }

  /* Cars won — stack stats vertically, bigger text, varied cars */
  .cars-won-stats {
    flex-direction: column;
    align-items: center;
    gap: 2rem;
  }
  .cars-won-stat__num {
    font-size: clamp(2.2rem, 10vw, 3.5rem);
    height: clamp(2.6rem, 12vw, 4rem);
  }
  .cars-won-stat__label {
    font-size: clamp(1.8rem, 7vw, 2.8rem);
  }
  /* Mobile cars carry their own varied vw widths inline (packed into the gaps
     around the content); no blanket !important size override here. */

  .cs-footer { padding: 3rem 1.25rem 2rem; text-align: center; }
  .cs-footer__top {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3rem;
    margin-bottom: 1rem;
  }
  .cs-footer__nav {
    flex-direction: column;
    align-items: center;
    gap: .8rem;
    width: 100%;
  }
  .cs-footer__nav-break { display: none; }
  .cs-footer__nav-link + .cs-footer__nav-link::before { display: none; }
  .cs-footer__nav-link { padding: 0; font-size: 1.4rem; }
  .cs-footer__npn { text-align: center; margin-inline: auto; font-size: 5pt; }
  /* The NPN legal copy has hard <br>s tuned to the wide desktop footer; on a
     phone they break mid-sentence and look broken. Suppress them so the text
     wraps naturally (matches the original mobile footer). */
  .cs-footer__npn br { display: none; }
  /* Center the trademark/copyright stanza to match the NPN block above. */
  .cs-footer__trademark { text-align: center; margin-inline: auto; }

  /* ── Mobile overrides that must come AFTER the coming-soon base rules
     (.optin-section / .faq-cs-section base styles sit above ~line 2450,
     which is AFTER the main @media block near the top of this file — so
     overrides for them have to live HERE to win the cascade). ───── */
  .optin-section { padding-top: 2.5rem; }
  .faq-cs-section { padding-bottom: 4.5rem; }
  .faq-cs-section__heading { font-size: clamp(2rem, 8vw, 3rem); }
  .faq-cs-item__q { font-size: clamp(1.3rem, 5.5vw, 2rem); }
  .faq-cs-item__a { font-size: clamp(1rem, 4vw, 1.4rem); }

  /* Download the App — trim the 4rem desktop side gutter so the block sits
     close to the left edge on mobile. MUST live here (after the
     .stay-touch-section base rule at ~line 2926) to win the cascade — a copy
     in the earlier @media block is overridden by that later base `padding`
     shorthand. */
  .stay-touch-section { padding-inline: 1.5rem; }
  /* Button: smaller, pinned left, label centered inside.
     WIDTH DIAL = the `width` value below. NOTE: the base rule sets
     `min-width: 15rem` (240px), which clamps `width` upward — so we MUST reset
     `min-width` here or the button stays stuck at 240px no matter what. */
  .stay-touch-btn {
    display: block;
    width: 150px;                /* ← THE WIDTH DIAL: change this number */
    min-width: 0;                /* defeat the base min-width:15rem clamp */
    margin-left: 0;
    margin-right: auto;          /* keeps the box pinned to the left */
    font-size: clamp(18px, 5vw, 22px);
    /* Less tall: tighten the line-height (base is 28.43px) and trim the
       vertical padding. These two values are the HEIGHT dial. */
    line-height: 1.1;
    /* More top than bottom padding pushes the label down to true visual center
       (the condensed font's caps sit high). Same total height as before. */
    padding: .32rem 0 .03rem;    /* no side padding — width is fixed above */
  }
}