
/* ===== colors_and_type.css ===== */
/* =========================================================================
   Famous Drive — Design Tokens
   Editorial luxury · obsidian + champagne · Bodoni Moda + Jost
   ========================================================================= */

/* Guard: decorative hero glows must never cause horizontal scroll on any device.
   `clip` (not `hidden`) avoids creating a scroll container, so the sticky nav still works. */
html, body { overflow-x: clip; }

/* Perf: kill the will-change "layer explosion" (was ~146 promoted GPU layers on
   the homepage → constant recompositing = the scroll lag + flicker). will-change
   is only a compositor HINT, so removing it is visually identical; animations
   still run (the browser promotes actively-animating elements on its own). */
*, *::before, *::after { will-change: auto !important; }

/* A11y: ≥44px tap targets on phones/tablets for the primary CONTROLS — hamburger,
   buttons, language switcher, and form fields. Intentionally NOT applied to text/
   footer links (forcing those to 44px would bloat the layout) or the booking bar. */
@media (max-width: 900px) {
  .nav-burger { min-width: 44px; min-height: 44px; }
  .fd-lang__btn { min-height: 40px; padding-top: 8px; padding-bottom: 8px; }
  .btn, a.btn, button.btn, .lux-btn, .ac-btn { min-height: 44px; }
  .formcard input:not([type=hidden]):not([type=checkbox]):not([type=radio]),
  .formcard select, .formcard textarea,
  .field input:not([type=checkbox]):not([type=radio]), .field select, .field textarea { min-height: 44px; }
}

/* Self-hosted brand fonts (was a Google Fonts @import — that's render-blocking,
   network-dependent, and showed a fallback flash on slow/first loads, making the
   site look different across machines). These load instantly from our own server. */
@font-face{font-family:'Cormorant';font-style:italic;font-weight:300;font-display:swap;src:url('assets/fonts/cormorant-300-italic.woff2') format('woff2')}
@font-face{font-family:'Cormorant';font-style:italic;font-weight:400;font-display:swap;src:url('assets/fonts/cormorant-400-italic.woff2') format('woff2')}
@font-face{font-family:'Cormorant';font-style:normal;font-weight:300;font-display:swap;src:url('assets/fonts/cormorant-300.woff2') format('woff2')}
@font-face{font-family:'Cormorant';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/cormorant-400.woff2') format('woff2')}
@font-face{font-family:'Cormorant';font-style:normal;font-weight:500;font-display:swap;src:url('assets/fonts/cormorant-500.woff2') format('woff2')}
@font-face{font-family:'Cormorant';font-style:normal;font-weight:600;font-display:swap;src:url('assets/fonts/cormorant-600.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:200;font-display:swap;src:url('assets/fonts/outfit-200.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:300;font-display:swap;src:url('assets/fonts/outfit-300.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/outfit-400.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:500;font-display:swap;src:url('assets/fonts/outfit-500.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url('assets/fonts/outfit-600.woff2') format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url('assets/fonts/outfit-700.woff2') format('woff2')}

:root {
  /* ---------- Palette (raw) ---------- */
  --obsidian:        #0A0908;   /* primary bg, warm-shifted black */
  --charcoal:        #14110F;   /* elevated surface */
  --smoke:           #1F1B17;   /* 2nd elevation */
  --ash:             #2A2520;   /* hovers on dark surfaces */
  --bone:            #FFFFFF;   /* primary fg on dark, "white" */
  --ivory:           #F4EFE6;   /* light surface */
  --parchment:       #DCD3BE;   /* muted fg on dark */
  --champagne:       #C8A86B;   /* singular accent */
  --champagne-soft:  #B79363;   /* hovers, secondary */
  --antique-brass:   #8C6E3D;   /* deep tone, fg on bone */
  --lead:            #5C5650;   /* disabled */
  --verdigris:       #5C7A6E;   /* success */
  --ember:           #B0593B;   /* alert */

  /* ---------- Alphas of bone (workhorse on dark) ---------- */
  --bone-04:  rgba(234, 227, 210, 0.04);
  --bone-08:  rgba(234, 227, 210, 0.08);
  --bone-10:  rgba(234, 227, 210, 0.10);
  --bone-16:  rgba(234, 227, 210, 0.16);
  --bone-24:  rgba(234, 227, 210, 0.24);
  --bone-40:  rgba(234, 227, 210, 0.78);
  --bone-60:  rgba(234, 227, 210, 0.60);
  --bone-72:  rgba(234, 227, 210, 0.72);

  --champagne-16: rgba(200, 168, 107, 0.16);
  --champagne-40: rgba(200, 168, 107, 0.40);

  /* ---------- Semantic colors ---------- */
  --bg:              var(--obsidian);
  --bg-elevated:     var(--charcoal);
  --bg-overlay:      rgba(10, 9, 8, 0.72);

  --surface-glass:   rgba(20, 17, 15, 0.60);
  --surface-light:   var(--ivory);

  --fg:              var(--bone);
  --fg-muted:        var(--bone-60);
  --fg-subtle:       var(--bone-40);
  --fg-on-light:     var(--obsidian);
  --fg-on-light-muted: var(--antique-brass);

  --accent:          var(--champagne);
  --accent-press:    var(--champagne-soft);

  --hairline:        var(--bone-10);
  --hairline-strong: var(--bone-24);
  --hairline-light:  rgba(140, 110, 61, 0.18);

  --success:         var(--verdigris);
  --alert:           var(--ember);
  --disabled:        var(--lead);

  /* ---------- Type families ---------- */
  /* Light serif headings (Cormorant) + light sans body (Outfit). */
  --font-display: 'Cormorant', Georgia, serif;
  --font-serif:   'Cormorant', Georgia, serif;
  --font-sans:    'Outfit', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-mono:    'Outfit', ui-monospace, SFMono-Regular, monospace;
  /* aliases for the typography spec */
  --serif: var(--font-serif);
  --sans:  var(--font-sans);

  /* ---------- Type scale ---------- */
  --fs-hero:    144px;
  --fs-h1:      96px;
  --fs-h2:      56px;
  --fs-h3:      32px;
  --fs-h4:      24px;
  --fs-body-l:  20px;
  --fs-body:    16px;
  --fs-caption: 13px;
  --fs-eyebrow: 12px;
  --fs-micro:   10px;

  --lh-display: 0.96;  /* @kind font */
  --lh-tight:   1.08;  /* @kind font */
  --lh-snug:    1.25;  /* @kind font */
  --lh-body:    1.55;  /* @kind font */
  --lh-loose:   1.7;   /* @kind font */

  --tracking-eyebrow:   0.18em;    /* @kind font */
  --tracking-nav:       0.14em;    /* @kind font */
  --tracking-tight:     -0.02em;   /* @kind font */
  --tracking-display:   -0.025em;  /* @kind font */

  /* ---------- Spacing (8px base) ---------- */
  --s-1:   4px;
  --s-2:   8px;
  --s-3:   12px;
  --s-4:   16px;
  --s-5:   24px;
  --s-6:   32px;
  --s-7:   48px;
  --s-8:   64px;
  --s-9:   96px;
  --s-10:  128px;
  --s-11:  192px;
  --s-12:  256px;

  /* ---------- Radii ---------- */
  --r-sharp:  0px;
  --r-soft:   2px;
  --r-pill:   999px;

  /* ---------- Shadows (light surfaces only) ---------- */
  --shadow-light-1: 0 1px 2px rgba(20,17,15,0.04), 0 12px 32px rgba(20,17,15,0.06);
  --shadow-light-2: 0 1px 2px rgba(20,17,15,0.06), 0 24px 64px rgba(20,17,15,0.10);

  /* On dark, depth = hairlines, not shadow */

  /* ---------- Motion ---------- */
  --ease-cinematic: cubic-bezier(0.16, 1, 0.3, 1);     /* @kind other */
  --ease-out:       cubic-bezier(0.22, 0.61, 0.36, 1); /* @kind other */
  --ease-inout:     cubic-bezier(0.65, 0, 0.35, 1);    /* @kind other */

  --d-fast:    150ms;   /* @kind other */
  --d-base:    300ms;   /* @kind other */
  --d-slow:    700ms;   /* @kind other */
  --d-reveal:  1200ms;  /* @kind other */

  /* ---------- Grid ---------- */
  --gutter-desktop: 96px;  /* @kind spacing */
  --gutter-tablet:  48px;  /* @kind spacing */
  --gutter-mobile:  24px;  /* @kind spacing */
  --edge-desktop:   64px;  /* @kind spacing */
  --edge-mobile:    24px;  /* @kind spacing */

  /* ---------- Glass ---------- */
  --glass-blur:     blur(8px) saturate(140%);          /* @kind other */
  --glass-bg:       rgba(20, 17, 15, 0.60);             /* @kind color */
  --glass-border:   1px solid rgba(234, 227, 210, 0.08); /* @kind other */
}

/* =========================================================================
   Base
   ========================================================================= */
html, body {
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'ss01', 'cv11', 'kern';
}

::selection { background: var(--champagne); color: var(--obsidian); }

/* A11y (WCAG 1.4.1 / link-in-text-block): inline prose links must be distinguishable
   by more than colour — underline gold links that sit inside body text. */
p a[style*="gold"], li a[style*="gold"], .doc a[style*="gold"], .lede a[style*="gold"] {
  text-decoration: underline; text-underline-offset: 3px;
  text-decoration-thickness: 1px; text-decoration-color: rgba(217, 174, 116, 0.55);
}

/* =========================================================================
   Semantic typography classes
   ========================================================================= */

.t-hero {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--fs-hero);
  line-height: var(--lh-display);
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}

.t-h1 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h1);
  line-height: var(--lh-display);
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}

.t-h2 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h2);
  line-height: var(--lh-tight);
  letter-spacing: var(--tracking-tight);
  text-wrap: balance;
}

.t-h3 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h3);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-tight);
}

.t-h4 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h4);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
}

.t-eyebrow {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-eyebrow);
  line-height: 1;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-muted);
}

.t-eyebrow--accent { color: var(--accent); }

.t-body-l {
  font-family: var(--font-sans);
  font-weight: 300;
  font-size: var(--fs-body-l);
  line-height: 1.5;
  color: var(--fg-muted);
}

.t-body {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--fg);
}

.t-caption {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-caption);
  line-height: 1.4;
  color: var(--fg-muted);
}

.t-nav {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-caption);
  letter-spacing: var(--tracking-nav);
  text-transform: uppercase;
  color: var(--fg);
}

.t-wordmark {
  font-family: var(--font-display);
  font-weight: 400;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  font-feature-settings: 'smcp';
}

.t-italic {
  font-style: italic;
  font-family: var(--font-display);
}

/* Tabular numerals (timetables, fares, plates) */
.t-tabular {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum';
}

/* =========================================================================
   Element defaults — opt-in via .prose
   ========================================================================= */
.prose h1 { @extend .t-h1; }
.prose h2 { @extend .t-h2; }
.prose h3 { @extend .t-h3; }
.prose p  { @extend .t-body; max-width: 64ch; }

/* =========================================================================
   Utility primitives
   ========================================================================= */
.hairline      { border-bottom: 1px solid var(--hairline); }
.hairline-top  { border-top:    1px solid var(--hairline); }
.glass {
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: var(--glass-border);
}

/* Brand wordmark rendered as an IMAGE in the nav — pixel-identical across OS. Universal (homepage React nav doesn't load page-unify.css). */
.nav-mark__wm { height: 13px; width: auto; display: inline-block; vertical-align: middle; margin-left: 0.55em; }
.nav .mark::after, .nav-mark::after { content: none !important; }

/* ── Editorial interlude — full-bleed photographic pause (Jul 2026) ───────── */
.fd-interlude{position:relative;min-height:54vh;background-size:cover;background-position:center;background-attachment:fixed;display:flex;align-items:center;justify-content:center;border-top:1px solid rgba(250,241,221,.13);padding:0;overflow:hidden;}
.fd-interlude::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(42,30,18,.44),rgba(42,30,18,.18) 50%,rgba(42,30,18,.5));z-index:1;}
.fd-interlude__inner{position:relative;text-align:center;padding:72px 28px;z-index:2;}
.fd-interlude__inner .eyebrow{margin-bottom:14px;}
.fd-interlude__inner h2{font-family:'Cormorant',Georgia,serif;font-style:italic;font-weight:400;color:#FAF1DD;font-size:clamp(1.7rem,3.4vw,2.6rem);margin:0;}
@media(max-width:900px){.fd-interlude{background-attachment:scroll;min-height:40vh;}}
/* interlude v2 — JS-driven parallax drift + caption reveal (fd-interlude.js).
   The script moves the image onto a .fd-interlude__bg layer so it can be
   transformed; without JS the rules above stand as the full fallback. */
.fd-interlude.fdi-js{background-image:none !important;background-attachment:scroll;}
.fd-interlude__bg{position:absolute;left:0;right:0;top:-10%;bottom:-10%;background-size:cover;background-position:center;will-change:transform;z-index:0;}
.fd-interlude.fdi-js .fd-interlude__inner .eyebrow,
.fd-interlude.fdi-js .fd-interlude__inner h2{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,.61,.36,1);}
.fd-interlude.fdi-js .fd-interlude__inner h2{transition-delay:.18s;}
.fd-interlude.fdi-in .fd-interlude__inner .eyebrow,
.fd-interlude.fdi-in .fd-interlude__inner h2{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .fd-interlude.fdi-js .fd-interlude__inner .eyebrow,.fd-interlude.fdi-js .fd-interlude__inner h2{opacity:1;transform:none;transition:none;}
  .fd-interlude__bg{transform:none !important;}
}

/* ── Image-led editorial duet (Jul 2026) — the Aman/Rolls pattern: the photo
   is the sentence, the text is the footnote. Large sharp image + short copy. ── */
.fd-duet{display:grid;grid-template-columns:1.02fr .98fr;gap:56px;align-items:center;margin-top:2.2rem;}
.fd-duet__fig{position:relative;margin:0;}
.fd-duet__fig img{width:100%;display:block;border-radius:4px;border:1px solid rgba(217,174,116,.28);box-shadow:0 24px 60px -28px rgba(0,0,0,.7);aspect-ratio:4/3;object-fit:cover;}
.fd-duet__fig figcaption{margin-top:10px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#D9AE74;opacity:.85;}
.fd-duet__copy p{max-width:34rem;}
.fd-duet__copy p+p{margin-top:.9em;}
@media(max-width:860px){.fd-duet{grid-template-columns:1fr;gap:20px;}.fd-duet__fig{order:-1;}}

/* ── Photo-backed section (Jul 2026) — the image IS the section background,
   content floats on top. Owner: framed images read too small. ── */
.fd-photoback{position:relative;overflow:hidden;background-size:cover;background-position:center;padding:110px 0;}
.fd-photoback::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(30,21,13,.84),rgba(30,21,13,.58) 55%,rgba(30,21,13,.86));}
.fd-photoback>.wrap{position:relative;z-index:2;}
/* Airy statement lines — fewer, longer, never a text wall */
.fd-line{max-width:58rem;font-size:1.12rem;line-height:1.9;}
.fd-line+.fd-line{margin-top:1.1em;}

/* A11y: booking widget + language switcher tap targets (audit Jul 3) */
@media (max-width: 900px) {
  .fdb-date-btn, .hbq-sel__btn, .hbq__bar-input, .fdb-input { min-height: 44px; }
  .fd-lang__btn { min-width: 44px; min-height: 44px; }
}

/* ── Mobile image swap (AUTO-GENERATED — regenerate when adding band/hero images):
   phones get the 760px -sm variant of every band/photoback/hero background.
   !important beats the inline style; fd-interlude.js reads COMPUTED style so
   its parallax layer inherits the swap. ── */
@media (max-width: 700px){
.fd-interlude[style*="/cabin-cashmere.webp"],
.fd-photoback[style*="/cabin-cashmere.webp"],
.hero-ph[style*="/cabin-cashmere.webp"],
.sp-hero__bg[style*="/cabin-cashmere.webp"],
.lux-hero__bg[style*="/cabin-cashmere.webp"]{background-image:url('assets/editorial/cabin-cashmere-sm.webp') !important;}
.fd-interlude[style*="/euro-boulevard.webp"],
.fd-photoback[style*="/euro-boulevard.webp"],
.hero-ph[style*="/euro-boulevard.webp"],
.sp-hero__bg[style*="/euro-boulevard.webp"],
.lux-hero__bg[style*="/euro-boulevard.webp"]{background-image:url('assets/editorial/euro-boulevard-sm.webp') !important;}
.fd-interlude[style*="/facade-dawn.webp"],
.fd-photoback[style*="/facade-dawn.webp"],
.hero-ph[style*="/facade-dawn.webp"],
.sp-hero__bg[style*="/facade-dawn.webp"],
.lux-hero__bg[style*="/facade-dawn.webp"]{background-image:url('assets/editorial/facade-dawn-sm.webp') !important;}
.fd-interlude[style*="/fifth-flatiron.webp"],
.fd-photoback[style*="/fifth-flatiron.webp"],
.hero-ph[style*="/fifth-flatiron.webp"],
.sp-hero__bg[style*="/fifth-flatiron.webp"],
.lux-hero__bg[style*="/fifth-flatiron.webp"]{background-image:url('assets/editorial/fifth-flatiron-sm.webp') !important;}
.fd-interlude[style*="/gloved-hands.webp"],
.fd-photoback[style*="/gloved-hands.webp"],
.hero-ph[style*="/gloved-hands.webp"],
.sp-hero__bg[style*="/gloved-hands.webp"],
.lux-hero__bg[style*="/gloved-hands.webp"]{background-image:url('assets/editorial/gloved-hands-sm.webp') !important;}
.fd-interlude[style*="/hamptons-dune.webp"],
.fd-photoback[style*="/hamptons-dune.webp"],
.hero-ph[style*="/hamptons-dune.webp"],
.sp-hero__bg[style*="/hamptons-dune.webp"],
.lux-hero__bg[style*="/hamptons-dune.webp"]{background-image:url('assets/editorial/hamptons-dune-sm.webp') !important;}
.fd-interlude[style*="/hotel-brass.webp"],
.fd-photoback[style*="/hotel-brass.webp"],
.hero-ph[style*="/hotel-brass.webp"],
.sp-hero__bg[style*="/hotel-brass.webp"],
.lux-hero__bg[style*="/hotel-brass.webp"]{background-image:url('assets/editorial/hotel-brass-sm.webp') !important;}
.fd-interlude[style*="/jet-dawn.webp"],
.fd-photoback[style*="/jet-dawn.webp"],
.hero-ph[style*="/jet-dawn.webp"],
.sp-hero__bg[style*="/jet-dawn.webp"],
.lux-hero__bg[style*="/jet-dawn.webp"]{background-image:url('assets/editorial/jet-dawn-sm.webp') !important;}
.fd-interlude[style*="/key-leather.webp"],
.fd-photoback[style*="/key-leather.webp"],
.hero-ph[style*="/key-leather.webp"],
.sp-hero__bg[style*="/key-leather.webp"],
.lux-hero__bg[style*="/key-leather.webp"]{background-image:url('assets/editorial/key-leather-sm.webp') !important;}
.fd-interlude[style*="/leather-sharp.webp"],
.fd-photoback[style*="/leather-sharp.webp"],
.hero-ph[style*="/leather-sharp.webp"],
.sp-hero__bg[style*="/leather-sharp.webp"],
.lux-hero__bg[style*="/leather-sharp.webp"]{background-image:url('assets/editorial/leather-sharp-sm.webp') !important;}
.fd-interlude[style*="/maybach-void.webp"],
.fd-photoback[style*="/maybach-void.webp"],
.hero-ph[style*="/maybach-void.webp"],
.sp-hero__bg[style*="/maybach-void.webp"],
.lux-hero__bg[style*="/maybach-void.webp"]{background-image:url('assets/editorial/maybach-void-sm.webp') !important;}
.fd-interlude[style*="/midtown-dusk.webp"],
.fd-photoback[style*="/midtown-dusk.webp"],
.hero-ph[style*="/midtown-dusk.webp"],
.sp-hero__bg[style*="/midtown-dusk.webp"],
.lux-hero__bg[style*="/midtown-dusk.webp"]{background-image:url('assets/editorial/midtown-dusk-sm.webp') !important;}
.fd-interlude[style*="/nyc-dusk.webp"],
.fd-photoback[style*="/nyc-dusk.webp"],
.hero-ph[style*="/nyc-dusk.webp"],
.sp-hero__bg[style*="/nyc-dusk.webp"],
.lux-hero__bg[style*="/nyc-dusk.webp"]{background-image:url('assets/editorial/nyc-dusk-sm.webp') !important;}
.fd-interlude[style*="/park-canyon.webp"],
.fd-photoback[style*="/park-canyon.webp"],
.hero-ph[style*="/park-canyon.webp"],
.sp-hero__bg[style*="/park-canyon.webp"],
.lux-hero__bg[style*="/park-canyon.webp"]{background-image:url('assets/editorial/park-canyon-sm.webp') !important;}
.fd-interlude[style*="/portico-dusk.webp"],
.fd-photoback[style*="/portico-dusk.webp"],
.hero-ph[style*="/portico-dusk.webp"],
.sp-hero__bg[style*="/portico-dusk.webp"],
.lux-hero__bg[style*="/portico-dusk.webp"]{background-image:url('assets/editorial/portico-dusk-sm.webp') !important;}
.fd-interlude[style*="/quilted-leather.webp"],
.fd-photoback[style*="/quilted-leather.webp"],
.hero-ph[style*="/quilted-leather.webp"],
.sp-hero__bg[style*="/quilted-leather.webp"],
.lux-hero__bg[style*="/quilted-leather.webp"]{background-image:url('assets/editorial/quilted-leather-sm.webp') !important;}
.fd-interlude[style*="/silhouette.webp"],
.fd-photoback[style*="/silhouette.webp"],
.hero-ph[style*="/silhouette.webp"],
.sp-hero__bg[style*="/silhouette.webp"],
.lux-hero__bg[style*="/silhouette.webp"]{background-image:url('assets/editorial/silhouette-sm.webp') !important;}
.fd-interlude[style*="/terminal-arrival.webp"],
.fd-photoback[style*="/terminal-arrival.webp"],
.hero-ph[style*="/terminal-arrival.webp"],
.sp-hero__bg[style*="/terminal-arrival.webp"],
.lux-hero__bg[style*="/terminal-arrival.webp"]{background-image:url('assets/editorial/terminal-arrival-sm.webp') !important;}
.fd-interlude[style*="/velvet-rope.webp"],
.fd-photoback[style*="/velvet-rope.webp"],
.hero-ph[style*="/velvet-rope.webp"],
.sp-hero__bg[style*="/velvet-rope.webp"],
.lux-hero__bg[style*="/velvet-rope.webp"]{background-image:url('assets/editorial/velvet-rope-sm.webp') !important;}
.fd-interlude[style*="/watch-wheel.webp"],
.fd-photoback[style*="/watch-wheel.webp"],
.hero-ph[style*="/watch-wheel.webp"],
.sp-hero__bg[style*="/watch-wheel.webp"],
.lux-hero__bg[style*="/watch-wheel.webp"]{background-image:url('assets/editorial/watch-wheel-sm.webp') !important;}
.fd-interlude[style*="/about-brownstone.webp"],
.fd-photoback[style*="/about-brownstone.webp"],
.hero-ph[style*="/about-brownstone.webp"],
.sp-hero__bg[style*="/about-brownstone.webp"],
.lux-hero__bg[style*="/about-brownstone.webp"]{background-image:url('assets/img/about-brownstone-sm.webp') !important;}
.fd-interlude[style*="/about-heritage.webp"],
.fd-photoback[style*="/about-heritage.webp"],
.hero-ph[style*="/about-heritage.webp"],
.sp-hero__bg[style*="/about-heritage.webp"],
.lux-hero__bg[style*="/about-heritage.webp"]{background-image:url('assets/img/about-heritage-sm.webp') !important;}
.fd-interlude[style*="/air-globe.webp"],
.fd-photoback[style*="/air-globe.webp"],
.hero-ph[style*="/air-globe.webp"],
.sp-hero__bg[style*="/air-globe.webp"],
.lux-hero__bg[style*="/air-globe.webp"]{background-image:url('assets/img/air-globe-sm.webp') !important;}
.fd-interlude[style*="/chauffeur-arrival.webp"],
.fd-photoback[style*="/chauffeur-arrival.webp"],
.hero-ph[style*="/chauffeur-arrival.webp"],
.sp-hero__bg[style*="/chauffeur-arrival.webp"],
.lux-hero__bg[style*="/chauffeur-arrival.webp"]{background-image:url('assets/img/chauffeur-arrival-sm.webp') !important;}
.fd-interlude[style*="/contact-desk.webp"],
.fd-photoback[style*="/contact-desk.webp"],
.hero-ph[style*="/contact-desk.webp"],
.sp-hero__bg[style*="/contact-desk.webp"],
.lux-hero__bg[style*="/contact-desk.webp"]{background-image:url('assets/img/contact-desk-sm.webp') !important;}
.fd-interlude[style*="/events-redcarpet.webp"],
.fd-photoback[style*="/events-redcarpet.webp"],
.hero-ph[style*="/events-redcarpet.webp"],
.sp-hero__bg[style*="/events-redcarpet.webp"],
.lux-hero__bg[style*="/events-redcarpet.webp"]{background-image:url('assets/img/events-redcarpet-sm.webp') !important;}
.fd-interlude[style*="/executive-aviation.webp"],
.fd-photoback[style*="/executive-aviation.webp"],
.hero-ph[style*="/executive-aviation.webp"],
.sp-hero__bg[style*="/executive-aviation.webp"],
.lux-hero__bg[style*="/executive-aviation.webp"]{background-image:url('assets/img/executive-aviation-sm.webp') !important;}
.fd-interlude[style*="/fleet-jet-sprinter.webp"],
.fd-photoback[style*="/fleet-jet-sprinter.webp"],
.hero-ph[style*="/fleet-jet-sprinter.webp"],
.sp-hero__bg[style*="/fleet-jet-sprinter.webp"],
.lux-hero__bg[style*="/fleet-jet-sprinter.webp"]{background-image:url('assets/img/fleet-jet-sprinter-sm.webp') !important;}
.fd-interlude[style*="/fleet-limo-sprinter.webp"],
.fd-photoback[style*="/fleet-limo-sprinter.webp"],
.hero-ph[style*="/fleet-limo-sprinter.webp"],
.sp-hero__bg[style*="/fleet-limo-sprinter.webp"],
.lux-hero__bg[style*="/fleet-limo-sprinter.webp"]{background-image:url('assets/img/fleet-limo-sprinter-sm.webp') !important;}
.fd-interlude[style*="/fleet-mini-coach.webp"],
.fd-photoback[style*="/fleet-mini-coach.webp"],
.hero-ph[style*="/fleet-mini-coach.webp"],
.sp-hero__bg[style*="/fleet-mini-coach.webp"],
.lux-hero__bg[style*="/fleet-mini-coach.webp"]{background-image:url('assets/img/fleet-mini-coach-sm.webp') !important;}
.fd-interlude[style*="/hero-airport-curb.webp"],
.fd-photoback[style*="/hero-airport-curb.webp"],
.hero-ph[style*="/hero-airport-curb.webp"],
.sp-hero__bg[style*="/hero-airport-curb.webp"],
.lux-hero__bg[style*="/hero-airport-curb.webp"]{background-image:url('assets/img/hero-airport-curb-sm.webp') !important;}
.fd-interlude[style*="/hero-cruise-pier.webp"],
.fd-photoback[style*="/hero-cruise-pier.webp"],
.hero-ph[style*="/hero-cruise-pier.webp"],
.sp-hero__bg[style*="/hero-cruise-pier.webp"],
.lux-hero__bg[style*="/hero-cruise-pier.webp"]{background-image:url('assets/img/hero-cruise-pier-sm.webp') !important;}
.fd-interlude[style*="/hero-desk-w223.webp"],
.fd-photoback[style*="/hero-desk-w223.webp"],
.hero-ph[style*="/hero-desk-w223.webp"],
.sp-hero__bg[style*="/hero-desk-w223.webp"],
.lux-hero__bg[style*="/hero-desk-w223.webp"]{background-image:url('assets/img/hero-desk-w223-sm.webp') !important;}
.fd-interlude[style*="/hero-exec-w223.webp"],
.fd-photoback[style*="/hero-exec-w223.webp"],
.hero-ph[style*="/hero-exec-w223.webp"],
.sp-hero__bg[style*="/hero-exec-w223.webp"],
.lux-hero__bg[style*="/hero-exec-w223.webp"]{background-image:url('assets/img/hero-exec-w223-sm.webp') !important;}
.fd-interlude[style*="/hero-fleet.webp"],
.fd-photoback[style*="/hero-fleet.webp"],
.hero-ph[style*="/hero-fleet.webp"],
.sp-hero__bg[style*="/hero-fleet.webp"],
.lux-hero__bg[style*="/hero-fleet.webp"]{background-image:url('assets/img/hero-fleet-sm.webp') !important;}
.fd-interlude[style*="/hero-hotel-w223.webp"],
.fd-photoback[style*="/hero-hotel-w223.webp"],
.hero-ph[style*="/hero-hotel-w223.webp"],
.sp-hero__bg[style*="/hero-hotel-w223.webp"],
.lux-hero__bg[style*="/hero-hotel-w223.webp"]{background-image:url('assets/img/hero-hotel-w223-sm.webp') !important;}
.fd-interlude[style*="/hero-lux-cullinan.webp"],
.fd-photoback[style*="/hero-lux-cullinan.webp"],
.hero-ph[style*="/hero-lux-cullinan.webp"],
.sp-hero__bg[style*="/hero-lux-cullinan.webp"],
.lux-hero__bg[style*="/hero-lux-cullinan.webp"]{background-image:url('assets/img/hero-lux-cullinan-sm.webp') !important;}
.fd-interlude[style*="/hero-nyc.webp"],
.fd-photoback[style*="/hero-nyc.webp"],
.hero-ph[style*="/hero-nyc.webp"],
.sp-hero__bg[style*="/hero-nyc.webp"],
.lux-hero__bg[style*="/hero-nyc.webp"]{background-image:url('assets/img/hero-nyc-sm.webp') !important;}
.fd-interlude[style*="/interior-exec.webp"],
.fd-photoback[style*="/interior-exec.webp"],
.hero-ph[style*="/interior-exec.webp"],
.sp-hero__bg[style*="/interior-exec.webp"],
.lux-hero__bg[style*="/interior-exec.webp"]{background-image:url('assets/img/interior-exec-sm.webp') !important;}
.fd-interlude[style*="/interior-limo.webp"],
.fd-photoback[style*="/interior-limo.webp"],
.hero-ph[style*="/interior-limo.webp"],
.sp-hero__bg[style*="/interior-limo.webp"],
.lux-hero__bg[style*="/interior-limo.webp"]{background-image:url('assets/img/interior-limo-sm.webp') !important;}
.fd-interlude[style*="/lux-cullinan-void.webp"],
.fd-photoback[style*="/lux-cullinan-void.webp"],
.hero-ph[style*="/lux-cullinan-void.webp"],
.sp-hero__bg[style*="/lux-cullinan-void.webp"],
.lux-hero__bg[style*="/lux-cullinan-void.webp"]{background-image:url('assets/img/lux-cullinan-void-sm.webp') !important;}
.fd-interlude[style*="/lux-exotic.webp"],
.fd-photoback[style*="/lux-exotic.webp"],
.hero-ph[style*="/lux-exotic.webp"],
.sp-hero__bg[style*="/lux-exotic.webp"],
.lux-hero__bg[style*="/lux-exotic.webp"]{background-image:url('assets/img/lux-exotic-sm.webp') !important;}
.fd-interlude[style*="/moment-airport.webp"],
.fd-photoback[style*="/moment-airport.webp"],
.hero-ph[style*="/moment-airport.webp"],
.sp-hero__bg[style*="/moment-airport.webp"],
.lux-hero__bg[style*="/moment-airport.webp"]{background-image:url('assets/img/moment-airport-sm.webp') !important;}
.fd-interlude[style*="/moment-charters.webp"],
.fd-photoback[style*="/moment-charters.webp"],
.hero-ph[style*="/moment-charters.webp"],
.sp-hero__bg[style*="/moment-charters.webp"],
.lux-hero__bg[style*="/moment-charters.webp"]{background-image:url('assets/img/moment-charters-sm.webp') !important;}
.fd-interlude[style*="/moment-events.webp"],
.fd-photoback[style*="/moment-events.webp"],
.hero-ph[style*="/moment-events.webp"],
.sp-hero__bg[style*="/moment-events.webp"],
.lux-hero__bg[style*="/moment-events.webp"]{background-image:url('assets/img/moment-events-sm.webp') !important;}
.fd-interlude[style*="/real-bmw-7.webp"],
.fd-photoback[style*="/real-bmw-7.webp"],
.hero-ph[style*="/real-bmw-7.webp"],
.sp-hero__bg[style*="/real-bmw-7.webp"],
.lux-hero__bg[style*="/real-bmw-7.webp"]{background-image:url('assets/img/real-bmw-7-sm.webp') !important;}
.fd-interlude[style*="/real-coach.webp"],
.fd-photoback[style*="/real-coach.webp"],
.hero-ph[style*="/real-coach.webp"],
.sp-hero__bg[style*="/real-coach.webp"],
.lux-hero__bg[style*="/real-coach.webp"]{background-image:url('assets/img/real-coach-sm.webp') !important;}
.fd-interlude[style*="/real-escalade.webp"],
.fd-photoback[style*="/real-escalade.webp"],
.hero-ph[style*="/real-escalade.webp"],
.sp-hero__bg[style*="/real-escalade.webp"],
.lux-hero__bg[style*="/real-escalade.webp"]{background-image:url('assets/img/real-escalade-sm.webp') !important;}
.fd-interlude[style*="/real-rolls.webp"],
.fd-photoback[style*="/real-rolls.webp"],
.hero-ph[style*="/real-rolls.webp"],
.sp-hero__bg[style*="/real-rolls.webp"],
.lux-hero__bg[style*="/real-rolls.webp"]{background-image:url('assets/img/real-rolls-sm.webp') !important;}
.fd-interlude[style*="/real-s-class.webp"],
.fd-photoback[style*="/real-s-class.webp"],
.hero-ph[style*="/real-s-class.webp"],
.sp-hero__bg[style*="/real-s-class.webp"],
.lux-hero__bg[style*="/real-s-class.webp"]{background-image:url('assets/img/real-s-class-sm.webp') !important;}
.fd-interlude[style*="/real-sprinter.webp"],
.fd-photoback[style*="/real-sprinter.webp"],
.hero-ph[style*="/real-sprinter.webp"],
.sp-hero__bg[style*="/real-sprinter.webp"],
.lux-hero__bg[style*="/real-sprinter.webp"]{background-image:url('assets/img/real-sprinter-sm.webp') !important;}
.fd-interlude[style*="/real-suburban.webp"],
.fd-photoback[style*="/real-suburban.webp"],
.hero-ph[style*="/real-suburban.webp"],
.sp-hero__bg[style*="/real-suburban.webp"],
.lux-hero__bg[style*="/real-suburban.webp"]{background-image:url('assets/img/real-suburban-sm.webp') !important;}
.fd-interlude[style*="/real-tesla.webp"],
.fd-photoback[style*="/real-tesla.webp"],
.hero-ph[style*="/real-tesla.webp"],
.sp-hero__bg[style*="/real-tesla.webp"],
.lux-hero__bg[style*="/real-tesla.webp"]{background-image:url('assets/img/real-tesla-sm.webp') !important;}
.fd-interlude[style*="/real-yukon.webp"],
.fd-photoback[style*="/real-yukon.webp"],
.hero-ph[style*="/real-yukon.webp"],
.sp-hero__bg[style*="/real-yukon.webp"],
.lux-hero__bg[style*="/real-yukon.webp"]{background-image:url('assets/img/real-yukon-sm.webp') !important;}
.fd-interlude[style*="/work-in-transit.webp"],
.fd-photoback[style*="/work-in-transit.webp"],
.hero-ph[style*="/work-in-transit.webp"],
.sp-hero__bg[style*="/work-in-transit.webp"],
.lux-hero__bg[style*="/work-in-transit.webp"]{background-image:url('assets/img/work-in-transit-sm.webp') !important;}
}

/* ===== site.css ===== */
/* Famous Drive — Website UI Kit
   Conventional structure, Aman-warmth, light cream + white-gold + ink black.
*/
@import url('colors_and_type.css');

:root {
  /* ── Spacing scale (4-pt) ── added: replaces arbitrary px going forward */
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px; --space-4: 16px;
  --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;
  --space-9: 96px; --space-10: 120px;

  /* ── Radius ── canonical 2px vocabulary (was 8 different radii) */
  --radius: 2px;
  --radius-sm: 2px;
  --radius-pill: 999px;
  --radius-round: 50%;

  /* ── Motion ── one duration scale + the house easing (was ~11 ad-hoc durations) */
  --dur-fast: 200ms;
  --dur-base: 300ms;
  --dur-slow: 420ms;
  --ease-standard: cubic-bezier(.2, .7, .2, 1);
  --ease-emphasized: cubic-bezier(.2, .8, .2, 1);

  /* "Camel & Bronze" — the lighter cousin of Tobacco & Bronze.
     ─ Same warm leather family, brighter values throughout.
     ─ Reference: camel cashmere overcoat in daylight, Brunello Cucinelli
       safari jacket, Hermès Etoupe leather. Mid-toned and luminous.
     ─ One precious metal: deeper bronze (so accents stay visible
       against the lighter ground). Pure white still banned. */

  /* Surfaces — camel, mid-tone but brighter */
  --bg:           #6F5640;   /* camel — page base (was #3A2C22) */
  --bg-alt:       #634A36;   /* deeper camel — subtle bands */
  --bg-elev:      #4D3826;   /* deep espresso — matches cards (option A) */
  --bg-card:      #7C6249;
  --bg-page-light:#7C6249;

  /* Saddle — softer dark for inversion sections (Why Us, Footer) */
  --bg-deep:      #4D3826;   /* saddle */
  --bg-deeper:    #3B2A1B;   /* deeper saddle (Footer) */
  --bg-dark:      #2A1E12;   /* darkest — full-bleed photo frames */

  /* Type — warm cream
     ─ On camel ground the muted/subtle steps tilt slightly toward cream
       instead of pure taupe so they retain crispness without going stark. */
  --fg:           #FFFFFF;   /* primary — 9.5:1 on camel */
  --fg-ink:       #FFFFFF;
  --fg-on-dark:   #FFFFFF;
  --fg-muted:     #F4EFE6;   /* secondary — lifted from #DAC4A1 */
  --fg-subtle:    #ECE4D7;   /* tertiary — lightened for WCAG AA (4.5:1 on camel; was #E6DCCB 3.48:1) */
  --fg-faint:     #E3DACB;   /* quaternary — disclaimers/footers (AA 4.5:1 on camel; was #A6916A 2.23:1) */
  --fg-ink-muted: #F4EFE6;
  --fg-ink-subtle:#ECE4D7;

  /* Bronze — recalibrated so the accent reads against camel.
     Old --terra (#A06A38) lived in the same brown family as the page and
     visually disappeared on eyebrows + italic ems. The new --terra is a
     polished bright bronze; --terra-deep stays burnt for use on cream
     sections where dark-on-light is the goal. */
  --terra:        #D9AE74;   /* polished bronze — used on camel surfaces */
  --terra-deep:   #794B1E;   /* burnt bronze — used on cream surfaces & press states */
  --terra-bright: #ECC58F;   /* highlight — for hover glow */
  --brass:        #D9AE74;
  --brass-deep:   #794B1E;
  --brass-bright: #ECC58F;
  --gold:         var(--terra);
  --gold-deep:    var(--terra-deep);
  --gold-bright:  var(--terra-bright);

  /* Warm taupe — supporting neutral */
  --sage:         #DDD1BB;   /* lightened for WCAG AA (4.5:1 on camel; was #9D8A6E 2.04:1) */
  --sage-deep:    #6E5E48;

  /* Hairlines — light on warm brown */
  --hairline:            rgba(250,241,221,0.14);
  --hairline-strong:     rgba(250,241,221,0.26);
  --hairline-ink:        rgba(250,241,221,0.14);
  --hairline-ink-strong: rgba(250,241,221,0.26);
  --hairline-gold:       rgba(160,106,56,0.50);

  --shadow-1: 0 1px 2px rgba(0,0,0,0.22), 0 8px 24px rgba(0,0,0,0.22);
  --shadow-2: 0 1px 2px rgba(0,0,0,0.30), 0 30px 60px -10px rgba(0,0,0,0.35);
  --shadow-3: 0 1px 2px rgba(0,0,0,0.34), 0 60px 120px -20px rgba(0,0,0,0.42);
}

* { box-sizing: border-box; }
html, body, #root { margin:0; padding:0; background: var(--bg); color: var(--fg); min-height: 100%; }
body {
  font-family: var(--font-sans);
  background:
    radial-gradient(ellipse 1200px 700px at 85% -5%, rgba(194,141,90,0.14), transparent 65%),
    radial-gradient(ellipse 1000px 600px at -10% 75%, rgba(0,0,0,0.14), transparent 70%),
    var(--bg);
  background-attachment: fixed;
}

.app { min-height: 100vh; position: relative; overflow-x: clip; }
.container { max-width: 1440px; margin: 0 auto; padding: 0 56px; }
@media (max-width: 720px) { .container { padding: 0 24px; } }

/* type helpers */
.eyebrow {
  display: inline-flex; align-items: center; gap: 14px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 600;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-bright);
}
.eyebrow::before {
  content: ""; width: 32px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-bright) 30%, var(--gold-bright) 100%);
}
.eyebrow::after {
  /* small bronze diamond pip — matches the hero-title__pip vocabulary */
  content: "◆"; font-size: 6px; color: var(--gold);
  vertical-align: middle; opacity: 0.85;
  margin-left: 4px;
}

.h-display {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(38px, 4.6vw, 66px); line-height: 1.04; letter-spacing: -0.012em;
  color: var(--fg); margin: 0; text-wrap: balance;
}
.h-display em { font-style: italic; color: var(--gold); }

.h-section {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(26px, 2.7vw, 36px); line-height: 1.08; letter-spacing: -0.014em;
  color: var(--fg); margin: 0; text-wrap: balance;
}
.h-section em { font-style: italic; color: var(--gold); }

.lede {
  font-family: var(--font-sans); font-weight: 300; font-size: 19px; line-height: 1.6;
  color: var(--fg); margin: 0;
}

/* on light cards (inverted) */
.on-light, .on-light .h-section, .on-light .h-display, .on-light .lede { color: var(--fg-ink); }
.on-light .lede { color: var(--fg-ink-muted); }
.on-light .eyebrow { color: var(--gold-deep); }
.on-light .eyebrow::before { background: var(--gold-deep); }
.on-light .h-section em, .on-light .h-display em { color: var(--gold-deep); }

/* buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  height: 52px; padding: 0 28px; border-radius: var(--radius);
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.20em; text-transform: uppercase;
  cursor: pointer; user-select: none;
  background: transparent; border: 1px solid transparent; color: var(--fg);
  transition: all 300ms var(--ease-cinematic);
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--gold); color: #2A1E12; border-color: var(--gold);
  box-shadow: 0 1px 2px rgba(0,0,0,0.22), 0 12px 28px -8px rgba(160,106,56,0.50); }
.btn--primary:hover { background: var(--gold); border-color: var(--gold); color: #2A1E12; }
.btn--gold { background: var(--gold); color: #2A1E12; border-color: var(--gold);
  box-shadow: 0 1px 2px rgba(0,0,0,0.22), 0 12px 28px -8px rgba(160,106,56,0.50); }
.btn--gold:hover { background: var(--gold); border-color: var(--gold); color: #2A1E12; }
/* Match the static pages' button hover (lift + slight brighten) so gold CTAs feel
   identical everywhere. */
.btn--gold:hover, .btn--primary:hover { filter: brightness(1.06); transform: translateY(-1px); }
.btn--ghost { border-color: var(--hairline-strong); color: var(--fg); }
.btn--ghost:hover { border-color: var(--gold); color: var(--gold); }
.btn--ghost-dark { border-color: rgba(250,241,221,0.30); color: var(--fg-on-dark); }
.btn--ghost-dark:hover { border-color: var(--fg-on-dark); }
.btn--ink { background: var(--bg-deep); color: var(--fg); border-color: var(--bg-deep); }
.btn--ink:hover { background: var(--bg-deep); border-color: var(--gold); color: var(--fg); }

/* ===== Universal 3D tilt card =====
   Apply via the `tilt-card` className. Cursor-tracked rotation + bronze sheen
   following the pointer. Inner content layers can opt in with `tilt-up`. */
.tilt-card {
  --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%;
  transform: perspective(1200px) rotateX(var(--rx)) rotateY(var(--ry));
  transform-style: preserve-3d;
  transition: transform 360ms var(--ease-standard),
              box-shadow 360ms var(--ease-standard),
              border-color 240ms;
  position: relative;
}
.tilt-card::after {
  /* Specular bronze sheen — invisible at rest, follows cursor on hover */
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(circle 220px at var(--mx) var(--my),
              rgba(213,164,114,0.18), transparent 60%);
  opacity: 0;
  transition: opacity 320ms;
  pointer-events: none;
  z-index: 1;
  border-radius: inherit;
}
.tilt-card:hover { box-shadow: 0 1px 2px rgba(0,0,0,0.35), 0 22px 48px -16px rgba(0,0,0,0.55); }
.tilt-card:hover::after { opacity: 1; }
.tilt-card > * { position: relative; z-index: 2; }
.tilt-card .tilt-up { transform: translateZ(24px); transition: transform 360ms var(--ease-standard); }
.tilt-card:hover .tilt-up { transform: translateZ(38px); }

@media (prefers-reduced-motion: reduce) {
  .tilt-card { transform: none !important; transition: box-shadow 200ms, border-color 200ms !important; }
  .tilt-card .tilt-up { transform: none !important; }
}

/* ===== hero.css ===== */
/* === NAV === */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 90;
  height: 78px;
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; padding: 0 40px; gap: 40px;
  background: rgba(31, 27, 23, 0.78);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  border-bottom: 1px solid var(--hairline);
}
.nav-mark { font-family: var(--font-display); font-weight: 400;
  font-size: 17px; letter-spacing: 0.34em; color: var(--fg); text-decoration: none; }
.nav-mark sup { font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.20em; color: var(--gold); vertical-align: 7px; margin-left: 8px; }
.nav-links { display: flex; gap: 32px; justify-content: center; align-items: center; }
.nav-link { font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg);
  cursor: pointer; background: none; border: 0;
  padding: 4px 0; margin: 0; position: relative;
  display: inline-flex; align-items: center; height: 32px;
  line-height: 1; white-space: nowrap; text-decoration: none;
  font-family: inherit; /* normalize button vs anchor */
  transition: color 200ms; }
.nav-link { font-family: var(--font-sans); }
.nav-link--wc { color: var(--gold); }
.nav-link--wc::before {
  content: ""; display: inline-block; width: 5px; height: 5px;
  border-radius: 50%; background: var(--gold); margin-right: 7px;
  vertical-align: middle;
  box-shadow: 0 0 0 0 rgba(217,174,116,0.6);
  animation: nav-wc-pulse 2.4s infinite;
}
@keyframes nav-wc-pulse {
  0% { box-shadow: 0 0 0 0 rgba(217,174,116,0.55); }
  70% { box-shadow: 0 0 0 6px rgba(217,174,116,0); }
  100% { box-shadow: 0 0 0 0 rgba(217,174,116,0); }
}
.nav-link::after { content:""; position:absolute; left:0; bottom:-6px; height:1px;
  background: var(--gold); width: 0; transition: width 400ms var(--ease-cinematic); }
.nav-link:hover { color: var(--gold); }
.nav-link:hover::after, .nav-link.is-active::after { width: 100%; }
.nav-right { display: flex; align-items: center; gap: 18px; }
.nav-phone { font-family: var(--font-sans); font-size: 12px; font-weight: 500;
  letter-spacing: 0.16em; color: var(--fg-muted); font-variant-numeric: tabular-nums;
  white-space: nowrap; }
.nav-phone strong { color: var(--gold); font-weight: 500; margin-right: 4px; }

/* language dropdown */
.nav-lang { position: relative; }
.nav-lang-trigger {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent; border: 1px solid var(--hairline-strong);
  padding: 8px 12px; border-radius: var(--radius); cursor: pointer;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.16em; color: var(--fg);
  transition: all 200ms;
}
.nav-lang-trigger:hover { border-color: var(--gold); color: var(--gold); }
.nav-lang-trigger .globe { font-size: 13px; color: var(--gold); }
.nav-lang-trigger .chev { font-size: 9px; color: var(--gold); margin-left: 2px; }
.nav-lang-menu {
  position: absolute; top: calc(100% + 6px); right: 0;
  background: rgba(31,27,23,0.95);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  border: 1px solid var(--hairline-strong);
  min-width: 88px;
  display: grid; grid-template-columns: 1fr 1fr;
  z-index: 100;
  box-shadow: var(--shadow-2);
}
.nav-lang-item {
  background: transparent; border: 0;
  padding: 10px 12px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.16em; color: var(--fg);
  cursor: pointer; text-align: left;
  border-right: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  transition: all 200ms;
}
.nav-lang-item:nth-child(2n) { border-right: 0; }
.nav-lang-item:hover { background: rgba(200,162,105,0.18); color: var(--gold); }
.nav-lang-item.is-active { color: var(--gold); }

/* login button */
.nav-login {
  background: transparent; border: 0; padding: 8px 0;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg);
  cursor: pointer;
  transition: color 200ms;
}
.nav-login:hover { color: var(--gold); }
@media (max-width: 1280px) { .nav-links { gap: 22px; } }
@media (max-width: 1200px) { .nav-links { gap: 20px; } .nav-login { display: none; } }
@media (max-width: 1080px) { .nav-link { font-size: 10px; letter-spacing: 0.16em; } .nav-links { gap: 16px; } }
@media (max-width: 980px)  { .nav-lang { display: none; } }
@media (max-width: 880px)  { .nav { grid-template-columns: 1fr auto; padding: 0 20px; }
  .nav-links { display: none; } }

/* === HERO === */
.hero { position: relative; padding: 120px 0 80px; overflow: hidden; perspective: 1400px; }
.hero-bg {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  /* Photograph removed — warm camel ground with a soft top-down depth wash. */
  background:
    radial-gradient(ellipse 1200px 760px at 78% 16%, rgba(124,98,73,0.55), transparent 62%),
    linear-gradient(180deg, rgba(43,33,24,0.32) 0%, transparent 42%, rgba(43,33,24,0.34) 100%);
}
.hero-bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 1100px 700px at 75% 25%, rgba(200,162,105,0.30), transparent 60%),
    radial-gradient(ellipse 700px 500px at 15% 80%, rgba(200,162,105,0.18), transparent 60%);
}

.hero-inner { position: relative; z-index: 2;
  display: grid; grid-template-columns: 1.1fr 1fr; gap: 80px; align-items: center;
  max-width: 1440px; margin: 0 auto; padding: 0 56px;
}

.hero-copy { display: flex; flex-direction: column; gap: 24px; }
.hero-rating {
  display: flex; align-items: center; gap: 14px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--fg-muted);
}
.hero-rating .stars { color: var(--gold-deep); letter-spacing: 0.06em; font-size: 13px; }

.hero-title { font-family: var(--font-display); font-weight: 400;
  font-size: clamp(30px, 2.6vw, 36px); line-height: 1.06; letter-spacing: -0.012em;
  color: var(--fg); margin: 0; text-wrap: balance; max-width: none; }
.hero-title em { font-style: italic; font-weight: 400; color: var(--gold-deep); }
.hero-title__line {
  display: block;
  white-space: nowrap;
}
/* === Golden badge lede chip ===
   A small filled brass badge — bronze gradient ground, deep saddle text,
   thin gold border with a brighter top edge for the lit metal feel. Reads
   as a stamped seal pinned above the H1, not a hairline label.
   On hero reveal, the badge fades up rather than drawing rules. */
.hero-title .hero-title__lede {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-sans); font-weight: 600;
  font-size: 10.5px; letter-spacing: 0.26em; text-transform: uppercase;
  color: #2A1B0E;
  margin-bottom: 28px;
  padding: 10px 24px 9px;
  position: relative;
  white-space: normal;
  /* Brass plate — bronze gradient with a cream highlight at the top edge */
  background:
    linear-gradient(180deg,
      var(--gold-bright) 0%,
      var(--gold) 45%,
      var(--gold-deep) 100%);
  border: 1px solid var(--gold-deep);
  border-top-color: rgba(255, 250, 240, 0.55);
  border-radius: var(--radius-pill);
  box-shadow:
    inset 0 1px 0 rgba(255, 250, 240, 0.50),
    inset 0 -1px 0 rgba(0, 0, 0, 0.15),
    0 1px 2px rgba(0, 0, 0, 0.30),
    0 12px 28px -10px rgba(160, 106, 56, 0.55);
  text-shadow: 0 1px 0 rgba(255, 250, 240, 0.25);
  opacity: 0.98;
  overflow: hidden;
  isolation: isolate;
}
/* Subtle diagonal sheen always lit across the badge — gives it the brass shine */
.hero-title .hero-title__lede::before,
.hero-title .hero-title__lede::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: none;
  width: auto; height: auto;
  transform: none;
  transition: none;
  opacity: 0;
}
.hero-title .hero-title__lede::before {
  background: linear-gradient(115deg,
    transparent 30%,
    rgba(255, 250, 240, 0.28) 50%,
    transparent 70%);
  opacity: 1;
  mix-blend-mode: overlay;
}
.hero.is-loaded .hero-title .hero-title__lede::before,
.hero.is-loaded .hero-title .hero-title__lede::after {
  width: auto;
  transition-delay: 0ms;
}

/* Diamond pip — now deep saddle to read against the bronze ground */
.hero-title .hero-title__pip {
  display: inline-block;
  color: rgba(42, 27, 14, 0.55);
  font-size: 6px;
  line-height: 1;
  margin: 0 14px;
  vertical-align: middle;
  opacity: 1;
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  .hero-title .hero-title__lede::before,
  .hero-title .hero-title__lede::after { opacity: 1; transition: none; }
}

/* Below 640px, let the lines wrap naturally — nowrap would push horizontal scroll */
@media (max-width: 640px) {
  .hero-title__line { white-space: normal; }
  .hero-title { font-size: clamp(28px, 7.5vw, 42px); }
}
.hero-lede { font-family: var(--font-sans); font-weight: 300; font-size: 19px; line-height: 1.6;
  color: var(--fg); max-width: 520px; margin: 0; }

/* === Hero trust pillars — Vertical Ledger ===
   No card, no border, no fill. Pure typography over the video. Three columns
   separated only by a 1px gold hairline running between them. Icon sits at
   the top of each column without a frame; italic statement and tracked label
   stack beneath. Reads as a colophon, not a card grid. */
.hero-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  list-style: none;
  padding: 0;
  margin: 40px 0 0;
  max-width: 680px;
  background: none;
}
.hero-pillar {
  position: relative;
  padding: 14px 24px 8px;
  background: transparent;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  overflow: visible;

  /* Centred typographic column */
  display: grid;
  grid-template-rows: auto auto auto;
  row-gap: 14px;
  justify-items: center;
  align-content: start;
  text-align: center;

  transition: none;
}

/* Vertical hairline on the left of every pillar except the first.
   :not(:first-child) is bulletproof (no adjacent-sibling weirdness) and
   guarantees both gaps render identically. */
.hero-pillar:not(:first-child)::before {
  content: "";
  position: absolute;
  left: 0;
  top: 18px;
  bottom: 14px;
  width: 1px;
  background: linear-gradient(180deg,
    transparent 0%,
    rgba(217, 174, 116, 0.40) 25%,
    rgba(217, 174, 116, 0.55) 50%,
    rgba(217, 174, 116, 0.40) 75%,
    transparent 100%);
  pointer-events: none;
}

/* No hover shift on the column — typography is the design, not motion */
.hero-pillar:hover .hero-pillar__icon { color: var(--gold-bright); }

/* Icon — no plate, no frame. Just the glyph in bronze with a faint drop. */
.hero-pillar__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  color: var(--gold);
  border: 0;
  background: transparent;
  flex: 0 0 auto;
  transition: color 320ms ease;
}
.hero-pillar__icon svg {
  width: 26px;
  height: 26px;
  display: block;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
}

/* __k — italic serif statement, centred. Reserved height keeps the three
   labels below at a shared baseline regardless of statement length. */
.hero-pillar__k {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.25;
  letter-spacing: -0.010em;
  color: var(--fg);
  text-wrap: balance;
  margin: 0;
  min-height: 3.75em;
  display: flex;
  align-items: center;
  justify-content: center;
  max-width: 18ch;
}

/* __v — tracked sans whisper */
.hero-pillar__v {
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--fg-muted);
  margin: 0;
  max-width: 22ch;
}

.hero-pillar__glow { display: none; }

@media (max-width: 720px) {
  .hero-pillars {
    grid-template-columns: 1fr;
    max-width: none;
  }
  .hero-pillar { padding: 22px 0; }
  .hero-pillar:first-child { padding-top: 0; }
  .hero-pillar:last-child  { padding-bottom: 0; }
  .hero-pillar:not(:first-child)::before {
    left: 18px; right: 18px; top: 0;
    width: auto; height: 1px; bottom: auto;
    background: linear-gradient(90deg,
      transparent 0%,
      rgba(217, 174, 116, 0.40) 25%,
      rgba(217, 174, 116, 0.55) 50%,
      rgba(217, 174, 116, 0.40) 75%,
      transparent 100%);
  }
  .hero-pillar__k { min-height: 0; }
}

.hero-stats { display: flex; gap: 36px; margin-top: 8px; padding-top: 28px;
  border-top: 1px solid var(--hairline); }
.hero-stat .k { font-family: var(--font-sans); font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--fg-subtle); margin-bottom: 6px; }
.hero-stat .v { font-family: var(--font-display); font-size: 28px; color: var(--fg);
  letter-spacing: -0.01em; }
.hero-stat .v small { font-family: var(--font-sans); font-size: 11px;
  letter-spacing: 0.10em; color: var(--fg-subtle); margin-left: 6px; }
/* 3D stage — featured vehicle */
.hero-stage { position: relative; height: 460px; perspective: 1200px; perspective-origin: 50% 40%; }
.hero-stage .platform {
  position: absolute; left: 50%; bottom: 30px;
  width: 88%; height: 200px;
  transform: translateX(-50%) rotateX(76deg);
  background:
    radial-gradient(ellipse at center, rgba(20,17,15,0.16) 0%, transparent 60%);
  filter: blur(10px);
}
.hero-stage .ring {
  position: absolute; left: 50%; bottom: 80px;
  width: 70%; height: 90px;
  transform: translateX(-50%) rotateX(78deg);
  border: 1px solid var(--gold);
  border-radius: 50%;
  opacity: 0.30;
}
.hero-vehicle {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  transform: rotateY(-18deg) rotateX(6deg);
  transform-style: preserve-3d;
  transition: transform 800ms var(--ease-cinematic);
  filter: drop-shadow(0 30px 30px rgba(0,0,0,0.45));
  color: var(--fg);
}
.hero-vehicle img { width: 94%; display: block; }
.hero-vehicle .reflection {
  position: absolute; left: 0; right: 0; top: 100%;
  height: 80%;
  transform: scaleY(-1);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0.30), transparent 70%);
          mask-image: linear-gradient(to bottom, rgba(0,0,0,0.30), transparent 70%);
  opacity: 0.5;
}
.hero-vehicle .reflection img { width: 94%; }

/* === Hero chips — Frosted Cream ===
   Translucent cream wash with heavy backdrop-blur. Video softens behind
   the chip so it always reads as paper — an editorial caption pinned over
   film. Bronze top edge keeps the brand signature; bronze label sits on
   the cream ground; deep saddle ink value provides clean contrast. */
.hero-chip {
  position: absolute;
  background:
    linear-gradient(180deg,
      rgba(255, 255, 255, 0.72) 0%,
      rgba(247, 246, 243, 0.68) 100%);
  -webkit-backdrop-filter: blur(8px) saturate(160%);
  backdrop-filter: blur(8px) saturate(160%);
  border: 1px solid rgba(121, 75, 30, 0.22);
  padding: 14px 20px 12px;
  display: flex; flex-direction: column; gap: 4px;
  transform-style: preserve-3d;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow:
    /* Cream highlight along the top inner edge */
    inset 0 1px 0 rgba(255, 255, 255, 0.55),
    /* Subtle saddle bottom shadow inside */
    inset 0 -1px 0 rgba(121, 75, 30, 0.12),
    /* Below-chip drop shadow — sits over the video */
    0 1px 2px rgba(0, 0, 0, 0.22),
    0 22px 44px -16px rgba(0, 0, 0, 0.45),
    0 6px 18px -6px rgba(0, 0, 0, 0.30);
  transition: border-color 360ms ease, transform 480ms var(--ease-standard);
}

/* Bronze top hairline — the brand signature */
.hero-chip::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--gold-deep) 20%,
    var(--gold) 50%,
    var(--gold-deep) 80%,
    transparent 100%);
  opacity: 0.90;
  pointer-events: none;
}

.hero-chip .lbl {
  font-family: var(--font-sans); font-size: 9px; font-weight: 600;
  letter-spacing: 0.28em; text-transform: uppercase;
  color: var(--gold-deep);
  display: inline-flex; align-items: center; gap: 8px;
  position: relative; z-index: 1;
}
/* Bronze "live" pulse dot — deeper bronze for the cream ground */
.hero-chip .lbl::before {
  content: ""; width: 5px; height: 5px; border-radius: 50%;
  background: var(--gold-deep);
  box-shadow: 0 0 0 0 rgba(121, 75, 30, 0.55);
  animation: chip-pulse 2.4s cubic-bezier(.4, 0, .2, 1) infinite;
  flex: 0 0 auto;
}
@keyframes chip-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(121, 75, 30, 0.55); }
  60%  { box-shadow: 0 0 0 7px rgba(121, 75, 30, 0); }
  100% { box-shadow: 0 0 0 0   rgba(121, 75, 30, 0); }
}

.hero-chip .val {
  font-family: var(--font-display); font-size: 17px;
  color: #2A1B0E;     /* deep saddle ink — dark-on-cream */
  letter-spacing: -0.01em; font-variant-numeric: tabular-nums;
  line-height: 1.2;
  position: relative; z-index: 1;
}

.hero-chip.c1 { top: 8%; right: -4%; transform: translateZ(60px) rotateY(-10deg); }
.hero-chip.c2 { top: 50%; right: -8%; transform: translateZ(80px) rotateY(-14deg) translateY(-50%); }
.hero-chip.c3 { bottom: 8%; left: -4%;  transform: translateZ(40px) rotateY(8deg); }

@media (prefers-reduced-motion: reduce) {
  .hero-chip .lbl::before { animation: none; }
}

@media (max-width: 1000px) {
  .hero-inner { grid-template-columns: 1fr; gap: 48px; }
  .hero-stage { height: 360px; }
  .hero-chip.c1, .hero-chip.c2, .hero-chip.c3 { display: none; }
}

/* === HERO BOOKING WIDGET (above-fold) === */
.hero-booking {
  position: relative; z-index: 4;
  max-width: 1080px; margin: 32px auto 0; padding: 0 56px;
}
.hero-booking-card {
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  box-shadow: var(--shadow-3);
  padding: 0;
  display: grid;
  grid-template-columns: 1.2fr 1.4fr 1.4fr 1fr 0.8fr auto;
  align-items: stretch;
  position: relative;
  overflow: hidden;
}
.hero-booking-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
}
.hb-field { display: flex; flex-direction: column; gap: 4px; padding: 10px 16px;
  border-right: 1px solid var(--hairline-ink); transition: background 300ms; min-width: 0; }
.hb-field:focus-within, .hb-field:hover { background: rgba(200,162,105,0.10); }
.hb-field label { font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.20em; text-transform: uppercase; color: var(--fg-ink-subtle); }
.hb-field input, .hb-field select {
  background: transparent; border: 0; padding: 0; outline: none;
  font-family: var(--font-display); font-weight: 400; font-size: 14px;
  letter-spacing: -0.01em; color: var(--fg-ink);
  appearance: none; -webkit-appearance: none; width: 100%; min-width: 0;
  text-overflow: ellipsis; overflow: hidden; white-space: nowrap;
}
.hb-cta { font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  background: var(--fg-ink); color: var(--bg-elev); border: 0; padding: 0 28px;
  cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 10px;
  text-align: left; line-height: 1.3; min-width: 140px;
  transition: background 300ms; }
.hb-cta:hover { background: var(--gold-deep); }

.hero-trustline { display: flex; gap: 32px; justify-content: center; flex-wrap: wrap;
  margin-top: 24px; padding-top: 24px;
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg-subtle); }
.hero-trustline span:first-child { color: var(--gold); }

@media (max-width: 1280px) {
  .hero-booking-card { grid-template-columns: 1fr 1fr 1fr; }
  .hb-field { border-bottom: 1px solid var(--hairline); }
  .hb-cta { grid-column: 1 / -1; padding: 24px; }
}
@media (max-width: 720px) {
  .hero-booking { padding: 0 24px; }
  .hero-booking-card { grid-template-columns: 1fr; }
  .hb-field { border-right: 0; }
}

/* real vehicle photo — depth + faint gilt halo to match the dark scene */
.hero-vehicle img { filter: drop-shadow(0 22px 26px rgba(0,0,0,.55)) drop-shadow(0 0 46px rgba(217,174,116,.10)); }

/* ===== sections.css ===== */
/* === SERVICES === */
.services {
  padding: 100px 0;
  position: relative;
}
.services-header {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end;
  margin-bottom: 72px;
}
.services-header .lede { max-width: 460px; }

.services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 1fr;   /* equal-height rows so card bottoms align */
  gap: 24px;
}

/* === Photographic service cards — editorial composition ===
   Top: full-bleed photograph (60% of card height, fixed 280px) with the
   tag floating in the bottom-left over a soft dark gradient.
   Bottom: title, body, and reserve link on the saddle ground.
   On hover: the photograph slowly zooms, a bronze top edge ignites, and
   the card lifts. */
.service-card {
  background: var(--bg-elev);
  color: var(--fg-ink);
  border: 1px solid var(--hairline-ink);
  display: flex; flex-direction: column;
  position: relative;
  cursor: pointer;
  overflow: hidden;
  min-height: 540px;
  padding: 0;
  transition: all 500ms var(--ease-cinematic);
  box-shadow: var(--shadow-1);
}
.service-card::before {
  /* gold sweep that travels in on hover */
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  transform: translateX(-100%);
  transition: transform 700ms var(--ease-cinematic);
  z-index: 3;
}
.service-card:hover {
  border-color: var(--gold);
  transform: translateY(-6px);
  box-shadow: var(--shadow-3);
}
.service-card:hover::before { transform: translateX(0); }
.service-card:hover .service-photo img { transform: scale(1.06); }
.service-card:hover .service-link {
  color: var(--gold-deep); gap: 14px;
}

/* --- Photo (single image at top of card) --- */
.service-photo {
  position: relative;
  width: 100%;
  height: 280px;
  overflow: hidden;
  background: #1F1812;
}
.service-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1100ms var(--ease-cinematic),
              filter 800ms ease;
  filter: saturate(0.85) brightness(0.92);
}
.service-card:hover .service-photo img { transform: scale(1.06); }

/* Warm gradient at the bottom of the image — anchors the tag */
.service-photo::after {
  content: "";
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg,
      rgba(0, 0, 0, 0.10) 0%,
      rgba(0, 0, 0, 0.00) 40%,
      rgba(31, 22, 15, 0.55) 100%);
  pointer-events: none;
  z-index: 1;
}

/* Tag floats over the image */
.service-photo .service-tag {
  position: absolute;
  left: 20px;
  bottom: 18px;
  z-index: 2;
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--fg);
  padding: 8px 14px;
  background: rgba(45, 32, 22, 0.78);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  backdrop-filter: blur(8px) saturate(140%);
  border: 1px solid rgba(217, 174, 116, 0.32);
  border-top: 1px solid rgba(236, 197, 143, 0.55);
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.3);
}

/* --- Body region --- */
.service-body-wrap {
  display: flex; flex-direction: column; gap: 18px;
  padding: 32px 32px 28px;
  flex: 1;
}
.service-title {
  font-family: var(--font-display); font-weight: 400; font-size: 28px;
  line-height: 1.1; letter-spacing: -0.015em; color: var(--fg-ink);
  margin: 0;
}
.service-title em { font-style: italic; color: var(--gold-deep); }
.service-body {
  font-family: var(--font-sans); font-weight: 300; font-size: 14px; line-height: 1.6;
  color: var(--fg-ink-muted); margin: 0; flex: 1;
}
.service-link {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg-ink);
  margin-top: auto;
  transition: all 300ms var(--ease-cinematic);
}

@media (max-width: 1000px) {
  .services-grid { grid-template-columns: 1fr 1fr; }
  .services-header { grid-template-columns: 1fr; gap: 24px; }
  .service-photo { height: 240px; }
}
@media (max-width: 640px) {
  .services-grid { grid-template-columns: 1fr; }
  .service-card { min-height: 0; }
  .service-photo { height: 220px; }
}

/* === FLEET === */
.fleet {
  padding: 100px 0;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 1000px 700px at 20% 20%, rgba(200,162,105,0.10), transparent 60%),
    var(--bg);
}
.fleet-header {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end;
  margin-bottom: 64px;
}

.fleet-tabs {
  display: flex; gap: 14px; flex-wrap: wrap;
  margin-bottom: 56px;
  padding-bottom: 0;
  border-bottom: 0;
  align-items: stretch;
  perspective: 1200px;
}

/* ===== 3D category cards =====
   Each tab is a tilting glass slab carrying a vehicle silhouette.
   On hover the inner contents lift off the surface; on active it locks
   into a slight downward press with a bronze under-glow. */
.fleet-tab--card {
  --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%;
  position: relative;
  flex: 1; min-width: 200px; max-width: 280px;
  height: 116px; padding: 0;
  background: linear-gradient(155deg, rgba(240,228,204,0.06), rgba(240,228,204,0.02));
  border: 1px solid var(--hairline-ink-strong);
  border-radius: 6px;
  cursor: pointer;
  transform-style: preserve-3d;
  transform: perspective(1200px) rotateX(var(--rx)) rotateY(var(--ry));
  transition: transform 360ms var(--ease-standard),
              box-shadow 360ms var(--ease-standard),
              border-color 240ms;
  box-shadow: 0 1px 2px rgba(0,0,0,0.30), 0 6px 16px rgba(0,0,0,0.20);
  overflow: hidden;
  text-align: left;
}
.fleet-tab--card:hover {
  border-color: var(--gold-deep);
  box-shadow:
    0 1px 2px rgba(0,0,0,0.35),
    0 22px 48px -16px rgba(0,0,0,0.55),
    0 0 0 1px rgba(182,129,80,0.20) inset;
}
.fleet-tab--card.is-active {
  border-color: var(--gold);
  background:
    radial-gradient(ellipse 220px 80px at 50% 100%, rgba(213,164,114,0.35), transparent 70%),
    linear-gradient(155deg, rgba(240,228,204,0.10), rgba(240,228,204,0.03));
  box-shadow:
    0 0 0 1px var(--gold) inset,
    0 1px 2px rgba(0,0,0,0.35),
    0 22px 48px -14px rgba(213,164,114,0.30),
    0 32px 60px -16px rgba(0,0,0,0.50);
}
.fleet-tab--card.is-active::after {
  /* bronze underline that doubles as projected light on the floor */
  content: ""; position: absolute; left: 18px; right: 18px; bottom: 8px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-bright), transparent);
  opacity: 0.7;
}

.fleet-tab__inner {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 0 20px;
  height: 100%;
  transform: translateZ(30px);
  transform-style: preserve-3d;
}
.fleet-tab__icon {
  position: relative;
  width: 64px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  color: #FFFFFF;
  transform: translateZ(28px);
  transition: color 280ms, transform 360ms var(--ease-standard);
}
.fleet-tab__icon img {
  width: 100%; height: 100%;
  object-fit: contain; display: block;
  filter: drop-shadow(0 4px 6px rgba(0,0,0,0.35));
  transition: filter 360ms;
}
.fleet-tab__icon::after {
  /* contact shadow under each vehicle silhouette — sells the 3D float */
  content: ""; position: absolute; bottom: -2px; left: 14%; right: 14%;
  height: 5px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.55), transparent 70%);
  filter: blur(2px);
  transform: translateZ(-20px);
  opacity: 0.5;
  transition: opacity 360ms;
}
.fleet-tab--card:hover .fleet-tab__icon,
.fleet-tab--card.is-active .fleet-tab__icon {
  color: var(--gold-bright);
  transform: translateZ(42px) translateY(-2px);
}
.fleet-tab--card:hover .fleet-tab__icon img,
.fleet-tab--card.is-active .fleet-tab__icon img {
  filter: drop-shadow(0 10px 14px rgba(0,0,0,0.50));
}
.fleet-tab--card:hover .fleet-tab__icon::after,
.fleet-tab--card.is-active .fleet-tab__icon::after {
  opacity: 0.8;
}

.fleet-tab__label {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: #FFFFFF;
  transform: translateZ(20px);
  transition: color 240ms;
  line-height: 1.3;
}
.fleet-tab--card:hover .fleet-tab__label { color: #FFFFFF; }
.fleet-tab--card.is-active .fleet-tab__label { color: var(--gold-bright); }

.fleet-tab__count {
  font-family: var(--font-display); font-style: italic;
  font-size: 22px;
  color: rgba(255,255,255,0.85);
  font-variant-numeric: oldstyle-nums;
  transform: translateZ(18px);
  transition: color 240ms;
}
.fleet-tab--card:hover .fleet-tab__count { color: var(--gold); }
.fleet-tab--card.is-active .fleet-tab__count { color: var(--gold-bright); }

/* Specular sheen — follows the cursor; gives the card a polished surface */
.fleet-tab__sheen {
  position: absolute; inset: 0;
  background: radial-gradient(circle 180px at var(--mx) var(--my),
              rgba(213,164,114,0.22), transparent 60%);
  opacity: 0;
  transition: opacity 320ms;
  pointer-events: none;
}
.fleet-tab--card:hover .fleet-tab__sheen,
.fleet-tab--card.is-active .fleet-tab__sheen { opacity: 1; }

/* === Fleet pager (Rolls-Royce style) ===
   Vehicle index row that lives BELOW the stage rather than above it.
   Hairline rail runs the full width; numbered items sit on top with a
   bronze underline for the active item. Right-side fraction counter
   (01 / 03) reinforces position. */
.fleet-pager {
  margin-top: 56px;
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 32px;
}
.fleet-pager__rail {
  position: absolute;
  left: 0; right: 0;
  top: 50%;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(217, 174, 116, 0.35) 8%,
    rgba(217, 174, 116, 0.50) 50%,
    rgba(217, 174, 116, 0.35) 92%,
    transparent 100%);
  pointer-events: none;
  z-index: 0;
}
.fleet-pager__items {
  display: inline-flex;
  align-items: center;
  gap: 32px;
  position: relative;
  z-index: 1;
}
.fleet-pager__item {
  appearance: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 14px 0;
  display: inline-flex;
  align-items: baseline;
  gap: 12px;
  position: relative;
  font-family: var(--font-sans);
  color: var(--fg-muted);
  transition: color 280ms ease;
}
.fleet-pager__item:hover { color: var(--fg); }
.fleet-pager__item.is-active { color: var(--fg); }
.fleet-pager__item::after {
  /* bronze underline for the active item, drawn from centre */
  content: "";
  position: absolute;
  left: 50%;
  bottom: 6px;
  width: 0;
  height: 1px;
  background: var(--gold);
  transition: width 360ms cubic-bezier(.2, .7, .2, 1),
              left 360ms cubic-bezier(.2, .7, .2, 1);
}
.fleet-pager__item.is-active::after {
  width: 100%;
  left: 0;
}
.fleet-pager__num {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 14px;
  letter-spacing: 0.04em;
  color: var(--gold);
  font-variant-numeric: oldstyle-nums;
  opacity: 0.85;
}
.fleet-pager__item.is-active .fleet-pager__num { color: var(--gold-bright); opacity: 1; }
.fleet-pager__divider {
  color: rgba(217, 174, 116, 0.45);
  font-size: 12px;
  line-height: 1;
}
.fleet-pager__name {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 15px;
  letter-spacing: -0.008em;
  line-height: 1;
  color: inherit;
}
.fleet-pager__name em {
  font-style: italic;
  color: var(--gold);
  margin-left: 6px;
}
.fleet-pager__item.is-active .fleet-pager__name em { color: var(--gold-bright); }

/* Right-side fraction — Roman-style position counter */
.fleet-pager__total {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 14px;
  color: var(--gold);
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-variant-numeric: oldstyle-nums;
  background: var(--bg);
  padding-left: 16px;
  position: relative;
  z-index: 1;
  opacity: 0.85;
}
.fleet-pager__total-now { font-size: 18px; color: var(--gold-bright); }
.fleet-pager__total-sep { opacity: 0.55; font-size: 12px; }
.fleet-pager__total-of { opacity: 0.6; }

@media (max-width: 720px) {
  .fleet-pager {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .fleet-pager__rail { display: none; }
  .fleet-pager__items {
    flex-wrap: wrap;
    gap: 14px 20px;
  }
  .fleet-pager__name { font-size: 13px; }
  .fleet-pager__total { padding-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .fleet-tab--card, .fleet-tab__inner, .fleet-tab__icon,
  .fleet-tab__label, .fleet-tab__count, .fleet-tab--idx {
    transform: none !important;
    transition: background 200ms, color 200ms, border-color 200ms !important;
  }
}
@media (max-width: 900px) {
  .fleet-tab--card { flex: 1 1 calc(50% - 7px); max-width: none; }
}
/* ===== Index pager — refined editorial style =====
   Sits below the fleet stage as a quiet numbered row.
   No filled buttons, no borders — just italic display numerals with a
   gold hairline drawn beneath the active one. Reads as a film-reel
   chapter index, not a UI control. */
.fleet-tab-pager {
  margin: 40px auto 0;
  display: flex;
  gap: 36px;
  justify-content: center;
  align-items: baseline;
}
.fleet-tab--idx {
  position: relative;
  appearance: none;
  background: transparent;
  border: 0;
  padding: 6px 4px 12px;
  cursor: pointer;
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  font-size: 22px;
  letter-spacing: -0.005em;
  line-height: 1;
  font-variant-numeric: oldstyle-nums tabular-nums;
  color: rgba(236, 213, 173, 0.78);
  transition: color 320ms var(--ease-standard),
              transform 320ms var(--ease-standard);
}
/* Gold hairline beneath each item — invisible at rest, animates to full
   width when the item is hovered, full opacity when active */
.fleet-tab--idx::after {
  content: "";
  position: absolute;
  left: 50%; bottom: 0;
  height: 1px; width: 0;
  background: var(--gold);
  opacity: 0;
  transform: translateX(-50%);
  transition: width 480ms cubic-bezier(.55, 0, .15, 1),
              opacity 320ms ease,
              background 320ms ease;
}
.fleet-tab--idx:hover {
  color: var(--gold-bright);
}
.fleet-tab--idx:hover::after {
  width: 100%;
  opacity: 0.5;
}
.fleet-tab--idx.is-active {
  color: var(--gold-bright);
  font-size: 26px;
}
.fleet-tab--idx.is-active::after {
  width: 100%;
  opacity: 0.85;
  background: var(--gold-bright);
}

@media (prefers-reduced-motion: reduce) {
  .fleet-tab--idx { transition: none; }
  .fleet-tab--idx::after { transition: none; }
}
@media (max-width: 560px) {
  .fleet-tab-pager { gap: 24px; }
}

.fleet-stage {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 40px;
  align-items: center;
  background: var(--bg-elev);
  color: var(--fg-ink);
  border: 1px solid var(--hairline-ink);
  padding: 36px 36px;
  box-shadow: var(--shadow-3);
  position: relative;
  max-width: 1080px;
  margin: 0 auto;
  overflow: hidden;
}
.fleet-stage::before {
  /* gold edge */
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

/* vertical stack so the thumbnail strip sits under the main photo */
.fleet-vehicle {
  position: relative;
  display: flex; flex-direction: column; align-items: stretch;
}
.fleet-vehicle .shadow {
  display: none;
}
.fleet-vehicle .car {
  width: 100%;
  height: 360px;
  transform: none;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 20px 40px -18px rgba(20,17,15,0.45);
  color: var(--fg);
}
.fleet-vehicle .car img { width: 100%; height: 100%; display: block; object-fit: cover; }

.fleet-detail { display: flex; flex-direction: column; gap: 18px; }
.fleet-detail .class-tag {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-deep);
}
.fleet-detail h3 {
  font-family: var(--font-display); font-weight: 400; font-size: 28px;
  line-height: 1.1; letter-spacing: -0.02em; color: var(--fg-ink); margin: 0;
}
.fleet-detail h3 em { font-style: italic; color: var(--gold-deep); }
.fleet-detail .desc {
  font-family: var(--font-sans); font-weight: 300; font-size: 14px; line-height: 1.6;
  color: var(--fg-ink-muted); margin: 0;
}
}

.fleet-specs {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 0;
  border-top: 1px solid var(--hairline-ink);
}
.fleet-spec {
  padding: 12px 0;
  border-bottom: 1px solid var(--hairline-ink);
  display: grid; grid-template-columns: auto 1fr;
  align-items: baseline; gap: 10px;
}
.fleet-spec:nth-child(2n+1) { padding-right: 14px; border-right: 1px solid var(--hairline-ink); }
.fleet-spec:nth-child(2n)   { padding-left: 14px; }
.fleet-spec .k {
  font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg-ink-subtle);
  min-width: 60px;
}
.fleet-spec .v {
  font-family: var(--font-display); font-size: 15px; color: var(--fg-ink);
  letter-spacing: -0.005em; font-variant-numeric: tabular-nums;
}

.fleet-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.fleet-actions .btn { width: 100%; height: 48px; }

@media (max-width: 1000px) {
  .fleet-stage { grid-template-columns: 1fr; gap: 40px; padding: 40px 24px; }
  .fleet-header { grid-template-columns: 1fr; gap: 24px; }
  .fleet-vehicle .car { height: 280px; }
}

/* real fleet photos — depth shadow on the slot host (reaches shadow-dom img) */
.fleet-vehicle .car image-slot { filter: drop-shadow(0 18px 24px rgba(0,0,0,.5)); }

/* ===== sections2.css ===== */
/* === CITIES === */
.cities {
  padding: 100px 0;
  position: relative;
}
.cities-header {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end; margin-bottom: 72px;
}

.cities-map {
  position: relative;
  background: var(--bg-elev);
  border: 1px solid var(--hairline);
  margin-bottom: 56px;
  overflow: hidden;
  box-shadow: var(--shadow-1);
}
.cities-map svg { width: 100%; height: 420px; display: block; }
@media (max-width: 1000px) { .cities-map svg { height: 280px; } }

/* === Live World Clock ribbon === */
.world-clock {
  display: grid;
  grid-template-columns: auto repeat(5, 1fr);
  align-items: stretch;
  background: linear-gradient(180deg, rgba(0,0,0,0.20), transparent);
  border-bottom: 1px solid var(--hairline-ink-strong);
  position: relative;
}
.world-clock::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  opacity: 0.4;
}
.world-clock-label {
  display: flex; align-items: center; gap: 10px;
  padding: 0 20px;
  font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold);
  border-right: 1px solid var(--hairline-ink-strong);
  white-space: nowrap;
}
.world-clock-label::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 0 var(--gold);
  animation: wc-pulse 2.4s ease-out infinite;
}
@keyframes wc-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(213,164,114,0.6); }
  80%  { box-shadow: 0 0 0 10px rgba(213,164,114,0); }
  100% { box-shadow: 0 0 0 0 rgba(213,164,114,0); }
}

.wc-cell {
  display: flex; flex-direction: column; justify-content: space-between;
  padding: 14px 16px 12px;
  border-right: 1px solid var(--hairline-ink);
  min-width: 0;
  transition: background 250ms;
  position: relative;
}
.wc-cell:last-child { border-right: 0; }
.wc-cell:hover { background: rgba(213,164,114,0.06); }

.wc-cell-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
}
.wc-code {
  font-family: var(--font-sans); font-size: 9px; font-weight: 600;
  letter-spacing: 0.22em; color: var(--fg-muted);
}
.wc-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold-bright);
  box-shadow: 0 0 8px rgba(213,164,114,0.6);
  flex: 0 0 auto;
}
.wc-cell.is-night .wc-dot {
  background: transparent;
  border: 1px solid var(--fg-subtle);
  box-shadow: none;
}
.wc-cell.is-night .wc-code { color: var(--fg-subtle); }
.wc-cell.is-night .wc-time { color: var(--fg-muted); }

.wc-time {
  font-family: var(--font-display); font-weight: 400;
  font-size: 30px; line-height: 1;
  letter-spacing: -0.02em; color: var(--fg);
  font-variant-numeric: tabular-nums;
  margin: 10px 0 6px;
}
.wc-cell.is-hq .wc-time { color: var(--gold-bright); }
.wc-cell.is-hq.is-night .wc-time { color: var(--fg-muted); }
.wc-cell.is-hq .wc-code { color: var(--gold); }

.wc-meta {
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
}
.wc-city {
  font-family: var(--font-display); font-size: 12px; font-style: italic;
  color: var(--fg-muted); letter-spacing: -0.005em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wc-offset {
  font-family: var(--font-sans); font-size: 8px; font-weight: 500;
  letter-spacing: 0.16em; color: var(--fg-subtle);
  white-space: nowrap;
}

@media (max-width: 900px) {
  .world-clock { grid-template-columns: auto repeat(4, 1fr); }
  .world-clock .wc-cell:nth-child(n+6) { display: none; }
}
@media (max-width: 720px) {
  .world-clock { display: none; }
}

.cities-map .pin {
  fill: var(--gold-deep);
  transform-origin: center;
  transform-box: fill-box;
  animation: pulse 3s ease-in-out infinite;
}
.cities-map .pin:nth-child(2n) { animation-delay: 1s; }
.cities-map .pin:nth-child(3n) { animation-delay: 2s; }
@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 0.85; }
  50%      { transform: scale(1.4); opacity: 1; }
}
.cities-map .pin-ring {
  fill: none; stroke: var(--gold-deep); stroke-width: 0.5;
  opacity: 0; transform-origin: center; transform-box: fill-box;
  animation: ring 3s ease-out infinite;
}
.cities-map .pin-ring:nth-child(2n) { animation-delay: 1s; }
.cities-map .pin-ring:nth-child(3n) { animation-delay: 2s; }
@keyframes ring {
  0%   { transform: scale(1); opacity: 0.6; }
  100% { transform: scale(3.5); opacity: 0; }
}
.cities-map .route {
  fill: none; stroke: var(--gold-deep); stroke-width: 0.5; stroke-dasharray: 3 2;
  opacity: 0.40;
}
.cities-map .land { fill: var(--antique-brass); opacity: 0.55; }
.cities-map .graticule line {
  stroke: var(--hairline); stroke-width: 0.5; opacity: 0.6;
}
.cities-map .label {
  font-family: var(--font-sans); font-size: 8px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase; fill: var(--fg-muted);
}
.cities-map .label.hq { fill: var(--gold-deep); font-weight: 600; }
.cities-map-legend {
  position: absolute; bottom: 18px; left: 24px;
  display: flex; flex-direction: row; flex-wrap: wrap; gap: 18px;
  font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.20em; text-transform: uppercase; color: var(--fg-muted);
  background: rgba(31,24,18,0.65);
  border: 1px solid var(--hairline-ink);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  padding: 10px 14px;
  border: 1px solid var(--hairline-ink);
}
.cities-map-legend .item { display: flex; align-items: center; gap: 10px; }
.cities-map-legend .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gold-deep); }
.cities-map-legend .dot--out { background: var(--fg-faint); }
.cities-map-legend .dot--out.is-night { background: transparent; border: 1px solid var(--fg-subtle); }

.cities-ledger {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid var(--hairline);
}
.cities-col { padding: 28px 24px; border-right: 1px solid var(--hairline); }
.cities-col:last-child { border-right: 0; }
.cities-col h4 {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-deep);
  margin: 0 0 18px;
}
.cities-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.cities-col li {
  display: flex; justify-content: space-between; align-items: baseline;
  font-family: var(--font-display); font-size: 18px; color: var(--fg); letter-spacing: -0.005em;
}
.cities-col li .code {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.18em; color: var(--fg-subtle); text-transform: uppercase;
}
.cities-col li.is-hq { color: var(--gold-deep); }
.cities-col li.is-hq::before { content: "★ "; font-size: 12px; }

@media (max-width: 1000px) {
  .cities-header { grid-template-columns: 1fr; gap: 24px; }
  .cities-ledger { grid-template-columns: 1fr; }
  .cities-col { border-right: 0; border-bottom: 1px solid var(--hairline); }
}

/* === Cities — white "light intermission" surface (dark-on-white) === */
.cities-map,
.cities-ledger {
  background: #FFFFFF;
  border-color: rgba(110,70,28,0.14);
  --fg: #2B1C0E;
  --fg-muted: #6E5132;
  --fg-subtle: #8A6B45;
  --fg-faint: #A6916A;
  --gold: #8A5A1E;
  --gold-deep: #6E4416;
  --gold-bright: #A56A22;
  --hairline: rgba(110,70,28,0.14);
  --hairline-ink: rgba(110,70,28,0.14);
  --hairline-ink-strong: rgba(110,70,28,0.22);
}
.cities-ledger { border-top-color: rgba(110,70,28,0.14); }
.cities-col { border-right-color: rgba(110,70,28,0.14); }
.cities-col li.is-hq { color: var(--gold-deep); }
/* world-clock ribbon: warm tint instead of black-on-white */
.cities-map .world-clock {
  background: linear-gradient(180deg, rgba(110,70,28,0.05), transparent);
  border-bottom-color: rgba(110,70,28,0.16);
}
.cities-map .wc-cell:hover { background: rgba(138,90,30,0.06); }
/* legend: light pill so dark text stays legible */
.cities-map .cities-map-legend {
  background: rgba(255,255,255,0.85);
  border-color: rgba(110,70,28,0.14);
}

/* === WHY US — light, with HD photo backdrop === */
.why {
  position: relative;
  padding: 100px 0;
  overflow: hidden;
  color: var(--fg);
  background:
    linear-gradient(180deg, rgba(252,250,243,0.97) 0%, rgba(252,250,243,0.92) 60%, rgba(252,250,243,0.97) 100%),
    url('assets/photos/1492144534655-ae79c964c9d7.jpg') center/cover no-repeat;
  background-attachment: fixed, fixed;
}
.why::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(ellipse 1200px 700px at 80% 20%, rgba(191,168,117,0.20), transparent 60%);
}
.why > .container { position: relative; }
.why .eyebrow { color: var(--gold-deep); }
.why .eyebrow::before { background: var(--gold-deep); }
.why h2 { color: var(--fg); }
.why h2 em { color: var(--gold-deep); }
.why .lede { color: var(--fg-muted); }

.why-header {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end; margin-bottom: 80px;
}
/* Separate, more compact cards with real gaps (was one panel with gap:0 and
   divider lines). Each .why-item is now its own glass card; in Signature mode
   premium-boxes.css gives it the gold edge. */
.why-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.why-item {
  padding: 26px 24px 24px;
  min-height: 0;
  display: flex; flex-direction: column; gap: 12px;
  background: rgba(70,54,42,0.55);
  border: 1px solid var(--hairline);
  border-radius: var(--pb-radius, 14px);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
          backdrop-filter: blur(8px) saturate(140%);
}
.why-item .num {
  font-family: var(--font-display); font-style: italic;
  font-size: 50px; color: var(--gold-deep); line-height: 0.9; letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.why-item .num small {
  font-family: var(--font-sans); font-size: 13px; font-weight: 500;
  letter-spacing: 0.20em; color: var(--gold-deep); margin-left: 8px;
  font-style: normal; text-transform: uppercase;
}
.why-item h4 {
  font-family: var(--font-display); font-weight: 400; font-size: 20px;
  line-height: 1.2; letter-spacing: -0.01em; color: var(--fg); margin: 0;
}
.why-item p {
  font-family: var(--font-sans); font-weight: 300; font-size: 14px; line-height: 1.6;
  color: var(--fg-muted); margin: 0;
}

@media (max-width: 1000px) { .why-grid { grid-template-columns: 1fr 1fr; gap: 16px; }
  .why-header { grid-template-columns: 1fr; gap: 24px; } }
@media (max-width: 600px) { .why-grid { grid-template-columns: 1fr; gap: 14px; } }

/* === ABOUT US — founder story + milestones (lives inside .why) === */
.about-story {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: 72px;
  align-items: start;
  margin-bottom: 80px;
}
.about-story__narrative {
  display: flex; flex-direction: column; gap: 18px;
  font-family: var(--font-sans); font-weight: 300;
  font-size: 17px; line-height: 1.65;
  color: var(--fg-muted);
  max-width: 62ch;
}
.about-story__narrative p { margin: 0; }
.about-story__narrative em {
  font-family: var(--font-display); font-style: italic;
  color: var(--gold-bright); font-weight: 400;
}
.about-story__aside { display: flex; flex-direction: column; gap: 28px; }
.about-story__aside-card {
  position: relative;
  padding: 36px 32px 32px;
  border: 1px solid var(--hairline);
  background: rgba(0, 0, 0, 0.10);
}
.about-story__aside-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.about-story__quote {
  font-family: var(--font-display); font-weight: 400; font-style: italic;
  font-size: 22px; line-height: 1.35; letter-spacing: -0.012em;
  color: var(--fg); text-wrap: pretty;
}
.about-story__quote em {
  font-style: italic; color: var(--gold-bright); font-weight: 400;
}
.about-story__attrib {
  margin-top: 22px; padding-top: 18px;
  border-top: 1px solid var(--hairline);
}
.about-story__attrib-name {
  font-family: var(--font-sans); font-size: 11px; font-weight: 600;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--gold-bright);
}
.about-story__attrib-role {
  margin-top: 6px;
  font-family: var(--font-sans); font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fg-subtle);
}
.about-story__sig {
  display: flex; align-items: baseline; gap: 10px;
  font-family: var(--font-sans); font-size: 10px;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--fg-subtle);
}
.about-story__sig-italic {
  font-family: var(--font-display); font-style: italic;
  font-size: 16px; letter-spacing: -0.005em; text-transform: none;
  color: var(--gold-bright);
}

@media (max-width: 960px) {
  .about-story { grid-template-columns: 1fr; gap: 40px; }
}

/* Timeline of milestones */
.about-timeline {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0 44px;   /* breathing room between milestones (was edge-to-edge) */
  margin-bottom: 80px;
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
}
.about-milestone {
  padding: 32px 28px 32px 0;
  border-right: 1px solid var(--hairline);
  position: relative;
}
.about-milestone:last-child { border-right: 0; padding-right: 0; }
.about-milestone:not(:first-child) { padding-left: 28px; }
.about-milestone__year {
  font-family: var(--font-display); font-style: italic;
  font-size: 32px; line-height: 1; letter-spacing: -0.02em;
  color: var(--gold-bright);
  font-variant-numeric: tabular-nums;
}
.about-milestone__h {
  margin: 14px 0 10px;
  font-family: var(--font-display); font-weight: 400;
  font-size: 20px; line-height: 1.2; letter-spacing: -0.012em;
  color: var(--fg);
}
.about-milestone__p {
  margin: 0;
  font-family: var(--font-sans); font-weight: 300;
  font-size: 13px; line-height: 1.6;
  color: var(--fg-muted);
}
@media (max-width: 960px) {
  .about-timeline { grid-template-columns: 1fr 1fr; }
  .about-milestone:nth-child(2n) { border-right: 0; }
  .about-milestone:nth-child(-n+2) { border-bottom: 1px solid var(--hairline); }
}
@media (max-width: 560px) {
  .about-timeline { grid-template-columns: 1fr; }
  .about-milestone { border-right: 0 !important; border-bottom: 1px solid var(--hairline); padding-left: 0 !important; padding-right: 0; }
  .about-milestone:last-child { border-bottom: 0; }
}

/* === PRICING / QUOTE === */
.pricing { padding: 100px 0; }
.pricing-header {
  display: grid; grid-template-columns: 1fr 1fr; gap: 80px;
  align-items: end; margin-bottom: 64px;
}
.pricing-grid {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: 20px;
}
.tier {
  background: var(--bg-dark); border: 1px solid var(--bg-dark);
  color: var(--fg-on-dark);
  padding: 40px 32px;
  display: flex; flex-direction: column; gap: 18px;
  position: relative;
  transition: all 400ms var(--ease-cinematic);
  box-shadow: var(--shadow-3);
}
.tier h3, .tier .rate { color: var(--fg-on-dark); }
.tier p, .tier li { color: rgba(242,237,222,0.75); }
.tier .tier-tag { color: var(--gold); }
.tier ul li::before { color: var(--gold); }
.tier:hover { border-color: var(--gold); box-shadow: var(--shadow-3); transform: translateY(-4px); }
.tier.is-featured { background: var(--bg-elev); border-color: var(--hairline); color: var(--fg); box-shadow: 0 1px 1px rgba(20,17,15,0.02); }
.tier.is-featured h3, .tier.is-featured .rate { color: var(--fg); }
.tier.is-featured p { color: var(--fg-muted); }
.tier.is-featured li { color: var(--fg); }
.tier.is-featured .tier-tag { color: var(--gold-deep); }
.tier.is-featured ul li::before { color: var(--gold-deep); }
.tier.is-featured:hover { border-color: var(--gold); box-shadow: var(--shadow-2); }
.tier-tag {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-deep);
}
.tier h3 {
  font-family: var(--font-display); font-weight: 400; font-size: 28px;
  line-height: 1.1; letter-spacing: -0.015em; color: var(--fg); margin: 0;
}
.tier .rate {
  font-family: var(--font-display); font-size: 56px; color: var(--fg);
  letter-spacing: -0.02em; line-height: 1;
}
.tier .rate small { font-family: var(--font-sans); font-size: 12px;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--fg-subtle);
  font-variant-numeric: tabular-nums; }
.tier p { font-family: var(--font-sans); font-weight: 300; font-size: 14px;
  line-height: 1.6; color: var(--fg-muted); margin: 0; }
.tier ul { list-style: none; padding: 0; margin: 12px 0; display: flex; flex-direction: column; gap: 12px; }
.tier li { padding-left: 22px; position: relative;
  font-family: var(--font-sans); font-size: 14px; color: var(--fg); }
.tier li::before { content: "+"; position: absolute; left: 0; top: -1px;
  font-family: var(--font-display); font-style: italic; color: var(--gold-deep);
  font-size: 18px; line-height: 1; }
.tier .btn { margin-top: auto; align-self: stretch; }
.tier-featured-badge {
  position: absolute; top: -1px; left: -1px; right: -1px;
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.30em; text-transform: uppercase;
  background: var(--gold-deep); color: #F0E4CC;
  padding: 8px 0; text-align: center;
}
.tier.is-featured { padding-top: 56px; }

@media (max-width: 1000px) { .pricing-header { grid-template-columns: 1fr; }
  .pricing-grid { grid-template-columns: 1fr; } }

/* === TESTIMONIALS === */
.testi { padding: 100px 0; background: var(--bg-alt); position: relative; }
.testi-header { text-align: center; margin-bottom: 56px; }

/* Google verified reviews badge — replaces the previous eyebrow + h2 */
.testi-google-badge {
  display: inline-flex; align-items: center; gap: 18px;
  padding: 16px 28px 16px 22px;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  border-radius: 4px;
  box-shadow: var(--shadow-1);
  text-align: left;
}
.testi-google-mark { flex: 0 0 auto; }
.testi-google-text { display: flex; flex-direction: column; gap: 6px; }
.testi-google-name {
  font-family: var(--font-display); font-weight: 400; font-size: 22px;
  letter-spacing: -0.01em; color: var(--fg);
  line-height: 1;
}
.testi-google-rating {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-sans); font-size: 13px; color: var(--fg-muted);
}
.testi-google-rating .t-tabular {
  font-family: var(--font-display); font-size: 18px; color: var(--gold);
  font-variant-numeric: tabular-nums; line-height: 1;
}
.testi-google-rating .stars {
  color: var(--gold); font-size: 13px; letter-spacing: 0.08em;
}
.testi-google-count {
  font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--fg-subtle);
}

.testi-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.testi-card {
  background: var(--bg-elev); border: 1px solid var(--hairline);
  padding: 24px 22px 22px;
  display: flex; flex-direction: column; gap: 16px;
  position: relative;
  box-shadow: var(--shadow-1);
}
.testi-card .stars { color: var(--gold-deep); font-size: 11px; letter-spacing: 0.10em; }
.testi-card .quote {
  font-family: var(--font-display); font-weight: 400; font-style: italic;
  font-size: 15px; line-height: 1.5; color: var(--fg); margin: 0;
  text-wrap: pretty;
}
.testi-card .quote::before { content: "“"; font-size: 38px; line-height: 0;
  color: var(--gold-deep); margin-right: 2px; vertical-align: -14px; }
.testi-card .author {
  display: flex; align-items: center; gap: 12px;
  padding-top: 16px; border-top: 1px solid var(--hairline);
  margin-top: auto;
}
.testi-card .avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--bg-alt);
  border: 1px solid var(--hairline-strong);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display); font-style: italic;
  color: var(--gold-deep); font-size: 13px;
  flex: 0 0 auto;
}
.testi-card .name {
  font-family: var(--font-sans); font-size: 12px; font-weight: 500;
  letter-spacing: 0.02em; color: var(--fg);
}
.testi-card .role {
  font-family: var(--font-sans); font-size: 9px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--fg-subtle); margin-top: 2px;
}

@media (max-width: 1100px) { .testi-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px)  { .testi-grid { grid-template-columns: 1fr; } }

/* === PRESS === */
.press { padding: 80px 0 100px; }
.press-rail {
  display: grid; grid-template-columns: auto 1fr;
  gap: 64px; align-items: center;
  padding-top: 56px; border-top: 1px solid var(--hairline);
}
.press-rail .label {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-deep);
  white-space: nowrap;
}
.press-logos {
  display: flex; gap: 48px; flex-wrap: wrap; align-items: center;
}
.press-logo {
  font-family: var(--font-display); font-weight: 400; font-size: 22px;
  color: var(--fg-muted); letter-spacing: -0.005em;
  transition: color 300ms;
  white-space: nowrap;
}
.press-logo:hover { color: var(--gold-deep); }
.press-logo--serif-italic { font-style: italic; }
.press-logo--blocky { font-family: var(--font-sans); font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase; font-size: 15px; }
.press-logo--smallcaps { font-family: var(--font-display); letter-spacing: 0.20em;
  text-transform: uppercase; font-size: 15px; }

@media (max-width: 800px) {
  .press-rail { grid-template-columns: 1fr; gap: 24px; }
  .press-logos { gap: 28px; }
}

/* ===== sections3.css ===== */
/* === CONTACT BAND === */
.contact {
  padding: 100px 0 100px;
  background: linear-gradient(180deg, var(--bg) 0%, var(--bg-alt) 100%);
}
.contact-inner {
  background: var(--bg-elev);
  border: 1px solid var(--hairline);
  padding: 72px 56px;
  display: grid; grid-template-columns: 1.4fr 1fr;
  gap: 64px; align-items: center;
  box-shadow: var(--shadow-2);
  position: relative;
  overflow: hidden;
}
.contact-inner::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
}
.contact-inner h3 {
  font-family: var(--font-display); font-weight: 400; font-size: 28px;
  line-height: 1.1; letter-spacing: -0.015em; color: var(--fg); margin: 0;
}
.contact-inner h3 em { font-style: italic; color: var(--gold-deep); }
.contact-inner .lede { margin-top: 18px; }

.contact-list { display: flex; flex-direction: column; gap: 28px; }
.contact-row { display: flex; flex-direction: column; gap: 4px; padding: 16px 0;
  border-bottom: 1px solid var(--hairline); }
.contact-row:last-child { border-bottom: 0; }
.contact-row .k {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--fg-subtle);
}
.contact-row .v {
  font-family: var(--font-display); font-size: 22px; color: var(--fg);
  letter-spacing: -0.005em; font-variant-numeric: tabular-nums;
}
.contact-row .v a { color: var(--fg); text-decoration: none; transition: color 200ms; }
.contact-row .v a:hover { color: var(--gold-deep); }

@media (max-width: 900px) {
  .contact-inner { grid-template-columns: 1fr; gap: 32px; padding: 48px 24px; }
}

/* === Authorization form cards (Account Setup CC + Hotel CC) ===
   Espresso panels matching the Why-Us inversion treatment — bronze edge,
   bronze radial wash, warm ivory type. Reads as trusted documents. */
.contact-forms {
  display: grid; grid-template-columns: 1fr 1fr; gap: 24px;
  margin-top: 56px;
}
.contact-form-card {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; gap: 14px;
  padding: 36px 32px 30px;
  color: var(--fg);
  background:
    radial-gradient(ellipse 480px 280px at 85% 0%, rgba(213,164,114,0.18), transparent 60%),
    linear-gradient(160deg, var(--bg-deep), var(--bg-deeper));
  border: 1px solid var(--hairline-ink-strong);
  box-shadow: var(--shadow-2);
  text-decoration: none;
  transition: all 350ms var(--ease-cinematic);
}
.contact-form-card::before {
  /* bronze edge that sweeps in on hover */
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
  opacity: 0.5;
  transition: opacity 350ms;
}
.contact-form-card:hover {
  border-color: var(--gold);
  transform: translateY(-4px);
  box-shadow: var(--shadow-3),
              0 24px 60px -18px rgba(213,164,114,0.30);
}
.contact-form-card:hover::before { opacity: 1; }
.contact-form-eyebrow {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-bright);
  display: inline-flex; align-items: center; gap: 10px;
}
.contact-form-eyebrow::before {
  content: ""; width: 24px; height: 1px;
  background: var(--gold-bright);
}
.contact-form-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: 26px; line-height: 1.15; letter-spacing: -0.015em;
  color: var(--fg); margin: 0;
}
.contact-form-title em { font-style: italic; color: var(--gold-bright); }
.contact-form-body {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 13px; line-height: 1.6; color: rgba(240,228,204,0.72);
  margin: 0; max-width: 46ch;
}
.contact-form-cta {
  margin-top: 8px;
  padding-top: 18px;
  border-top: 1px solid rgba(240,228,204,0.14);
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold-bright);
  display: inline-flex; align-items: center; gap: 10px;
  transition: gap 300ms, color 300ms;
}
.contact-form-card:hover .contact-form-cta { gap: 14px; color: #FFFFFF; }
.contact-form-icon {
  position: absolute; top: 28px; right: 28px;
  color: var(--gold-bright); opacity: 0.6;
  transition: all 300ms;
}
.contact-form-card:hover .contact-form-icon { opacity: 1; transform: translate(2px, -2px); }
.contact-form-card:hover .contact-form-icon { opacity: 1; transform: translate(2px, -2px); }

@media (max-width: 900px) { .contact-forms { grid-template-columns: 1fr; } }

/* === FOOTER sparkles + 3D parallax tile === */
.footer {
  background: var(--bg-deeper);
  color: var(--fg-on-dark);
  padding: 96px 0 32px;
  position: relative;
  overflow: hidden;
  perspective: 1400px;
}
.footer-sparkles {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.footer-sparkles .spk {
  position: absolute;
  width: 2px; height: 2px;
  background: var(--gold-bright);
  border-radius: 50%;
  box-shadow: 0 0 6px rgba(213,164,114,0.55), 0 0 14px rgba(213,164,114,0.30);
  opacity: 0;
  animation: spk-drift 6s linear infinite;
  will-change: transform, opacity;
}
.footer-sparkles .spk--1 { background: #F0E4CC; width: 1.5px; height: 1.5px; }
.footer-sparkles .spk--2 { background: var(--gold); width: 2.5px; height: 2.5px; }
.footer-sparkles .spk--3 { width: 1px; height: 1px; box-shadow: 0 0 4px rgba(213,164,114,0.7); }
.footer-sparkles .spk--4 { background: #FFFFFF; width: 1px; height: 1px; opacity: 0.6;
  box-shadow: 0 0 4px rgba(255,255,255,0.7); }
.footer-sparkles .spk--5 { background: var(--gold-deep); width: 2px; height: 2px; }
@keyframes spk-drift {
  0%   { opacity: 0; transform: translate(0, 0) scale(0.6); }
  10%  { opacity: 1; }
  50%  { opacity: 0.85; transform: translate(-20px, -30px) scale(1.1); }
  90%  { opacity: 0.6; }
  100% { opacity: 0; transform: translate(-40px, -60px) scale(0.5); }
}

.footer .container { display: flex; flex-direction: column; gap: 36px; position: relative; z-index: 2; }

.footer-brand {
  position: relative;
  transform: rotateX(var(--prx, 0deg)) rotateY(var(--pry, 0deg));
  transform-style: preserve-3d;
  transform-origin: center;
  transition: transform 80ms linear;
  will-change: transform;
}
.footer-top {
  display: grid; grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: 56px;
  padding-bottom: 0;
}
.footer-brand .logo-mark {
  font-family: var(--font-display); font-weight: 400; font-size: 24px;
  letter-spacing: 0.32em; color: var(--fg-on-dark); margin-bottom: 24px;
}
.footer-brand .strap {
  font-family: var(--font-display); font-style: italic; font-size: 19px;
  color: var(--gold); line-height: 1.4; max-width: 280px; margin-bottom: 28px;
}
.footer-brand .contact {
  display: flex; flex-direction: column; gap: 8px;
  background: none; padding: 0;
  font-family: var(--font-sans); font-size: 13px; color: rgba(242,237,222,0.7);
}
.footer-brand .contact a { color: rgba(242,237,222,0.7); text-decoration: none; transition: color 200ms; }
.footer-brand .contact a:hover { color: var(--gold); }
.footer h4 {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold);
  margin: 0 0 24px;
}
.footer ul { list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 12px; }
.footer a {
  font-family: var(--font-sans); font-size: 13px;
  color: rgba(242,237,222,0.7); text-decoration: none;
  transition: color 200ms;
}
.footer a:hover { color: var(--gold); }
.footer-bottom {
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--font-sans); font-size: 10px; letter-spacing: 0.24em;
  text-transform: uppercase; color: rgba(242,237,222,0.45);
  gap: 24px; flex-wrap: wrap;
}

/* === Social channels === */
.footer-social {
  display: flex; align-items: center; gap: 10px;
  margin-top: 24px;
}
.footer-social a {
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(242,237,222,0.18);
  color: rgba(242,237,222,0.78);
  background: transparent;
  transition: all 240ms var(--ease-cinematic);
  border-radius: var(--radius);
}
.footer-social a:hover {
  color: var(--gold-bright);
  border-color: var(--gold);
  background: rgba(213,164,114,0.08);
  transform: translateY(-2px);
}
.footer-social a svg { display: block; }
/* footer-bottom = the standout brand sign-off (centered, big) */
.footer-bottom {
  flex-direction: column; align-items: center; text-align: center; gap: 0;
  padding-top: 0;
}
.footer-bottom .footer-rule {
  width: min(520px, 78%); height: 1px; margin: 0 auto 34px;
  background: linear-gradient(90deg, transparent, rgba(217,174,116,0.55), transparent);
}
.footer-bmark {
  font-family: var(--font-serif); font-weight: 400; text-transform: uppercase;
  letter-spacing: 0.20em; font-size: clamp(34px, 5.5vw, 58px); line-height: 1.02;
  color: var(--fg);
}
.footer-blogo {
  display: block; width: clamp(140px, 16vw, 190px); height: auto;
  filter: drop-shadow(0 14px 26px rgba(0,0,0,0.45));
}
/* C — section divider: full logo flanked by gold rules */
.fd-divider {
  display: flex; align-items: center; justify-content: center; gap: 38px;
  max-width: 920px; margin: 0 auto; padding: 30px 40px;
}
.fd-divider__rule { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(217,174,116,0.45), transparent); }
.fd-divider__logo { width: 104px; height: auto; flex: 0 0 auto; filter: drop-shadow(0 8px 16px rgba(0,0,0,0.35)); }
@media (max-width: 600px) { .fd-divider { gap: 18px; padding: 22px 20px; } .fd-divider__logo { width: 80px; } }
/* D — full logo at the top of the mobile menu (hidden on desktop) */
.nav-menu-logo, .links__logo { display: none; }
.nav-links.is-open .nav-menu-logo,
.nav.nav-open .links .links__logo {
  display: block; width: 150px; height: auto; margin: 4px auto 20px;
  filter: drop-shadow(0 8px 18px rgba(0,0,0,0.4));
}
.footer-bstrap {
  font-family: var(--font-serif); font-style: italic; text-transform: none;
  letter-spacing: normal; font-size: clamp(15px, 1.6vw, 19px);
  color: rgba(236,213,173,0.80); margin-top: 14px;
}
.footer-bottom .footer-phone {
  display: inline-block; margin-top: 30px;
  font-family: var(--font-serif); font-size: clamp(22px, 2.6vw, 30px);
  letter-spacing: 0.04em; color: var(--gold-bright); text-decoration: none;
  transition: color .25s;
}
.footer-bottom .footer-phone:hover { color: #F5DDB6; }
.footer-info {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 10px 0; margin-top: 18px;
  font-family: var(--font-sans); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(242,237,222,0.55);
}
.footer-info > * { padding: 0 18px; position: relative; }
.footer-info > *:not(:last-child)::after {
  content: ""; position: absolute; right: -1px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 3px; border-radius: 50%; background: rgba(217,174,116,0.55);
}
.footer-info a { color: rgba(242,237,222,0.72); text-decoration: none; transition: color .2s; }
.footer-info a:hover { color: var(--gold); }
.footer-bottom .footer-social { margin-top: 30px; gap: 12px; }
.footer-bottom .footer-social a { width: 40px; height: 40px; }
.footer-legalrow {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 22px;
  width: 100%; margin-top: 38px; padding-top: 24px;
  border-top: 1px solid rgba(242,237,222,0.10);
  font-size: 10px; letter-spacing: 0.24em;
}

@media (max-width: 900px) { .footer-top { grid-template-columns: 1fr 1fr; gap: 32px; } }
@media (max-width: 600px) { .footer-top { grid-template-columns: 1fr; } }

/* Contact figure — branded “CONTACT US” graphic filling the box as a
   full-bleed background on a dark luxe ground. */
/* Contact figure — the “CONTACT US” artwork as a full-bleed background.
   The box takes the artwork's own aspect ratio so the image covers it
   entirely: no white, no margins, nothing cropped. */
.contact-figure {
  width: 100%; aspect-ratio: 1304 / 963; margin-bottom: 32px;
  border-radius: 4px; overflow: hidden;
  border: 1px solid rgba(217,174,116,0.22);
  background: transparent;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08), 0 18px 44px -26px rgba(0,0,0,0.30);
}
.contact-figure img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: saturate(1.02) contrast(1.02);
}

/* ===== sections4.css ===== */
/* === EVENTS — date-led compact calendar grid === */
.events { padding: 100px 0; position: relative; }
.events-header { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: end;
  margin-bottom: 56px; }

.events-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  border-top: 1px solid var(--hairline);
}
.event-card {
  display: grid; grid-template-columns: 54px 1fr 14px;
  gap: 18px; align-items: center;
  padding: 20px 22px;
  border-bottom: 1px solid var(--hairline);
  border-right: 1px solid var(--hairline);
  cursor: pointer;
  transition: all 350ms var(--ease-cinematic);
}
.event-card:nth-child(3n) { border-right: 0; }
.event-card:hover { background: rgba(200,162,105,0.06); }
.event-card:hover .event-day { color: var(--gold); }
.event-card:hover .event-arrow { color: var(--gold); transform: translateX(4px); }
.event-card:hover .event-name { color: var(--gold); }

.event-date {
  display: flex; flex-direction: column; align-items: center;
  padding-right: 16px;
  border-right: 1px solid var(--hairline);
  line-height: 1;
}
.event-day {
  font-family: var(--font-display); font-weight: 400;
  font-size: 32px; letter-spacing: -0.02em;
  color: var(--fg); font-variant-numeric: tabular-nums;
  transition: color 300ms;
}
.event-mon {
  font-family: var(--font-sans); font-size: 9px; font-weight: 600;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold);
  margin-top: 5px;
}

.event-body-col { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.event-tag {
  font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg-subtle);
}
.event-name {
  font-family: var(--font-display); font-weight: 400; font-size: 17px;
  line-height: 1.2; letter-spacing: -0.005em; color: var(--fg); margin: 0;
  transition: color 250ms;
}
.event-arrow {
  font-family: var(--font-display); font-size: 16px; color: var(--fg-subtle);
  transition: all 300ms;
}

/* CTA strip below the events grid */
.events-cta {
  display: flex; justify-content: space-between; align-items: center; gap: 32px;
  padding: 28px 22px;
  background: var(--bg-deep);
  color: var(--fg-on-dark);
  margin-top: -1px;
  position: relative;
}
.events-cta::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.events-cta-copy { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.events-cta-step {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-bright);
}
.events-cta-line {
  font-family: var(--font-display); font-style: italic; font-size: 16px;
  color: var(--fg-on-dark); opacity: 0.85;
}
.events-cta-btn { flex: 0 0 auto; height: 52px; }

@media (max-width: 900px) {
  .events-header { grid-template-columns: 1fr; gap: 24px; }
  .events-grid { grid-template-columns: 1fr; }
  .event-card { border-right: 0; }
  .events-cta { flex-direction: column; align-items: stretch; text-align: center; }
  .events-cta-btn { width: 100%; }
}
@media (min-width: 901px) and (max-width: 1100px) {
  .events-grid { grid-template-columns: 1fr 1fr; }
  .event-card:nth-child(3n) { border-right: 1px solid var(--hairline); }
  .event-card:nth-child(2n) { border-right: 0; }
}

/* === ADVISORS === */
.advisors {
  padding: 100px 0; position: relative;
  background:
    radial-gradient(ellipse 1100px 700px at 22% 28%, rgba(213,164,114,0.18), transparent 62%),
    radial-gradient(ellipse 900px 600px at 80% 78%, rgba(213,164,114,0.12), transparent 60%),
    radial-gradient(ellipse 600px 400px at 50% 50%, rgba(0,0,0,0.18), transparent 70%);
}
/* twinkling bronze flecks — same glitter language as the fleet cards */
.advisors::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(circle 1.5px at 12% 18%, rgba(235,189,160,0.55), transparent 70%),
    radial-gradient(circle 1px   at 28% 62%, rgba(213,164,114,0.45), transparent 70%),
    radial-gradient(circle 1.5px at 46% 22%, rgba(235,189,160,0.40), transparent 70%),
    radial-gradient(circle 1px   at 64% 78%, rgba(213,164,114,0.50), transparent 70%),
    radial-gradient(circle 1.5px at 82% 30%, rgba(235,189,160,0.50), transparent 70%),
    radial-gradient(circle 1px   at 92% 64%, rgba(213,164,114,0.40), transparent 70%),
    radial-gradient(circle 1px   at 38% 88%, rgba(235,189,160,0.45), transparent 70%),
    radial-gradient(circle 1.5px at 72% 12%, rgba(213,164,114,0.45), transparent 70%);
  background-size: 100% 100%;
  opacity: 0.9;
  animation: advisors-glitter 8s ease-in-out infinite;
}
@keyframes advisors-glitter {
  0%, 100% { opacity: 0.6; }
  50%      { opacity: 1.0; }
}
@media (prefers-reduced-motion: reduce) {
  .advisors::before { animation: none; opacity: 0.7; }
}
.advisors-inner {
  display: grid; grid-template-columns: 1fr 1fr; gap: 80px;
  align-items: center;
  position: relative; z-index: 2;
}
.advisors-copy .advisors-points {
  margin: 32px 0;
  display: flex; flex-direction: column; gap: 12px;
  font-family: var(--font-sans); font-size: 14px; color: var(--fg);
}
.advisors-points > div { display: grid; grid-template-columns: 14px 1fr; gap: 12px; align-items: baseline; }
.advisors-points span { color: var(--gold); font-family: var(--font-display); font-size: 20px; line-height: 0.8; }
.advisors-actions { display: flex; gap: 14px; }

.advisors-members {
  background: var(--bg-elev);
  color: var(--fg-ink);
  border: 1px solid var(--hairline-ink);
  padding: 48px;
  box-shadow: var(--shadow-2);
  position: relative;
}
.advisors-members::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, transparent, var(--gold-deep), transparent);
}
.advisors-members-label {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-deep);
  margin-bottom: 24px;
}
.advisors-members-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 18px 32px;
}
.advisors-member {
  font-family: var(--font-display); font-size: 22px; color: var(--fg-ink);
  letter-spacing: -0.01em; padding-bottom: 14px;
  border-bottom: 1px solid var(--hairline-ink);
}
.advisors-quote {
  margin-top: 32px;
  font-family: var(--font-display); font-style: italic; font-size: 17px;
  color: var(--gold-deep);
}

@media (max-width: 900px) {
  .advisors-inner { grid-template-columns: 1fr; gap: 48px; }
  .advisors-members { padding: 32px 24px; }
}

/* ===== moments.css ===== */
/* === MOMENTS — HD photo trio === */
.moments {
  padding: 100px 0;
  background: var(--bg);
  position: relative;
}
.moments-header {
  margin-bottom: 56px;
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end;
}
.moments-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.moment { margin: 0; display: flex; flex-direction: column; gap: 18px;
  transition: transform 600ms var(--ease-cinematic); }
.moment:nth-child(2) { transform: translateY(48px); }
.moment:nth-child(2):hover, .moment:hover { transform: translateY(-6px); }
.moment:nth-child(2):hover { transform: translateY(42px); }
.moment-frame {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  position: relative;
  background: var(--bg-alt);
  box-shadow: var(--shadow-2);
  border: 1px solid var(--hairline);
}
.moment-frame img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 1200ms var(--ease-cinematic);
  filter: saturate(0.95) contrast(1.02);
}
.moment-frame:hover img { transform: scale(1.04); }
.moment-frame::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, transparent 50%, rgba(20,17,15,0.45));
}
.moment-eyebrow {
  position: absolute; top: 20px; left: 20px; z-index: 2;
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-bright);
  padding: 6px 12px;
  background: rgba(15,14,12,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(214,191,139,0.30);
}
.moment figcaption h3 {
  font-family: var(--font-display); font-weight: 400; font-size: 22px;
  line-height: 1.2; letter-spacing: -0.01em; color: var(--fg); margin: 0;
}
.moment figcaption h3 em { font-style: italic; color: var(--gold-deep); }
.moment figcaption p {
  font-family: var(--font-sans); font-weight: 300; font-size: 14px; line-height: 1.55;
  color: var(--fg-muted); margin: 8px 0 0;
}

@media (max-width: 900px) {
  .moments-header { grid-template-columns: 1fr; gap: 24px; }
  .moments-grid { grid-template-columns: 1fr; }
  .moment:nth-child(2) { transform: none; }
  .moment:nth-child(2):hover { transform: translateY(-6px); }
}

/* ===== dark-overrides.css ===== */
/* === Tobacco & Bronze overrides ===
   Page is mid-toned tobacco leather. Cards elevate (slightly lighter tobacco).
   Why Us / Footer go deeper to espresso. One precious metal: bronze.
*/

/* --- NAV — tobacco glass --- */
.nav {
  background: rgba(31, 24, 18, 0.78);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  border-bottom: 1px solid var(--hairline-ink);
}
.nav-mark { color: var(--fg-ink); }
.nav-mark sup { color: var(--terra); }
.nav-link { color: var(--fg-ink); font-size: 10px; letter-spacing: 0.18em; }
.nav-link::after { background: var(--terra); }
.nav-link:hover, .nav-link.is-active { color: var(--terra); }
.nav-links { gap: 22px; }
.nav-lang-trigger { color: var(--fg-ink); border-color: var(--hairline-ink-strong); }
.nav-lang-trigger:hover { color: var(--terra); border-color: var(--terra); }
.nav-lang-trigger .globe,
.nav-lang-trigger .chev { color: var(--terra); }
.nav-lang-menu {
  background: rgba(31,24,18,0.96);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  border-color: var(--hairline-ink-strong);
}
.nav-lang-item { color: var(--fg-ink); border-right-color: var(--hairline-ink); border-bottom-color: var(--hairline-ink); }
.nav-lang-item:hover { background: rgba(200,162,105,0.10); color: var(--terra); }
.nav-lang-item.is-active { color: var(--terra); }
.nav-login { color: var(--fg-ink); }
.nav-login:hover { color: var(--terra); }

/* Safety net: the booking widget must never carry a parallax transform.
   depth5d's d5-plane was detaching the toggle + button from the fields card on
   every #book embed page. Neutralize any residual transform (covers cached JS). */
.hbq--bar.d5-plane, .hbq__bar.d5-plane, #book .d5-plane { transform: none !important; }

/* ---- Services dropdown (desktop / React nav) ---- */
.nav-dd { position: relative; display: inline-flex; align-items: center; }
.nav-dd::after { content: ''; position: absolute; top: 100%; left: -8px; right: -8px; height: 16px; } /* hover bridge */
.nav-dd-caret { font-size: 0.7em; margin-left: 5px; opacity: 0.85; transition: transform 0.2s ease; display: inline-block; }
.nav-dd:hover .nav-dd-caret, .nav-dd:focus-within .nav-dd-caret { transform: rotate(180deg); }
.nav-dd-menu {
  position: absolute; top: calc(100% + 14px); left: 50%; transform: translateX(-50%) translateY(8px);
  min-width: 340px; display: flex; flex-direction: column; padding: 8px;
  background: rgba(31, 24, 18, 0.97);
  -webkit-backdrop-filter: blur(8px) saturate(140%); backdrop-filter: blur(8px) saturate(140%);
  border: 1px solid var(--hairline-ink-strong, rgba(236, 213, 173, 0.22)); border-radius: 12px;
  box-shadow: 0 28px 60px rgba(0, 0, 0, 0.55);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease; z-index: 120;
}
.nav-dd:hover .nav-dd-menu, .nav-dd:focus-within .nav-dd-menu {
  opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0);
}
.nav-dd-item { display: flex; flex-direction: column; gap: 2px; padding: 11px 14px; border-radius: 8px; transition: background 0.15s ease; }
.nav-dd-item:hover { background: rgba(200, 162, 105, 0.10); }
.nav-dd-item__label { font-family: var(--font-sans, sans-serif); font-size: 13px; letter-spacing: 0.04em; color: var(--fg-ink, #F3E7D2); text-transform: none; }
.nav-dd-item:hover .nav-dd-item__label { color: var(--terra); }
.nav-dd-item__desc { font-size: 11.5px; color: var(--bone-40, #D8CBB2); letter-spacing: 0; line-height: 1.4; text-transform: none; }

@media (max-width: 1280px) { .nav-links { gap: 18px; } }
@media (max-width: 1200px) { .nav-login { display: none; } .nav-links { gap: 16px; } }
@media (max-width: 1080px) { .nav-link { font-size: 10px; letter-spacing: 0.14em; } .nav-links { gap: 14px; } }
@media (max-width: 940px)  { .nav-lang { display: none; } }

/* --- HERO — bronze + espresso wash over tobacco --- */
.hero { color: var(--fg); }
.hero-bg {
  /* Photograph removed — warm bronze + espresso wash over the camel ground. */
  background:
    radial-gradient(ellipse 900px 600px at 78% 28%, rgba(213,164,114,0.18), transparent 60%),
    radial-gradient(ellipse 700px 500px at 12% 80%, rgba(0,0,0,0.22), transparent 60%),
    linear-gradient(180deg, rgba(58,44,34,0.34) 0%, transparent 45%, rgba(58,44,34,0.30) 100%),
    var(--bg);
}
.hero-bg::after { display: none; }
.hero-rating { color: var(--fg-ink-muted); }
.hero-rating .stars { color: var(--terra); }
.hero-title { color: var(--fg-ink); }
.hero-title em { color: var(--terra); font-style: italic; }
.hero-lede { color: var(--fg-ink-muted); }
.hero-stats { border-top-color: var(--hairline-ink); }
.hero-stat .k { color: var(--fg-ink-subtle); }
.hero-stat .v { color: var(--fg-ink); }
.hero-stat .v small { color: var(--fg-ink-subtle); }
.hero-chip {
  background: rgba(31,24,18,0.88);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-color: var(--hairline-ink-strong);
  color: var(--fg);
}
.hero-chip .lbl { color: var(--terra); }
.hero-chip .val { color: var(--fg-ink); }

.hero .btn--gold,
.hero .btn--primary {
  background: var(--terra); color: #2A1B0E; border-color: var(--terra);
  box-shadow: 0 1px 2px rgba(0,0,0,0.30), 0 14px 30px -10px rgba(213,164,114,0.45);
}
.hero .btn--gold:hover,
.hero .btn--primary:hover { background: var(--terra); border-color: var(--terra); }
.hero .btn--ghost { border-color: var(--hairline-ink-strong); color: var(--fg-ink); }
.hero .btn--ghost:hover { border-color: var(--terra); color: var(--terra); }

.hero-booking-card { box-shadow: var(--shadow-3); }
.hero-booking-card::before { background: linear-gradient(90deg, var(--terra), var(--brass-bright), var(--sage)); }
.hb-cta { background: var(--terra); }
.hb-cta:hover { background: var(--terra-deep); }
.hb-field:focus-within, .hb-field:hover { background: rgba(200,162,105,0.06); }
.hero-trustline { color: var(--fg-ink-subtle); }
.hero-trustline span:first-child { color: var(--terra); }

/* --- GENERAL section text on cream --- */
.services-header h2, .fleet-header h2, .moments-header h2,
.cities-header h2, .pricing-header h2, .testi-header h2,
.events-header h2, .faq-header h2, .advisors-copy h2,
.h-section, .h-display { color: var(--fg-ink); }

.services-header h2 em, .fleet-header h2 em, .moments-header h2 em,
.cities-header h2 em, .pricing-header h2 em, .testi-header h2 em,
.events-header h2 em, .faq-header h2 em, .advisors-copy h2 em,
.h-section em, .h-display em { color: var(--terra); font-style: italic; }

.services-header .lede, .fleet-header .lede, .moments-header .lede,
.cities-header .lede, .pricing-header .lede, .testi-header .lede,
.events-header .lede, .faq-header .lede, .advisors-copy .lede,
.lede { color: var(--fg); }

.eyebrow { color: var(--brass); }
.eyebrow::before { background: var(--brass); }

/* --- BUTTONS site-wide reflavor --- */
.btn--primary { background: var(--terra); color: #2A1B0E; border-color: var(--terra); }
.btn--primary:hover { background: var(--terra); border-color: var(--terra); }
.btn--gold     { background: var(--terra); color: #2A1B0E; border-color: var(--terra); }
.btn--gold:hover { background: var(--terra); border-color: var(--terra); }
.btn--ghost { border-color: var(--hairline-ink-strong); color: var(--fg); }
.btn--ghost:hover { border-color: var(--terra); color: var(--terra); }
.btn--solid { background: var(--brass); color: #2A1B0E; border-color: var(--brass); }
.btn--solid:hover { background: var(--brass); border-color: var(--brass); }
.btn--ink { background: var(--bg-deep); color: var(--fg); border-color: var(--bg-deep); }
.btn--ink:hover { background: var(--bg-deep); border-color: var(--terra); color: var(--fg); }

/* --- SERVICES — uniform cream cards, single champagne edge on hover.
       Restraint over variety. No per-card tinting. --- */
.service-card { border-color: var(--hairline-ink); background: var(--bg-elev); position: relative; }
.service-card::before { background: linear-gradient(90deg, transparent, var(--terra), transparent); }

.service-card:hover { border-color: var(--terra); box-shadow: var(--shadow-3); }
.service-card:hover::before { transform: translateX(0); }
.service-card:hover .service-link { color: var(--terra); }
.service-tag { color: var(--terra); }
.service-title em { color: var(--terra); font-style: italic; }

/* --- FLEET stage --- */
.fleet { background: transparent; }
.fleet-tab--idx.is-active { background: var(--terra); color: #2A1B0E; border-color: var(--terra); border-radius: 6px; padding: 8px 13px 9px; }
.fleet-tab--idx:hover { color: var(--terra); border-color: var(--terra); }
.fleet-tab--card.is-active .fleet-tab__count,
.fleet-tab--card.is-active .fleet-tab__label,
.fleet-tab--card.is-active .fleet-tab__icon { color: var(--terra-bright); }
.fleet-stage { color: var(--fg-ink); }
.fleet-stage::before { background: linear-gradient(90deg, var(--terra), var(--brass-bright), var(--sage)); }
.fleet-detail h3 em, .fleet-detail .class-tag { color: var(--terra); }

/* --- EVENTS — terra gold on cream --- */
.event-tag { color: var(--terra); }
.event-num { color: var(--brass); }
.event-card:hover { background: rgba(200,162,105,0.05); }
.event-card:hover .event-num, .event-card:hover .event-arrow { color: var(--terra); }
.event-card { border-color: var(--hairline-ink); }

/* --- MOMENTS — cream page, photo cards float on top --- */
.moments { background: transparent; }
.moment figcaption h3 { color: var(--fg-ink); }
.moment figcaption h3 em { color: var(--terra); }
.moment figcaption p { color: var(--fg-ink-muted); }
.moment-frame { border-color: var(--hairline-ink); }
.moment-eyebrow { color: var(--brass-bright); background: rgba(15,14,12,0.55); border-color: rgba(200,162,105,0.30); }

/* --- CITIES — white "light intermission" surface (dark-on-white) --- */
.cities-map { background: #FFFFFF; border-color: rgba(110,70,28,0.14); }
.cities-map .land { fill: #8C6E3D; opacity: 0.55; }
.cities-map .graticule line { stroke: #2B1C0E; opacity: 0.05; }
.cities-map .label { fill: #6E5132; }
.cities-map .label.hq { fill: #8A5A1E; }
.cities-map .pin, .cities-map .pin-ring { fill: #8A5A1E; stroke: #8A5A1E; }
.cities-map .route { stroke: #8A5A1E; opacity: 0.35; }
.cities-map .world-clock { background: linear-gradient(180deg, rgba(110,70,28,0.05), transparent); border-bottom-color: rgba(110,70,28,0.16); }
.cities-map .world-clock-label { color: #8A5A1E; border-right-color: rgba(110,70,28,0.12); }
.cities-map .wc-cell { border-right-color: rgba(110,70,28,0.12); }
.cities-map .wc-cell:hover { background: rgba(138,90,30,0.06); }
.cities-map .wc-time { color: #2B1C0E; }
.cities-map .wc-cell.is-hq .wc-time { color: #8A5A1E; }
.cities-map .wc-cell.is-night .wc-time { color: #6E5132; }
.cities-map .wc-city { color: #6E5132; }
.cities-map .wc-code { color: #8A6B45; }
.cities-map .wc-cell.is-hq .wc-code { color: #8A5A1E; }
.cities-map .wc-offset { color: #8A6B45; }
.cities-map-legend { color: #6E5132; background: rgba(255,255,255,0.9); border-color: rgba(110,70,28,0.14); }
.cities-map-legend .dot { background: #8A5A1E; }
.cities-map-legend .dot--out { background: #B89B6A; }
.cities-map-legend .dot--out.is-night { background: transparent; border-color: #8A6B45; }
.cities-ledger { background: #FFFFFF; border-color: rgba(110,70,28,0.14); color: #2B1C0E; }
.cities-col { border-right-color: rgba(110,70,28,0.14); }
.cities-col h4 { color: #8A5A1E; }
.cities-col li { color: #2B1C0E; }
.cities-col li .code { color: #8A6B45; }
.cities-col li.is-hq { color: #8A5A1E; }
.atlas-city:hover, .city:hover { background: rgba(138,90,30,0.05); }

/* --- WHY US — espresso inversion with bronze wash --- */
.why {
  background:
    radial-gradient(ellipse 1100px 700px at 80% 25%, rgba(213,164,114,0.18), transparent 60%),
    radial-gradient(ellipse 800px 500px at 18% 80%, rgba(139,123,98,0.10), transparent 60%),
    var(--bg-deep);
  color: var(--fg-on-dark);
}
.why::before { display: none; }
.why .eyebrow { color: var(--brass-bright); }
.why .eyebrow::before { background: var(--brass-bright); }
.why h2 { color: var(--fg-on-dark); }
.why h2 em { color: var(--brass-bright); font-style: italic; }
.why .lede, .why-item p { color: rgba(244,239,230,0.65); }
.why-grid {
  background: transparent; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none;
  border: 0;
}
.why-item { border-color: rgba(244,239,230,0.16); }
.why-item h4 { color: var(--fg-on-dark); }
.why-item .num { color: var(--brass-bright); }
.why-item .num small { color: var(--brass-bright); }

/* --- ADVISORS --- */
.advisors-members {
  background:
    radial-gradient(ellipse 320px 180px at 50% 0%, rgba(213,164,114,0.18), transparent 70%),
    linear-gradient(165deg, rgba(240,228,204,0.05), rgba(240,228,204,0.01)),
    var(--bg-elev);
  color: var(--fg-ink); border-color: var(--hairline-ink);
  box-shadow:
    var(--shadow-3),
    inset 0 1px 0 rgba(213,164,114,0.18),
    inset 0 -1px 0 rgba(0,0,0,0.25);
  position: relative;
  overflow: hidden;
}
/* same specular sheen as the fleet tab cards — follows a fixed offset since this card doesn't tilt */
.advisors-members::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle 280px at 70% 25%, rgba(213,164,114,0.18), transparent 60%);
  opacity: 0.9;
}
.advisors-members::before {
  background: linear-gradient(90deg, transparent, var(--terra), transparent);
  z-index: 3;
}
.advisors-members-label,
.advisors-members-grid,
.advisors-quote { position: relative; z-index: 2; }
.advisors-members-label { color: var(--terra); }
.advisors-member { color: var(--fg-ink); border-bottom-color: var(--hairline-ink); }
.advisors-quote { color: var(--terra); }
.advisors-points span { color: var(--terra); }

/* === Light intermission sections =================================
   Three sections (Pricing, Testimonials, FAQ) flip to a warm cream
   surface so the page reads dark → light → dark → light, like a
   bound magazine. Type and accents repaint accordingly.
*/

:root {
  --bg-cream:       #FFFFFF;   /* warm cream — page surface */
  --bg-cream-card:  #FFFFFF;   /* lighter cream — cards */
  --bg-cream-alt:   #FFFFFF;   /* deeper cream — sub-bands */
  --ink-cream:      #2A1F17;   /* dark tobacco type on cream */
  --ink-cream-muted:#6B5C45;
  --ink-cream-subtle:#9C8B6E;
  --hairline-cream: rgba(42,31,23,0.10);
  --hairline-cream-strong: rgba(42,31,23,0.20);
}

/* --- PRICING — cream gallery --- */
.pricing {
  background:
    radial-gradient(ellipse 1100px 600px at 80% 10%, rgba(213,164,114,0.18), transparent 60%),
    var(--bg-cream);
  color: var(--ink-cream);
}
.pricing .h-section, .pricing .pricing-header h2 { color: var(--ink-cream); }
.pricing .h-section em, .pricing .pricing-header h2 em { color: var(--terra-deep); }
.pricing .lede { color: var(--ink-cream-muted); }
.pricing .eyebrow { color: var(--terra-deep); }
.pricing .eyebrow::before { background: var(--terra-deep); }

.tier { background: var(--bg-cream-card); color: var(--ink-cream); border-color: var(--hairline-cream); }
.tier:hover { border-color: var(--terra); }
.tier h3 { color: var(--ink-cream); }
.tier p { color: var(--ink-cream-muted); }
.tier li { color: var(--ink-cream); }
.tier { background: var(--bg-deep); color: var(--fg-on-dark); border-color: var(--bg-deep); }
.tier h3 { color: var(--fg-on-dark); }
.tier p, .tier li { color: rgba(240,228,204,0.78); }
.tier-tag { color: var(--brass-bright); }
.tier li::before { color: var(--brass-bright); }
.tier.is-featured { background: var(--bg-elev); color: var(--fg-ink); border-color: var(--hairline-ink); }
.tier.is-featured h3 { color: var(--fg-ink); }
.tier.is-featured p, .tier.is-featured li { color: var(--fg-ink-muted); }
.tier.is-featured .tier-tag { color: var(--terra-deep); }
.tier.is-featured li::before { color: var(--terra-deep); }
.tier-featured-badge { background: var(--terra); color: #2A1B0E; }

/* --- TESTIMONIALS — cream press-room --- */
.testi { background: var(--bg-cream-alt); }
.testi-google-badge { background: var(--bg-cream-card); border-color: var(--hairline-cream); }
.testi-google-name { color: var(--ink-cream); }
.testi-google-rating { color: var(--ink-cream-muted); }
.testi-google-rating .stars { color: var(--terra-deep); }
.testi-google-rating .t-tabular { color: var(--terra-deep); }
.testi-google-count { color: var(--ink-cream-subtle); }

.testi-card { background: var(--bg-deep); color: var(--fg-on-dark); border-color: var(--bg-deep); }
.testi-card .quote { color: var(--fg-on-dark); }
.testi-card .quote::before { color: var(--brass-bright); }
.testi-card .stars { color: var(--brass-bright); }
.testi-card .author { border-top-color: rgba(240,228,204,0.15); }
.testi-card .avatar { background: rgba(240,228,204,0.08); border-color: rgba(240,228,204,0.18); color: var(--brass-bright); }
.testi-card .name { color: var(--fg-on-dark); }
.testi-card .role { color: rgba(240,228,204,0.6); }

/* --- FAQ — cream reading room --- */
.faq { background: var(--bg-cream); color: var(--ink-cream); }
.faq .h-section, .faq h2 { color: var(--ink-cream); }
.faq .h-section em, .faq h2 em { color: var(--terra-deep); }
.faq .lede { color: var(--ink-cream-muted); }
.faq .eyebrow { color: var(--terra-deep); }
.faq .eyebrow::before { background: var(--terra-deep); }
.faq-list, .faq-item { border-color: var(--hairline-cream); }
.faq-item:hover { background: rgba(213,164,114,0.08); }
.faq-no { color: var(--terra-deep); }
.faq-q-text { color: var(--ink-cream); }
.faq-toggle { color: var(--terra-deep); }
.faq-a p { color: var(--ink-cream-muted); }

/* --- PRESS — sits between Testimonials and contact; tighten to cream too --- */
.press { background: var(--bg-cream-alt); }
.press-rail { border-top-color: var(--hairline-cream); }
.press-rail .label { color: var(--terra-deep); }
.press-logo { color: var(--ink-cream-muted); }
.press-logo:hover { color: var(--terra-deep); }
/* (light-section overrides above already cover .pricing — old dark rules retired) */

/* (light-section overrides at top of file already cover .testi / .press / .faq) */

/* --- CONTACT --- */
.contact { background: transparent; }
.contact-inner { background: var(--bg-elev); color: var(--fg-ink); border-color: var(--hairline-ink); }
.contact-inner::before { background: linear-gradient(90deg, var(--terra), var(--brass-bright), var(--sage)); }
.contact-inner h3 { color: var(--fg-ink); }
.contact-inner h3 em { color: var(--terra); }
.contact-inner .lede { color: var(--fg-ink-muted); }
.contact-row { border-bottom-color: var(--hairline-ink); }
.contact-row .k { color: var(--fg-ink-subtle); }
.contact-row .v, .contact-row .v a { color: var(--fg-ink); }
.contact-row .v a:hover { color: var(--terra); }
.contact-inner .btn--ghost { border-color: var(--hairline-ink-strong); color: var(--fg-ink); }
.contact-inner .btn--ghost:hover { border-color: var(--terra); color: var(--terra); }

/* --- FOOTER --- deep espresso ground, white type, bronze accents --- */
.footer { background: var(--bg-deeper); position: relative; }
.footer::before {
  /* faint bronze hairline at the top edge — stitched seam, not stage drop */
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  opacity: 0.4;
  z-index: 1;
}
.footer-brand .logo-mark { color: #FFFFFF; }
.footer-brand .strap { color: var(--brass-bright); }
.footer-brand .contact span,
.footer-brand .contact a { color: #FFFFFF; }
.footer-brand .contact .muted {
  color: rgba(255,255,255,0.5);
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
}
.footer-brand .contact a:hover { color: var(--brass-bright); }
.footer h4 { color: var(--brass-bright); }
.footer a { color: rgba(255,255,255,0.85); }
.footer a:hover { color: var(--brass-bright); }
.footer-top { border-bottom-color: rgba(255,255,255,0.14); }
.footer-bottom { color: rgba(255,255,255,0.55); }
.footer-social a { border-color: rgba(255,255,255,0.22); color: rgba(255,255,255,0.85); }
.footer-social a:hover { color: var(--gold-bright); border-color: var(--gold); background: rgba(213,164,114,0.08); }


/* =========================================================================
   HOMEPAGE ALTERNATING BROWN / WHITE RHYTHM
   White sections re-declare the colour tokens so every descendant that reads
   var(--fg)/--gold/--hairline/--bg-* flips to ink-on-white automatically.
   Brown sections re-declare the cream tokens back to light-on-brown so the
   bespoke "cream intermission" rules render dark/brown instead.
   Order after hero: services(W) events(B) moments(W) cities(B) why(W)
   advisors(B) pricing(W) testimonials(B) press(W) faq(B) contact(W).
   ========================================================================= */
.services, .moments, .why, .pricing, .press {
  background: #FFFFFF !important;
  --bg: #FFFFFF; --bg-card: #FFFFFF; --bg-elev: #F7F4EE; --bg-alt: #F1ECE3;
  --fg: #2B1C0E; --fg-ink: #2B1C0E;
  --fg-muted: #6E5132; --fg-subtle: #8A6B45; --fg-faint: #9A7C55;
  --fg-ink-muted: #6E5132; --fg-ink-subtle: #8A6B45;
  --gold: #8A5A1E; --gold-bright: #A56A22; --gold-deep: #6E4416;
  --terra: #8A5A1E; --terra-bright: #A56A22; --terra-deep: #6E4416; --brass: #8A5A1E;
  --hairline: rgba(110,70,28,0.16); --hairline-strong: rgba(110,70,28,0.30);
  --hairline-ink: rgba(110,70,28,0.16); --hairline-ink-strong: rgba(110,70,28,0.30);
  --ink-cream: #2B1C0E; --ink-cream-muted: #6E5132; --ink-cream-subtle: #8A6B45;
  --bg-cream: #FFFFFF; --bg-cream-card: #FFFFFF; --bg-cream-alt: #FFFFFF;
  --hairline-cream: rgba(110,70,28,0.16); --hairline-cream-strong: rgba(110,70,28,0.22);
}

.events, .cities, .advisors, .testi, .faq {
  background: transparent !important;
  --bg-cream: transparent; --bg-cream-card: rgba(250,241,221,0.04); --bg-cream-alt: transparent;
  --ink-cream: #FFFFFF; --ink-cream-muted: #F4EFE6; --ink-cream-subtle: #E6DCCB;
  --hairline-cream: rgba(250,241,221,0.14); --hairline-cream-strong: rgba(250,241,221,0.26);
  --terra-deep: #D9AE74;
}
/* Keep the testimonials Google badge readable as a faint card on brown */
.testi .testi-google-badge { background: rgba(250,241,221,0.05) !important; border-color: rgba(250,241,221,0.16) !important; }

/* --- White-section text fixes: keep dark inversion cards (tiers, espresso
   contact cards) intact, flip hardcoded-cream copy to ink. --- */
.services h2, .moments h2, .why h2, .pricing h2, .press h2, .contact h3,
.services .h-section, .moments .h-section, .why .h-section,
.pricing .h-section, .contact .h-section,
.why-item h4, .moment figcaption h3 { color: #2B1C0E !important; }
.services h2 em, .moments h2 em, .why h2 em, .pricing h2 em, .contact h3 em,
.services .h-section em, .why .h-section em, .pricing .h-section em,
.contact .h-section em { color: #8A5A1E !important; }
.why .lede, .why-item p, .moments .moment figcaption p,
.contact .lede, .services .lede, .pricing .lede, .press .lede { color: #6E5132 !important; }
.why-item .num, .why-item .num small { color: #8A5A1E !important; }

/* =========================================================================
   BOX / GROUND CONTRAST
   Brown-ground sections get WHITE boxes; white-ground sections get BROWN
   boxes. Pricing tiers + Contact cards are already dark-on-white (the
   "opposite"); here we flip Events + Testimonials cards to white and the
   Services cards to espresso.
   ========================================================================= */

/* Events (brown ground) -> white cards */
.event-card {
  background: #FFFFFF !important;
  border-color: rgba(110,70,28,0.16) !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05), 0 18px 40px -22px rgba(0,0,0,0.22) !important;
}
.event-card:hover { background: #FFFFFF !important; box-shadow: 0 1px 2px rgba(0,0,0,0.07), 0 26px 54px -22px rgba(0,0,0,0.30) !important; }
.event-card .event-name { color: #2B1C0E !important; }
.event-card .event-day  { color: #2B1C0E !important; }
.event-card .event-mon, .event-card .event-tag, .event-card .event-arrow { color: #8A5A1E !important; }
.event-card:hover .event-num, .event-card:hover .event-arrow { color: #6E4416 !important; }

/* Testimonials (brown ground) -> white cards */
.testi-card {
  background: #FFFFFF !important;
  border-color: rgba(110,70,28,0.16) !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05), 0 18px 40px -22px rgba(0,0,0,0.22) !important;
}
.testi-card .quote, .testi-card .name { color: #2B1C0E !important; }
.testi-card .quote::before, .testi-card .stars { color: #8A5A1E !important; }
.testi-card .role { color: #8A6B45 !important; }
.testi-card .author { border-top-color: rgba(110,70,28,0.16) !important; }
.testi-card .avatar { background: rgba(110,70,28,0.08) !important; border-color: rgba(110,70,28,0.18) !important; color: #8A5A1E !important; }

/* Services (white ground) -> espresso/brown cards (the opposite) */
.service-card { background: #4D3826 !important; border-color: rgba(250,241,221,0.12) !important; }
.service-card .service-title { color: #FFFFFF !important; }
.service-card .service-title em { color: #D9AE74 !important; }
.service-card .service-body { color: #F4EFE6 !important; }
.service-card .service-tag, .service-card .service-link { color: #D9AE74 !important; }
.service-card:hover { border-color: var(--terra) !important; }
.service-card:hover .service-link { color: #ECC58F !important; }

/* =========================================================================
   CONTACT — brown section ground, white content boxes
   ========================================================================= */
.contact-inner, .contact-form-card {
  background: #FFFFFF !important;
  border: 1px solid rgba(110,70,28,0.14) !important;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.06), 0 24px 60px -28px rgba(0,0,0,0.30) !important;
  --fg:#2B1C0E; --fg-ink:#2B1C0E; --fg-on-dark:#2B1C0E; --fg-muted:#6E5132; --fg-subtle:#8A6B45;
  --gold:#8A5A1E; --gold-deep:#6E4416; --gold-bright:#A56A22; --terra:#8A5A1E; --terra-deep:#6E4416; --brass:#8A5A1E;
  --hairline:rgba(110,70,28,0.14); --hairline-strong:rgba(110,70,28,0.24); --hairline-ink:rgba(110,70,28,0.14);
  --ink-cream:#2B1C0E; --ink-cream-muted:#6E5132; --ink-cream-subtle:#8A6B45;
}
.contact-inner { padding: 44px 48px !important; }
.contact-form-card .contact-form-eyebrow,
.contact-form-card .contact-form-cta,
.contact-form-card .contact-form-icon { color: #8A5A1E !important; }
.contact-form-card .contact-form-title { color: #2B1C0E !important; }
.contact-form-card .contact-form-title em { color: #8A5A1E !important; }
.contact-form-card .contact-form-body { color: #6E5132 !important; }
.contact-row .k { color: #8A6B45 !important; }
.contact-row .v, .contact-row .v a { color: #2B1C0E !important; }
.contact-row { border-color: rgba(110,70,28,0.14) !important; }

/* === Unified gold borders on content boxes (site-wide) === */
.why-item, .event-card, .faq-item, .testi-card, .service-card, .lux-card,
.sp-card, .sp-included-item, .contact-form-card,
.about-story__aside-card, .fd-gallery__item, .hero-chip, .industry-card,
.corp-card, .pricing-card, .moment {
  border: 1px solid rgba(217, 174, 116, 0.34) !important;
}
/* trust-strip stats stay borderless — clean figures with hairline separators only */
.trust-item { border: 0 !important; }

/* === Nav links — bigger, gold-bordered pills, more spacing === */
.nav-link, .nav-dd-trigger {
  font-size: 12px !important;
  letter-spacing: .1em !important;
  padding: 9px 16px !important;
  border: 1px solid rgba(217,174,116,.34) !important;
  border-radius: 999px !important;
  transition: border-color .18s, background .18s, color .18s !important;
}
.nav-link::after { display: none !important; }
.nav-link:hover, .nav-link.is-active, .nav-dd-trigger:hover, .nav-dd:focus-within .nav-dd-trigger {
  border-color: var(--gold, #D9AE74) !important;
  background: rgba(217,174,116,.12) !important;
  color: var(--gold-bright, #E6C99A) !important;
}
.nav-links { gap: 13px !important; }
/* drawer action links stay borderless */
.nav-links-actions .nav-link { border: 0 !important; border-radius: 0 !important; padding: 12px 4px !important; background: none !important; }

/* Static-page nav + Air Concierge/Bespoke nav — match the gold pill style */
.nav .links > a, .ac-nav__links > .ac-nav__link {
  font-size: 12px !important; letter-spacing: .1em !important;
  padding: 9px 16px !important;
  border: 1px solid rgba(217,174,116,.34) !important; border-radius: 999px !important;
  transition: border-color .18s, background .18s, color .18s !important;
}
.nav .links > a::after, .ac-nav__link::after { display: none !important; }
.nav .links > a:hover, .nav .links > a.is-active,
.ac-nav__links > .ac-nav__link:hover, .ac-nav__links > .ac-nav__link.is-active {
  border-color: var(--gold, #D9AE74) !important; background: rgba(217,174,116,.12) !important; color: var(--gold-bright, #E6C99A) !important;
}
.nav .links, .ac-nav__links { gap: 13px !important; }

/* ===== faq.css ===== */
/* === FAQ — tightened, no jittery hover-shifts ===
   Clean compact ledger. Each row uses the same padding open or closed;
   no horizontal shifts on hover (those caused content to jump). The
   answer paragraph indents once to align with the question text, no
   double-indent. */
.faq { padding: 100px 0; position: relative; }
.faq-header {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end; margin-bottom: 56px;
}
.faq-list {
  display: flex; flex-direction: column;
  border-top: 1px solid var(--hairline);
}
.faq-item {
  border-bottom: 1px solid var(--hairline);
  transition: background 240ms ease;
}
.faq-item:hover { background: rgba(200,162,105,0.04); }

.faq-q {
  width: 100%;
  background: transparent; border: 0;
  display: grid; grid-template-columns: 48px 1fr 24px;
  align-items: baseline; gap: 18px;
  padding: 22px 0;
  cursor: pointer;
  text-align: left;
}
.faq-no {
  font-family: var(--font-display); font-style: italic; font-size: 18px;
  color: var(--terra-deep); font-variant-numeric: oldstyle-nums;
  opacity: 0.85;
}
.faq-q-text {
  font-family: var(--font-display); font-weight: 400; font-size: 20px;
  line-height: 1.3; letter-spacing: -0.01em; color: var(--ink-cream, #2A1F17);
  text-wrap: balance;
}
.faq-toggle {
  font-family: var(--font-display); font-size: 22px; color: var(--terra-deep);
  line-height: 1; text-align: right;
  transition: transform 280ms var(--ease-cinematic);
}
.faq-item.is-open .faq-toggle { transform: rotate(180deg); }

.faq-a {
  max-height: 0; overflow: hidden;
  transition: max-height 420ms var(--ease-cinematic);
}
.faq-item.is-open .faq-a { max-height: 600px; }
.faq-a p {
  margin: 0;
  padding: 0 0 22px 66px;        /* aligns with .faq-q-text — 48px col + 18px gap */
  font-family: var(--font-sans); font-weight: 300; font-size: 14px;
  line-height: 1.7; color: var(--ink-cream-muted, #6B5C45);
  max-width: 72ch;
}

@media (max-width: 900px) {
  .faq { padding: 96px 0 80px; }
  .faq-header { grid-template-columns: 1fr; gap: 20px; margin-bottom: 40px; }
  .faq-q { grid-template-columns: 32px 1fr 20px; gap: 12px; padding: 18px 0; }
  .faq-q-text { font-size: 16px; }
  .faq-no { font-size: 15px; }
  .faq-toggle { font-size: 18px; }
  .faq-a p { padding: 0 0 18px 44px; font-size: 13px; }
}

/* ===== booking.css ===== */
/* === Compact Booking Bar ===
   Single horizontal row: From · → · To · Date · Time · Reserve.
   Replaces the prior multi-step inline booking. */

.hero-booking {
  position: relative;
  z-index: 5;
  max-width: 1440px;     /* match .container so section edges line up with the rest of the page */
  margin: 40px auto 0;
  padding: 0 56px;
}
@media (max-width: 720px) {
  .hero-booking { padding: 0 24px; }
}

.hb-bar {
  display: grid;
  grid-template-columns: 1.25fr 14px 1.25fr 0.65fr 0.65fr 1fr auto;
  align-items: stretch;
  gap: 0;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  box-shadow: var(--shadow-3);
  position: relative;
}
.hb-bar--hourly {
  /* No arrow cell in hourly mode — duration replaces the destination column */
  grid-template-columns: 1.25fr 0.85fr 0.65fr 0.65fr 1fr auto;
}

/* === Trip-type tabs (mini, sit above the bar) === */
.hb-tabs-mini {
  display: inline-flex; align-items: stretch; gap: 0;
  margin: 0 0 -1px 0;
  padding: 0;
  position: relative;
  z-index: 2;
}
.hb-tab-mini {
  background: rgba(20,14,9,0.55);
  border: 1px solid var(--hairline-ink);
  border-bottom: 0;
  cursor: pointer;
  padding: 11px 22px 12px;
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: rgba(255,255,255,0.55);
  position: relative;
  transition: color 200ms, background 200ms;
  margin-right: -1px; /* collapse adjacent borders */
}
.hb-tab-mini:hover { color: #FFFFFF; background: rgba(31,24,18,0.7); }
.hb-tab-mini.is-active {
  color: #FFFFFF;
  background: var(--bg-elev);
  border-color: var(--hairline-ink);
  z-index: 3;
}
.hb-tab-mini.is-active::before {
  /* bronze top edge mirroring the bar's accent line */
  content: ""; position: absolute; top: -1px; left: -1px; right: -1px; height: 2px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
}
.hb-tab-mini.is-active::after {
  /* paint over the bar's top hairline so the tab merges into the card */
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px;
  background: var(--bg-elev);
}

/* When tabs are active the bar's own ::before accent line should retreat so the
   active tab's bronze top edge is the only one visible at its position. The bar
   keeps its accent across the rest of the top. */
.hb-bar { margin-top: 0; }

/* Inline select inside a bar cell — styled like the inputs, padded for the chevron */
.hb-select-inline {
  background: transparent; border: 0; outline: none;
  font-family: var(--font-display); font-weight: 400; font-size: 16px;
  letter-spacing: -0.005em; color: #FFFFFF;
  width: 100%; padding: 0 16px 0 0; cursor: pointer;
  appearance: none; -webkit-appearance: none;
  text-overflow: ellipsis; overflow: hidden; white-space: nowrap;
  background-image:
    linear-gradient(45deg, transparent 50%, rgba(255,255,255,0.65) 50%),
    linear-gradient(135deg, rgba(255,255,255,0.65) 50%, transparent 50%);
  background-position: right 5px center, right 1px center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}
.hb-select-inline option {
  background: #2A1B0E; color: #F0E4CC;
}

.hb-cell--vehicle { padding-right: 16px; min-width: 160px; }
.hb-bar::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
}
.hb-cell {
  display: flex; flex-direction: column; gap: 6px;
  padding: 18px 22px;
  border-right: 1px solid var(--hairline-ink);
  background: transparent;
  transition: background 200ms;
  min-width: 0;
}
.hb-cell:hover,
.hb-cell:focus-within { background: rgba(200,162,105,0.04); }
.hb-cell--narrow { padding-left: 18px; padding-right: 18px; }
.hb-cell-label {
  font-family: var(--font-sans); font-size: 9px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: #FFFFFF; opacity: 0.85;
}
.hb-cell input {
  background: transparent; border: 0; outline: none;
  font-family: var(--font-display); font-weight: 400; font-size: 17px;
  letter-spacing: -0.005em; color: #FFFFFF;
  width: 100%; padding: 0;
}
.hb-cell input::placeholder { color: rgba(255,255,255,0.55); }

.hb-arrow {
  display: flex; align-items: center; justify-content: center;
  color: var(--gold-deep);
  font-family: var(--font-display); font-size: 18px;
  border-right: 1px solid var(--hairline-ink);
  user-select: none;
}

.hb-cta-bar {
  border: 0; cursor: pointer; padding: 0 32px;
  background: var(--gold); color: var(--bg-deep);
  font-family: var(--font-sans); font-size: 12px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 12px;
  transition: all 250ms;
  box-shadow: inset 0 0 0 1px var(--gold);
}
.hb-cta-bar:hover { background: var(--gold-bright); }

.hb-bar-note {
  margin-top: 14px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
  text-align: center;
}

.hero-trustline { margin-top: 32px; }

/* Stats relocated under the booking bar — refined four-column ledger */
/* === HERO STATS — single-line value + caption with gilded sheen ===
   Each stat is two rows: tracked label · single inline-baseline row of
   value + italic caption (separated by a small bronze pip). A gilded sheen
   sweeps across each cell in cascade once the row enters viewport, paired
   with a brief gold glow on the figure. The column dividers do all the
   visual separation work — no decorative underlines. */
.hero-stats--below {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0; padding: 0;
  margin: 32px 0 0;
  border-top: 1px solid var(--hairline-ink);
  border-bottom: 1px solid var(--hairline-ink);
}
.hero-stats--below .hero-stat {
  display: grid;
  grid-template-rows: auto auto;
  row-gap: 14px;
  padding: 26px 32px;
  border-right: 1px solid var(--hairline-ink);
  align-items: start;
  position: relative;
  overflow: hidden;
}
.hero-stats--below .hero-stat:last-child { border-right: 0; }

/* Row 1 — tracked label, gold */
.hero-stats--below .hero-stat .k {
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.85;
  line-height: 1;
  margin: 0;
}

/* Row 2 — value + caption on a SINGLE baseline */
.hero-stats--below .hero-stat .v {
  display: inline-flex;
  align-items: baseline;
  gap: 12px;
  margin: 0; padding: 0;
  background: none; position: static;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 36px;
  letter-spacing: -0.024em;
  color: var(--fg);
  line-height: 1;
  font-variant-numeric: tabular-nums oldstyle-nums;
}
.hero-stats--below .hero-stat .v > span:first-child,
.hero-stats--below .hero-stat .v > :not(small):first-child {
  display: inline-block;
  padding: 0;
  position: static;
}
.hero-stats--below .hero-stat .v > span:first-child::after { content: none; }

/* Inline italic caption sharing the value's baseline.
   A small bronze pip separates them like a colophon dot. */
.hero-stats--below .hero-stat .v small {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  font-size: 14px;
  letter-spacing: -0.003em;
  line-height: 1;
  color: var(--fg-muted);
  text-transform: none;
  margin: 0;
  white-space: nowrap;
  position: relative;
}
.hero-stats--below .hero-stat .v small::before {
  content: none;
}

/* === Gilded sheen — cream + bronze diagonal sweeps across each cell on reveal === */
.hero-stats--below .hero-stat::before {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  left: -45%;
  width: 45%;
  background: linear-gradient(105deg,
    transparent 0%,
    rgba(217, 174, 116, 0.00) 30%,
    rgba(236, 197, 143, 0.16) 50%,
    rgba(217, 174, 116, 0.00) 70%,
    transparent 100%);
  transform: skewX(-18deg);
  opacity: 0;
  pointer-events: none;
  z-index: 1;
}
.hero-stats--below.is-revealed .hero-stat::before,
.is-revealed.hero-stats--below .hero-stat::before {
  animation: hero-stat-sheen 1400ms cubic-bezier(.4, 0, .2, 1) forwards;
}
.hero-stats--below.is-revealed .hero-stat:nth-child(1)::before,
.is-revealed.hero-stats--below .hero-stat:nth-child(1)::before { animation-delay: 600ms; }
.hero-stats--below.is-revealed .hero-stat:nth-child(2)::before,
.is-revealed.hero-stats--below .hero-stat:nth-child(2)::before { animation-delay: 780ms; }
.hero-stats--below.is-revealed .hero-stat:nth-child(3)::before,
.is-revealed.hero-stats--below .hero-stat:nth-child(3)::before { animation-delay: 960ms; }
.hero-stats--below.is-revealed .hero-stat:nth-child(4)::before,
.is-revealed.hero-stats--below .hero-stat:nth-child(4)::before { animation-delay: 1140ms; }

@keyframes hero-stat-sheen {
  0%   { left: -45%; opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { left: 145%; opacity: 0; }
}

/* The figure glows briefly gold during the sweep, then settles back */
.hero-stats--below.is-revealed .hero-stat:nth-child(1) .v > span:first-child {
  animation: hero-stat-glow 1600ms cubic-bezier(.4, 0, .2, 1) 700ms;
}
.hero-stats--below.is-revealed .hero-stat:nth-child(2) .v > span:first-child {
  animation: hero-stat-glow 1600ms cubic-bezier(.4, 0, .2, 1) 880ms;
}
.hero-stats--below.is-revealed .hero-stat:nth-child(3) .v > span:first-child {
  animation: hero-stat-glow 1600ms cubic-bezier(.4, 0, .2, 1) 1060ms;
}
.hero-stats--below.is-revealed .hero-stat:nth-child(4) .v > span:first-child {
  animation: hero-stat-glow 1600ms cubic-bezier(.4, 0, .2, 1) 1240ms;
}
@keyframes hero-stat-glow {
  0%   { color: var(--fg); text-shadow: 0 0 0 rgba(236, 197, 143, 0); }
  35%  { color: var(--gold-bright); text-shadow: 0 0 18px rgba(236, 197, 143, 0.35); }
  100% { color: var(--fg); text-shadow: 0 0 0 rgba(236, 197, 143, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-stats--below .hero-stat::before { animation: none !important; opacity: 0 !important; }
  .hero-stats--below .hero-stat .v > span:first-child { animation: none !important; }
}

@media (max-width: 720px) {
  .hero-stats--below { grid-template-columns: 1fr 1fr; }
  .hero-stats--below .hero-stat:nth-child(2n) { border-right: 0; }
  .hero-stats--below .hero-stat:nth-child(-n+2) { border-bottom: 1px solid var(--hairline-ink); }
  .hero-stats--below .hero-stat { padding: 22px 22px; }
  .hero-stats--below .hero-stat .v { font-size: 28px; }
  .hero-stats--below .hero-stat .v small { font-size: 12px; }
}

@media (max-width: 980px) {
  .hb-bar, .hb-bar--hourly { grid-template-columns: 1fr 1fr; }
  .hb-arrow { display: none; }
  .hb-cell { border-right: 0; border-bottom: 1px solid var(--hairline-ink); }
  .hb-cell:nth-child(odd) { border-right: 1px solid var(--hairline-ink); }
  .hb-cta-bar { grid-column: 1 / -1; padding: 18px; justify-content: center; }
  .hb-tabs-mini { flex-wrap: wrap; }
}
@media (max-width: 600px) {
  .hero-booking { padding: 0 24px; }
  .hb-bar, .hb-bar--hourly { grid-template-columns: 1fr; }
  .hb-cell, .hb-cell:nth-child(odd) { border-right: 0; }
}

/* ===== Legacy multi-step booking styles (kept for any other consumers) ===== */

/* --- Trip type tabs --- */
.hb-tabs {
  display: flex; align-items: stretch;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  border-bottom: 0;
  padding: 0 24px;
  position: relative;
}
.hb-tabs::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
}
.hb-tab {
  padding: 18px 24px;
  background: transparent; border: 0;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
  cursor: pointer;
  position: relative;
  transition: color 200ms;
}
.hb-tab:hover { color: var(--gold-deep); }
.hb-tab.is-active { color: var(--fg-ink); }
.hb-tab.is-active::after {
  content: ""; position: absolute; left: 24px; right: 24px; bottom: 0; height: 2px;
  background: var(--gold-deep);
}
.hb-tab-spacer { flex: 1; }
.hb-tab-meta {
  align-self: center;
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--gold-deep);
}

/* --- Main form card (replaces previous grid form) --- */
.hero-booking-card {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  border-top: 0;
  padding: 28px 32px;
  position: relative;
  box-shadow: var(--shadow-3);
  overflow: visible;
}
.hero-booking-card::before { display: none; }

.hb-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  padding: 12px 0;
  border-bottom: 1px solid var(--hairline-ink);
}
.hb-row:last-child { border-bottom: 0; }
.hb-row--time { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 24px; }

/* --- Fields (vertical label + control) --- */
.hb-field {
  display: flex; flex-direction: column; gap: 8px;
  border: 0; border-right: 0; padding: 6px 0;
  background: transparent;
  transition: background 200ms;
}
.hb-field:focus-within { background: transparent; }
.hb-field:hover { background: transparent; }
.hb-field > span {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--fg-ink-subtle);
}
.hb-field input,
.hb-field select {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--hairline-ink-strong);
  padding: 6px 0;
  outline: none;
  font-family: var(--font-display); font-weight: 400; font-size: 18px;
  letter-spacing: -0.01em; color: var(--fg-ink);
  appearance: none; -webkit-appearance: none; width: 100%;
  transition: border-color 200ms;
}
.hb-field input:focus,
.hb-field select:focus { border-bottom-color: var(--gold-deep); }
.hb-field input::placeholder { color: var(--fg-ink-subtle); }

/* --- Route block: dot rail + stacked address fields --- */
.hb-route {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--hairline-ink);
}
.hb-route-rail {
  display: flex; flex-direction: column; align-items: center;
  padding-top: 26px; gap: 0;
  position: relative;
}
.hb-route-rail::before {
  content: ""; position: absolute; top: 32px; bottom: 24px; left: 50%;
  width: 1px; background: var(--hairline-ink-strong);
  transform: translateX(-50%);
}
.hb-route-rail .dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: transparent;
  border: 1px solid var(--gold-deep);
  margin: 0; position: relative; z-index: 2;
  display: block;
}
.hb-route-rail .dot--from { background: var(--gold-deep); }
.hb-route-rail .dot--to   { background: var(--gold-deep);
  width: 8px; height: 8px; border-radius: 0; transform: rotate(45deg); }
.hb-route-rail .dot--mid  { width: 6px; height: 6px; }
.hb-route-rail .dot { margin-bottom: 56px; }
.hb-route-rail .dot:last-child { margin-bottom: 0; }

.hb-route-fields {
  display: flex; flex-direction: column; gap: 8px;
}
.hb-field--addr { padding: 4px 0 8px; }
.hb-stop-row { display: flex; align-items: center; gap: 8px; width: 100%; }
.hb-stop-row input { flex: 1; }
.hb-stop-remove {
  flex: 0 0 auto;
  width: 28px; height: 28px;
  background: transparent; border: 1px solid var(--hairline-ink-strong);
  color: var(--fg-ink-subtle);
  font-size: 12px; cursor: pointer; padding: 0;
  transition: all 200ms;
}
.hb-stop-remove:hover { border-color: var(--gold-deep); color: var(--gold-deep); }

.hb-add-stop {
  align-self: flex-start; margin-top: 6px;
  background: transparent; border: 1px dashed var(--hairline-ink-strong);
  color: var(--gold-deep);
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  padding: 8px 14px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
  transition: all 200ms;
}
.hb-add-stop:hover { border-color: var(--gold-deep); border-style: solid; background: rgba(200,162,105,0.08); }
.hb-add-stop span { font-size: 14px; }

/* --- Vehicle class cards --- */
.hb-vehicles {
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  border-top: 0;
  padding: 28px 32px 32px;
}
.hb-section-head {
  display: flex; align-items: baseline; gap: 12px;
  margin-bottom: 18px;
}
.hb-section-head .step {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-deep);
}
.hb-section-head h3 {
  font-family: var(--font-display); font-weight: 400; font-size: 22px;
  letter-spacing: -0.01em; color: var(--fg-ink); margin: 0;
}
.hb-vehicle-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
}
.hb-vehicle {
  background: transparent;
  border: 1px solid var(--hairline-ink);
  padding: 18px 16px 16px;
  display: flex; flex-direction: column; gap: 8px;
  text-align: left; cursor: pointer; position: relative;
  transition: all 250ms var(--ease-cinematic);
}
.hb-vehicle:hover { border-color: var(--gold-deep); background: rgba(200,162,105,0.04); transform: translateY(-2px); }
.hb-vehicle.is-selected {
  border-color: var(--gold-deep);
  background: rgba(200,162,105,0.08);
  box-shadow: inset 0 0 0 1px var(--gold-deep), var(--shadow-1);
}
.hb-vehicle.is-selected::before {
  content: "✓"; position: absolute; top: 8px; right: 10px;
  font-family: var(--font-sans); font-size: 11px; font-weight: 600;
  color: var(--gold-deep);
}
.hb-vehicle-tag {
  position: absolute; top: -1px; left: -1px;
  background: var(--gold-deep); color: #fff;
  font-family: var(--font-sans); font-size: 8px; font-weight: 500;
  letter-spacing: 0.20em; text-transform: uppercase;
  padding: 4px 8px;
}
.hb-vehicle-silhouette {
  height: 32px; display: flex; align-items: center; color: var(--fg-ink-muted);
  margin-bottom: 4px; margin-top: 8px;
}
.hb-vehicle-silhouette img { height: 100%; display: block; }
.hb-vehicle.is-selected .hb-vehicle-silhouette { color: var(--gold-deep); }
.hb-vehicle-name {
  font-family: var(--font-display); font-weight: 400; font-size: 16px;
  letter-spacing: -0.005em; color: var(--fg-ink);
  line-height: 1.15;
}
.hb-vehicle-models {
  font-family: var(--font-sans); font-size: 11px;
  color: var(--fg-ink-muted); line-height: 1.4;
}
.hb-vehicle-meta {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid var(--hairline-ink);
}

/* --- Notes (collapsible) --- */
.hb-notes {
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  border-top: 0;
  padding: 16px 32px;
}
.hb-notes-toggle {
  background: transparent; border: 0; cursor: pointer;
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.20em; text-transform: uppercase; color: var(--fg-ink-muted);
  display: inline-flex; align-items: center; gap: 10px;
  transition: color 200ms;
}
.hb-notes-toggle:hover { color: var(--gold-deep); }
.hb-notes-toggle span {
  font-family: var(--font-display); font-size: 18px;
  color: var(--gold-deep); line-height: 1;
}
.hb-notes-input {
  display: block; width: 100%;
  margin-top: 14px;
  background: transparent;
  border: 1px solid var(--hairline-ink-strong);
  padding: 14px 16px;
  font-family: var(--font-sans); font-size: 14px; color: var(--fg-ink);
  resize: vertical; outline: none;
  transition: border-color 200ms;
}
.hb-notes-input:focus { border-color: var(--gold-deep); }
.hb-notes-input::placeholder { color: var(--fg-ink-subtle); }

/* --- Confirm CTA strip --- */
.hb-confirm {
  display: flex; justify-content: space-between; align-items: center; gap: 24px;
  background: var(--bg-deep);
  color: var(--fg-on-dark);
  padding: 28px 32px;
  border: 1px solid var(--bg-deep);
  border-top: 0;
  position: relative;
}
.hb-confirm-summary { display: flex; flex-direction: column; gap: 4px; }
.hb-confirm-step {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-bright);
}
.hb-confirm-line {
  font-family: var(--font-display); font-style: italic; font-size: 16px;
  color: rgba(244,239,230,0.85);
}
.hb-cta--lg {
  height: 56px; padding: 0 32px;
  background: var(--gold); color: var(--bg-deep);
  border: 0; cursor: pointer;
  font-family: var(--font-sans); font-size: 12px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 12px;
  transition: all 250ms;
  box-shadow: 0 12px 30px -8px rgba(200,162,105,0.45);
}
.hb-cta--lg:hover { background: var(--gold-bright); transform: translateY(-1px); }

.hero-trustline { margin-top: 32px; }

/* --- Responsive --- */
@media (max-width: 980px) {
  .hb-vehicle-grid { grid-template-columns: repeat(3, 1fr); }
  .hb-tabs { flex-wrap: wrap; padding: 0 16px; }
  .hb-tab { padding: 14px 16px; }
}
@media (max-width: 720px) {
  .hero-booking { padding: 0 24px; }
  .hero-booking-card, .hb-vehicles, .hb-notes, .hb-confirm { padding-left: 20px; padding-right: 20px; }
  .hb-row { grid-template-columns: 1fr; gap: 12px; }
  .hb-vehicle-grid { grid-template-columns: 1fr 1fr; }
  .hb-confirm { flex-direction: column; align-items: stretch; }
  .hb-cta--lg { width: 100%; justify-content: center; }
  .hb-tab-meta { display: none; }
}

/* ID-level override — guarantees #reserve sits 80px below the hero copy,
   matching the hero's own bottom padding rhythm (120/80) so the booking
   bar feels anchored to the hero rather than floating between sections.
   z-index 10 keeps it above any transformed hero-stage chips that might
   extend downward from the perspective stage. */
#reserve { margin-top: 80px; position: relative; z-index: 10; }

/* ============================================================
   QUOTE CONVERSATION — stepped, one question at a time.
   The form is a conversation, not a wall of fields. Five steps,
   each shown as a single large question with one or two underlined
   inputs beneath. No card around the whole thing — sits openly on
   the saddle ground of the hero. Tab toggle and Roman progress
   indicator at top; back/continue pager at the bottom.
   ============================================================ */

.hbq {
  max-width: 920px;
  margin: 0 auto 50px;
  position: relative;
  z-index: 10;
  padding: 36px 44px 32px;
  /* Cream parchment ground — theme's "white" inversion */
  background:
    linear-gradient(180deg,
      rgba(255, 255, 255, 0.98) 0%,
      rgba(247, 246, 243, 0.98) 100%);
  border: 1px solid rgba(121, 75, 30, 0.20);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.60),
    inset 0 -1px 0 rgba(121, 75, 30, 0.08),
    0 1px 2px rgba(0, 0, 0, 0.18),
    0 28px 56px -20px rgba(0, 0, 0, 0.40),
    0 8px 20px -8px rgba(0, 0, 0, 0.30);
  overflow: hidden;
}
.hbq::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--gold-deep) 20%,
    var(--gold) 50%,
    var(--gold-deep) 80%,
    transparent 100%);
  pointer-events: none;
  opacity: 0.9;
}

/* Cream-ground overrides — flip text colors so type reads on parchment */
.hbq .hbq__label {
  color: #3A1F08;             /* deep saddle ink — fully legible on cream */
  opacity: 1;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.20em;
}
.hbq .hbq__tab { color: rgba(121, 75, 30, 0.80); font-weight: 600; }
.hbq .hbq__tab:hover { color: var(--gold-deep); }
.hbq .hbq__tab.is-active { color: #3A1F08; font-weight: 700; }
.hbq .hbq__tab.is-active::after { background: var(--gold-deep); height: 2px; }
.hbq .hbq__tab::after { background: var(--gold-deep); }

.hbq .hbq__top { border-bottom-color: rgba(121, 75, 30, 0.18); }

.hbq .hbq__progress { color: var(--gold-deep); opacity: 1; }
.hbq .hbq__progress-now { color: var(--gold-deep); }
.hbq .hbq__progress-sep { color: rgba(121, 75, 30, 0.45); }
.hbq .hbq__progress-tot { color: rgba(121, 75, 30, 0.55); }

.hbq .hbq__q { color: #2A1B0E; }
.hbq .hbq__q em { color: var(--gold-deep); }

.hbq .hbq__label { color: var(--gold-deep); opacity: 1; }
.hbq .hbq__optional { color: rgba(121, 75, 30, 0.55); }

.hbq .hbq__input {
  font-size: 22px;
  padding: 6px 0 10px;
}
.hbq .hbq__input::placeholder {
  color: rgba(121, 75, 30, 0.50);
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: 400;
  font-size: 15px;
  letter-spacing: 0;
}
.hbq .hbq__input:hover { border-bottom-color: rgba(121, 75, 30, 0.50); }
.hbq .hbq__input:focus {
  border-bottom-color: var(--gold-deep);
  box-shadow: 0 1px 0 0 var(--gold-deep);
}

/* Date/time native picker icons — re-tint for cream ground */
.hbq .hbq__input--date::-webkit-calendar-picker-indicator,
.hbq .hbq__input--time::-webkit-calendar-picker-indicator {
  filter:
    invert(28%) sepia(45%) saturate(680%) hue-rotate(2deg) brightness(82%) contrast(96%);
  opacity: 0.7;
}
.hbq .hbq__input--date,
.hbq .hbq__input--time { color-scheme: light; }
.hbq .hbq__input--date::-webkit-datetime-edit-text,
.hbq .hbq__input--time::-webkit-datetime-edit-text {
  color: var(--gold-deep);
}
.hbq .hbq__input--date::-webkit-datetime-edit-fields-wrapper,
.hbq .hbq__input--time::-webkit-datetime-edit-fields-wrapper {
  color: #2A1B0E;
}

/* HbqSelect — cream variant */
.hbq .hbq-sel__btn {
  color: #2A1B0E;
  border-bottom-color: rgba(121, 75, 30, 0.28);
}
.hbq .hbq-sel__btn:hover { border-bottom-color: rgba(121, 75, 30, 0.50); }
.hbq .hbq-sel.is-open .hbq-sel__btn,
.hbq .hbq-sel__btn:focus {
  border-bottom-color: var(--gold-deep);
  box-shadow: 0 1px 0 0 var(--gold-deep);
}
.hbq .hbq-sel__caret { color: var(--gold-deep); }
.hbq .hbq-sel.is-open .hbq-sel__caret { color: var(--gold-deep); }
.hbq .hbq-sel__value.is-placeholder { color: rgba(121, 75, 30, 0.40); }

/* The dropdown menu itself stays on dark saddle for legibility against the
   cream ground — that contrast is what makes it feel like a separate object. */

/* Time picker AM/PM segmented — cream variant */
.hbq .hbq-time__sep { color: var(--gold-deep); }
.hbq .hbq-time__period { border-color: rgba(121, 75, 30, 0.32); }
.hbq .hbq-time__pbtn {
  color: rgba(121, 75, 30, 0.65);
}
.hbq .hbq-time__pbtn:hover { color: var(--gold-deep); }
.hbq .hbq-time__pbtn.is-active {
  background: var(--gold-deep);
  color: var(--fg);
}
.hbq .hbq-time__pbtn + .hbq-time__pbtn { border-left-color: rgba(121, 75, 30, 0.32); }

/* Pager — cream variant */
.hbq .hbq__nav {
  border-top-color: rgba(121, 75, 30, 0.18);
}
.hbq .hbq__back {
  color: rgba(121, 75, 30, 0.65);
}
.hbq .hbq__back:hover { color: var(--gold-deep); }
.hbq .hbq__pip { background: rgba(121, 75, 30, 0.20); }
.hbq .hbq__pip.is-done { background: rgba(121, 75, 30, 0.55); }
.hbq .hbq__pip.is-now { background: var(--gold-deep); }

.hbq .hbq__next {
  border-color: var(--gold-deep);
  color: var(--gold-deep);
}
.hbq .hbq__next:hover {
  background: var(--gold-deep);
  color: var(--fg);
  border-color: var(--gold-deep);
}

/* ---- Top bar ---- */
.hbq__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 28px;
  border-bottom: 1px solid rgba(217, 174, 116, 0.18);
  margin-bottom: 56px;
}

.hbq__tabs {
  display: inline-flex;
  gap: 0;
}
.hbq__tab {
  appearance: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 8px 0;
  margin-right: 32px;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--fg-muted);
  position: relative;
  transition: color 280ms ease;
}
.hbq__tab:last-child { margin-right: 0; }
.hbq__tab:hover { color: var(--fg); }
.hbq__tab::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0;
  height: 1px; background: var(--gold);
  transform: scaleX(0); transform-origin: left center;
  transition: transform 360ms cubic-bezier(.55, 0, .15, 1);
}
.hbq__tab.is-active {
  color: var(--gold);
}
.hbq__tab.is-active::after { transform: scaleX(1); }

/* Roman progress — small, italic, top-right */
.hbq__progress {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 13px;
  letter-spacing: 0.06em;
  color: var(--gold);
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  opacity: 0.85;
}
.hbq__progress-now { font-size: 18px; color: var(--gold-bright); }
.hbq__progress-sep { opacity: 0.5; font-size: 11px; }
.hbq__progress-tot { opacity: 0.55; }

/* ---- Stage — only the active step is rendered; no stacking weirdness ---- */
.hbq__stage {
  position: relative;
  min-height: 220px;
  display: flex;
  flex-direction: column;
}

.hbq__step {
  display: flex;
  flex-direction: column;
  flex: 1;
  animation: hbq-step-in 520ms cubic-bezier(.2, .7, .2, 1) both;
}
@keyframes hbq-step-in {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: none; }
}

/* ---- The question — large editorial serif ---- */
.hbq__q {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(24px, 2.6vw, 30px);
  line-height: 1.15;
  letter-spacing: -0.018em;
  color: var(--fg);
  margin: 0 0 36px;
  text-wrap: balance;
  max-width: 30ch;
}
.hbq__q em {
  font-style: italic;
  color: var(--gold);
  font-weight: 400;
  position: relative;
}

/* ---- Field rows ---- */
.hbq__fields {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
}
.hbq__fields--pair {
  grid-template-columns: 1fr 1fr;
  gap: 22px 48px;
}
.hbq__fields--stack {
  grid-template-columns: 1fr;
  gap: 26px;
}
.hbq__fields--stack .hbq__fields--pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px 48px;
}

.hbq__field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  position: relative;
}
.hbq__label {
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 1;
}
.hbq__optional {
  text-transform: none;
  letter-spacing: 0;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 11px;
  color: var(--fg-subtle);
  margin-left: 6px;
  opacity: 0.7;
}

/* ---- Inputs — no box. Bronze underline below; focus thickens it. ---- */
.hbq__input {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(217, 174, 116, 0.32);
  border-radius: 0;
  color: var(--fg);
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 22px;
  line-height: 1.3;
  letter-spacing: -0.010em;
  padding: 6px 0 10px;
  width: 100%;
  transition: border-color 280ms ease, box-shadow 280ms ease;
}
.hbq__input::placeholder {
  font-style: italic;
  color: rgba(236, 213, 173, 0.32);
  letter-spacing: -0.005em;
}
.hbq__input:hover { border-bottom-color: rgba(217, 174, 116, 0.55); }
.hbq__input:focus {
  outline: none;
  border-bottom-color: var(--gold-bright);
  box-shadow: 0 1px 0 0 var(--gold-bright);
}

/* Select variant — custom bronze chevron on the right */
.hbq__input--select {
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'><path d='M1 1l6 6 6-6' stroke='%23D9AE74' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 4px center;
  background-size: 14px 9px;
  padding-right: 28px;
  cursor: pointer;
}
.hbq__input--select option {
  background: #1F1812;
  color: var(--fg);
  font-family: var(--font-sans);
  font-size: 14px;
}

/* Date / Time native inputs — theme-match the picker glyph + display.
   We can't fully style the OS picker overlay, but we can recolour the
   calendar/clock icon to bronze, hide the spinner, and keep the display
   type identical to the rest of the conversation. */
.hbq__input--date,
.hbq__input--time {
  cursor: pointer;
  padding-right: 36px;
  font-feature-settings: "tnum";
  color-scheme: dark;       /* tells the OS picker to use a dark theme */
}
/* Bronze the calendar / clock icon glyph in Chromium-based browsers */
.hbq__input--date::-webkit-calendar-picker-indicator,
.hbq__input--time::-webkit-calendar-picker-indicator {
  cursor: pointer;
  /* Tint the default icon to bronze (#D9AE74) — filter recipe maps black → bronze */
  filter:
    invert(75%) sepia(43%) saturate(495%) hue-rotate(351deg) brightness(94%) contrast(89%);
  opacity: 0.85;
  margin-left: 12px;
  transition: opacity 240ms ease;
}
.hbq__input--date:hover::-webkit-calendar-picker-indicator,
.hbq__input--time:hover::-webkit-calendar-picker-indicator {
  opacity: 1;
}
/* Empty-state placeholder color for date/time when value is empty */
.hbq__input--date:not(:focus):invalid,
.hbq__input--time:not(:focus):invalid {
  color: rgba(236, 213, 173, 0.42);
}
.hbq__input--date::-webkit-datetime-edit-text,
.hbq__input--time::-webkit-datetime-edit-text {
  color: var(--gold);
  padding: 0 4px;
}
.hbq__input--date::-webkit-datetime-edit-fields-wrapper,
.hbq__input--time::-webkit-datetime-edit-fields-wrapper {
  color: var(--fg);
}
.hbq__input--date::-webkit-datetime-edit-month-field:focus,
.hbq__input--date::-webkit-datetime-edit-day-field:focus,
.hbq__input--date::-webkit-datetime-edit-year-field:focus,
.hbq__input--time::-webkit-datetime-edit-hour-field:focus,
.hbq__input--time::-webkit-datetime-edit-minute-field:focus,
.hbq__input--time::-webkit-datetime-edit-ampm-field:focus {
  background: rgba(217, 174, 116, 0.16);
  color: var(--gold-bright);
  outline: none;
}

/* ============================================================
   HbqTimePicker — Hour · Minute · AM/PM
   ============================================================ */
.hbq-time {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  padding: 4px 0 8px;
}
.hbq-time__sep {
  font-family: var(--font-display);
  font-size: 26px;
  color: var(--gold);
  font-weight: 400;
  line-height: 1;
  padding: 0 2px;
  user-select: none;
}
.hbq-time__period {
  display: inline-flex;
  align-items: center;
  margin-left: 8px;
  border: 1px solid rgba(217, 174, 116, 0.32);
  border-radius: var(--radius);
  overflow: hidden;
  height: 38px;
}
.hbq-time__pbtn {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0 14px;
  cursor: pointer;
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--fg-muted);
  height: 100%;
  transition: color 240ms ease, background 240ms ease;
}
.hbq-time__pbtn + .hbq-time__pbtn {
  border-left: 1px solid rgba(217, 174, 116, 0.32);
}
.hbq-time__pbtn:hover { color: var(--gold-bright); }
.hbq-time__pbtn.is-active {
  background: var(--gold);
  color: #2A1B0E;
}

/* ============================================================
   HbqSelect — custom themed dropdown (replaces native <select>)
   ============================================================ */
.hbq-sel {
  position: relative;
  display: inline-block;
  width: 100%;
}
.hbq-sel--compact { width: auto; }

.hbq-sel__btn {
  appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(217, 174, 116, 0.32);
  border-radius: 0;
  cursor: pointer;
  padding: 6px 24px 10px 0;
  width: 100%;
  text-align: left;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 22px;
  line-height: 1.3;
  letter-spacing: -0.010em;
  color: var(--fg);
  display: inline-flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  transition: border-color 280ms ease, box-shadow 280ms ease;
  position: relative;
}
.hbq-sel--compact .hbq-sel__btn {
  padding: 8px 22px 8px 0;
  min-width: 56px;
}
.hbq-sel__btn:hover { border-bottom-color: rgba(217, 174, 116, 0.55); }
.hbq-sel.is-open .hbq-sel__btn,
.hbq-sel__btn:focus {
  outline: none;
  border-bottom-color: var(--gold-bright);
  box-shadow: 0 1px 0 0 var(--gold-bright);
}

.hbq-sel__value.is-placeholder {
  font-style: italic;
  color: rgba(236, 213, 173, 0.42);
}

.hbq-sel__caret {
  color: var(--gold);
  opacity: 0.7;
  position: absolute;
  right: 4px;
  bottom: 16px;
  display: inline-flex;
  align-items: center;
  pointer-events: none;
  transition: transform 280ms var(--ease-standard), color 240ms ease, opacity 240ms ease;
}
.hbq-sel--compact .hbq-sel__caret {
  bottom: 12px;
}
.hbq-sel.is-open .hbq-sel__caret {
  transform: rotate(180deg);
  color: var(--gold-bright);
  opacity: 1;
}

/* ---- Popup menu — themed, with bronze selection ---- */
.hbq-sel__menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  z-index: 50;
  list-style: none;
  margin: 0;
  padding: 6px 0;
  background:
    linear-gradient(180deg,
      rgba(45, 32, 22, 0.98) 0%,
      rgba(31, 22, 15, 0.99) 100%);
  -webkit-backdrop-filter: blur(8px) saturate(160%);
  backdrop-filter: blur(8px) saturate(160%);
  border: 1px solid rgba(217, 174, 116, 0.38);
  border-radius: var(--radius);
  box-shadow:
    inset 0 1px 0 rgba(250, 241, 221, 0.08),
    0 1px 2px rgba(0, 0, 0, 0.42),
    0 28px 56px -16px rgba(0, 0, 0, 0.60),
    0 8px 20px -8px rgba(0, 0, 0, 0.45);
  max-height: 320px;
  overflow-y: auto;
  animation: hbq-sel-pop 240ms cubic-bezier(.2, .7, .2, 1) both;
}
@keyframes hbq-sel-pop {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: none; }
}
.hbq-sel--compact .hbq-sel__menu {
  left: 0;
  right: auto;
  min-width: 100px;
}

/* Brass top edge on the menu — matches hero-chip vocabulary */
.hbq-sel__menu::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--gold) 30%,
    var(--gold-bright) 50%,
    var(--gold) 70%,
    transparent 100%);
  opacity: 0.85;
  pointer-events: none;
}

.hbq-sel__opt {
  display: grid;
  grid-template-columns: 20px 1fr;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  cursor: pointer;
  font-family: var(--font-sans);
  font-size: 14px;
  letter-spacing: -0.005em;
  color: var(--fg);
  transition: background 200ms ease, color 200ms ease;
}
.hbq-sel--compact .hbq-sel__opt {
  grid-template-columns: 1fr;
  padding: 8px 14px;
  font-family: var(--font-display);
  font-size: 18px;
  letter-spacing: -0.010em;
}
.hbq-sel--compact .hbq-sel__opt-tick { display: none; }

.hbq-sel__opt-tick {
  font-family: var(--font-display);
  color: var(--gold-bright);
  font-size: 13px;
  font-style: italic;
  line-height: 1;
}

.hbq-sel__opt:hover,
.hbq-sel__opt.is-hover {
  background: rgba(217, 174, 116, 0.14);
  color: var(--fg);
}
.hbq-sel__opt.is-selected {
  color: var(--gold-bright);
  background: rgba(217, 174, 116, 0.10);
}
.hbq-sel__opt.is-selected.is-hover,
.hbq-sel__opt.is-selected:hover {
  background: rgba(236, 197, 143, 0.20);
}

/* Custom scrollbar in the menu — thin and bronze */
.hbq-sel__menu::-webkit-scrollbar { width: 6px; }
.hbq-sel__menu::-webkit-scrollbar-track { background: transparent; }
.hbq-sel__menu::-webkit-scrollbar-thumb {
  background: rgba(217, 174, 116, 0.30);
  border-radius: 3px;
}
.hbq-sel__menu::-webkit-scrollbar-thumb:hover {
  background: rgba(217, 174, 116, 0.50);
}

/* Strip number spinners */
.hbq__input[type="number"]::-webkit-outer-spin-button,
.hbq__input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none; margin: 0;
}
.hbq__input[type="number"] { -moz-appearance: textfield; }

/* ---- Pager — back · pip rail · continue ---- */
.hbq__nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid rgba(217, 174, 116, 0.18);
}

.hbq__back {
  appearance: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  justify-self: start;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--fg-muted);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 8px 4px 8px 0;
  transition: color 240ms ease, transform 240ms ease;
}
.hbq__back:hover { color: var(--gold-bright); transform: translateX(-2px); }
.hbq__back.is-disabled {
  opacity: 0;
  pointer-events: none;
}

/* Pip rail — five tiny bars, current is gold, completed slightly bronze */
.hbq__rail {
  display: inline-flex;
  gap: 10px;
  align-items: center;
}
.hbq__pip {
  width: 28px;
  height: 1px;
  background: rgba(236, 213, 173, 0.20);
  transition: background 320ms ease, height 320ms ease, transform 320ms ease;
}
.hbq__pip.is-done { background: rgba(217, 174, 116, 0.55); }
.hbq__pip.is-now  { background: var(--gold-bright); height: 2px; }

.hbq__next {
  appearance: none;
  background: transparent;
  border: 1px solid var(--gold);
  cursor: pointer;
  justify-self: end;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  padding: 14px 28px;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: color 240ms ease, background 320ms ease,
              border-color 240ms ease, transform 280ms ease,
              box-shadow 320ms ease;
}
.hbq__next:hover {
  background: var(--gold);
  color: #2A1B0E;
  border-color: var(--gold);
  transform: translateX(2px);
  box-shadow: 0 14px 30px -12px rgba(217, 174, 116, 0.55);
}
.hbq__next:active { transform: translateX(2px) translateY(1px); }

/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
  .hbq__step,
  .hbq__pip,
  .hbq__back,
  .hbq__next { transition: opacity 200ms ease !important; transform: none !important; }
}

/* ---- Responsive ---- */
@media (max-width: 720px) {
  .hbq { padding: 8px 16px; }
  .hbq__top { flex-direction: column; align-items: flex-start; gap: 14px; margin-bottom: 40px; padding-bottom: 20px; }
  .hbq__tab { margin-right: 22px; font-size: 10px; }
  .hbq__q { font-size: 26px; margin-bottom: 28px; }
  .hbq__input { font-size: 22px; }
  .hbq__fields--pair { grid-template-columns: 1fr; gap: 24px; }
  .hbq__fields--stack .hbq__fields--pair { grid-template-columns: 1fr; gap: 24px; }
  .hbq__nav { grid-template-columns: auto 1fr auto; margin-top: 40px; }
  .hbq__rail { display: none; }
}


/* ============================================================
   Single-row quote bar (One way / By the hour) — Blacklane-style
   layout in the Famous Drive cream + bronze identity.
   ============================================================ */
.hbq--bar {
  max-width: 1240px;
  margin: 0 auto 54px;
  padding: 0;
  background: none;
  border: 0;
  box-shadow: none;
  overflow: visible;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
}
.hbq--bar::before { display: none; }

.hbq__pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px;
  background: rgba(26, 19, 13, 0.55);
  border: 1px solid rgba(250, 241, 221, 0.16);
  border-radius: 999px;
  box-shadow: 0 8px 24px -12px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(8px);
}
.hbq__pill-btn {
  appearance: none;
  border: 0;
  cursor: pointer;
  background: transparent;
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #E6DCCB;
  padding: 11px 30px;
  border-radius: 999px;
  transition: color .28s ease, background .28s ease, box-shadow .28s ease;
}
.hbq__pill-btn:hover { color: #FFFFFF; }
.hbq__pill-btn.is-active {
  background: #D9AE74;
  color: #1B1812;
  box-shadow: 0 3px 12px -3px rgba(217, 174, 116, 0.5);
}

.hbq__bar {
  width: 100%;
  display: flex;
  align-items: stretch;
  gap: 0;
  padding: 20px 24px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(247, 246, 243, 0.98) 100%);
  border: 1px solid rgba(121, 75, 30, 0.22);
  border-radius: 18px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.6),
    0 1px 2px rgba(0, 0, 0, 0.18),
    0 28px 56px -20px rgba(0, 0, 0, 0.40);
}
.hbq__bar-field {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
  padding: 4px 26px;
  justify-content: flex-start;
}
.hbq__bar-field--sm { flex: 0 0 auto; min-width: 168px; }
.hbq__bar-label {
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold-deep);
}
.hbq__bar-input {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(121, 75, 30, 0.28);
  font-family: var(--font-display);
  font-size: 19px;
  letter-spacing: -0.01em;
  color: #2A1B0E;
  padding: 5px 0 9px;
  width: 100%;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.hbq__bar-input::placeholder { color: rgba(121, 75, 30, 0.50); font-style: italic; }
.hbq__bar-input:hover { border-bottom-color: rgba(121, 75, 30, 0.50); }
.hbq__bar-input:focus { outline: none; border-bottom-color: var(--gold-deep); box-shadow: 0 1px 0 0 var(--gold-deep); }
.hbq__bar-input[type="date"] { cursor: pointer; padding-right: 28px; }

.hbq__bar-field .hbq-sel { width: 100%; }
.hbq__bar-field .hbq-sel__btn {
  font-family: var(--font-display);
  font-size: 19px;
  letter-spacing: -0.01em;
  padding: 5px 24px 9px 0;
}
.hbq__bar-field .hbq-sel__menu { max-height: 264px; overflow-y: auto; }

.hbq__bar-div {
  width: 1px;
  align-self: stretch;
  margin: 2px 6px;
  background: rgba(121, 75, 30, 0.20);
  flex: 0 0 auto;
}

.hbq__bar-cta {
  flex: 0 0 auto;
  align-self: center;
  margin-left: 22px;
  white-space: nowrap;
  cursor: pointer;
  appearance: none;
  border: 0;
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #FCF7EA;
  background: linear-gradient(180deg, var(--gold) 0%, var(--gold-deep) 100%);
  padding: 18px 34px;
  border-radius: 12px;
  box-shadow: 0 3px 12px -3px rgba(121, 75, 30, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.25);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.hbq__bar-cta:hover { transform: translateY(-1px); filter: brightness(1.04); box-shadow: 0 6px 18px -4px rgba(121, 75, 30, 0.6); }
.hbq__bar-cta:active { transform: translateY(0); }

@media (max-width: 1080px) {
  .hbq__bar { flex-wrap: wrap; gap: 8px 0; padding: 18px; }
  .hbq__bar-field { flex: 1 1 44%; padding: 10px 18px; }
  .hbq__bar-field--sm { flex: 1 1 44%; min-width: 0; }
  .hbq__bar-div { display: none; }
  .hbq__bar-cta { width: 100%; margin: 10px 18px 0; text-align: center; }
}
@media (max-width: 560px) {
  .hbq__bar-field { flex: 1 1 100%; }
}

/* ===== booking-modal.css ===== */
/* booking-modal.css — overlay + form styling for the reservation modal
   (Booking.jsx). Self-contained: hardcoded espresso/gold/bone palette with
   var() fallbacks so it renders correctly regardless of which global tokens
   are present on the host page. */

.booking-scrim {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 5vh 20px 40px;
  overflow-y: auto;
  background: rgba(14, 11, 8, 0.72);
  -webkit-backdrop-filter: blur(8px) saturate(120%);
  backdrop-filter: blur(8px) saturate(120%);
  animation: fd-bk-fade 0.25s ease;
}
@keyframes fd-bk-fade { from { opacity: 0; } to { opacity: 1; } }

.booking {
  position: relative;
  width: 100%;
  max-width: 660px;
  margin: auto 0;
  padding: 40px 44px 34px;
  border-radius: 20px;
  color: var(--bone, #F3E7D2);
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(217, 174, 116, 0.10), transparent 60%),
    linear-gradient(180deg, #221A12 0%, #1B140E 100%);
  border: 1px solid rgba(217, 174, 116, 0.22);
  box-shadow: 0 40px 120px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.04);
  animation: fd-bk-rise 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes fd-bk-rise { from { transform: translateY(14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

.booking .close {
  position: absolute;
  top: 18px;
  right: 18px;
  padding: 8px 14px;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #FFFFFF;
  background: transparent;
  border: 1px solid rgba(217, 174, 116, 0.18);
  border-radius: 999px;
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s;
}
.booking .close:hover { color: var(--gold, #D9AE74); border-color: rgba(217, 174, 116, 0.5); }

.booking .step {
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: #FFFFFF;
}
.booking h2 {
  margin: 8px 0 0;
  font-family: var(--font-display, 'Cormorant Garamond', Georgia, serif);
  font-size: clamp(26px, 4vw, 34px);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: #FFFFFF;
}
.booking h2 em { font-style: italic; color: var(--gold, #D9AE74); }

/* form rows + fields */
.booking .row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 16px;
}
.booking .field { display: flex; flex-direction: column; gap: 8px; }
.booking .field label {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #FFFFFF;
}
.booking .field input, .booking .field select, .booking .field textarea {
  width: 100%;
  padding: 12px 14px;
  font-size: 15px;
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(217, 174, 116, 0.18);
  border-radius: 10px;
  outline: none;
  transition: border-color 0.2s, background 0.2s;
}
.booking .field input::placeholder, .booking .field textarea::placeholder { color: rgba(255, 255, 255, 0.55); }
.booking .field input[type=number] { -moz-appearance: textfield; appearance: textfield; }
.booking .field input[type=number]::-webkit-inner-spin-button,
.booking .field input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.booking .field input:focus {
  border-color: var(--gold, #D9AE74);
  background: rgba(217, 174, 116, 0.06);
}
.booking .t-tabular { font-variant-numeric: tabular-nums; }

/* footer / actions */
.booking .booking-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid rgba(217, 174, 116, 0.14);
}
.booking .booking-foot .note {
  font-size: 12px;
  font-style: italic;
  color: #FFFFFF;
  max-width: 34ch;
  line-height: 1.5;
}
.booking .booking-foot .btn { white-space: nowrap; }

@media (max-width: 560px) {
  .booking { padding: 34px 22px 26px; border-radius: 16px; }
  .booking .row { grid-template-columns: 1fr; }
  .booking .booking-foot { flex-direction: column-reverse; align-items: stretch; }
  .booking .booking-foot .btn { width: 100%; }
  .booking .booking-foot .note { max-width: none; text-align: center; }
}

/* ===== booking-widget.css ===== */
/* booking-widget.css — Step 1 widget dynamics (autocomplete, route chip,
   calendar, flight field). Layers on top of the cream .hbq--bar in booking.css.
   Popovers use the same dark-saddle + bronze vocabulary as .hbq-sel__menu. */

.fdb .hbq__bar { position: relative; flex-wrap: wrap; }
/* Pickup/Drop-off place fields must never collapse — wrap to a new row instead
   (keeps the in-modal planner readable even in a narrow container). */
.fdb .fdb-field { min-width: 220px; flex: 1 1 240px; }
.fdb .hbq__bar-field { position: relative; }

/* ── Place field: icon + input + clear ─────────────────────────────────── */
.fdb-input-row { display: flex; align-items: center; gap: 9px; }
.fdb-input-row .fdb-input { flex: 1 1 auto; min-width: 0; }

.fdb-type-icon {
  flex: 0 0 auto;
  width: 20px; height: 20px;
  color: var(--gold-deep);
  display: inline-flex; align-items: center; justify-content: center;
}
.fdb-type-icon svg { width: 18px; height: 18px; }

.fdb-clear {
  flex: 0 0 auto;
  width: 22px; height: 22px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(121, 75, 30, 0.08);
  border: 1px solid rgba(121, 75, 30, 0.22);
  border-radius: 50%;
  color: rgba(121, 75, 30, 0.7);
  cursor: pointer; padding: 0;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.fdb-clear:hover { background: rgba(121, 75, 30, 0.16); color: #3A1F08; border-color: rgba(121, 75, 30, 0.4); }

/* ── Suggestion dropdown ───────────────────────────────────────────────── */
.fdb-suggest {
  position: absolute;
  top: calc(100% + 8px); left: -8px; right: -8px;
  z-index: 60;
  list-style: none; margin: 0; padding: 6px;
  background: linear-gradient(180deg, rgba(45,32,22,0.99) 0%, rgba(31,22,15,0.99) 100%);
  border: 1px solid rgba(217, 174, 116, 0.4);
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 26px 54px -16px rgba(0,0,0,0.62), 0 8px 20px -8px rgba(0,0,0,0.45);
  -webkit-backdrop-filter: blur(8px) saturate(150%); backdrop-filter: blur(8px) saturate(150%);
  animation: fdb-pop 220ms var(--ease-standard) both;
}
.fdb-suggest::before {
  content: ""; position: absolute; top: 0; left: 16px; right: 16px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold) 30%, var(--gold-bright) 50%, var(--gold) 70%, transparent);
  opacity: .8;
}
@keyframes fdb-pop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

.fdb-sug {
  display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: 12px;
  padding: 11px 12px; border-radius: 8px; cursor: pointer;
  transition: background .16s ease;
}
.fdb-sug + .fdb-sug { margin-top: 1px; }
.fdb-sug.is-hover, .fdb-sug:hover { background: rgba(217, 174, 116, 0.14); }
.fdb-sug__icon {
  width: 30px; height: 30px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(217, 174, 116, 0.12); color: var(--gold-bright);
}
.fdb-sug__icon svg { width: 17px; height: 17px; }
.fdb-sug__icon--airport { background: rgba(120, 165, 220, 0.16); color: #bcd4f2; }
.fdb-sug__icon--hotel { background: rgba(217, 174, 116, 0.16); color: var(--gold-bright); }
.fdb-sug__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fdb-sug__name {
  font-family: var(--font-display); font-size: 16px; letter-spacing: -0.01em; color: #FFFFFF;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fdb-sug__sub {
  font-family: var(--font-sans); font-size: 11.5px; color: rgba(236, 213, 173, 0.6);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fdb-sug__code {
  font-family: var(--font-sans); font-size: 10px; font-weight: 700; letter-spacing: 0.14em;
  color: var(--gold-bright); border: 1px solid rgba(217, 174, 116, 0.4);
  border-radius: 4px; padding: 3px 7px;
}
/* Autocomplete polish: bold-match, "use my location", loading + empty states */
.fdb-sug__name strong { color: #FFFFFF; font-weight: 700; }
.fdb-sug--action { cursor: pointer; }
.fdb-sug--action .fdb-sug__name { color: var(--gold-bright); }
.fdb-sug__icon--loc { background: rgba(217, 174, 116, 0.18); color: var(--gold-bright); }
.fdb-sug__name--dim { color: rgba(236, 213, 173, 0.6); font-family: var(--font-sans); font-size: 13.5px; }
.fdb-sug--empty, .fdb-sug--loading { cursor: default; }
.fdb-sug--empty:hover, .fdb-sug--loading:hover { background: transparent; }
.fdb-sug__icon--ld { background: rgba(217, 174, 116, 0.10); }
.fdb-sug__icon--ld::after {
  content: ""; width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid rgba(217, 174, 116, 0.28); border-top-color: var(--gold-bright);
  animation: fdb-spin 0.7s linear infinite;
}
@keyframes fdb-spin { to { transform: rotate(360deg); } }

/* ── Route chip (collapsed pickup→dropoff) ─────────────────────────────── */
.fdb-routechip {
  flex: 1 1 0; min-width: 0;
  display: flex; flex-direction: column; gap: 9px;
  padding: 4px 26px; text-align: left; cursor: pointer;
  background: transparent; border: 0; appearance: none;
}
.fdb-routechip__line { display: flex; align-items: center; gap: 14px; min-width: 0; }
.fdb-routechip__pt { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.fdb-routechip__pt .fdb-type-icon { width: 18px; height: 18px; }
.fdb-routechip__pt .fdb-type-icon svg { width: 16px; height: 16px; }
.fdb-routechip__name {
  font-family: var(--font-display); font-size: 19px; letter-spacing: -0.01em; color: #2A1B0E;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 22ch;
}
.fdb-routechip__arrow { color: var(--gold-deep); font-size: 17px; flex: 0 0 auto; }
.fdb-routechip__edit {
  margin-left: 6px; flex: 0 0 auto;
  font-family: var(--font-sans); font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--gold-deep); opacity: 0; transform: translateX(-4px);
  transition: opacity .2s ease, transform .2s ease;
}
.fdb-routechip:hover .fdb-routechip__edit { opacity: 1; transform: none; }

/* ── Date button + calendar ────────────────────────────────────────────── */
.fdb-date-btn {
  appearance: none; background: transparent; border: 0;
  border-bottom: 1px solid rgba(121, 75, 30, 0.28);
  font-family: var(--font-display); font-size: 19px; letter-spacing: -0.01em; color: #2A1B0E;
  padding: 5px 0 9px; cursor: pointer; text-align: left; width: 100%;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.fdb-date-btn:hover { border-bottom-color: rgba(121, 75, 30, 0.5); }
.fdb-date-btn.is-filled { color: #2A1B0E; }
.fdb-date-ph { color: rgba(121, 75, 30, 0.5); font-style: italic; }
.fdb-clear--inline {
  width: 18px; height: 18px; background: transparent; border: 0; color: rgba(121,75,30,0.5);
}
.fdb-clear--inline:hover { color: #3A1F08; background: transparent; }

.fdb-cal {
  position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%);
  z-index: 70; width: 286px; padding: 14px;
  background: linear-gradient(180deg, rgba(45,32,22,0.99) 0%, rgba(31,22,15,0.99) 100%);
  border: 1px solid rgba(217, 174, 116, 0.4); border-radius: 14px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 26px 54px -16px rgba(0,0,0,0.62);
  animation: fdb-pop 220ms var(--ease-standard) both;
}
.fdb-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.fdb-cal__title { font-family: var(--font-display); font-size: 16px; color: #FFFFFF; letter-spacing: -0.01em; }
.fdb-cal__nav {
  width: 30px; height: 30px; border-radius: 50%;
  background: rgba(217,174,116,0.1); border: 1px solid rgba(217,174,116,0.28);
  color: var(--gold-bright); font-size: 18px; line-height: 1; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .2s ease;
}
.fdb-cal__nav:hover:not(:disabled) { background: rgba(217,174,116,0.22); }
.fdb-cal__nav:disabled { opacity: 0.3; cursor: default; }
.fdb-cal__dow { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 6px; }
.fdb-cal__dow span {
  text-align: center; font-family: var(--font-sans); font-size: 10px; font-weight: 600;
  letter-spacing: 0.1em; color: rgba(236,213,173,0.5);
}
.fdb-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.fdb-cal__cell {
  aspect-ratio: 1; border: 0; background: transparent; border-radius: 8px;
  font-family: var(--font-sans); font-size: 13px; color: #F4EFE6; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .15s ease, color .15s ease;
}
.fdb-cal__cell.is-empty { background: none; cursor: default; }
.fdb-cal__cell:hover:not(:disabled):not(.is-sel) { background: rgba(217,174,116,0.16); color: #FFFFFF; }
.fdb-cal__cell.is-today { box-shadow: inset 0 0 0 1px rgba(217,174,116,0.45); }
.fdb-cal__cell.is-sel { background: var(--gold); color: #2A1B0E; font-weight: 600; }
.fdb-cal__cell.is-past { color: rgba(236,213,173,0.22); cursor: default; }

/* ── CTA ──────────────────────────────────────────────────────────────── */
.fdb-cta { display: inline-flex; align-items: center; gap: 10px; }
.fdb-cta__arrow { transition: transform .25s ease; }
.fdb-cta:hover .fdb-cta__arrow { transform: translateX(3px); }
.fdb-cta.is-waiting { filter: saturate(0.85) brightness(0.99); }

/* ── Flight field (slides open below the bar) ──────────────────────────── */
.fdb-flight-wrap {
  width: 100%; max-width: 1240px;
  max-height: 0; overflow: hidden; opacity: 0;
  transition: max-height .42s var(--ease-standard), opacity .32s ease, margin-top .42s ease;
}
.fdb-flight-wrap.is-open { max-height: 130px; opacity: 1; margin-top: -8px; }
.fdb-flight {
  display: flex; align-items: center; gap: 18px;
  padding: 16px 26px; margin: 0 2px;
  background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(247,246,243,0.96));
  border: 1px solid rgba(121, 75, 30, 0.22); border-top: 0;
  border-radius: 0 0 16px 16px;
  box-shadow: 0 18px 36px -22px rgba(0,0,0,0.4);
}
.fdb-flight__icon {
  flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%;
  background: rgba(120, 165, 220, 0.14); color: #3f74b8;
  display: inline-flex; align-items: center; justify-content: center;
}
.fdb-flight__icon svg { width: 19px; height: 19px; }
.fdb-flight__field { flex: 0 0 auto; min-width: 220px; display: flex; flex-direction: column; gap: 7px; }
.fdb-flight__field .fdb-input { font-size: 18px; }
.fdb-flight__note {
  flex: 1 1 auto; font-family: var(--font-sans); font-size: 12.5px; line-height: 1.5;
  color: rgba(121, 75, 30, 0.72); max-width: 46ch;
}
.fdb-opt {
  text-transform: none; letter-spacing: 0; font-family: var(--font-display);
  font-style: italic; font-size: 11px; color: rgba(121, 75, 30, 0.55); margin-left: 4px;
}

/* ── Responsive ────────────────────────────────────────────────────────── */
@media (max-width: 1080px) {
  .fdb-routechip { flex: 1 1 100%; padding: 10px 18px; }
  .fdb-suggest { left: 0; right: 0; }
  .fdb-flight { flex-wrap: wrap; gap: 12px; }
  .fdb-flight__note { flex: 1 1 100%; max-width: none; }
  .fdb-cal { left: 0; transform: none; }
}
@media (max-width: 560px) {
  .fdb-flight__field { min-width: 0; flex: 1 1 100%; }
}

/* ════════════════════════════════════════════════════════════════════════
   IVORY THEME — "printed reservation card" (chosen palette).
   The Step-1 bar (.hbq--bar), its pill toggle and the flight panel render as
   a warm IVORY card with charcoal serif text and gold accents — an elegant,
   high-legibility contrast against the dark site sections it sits on. The
   suggestion dropdown + calendar stay dark on purpose (a dark menu popping off
   the ivory bar reads like a luxury form); the airport icon is gold, not blue.

   WHY !important: the per-page CSS bundle order is auto-generated and NOT
   consistent — on the homepage booking-widget.css loads after booking.css,
   but on the embed landing pages booking.css loads LAST and would otherwise
   win. This theme layer is declared authoritative so the look holds on every
   page type. Palette: ivory #F7F0E2 · charcoal #2A1E12 · gold #D9AE74.
   ════════════════════════════════════════════════════════════════════════ */

/* Card + pill shells → ivory */
.hbq__bar {
  background: linear-gradient(180deg, #FBF6EC 0%, #F1E9D7 100%) !important;
  border: 1px solid rgba(121,75,30,0.22) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.6),
    0 1px 2px rgba(0,0,0,0.10),
    0 28px 56px -20px rgba(0,0,0,0.45) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
/* Trip-type pill — house system (owner-approved Jul 2026): dark translucent
   panel + hairline border, GOLD active chip with espresso text. On-brand on
   the espresso hero, the booking modal, and the ivory widget bar alike. */
.hbq__pill {
  background: rgba(26,19,13,0.55) !important;
  border: 1px solid rgba(250,241,221,0.16) !important;
  box-shadow: 0 8px 24px -12px rgba(0,0,0,0.5) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  backdrop-filter: blur(8px) !important;
}
.hbq__pill-btn { color: #E6DCCB !important; }
.hbq__pill-btn:hover { color: #FFFFFF !important; }
.hbq__pill-btn.is-active {
  background: #D9AE74 !important;
  color: #1B1812 !important;
  box-shadow: 0 3px 12px -3px rgba(217,174,116,0.5) !important;
}
/* Filled buttons (toggle + "View options") use the palette's charcoal with cream
   text — a gold fill muddied against the ivory card; charcoal gives crisp contrast. */
.hbq__bar-cta {
  background: #2A1E12 !important;
  color: #FFFFFF !important;
}

/* Field labels, inputs, dividers */
.hbq__bar-label { color: #9A6A2A !important; }
.hbq__bar-input,
.fdb-input { color: #2A1E12 !important; border-bottom-color: rgba(121,75,30,0.30) !important; }
.hbq__bar-input::placeholder,
.fdb-input::placeholder { color: rgba(121,75,30,0.55) !important; }
.hbq__bar-input:hover { border-bottom-color: rgba(121,75,30,0.50) !important; }
.hbq__bar-input:focus { border-bottom-color: var(--gold-deep) !important; box-shadow: 0 1px 0 0 var(--gold-deep) !important; }
.hbq__bar-div { background: rgba(121,75,30,0.20) !important; }

/* Time selector inside the bar → charcoal on ivory */
.hbq .hbq-sel__btn { color: #2A1E12 !important; border-bottom-color: rgba(121,75,30,0.30) !important; }
.hbq .hbq-sel__btn:hover { border-bottom-color: rgba(121,75,30,0.50) !important; }

/* Type icon + clear buttons */
.fdb-type-icon { color: var(--gold-deep) !important; }
.fdb-clear { background: rgba(121,75,30,0.08) !important; border-color: rgba(121,75,30,0.22) !important; color: rgba(121,75,30,0.70) !important; }
.fdb-clear:hover { background: rgba(121,75,30,0.16) !important; color: #3A1F08 !important; border-color: rgba(121,75,30,0.40) !important; }
.fdb-clear--inline { color: rgba(121,75,30,0.50) !important; }
.fdb-clear--inline:hover { color: #3A1F08 !important; }

/* Route chip + date button text → charcoal */
.fdb-routechip__name { color: #2A1E12 !important; }
.fdb-routechip__arrow,
.fdb-routechip__edit { color: var(--gold-deep) !important; }
.fdb-date-btn,
.fdb-date-btn.is-filled { color: #2A1E12 !important; border-bottom-color: rgba(121,75,30,0.30) !important; }
.fdb-date-btn:hover { border-bottom-color: rgba(121,75,30,0.50) !important; }
.fdb-date-ph { color: rgba(121,75,30,0.55) !important; }

/* Airport icon stays gold (not blue) — it lives in the dark dropdown */
.fdb-sug__icon--airport { background: rgba(217,174,116,0.16) !important; color: var(--gold-bright) !important; }

/* Flight panel → ivory (hangs off the bar, must match it) */
.fdb-flight {
  background: linear-gradient(180deg, #FBF6EC 0%, #F1E9D7 100%) !important;
  border-color: rgba(121,75,30,0.22) !important;
}
.fdb-flight__icon { background: rgba(217,174,116,0.18) !important; color: var(--gold-deep) !important; }
.fdb-flight__note { color: rgba(121,75,30,0.72) !important; }
.fdb-opt { color: rgba(121,75,30,0.55) !important; }

/* Round trip: break the CTA onto its own line and center it */
.is-rt .hbq__bar-div--precta { flex-basis: 100%; width: 0; height: 0; border: 0; margin: 0; }
.is-rt .fdb-cta, .is-rt .hbq__bar-cta { margin-left: auto; margin-right: auto; }

/* Required-field nudge: when the user hits "View options" with a missing date/time/route. */
.fdb.is-req .fdb-date-btn:not(.is-filled) { border-bottom-color: #C0392B; }
.fdb.is-req .fdb-date-ph { color: #C0392B; }
.fdb.is-req .fdb-field:not(.is-filled) .fdb-input::placeholder { color: #C0392B; opacity: 1; }
.fdb.is-req .hbq-sel__value.is-placeholder { color: #C0392B; }

/* + Add stop link between the route fields (Jul 2026) */
.fdb-addstop{align-self:center;flex:none;background:none;border:none;cursor:pointer;font-family:var(--font-sans,'Outfit',sans-serif);font-size:11.5px;letter-spacing:.08em;color:#D9AE74;padding:6px 10px;white-space:nowrap}
.fdb-addstop:hover{color:#ECC58F;text-decoration:underline}
/* Add return trip checkbox row under the bar */
.fdb-rt-toggle{display:inline-flex;align-items:center;gap:8px;margin-top:10px;cursor:pointer;font-size:12px;letter-spacing:.06em;color:rgba(250,241,221,.75);user-select:none}
.fdb-rt-toggle input{appearance:none;-webkit-appearance:none;width:16px;height:16px;border:1px solid rgba(217,174,116,.5);border-radius:4px;background:rgba(0,0,0,.25);cursor:pointer;position:relative;margin:0}
.fdb-rt-toggle input:checked{background:#D9AE74;border-color:#D9AE74}
.fdb-rt-toggle input:checked::after{content:"";position:absolute;left:4.5px;top:1.5px;width:4px;height:8px;border:solid #241A10;border-width:0 2px 2px 0;transform:rotate(45deg)}
.fdb-rt-toggle input:focus-visible{outline:2px solid #D9AE74;outline-offset:2px}
.fdb-rt-toggle:hover span{color:#FAF1DD}

.fdb-stopnote{margin-top:10px;font-size:11.5px;letter-spacing:.04em;color:rgba(250,241,221,.65)}

/* ===== polish.css ===== */
/* ============================================================
   POLISH LAYER — final design audit pass
   Loaded last so it can correct rhythm/material drift across
   the site without rewriting earlier files.

   Scope:
   1. Vertical rhythm — one consistent section padding scale
   2. Geometry — single 2px radius vocabulary across surfaces
   3. Typography — tightened eyebrow + headline micro-rhythm
   4. Material — paper-grain noise on every elevated surface
   5. Section seams — bronze hairline + soft fade between
      camel and cream zones so the page reads as one continuous
      tactile object, not stacked colour blocks
   6. Focus + selection states
   ============================================================ */

/* ---------- 1. Vertical rhythm ---------- */
.services,
.fleet,
.events,
.moments,
.cities,
.why,
.advisors,
.pricing,
.testi,
.faq,
.press,
.contact { padding-top: 72px; padding-bottom: 72px; }

/* Hero keeps its own rhythm; nav offset compensates */
.hero { padding-top: 132px; }

/* ---------- 2. Single radius vocabulary ---------- */
.btn,
.btn--gold,
.btn--primary,
.btn--ghost,
.btn--ghost-dark,
.btn--ink,
.btn--solid,
.fleet-tab--card,
.fleet-tab--idx,
.testi-google-badge,
.tier,
.event-card,
.service-card,
.contact-form-card,
.advisors-members,
.cities-map,
.cities-ledger,
.fleet-stage,
.hb-bar,
.hb-tab-mini,
.hb-vehicle,
.hero-chip,
.hero-stats--below,
.contact-inner,
.testi-card,
.moment-frame,
.footer-social a { border-radius: var(--radius); }

/* ---------- 3. Typography micro-rhythm ---------- */
.eyebrow {
  font-size: 10.5px;
  letter-spacing: 0.28em;
  font-weight: 500;
}
.eyebrow::before { width: 32px; opacity: 0.85; }

.h-section,
.h-display { letter-spacing: -0.022em; }

.lede {
  font-size: 18px;
  line-height: 1.65;
  text-wrap: pretty;
  max-width: 56ch;
}

/* Lift any header eyebrow→h2 spacing to a single rhythm step */
.services-header .eyebrow + h2,
.fleet-header .eyebrow + h2,
.events-header .eyebrow + h2,
.moments-header .eyebrow + h2,
.cities-header .eyebrow + h2,
.why .eyebrow + h2,
.advisors-copy .eyebrow + h2,
.pricing-header .eyebrow + h2,
.faq-header .eyebrow + h2 {
  margin-top: 22px;
}

/* ---------- 4. Paper-grain — barely-there noise on elevated surfaces ---------- */
.grain,
.service-card,
.testi-card,
.tier,
.advisors-members,
.contact-form-card,
.contact-inner,
.fleet-stage,
.cities-map,
.cities-ledger,
.event-card,
.hero-booking .hb-bar,
.hero-stats--below,
.events-cta,
.testi-google-badge {
  background-image:
    /* extremely faint SVG noise — gives surfaces a paper texture without dirtying them */
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.95 0 0 0 0 0.88 0 0 0 0 0.76 0 0 0 0.06 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-blend-mode: overlay, normal, normal, normal;
}

/* On the dark inversion sections, push the grain a fraction stronger so the surface still reads as material */
.why::before {
  content: "";
  position: absolute; inset: 0;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 0.92 0 0 0 0 0.78 0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
  pointer-events: none;
  opacity: 0.6;
  z-index: 1;
}
.why > * { position: relative; z-index: 2; }

/* Footer keeps its own sparkles; add a faint grain layer underneath them */
.footer::after {
  content: "";
  position: absolute; inset: 0;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 0.92 0 0 0 0 0.78 0 0 0 0.07 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
  pointer-events: none;
  opacity: 0.5;
  z-index: 1;
}

/* ---------- 5. Section seams — bronze hairlines that stitch camel↔cream transitions ---------- */
/* Use ::before pseudo on the FIRST cream section + ::after on the LAST.
   Each prints a thin bronze hairline + a 64px soft fade so the boundary
   reads as paper laid on suede, not as two flat planes touching. */
.pricing { position: relative; }
.pricing::before {
  content: "";
  position: absolute; top: -1px; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent 10%, var(--gold) 50%, transparent 90%);
  opacity: 0.55;
  z-index: 3;
}
.pricing::after {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 56px;
  background: linear-gradient(180deg, rgba(0,0,0,0.10), transparent);
  pointer-events: none;
  z-index: 1;
}
.faq { position: relative; }
.faq::after {
  content: "";
  position: absolute; bottom: -1px; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent 10%, var(--gold) 50%, transparent 90%);
  opacity: 0.55;
  z-index: 3;
}
.faq > *:last-child { margin-bottom: 0; }

/* Subtle vignette on the section just BEFORE cream (Cities) and just AFTER cream (Contact)
   so the cream block feels lifted, like an inset page in a magazine */
.cities { box-shadow: inset 0 -64px 64px -64px rgba(0,0,0,0.20); }
.contact { box-shadow: inset 0 64px 64px -64px rgba(0,0,0,0.18); }

/* ---------- 6. Focus + selection — house bronze, never browser blue ---------- */
:where(button, a, input, select, textarea):focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: var(--radius);
}
::selection { background: rgba(217,174,116,0.40); color: var(--fg); }

/* Smooth in-page scroll behaviour for the nav anchors */
html { scroll-behavior: smooth; scroll-padding-top: 90px; }

/* ---------- 7. Hover motion language — unified easing ---------- */
.service-card,
.testi-card,
.tier,
.event-card,
.contact-form-card,
.moment {
  transition:
    transform 420ms var(--ease-standard),
    box-shadow 420ms var(--ease-standard),
    border-color 240ms ease;
}

/* Standardize EVERY image/card box across the whole site to ONE style — solid 1px gold,
   soft-rounded (style C). A 1:1 swap of the Signature treatment. The `html body.fx-premium`
   prefix (specificity 0,2,2) outranks the Signature-variant rules (0,2,1 !important). */
html body.fx-premium .service-card,
html body.fx-premium .event-card,
html body.fx-premium .testi-card,
html body.fx-premium .moment-frame,
html body.fx-premium .cities-ledger,
html body.fx-premium .cities-map,
html body.fx-premium .why-item,
html body.fx-premium .sp-card,
html body.fx-premium .sp-included-item,
html body.fx-premium .contact-form-card,
html body.fx-premium .industry-card,
html body.fx-premium .corp-card,
html body.fx-premium .pricing-card,
html body.fx-premium .tier,
html body.fx-premium .ac-tier,
html body.fx-premium .lux-card,
html body.fx-premium .lux-vcard,
html body.fx-premium .lux-occasion,
html body.fx-premium .fleet-tab--card,
html body.fx-premium .hb-vehicle,
html body.fx-premium .advisors-members,
html body.fx-premium .fd-gallery__item,
html body.fx-premium .about-story__aside-card,
html body.fx-premium .faq-item,
html body.fx-premium .card {
  border: 1px solid rgba(217,174,116,0.22) !important;
  border-radius: 4px !important;
}
/* drop the Signature gradient ring everywhere so the styles don't double up */
html body.fx-premium .pb-edge { display: none !important; }
/* the Moments card border lives on the image frame, not the whole figure */
.moments .moment { border: none !important; box-shadow: none !important; }

/* IMPROVEMENT 3 — one unified card hover everywhere: subtle lift + brighter gold edge + depth */
html body.fx-premium .service-card, html body.fx-premium .event-card, html body.fx-premium .testi-card, html body.fx-premium .moment-frame, html body.fx-premium .cities-ledger, html body.fx-premium .cities-map, html body.fx-premium .sp-card, html body.fx-premium .lux-card, html body.fx-premium .lux-occasion, html body.fx-premium .lux-vcard, html body.fx-premium .fleet-tab--card, html body.fx-premium .industry-card, html body.fx-premium .corp-card, html body.fx-premium .pricing-card, html body.fx-premium .why-item, html body.fx-premium .advisors-members, html body.fx-premium .ac-tier, html body.fx-premium .hb-vehicle {
  transition: transform .35s var(--ease-standard, cubic-bezier(.2,.8,.2,1)), box-shadow .35s ease, border-color .25s ease !important;
}
html body.fx-premium .service-card:hover, html body.fx-premium .event-card:hover, html body.fx-premium .testi-card:hover, html body.fx-premium .moment-frame:hover, html body.fx-premium .cities-ledger:hover, html body.fx-premium .cities-map:hover, html body.fx-premium .sp-card:hover, html body.fx-premium .lux-card:hover, html body.fx-premium .lux-occasion:hover, html body.fx-premium .lux-vcard:hover, html body.fx-premium .fleet-tab--card:hover, html body.fx-premium .industry-card:hover, html body.fx-premium .corp-card:hover, html body.fx-premium .pricing-card:hover, html body.fx-premium .why-item:hover, html body.fx-premium .advisors-members:hover, html body.fx-premium .ac-tier:hover, html body.fx-premium .hb-vehicle:hover {
  transform: translateY(-3px) !important;
  border-color: rgba(217,174,116,0.5) !important;
  box-shadow: 0 16px 38px rgba(0,0,0,0.42) !important;
}
@media (prefers-reduced-motion: reduce) {
  html body.fx-premium .service-card:hover, html body.fx-premium .event-card:hover, html body.fx-premium .testi-card:hover, html body.fx-premium .moment-frame:hover, html body.fx-premium .cities-ledger:hover, html body.fx-premium .lux-card:hover, html body.fx-premium .lux-occasion:hover { transform: none !important; }
}

/* IMPROVEMENT 4 — editorial rhythm: balanced heading line-breaks + capped lede measure */
.services-header h2, .events-header h2, .moments-header h2, .cities-header h2, .testi-header h2,
.faq-header h2, .fleet-header h2, .pricing-header h2, .why .eyebrow + h2, .advisors-copy .eyebrow + h2,
.h-section, .ac-shead__title { text-wrap: balance; }
.services-header > p, .events-header > p, .moments-header > p, .cities-header > p, .testi-header > p,
.faq-header > p, .fleet-header > p, .advisors-copy > p, .shead__lede, .ac-shead__lede { max-width: 62ch; }

/* IMPROVEMENT 2 — SEO-safe footer slim: KEEP the address + phone (local-SEO NAP) but
   shrink the oversized footer phone and tighten the brand block so it stops competing
   with the Contact "Desk" section above it. */
.footer-bottom .footer-phone { font-size: 21px !important; margin-top: 4px !important; }
.footer-bottom .footer-bstrap { font-size: 14px !important; margin-top: 6px !important; }
.footer-bottom .footer-info { margin-top: 12px !important; opacity: 0.88; }
.footer-bottom .footer-social { margin-top: 18px !important; }
.footer-bottom .footer-blogo { max-height: 58px !important; width: auto; }

/* ---------- 8. Eyebrow + ledger consistency across cream + camel ---------- */
.pricing .eyebrow::before,
.testi-header .eyebrow::before,
.faq .eyebrow::before { background: var(--terra-deep); }

/* ---------- 9. Accessibility safety ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .service-card,
  .testi-card,
  .tier,
  .event-card,
  .contact-form-card,
  .moment { transition: background-color 200ms, border-color 200ms; }
}

/* ============================================================
   Sticky mobile reservation bar (added) — hidden on desktop,
   shown on small screens. Uses existing tokens + .btn--gold.
   ============================================================ */
.mobile-cta { display: none; }

@media (max-width: 768px) {
  .mobile-cta {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
    background: rgba(42, 30, 18, 0.92);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--hairline-ink-strong, rgba(250,241,221,0.26));
    box-shadow: 0 -8px 24px rgba(0,0,0,0.35);
  }
  .mobile-cta-call {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    flex: 0 0 auto;
    height: 50px;
    padding: 0 18px;
    font-family: 'Outfit', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 12px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--fg, #FAF1DD);
    border: 1px solid var(--hairline-ink-strong, rgba(250,241,221,0.26));
    border-radius: var(--radius);
    background: transparent;
  }
  .mobile-cta-call:active { background: rgba(250,241,221,0.06); }
  .mobile-cta-call-ico { font-size: 16px; line-height: 1; }
  .mobile-cta-reserve {
    flex: 1 1 auto;
    height: 50px !important;
    font-size: 12px !important;
    letter-spacing: 0.14em;
  }
  /* keep page content clear of the fixed bar */
  body { padding-bottom: 64px; }
}

/* ============================================================
   ALL-DARK UNIFIED (added) — remove the light "cream intermission"
   sections so the whole page is one warm tonal descent.
   1) One gradient on #root: camel at top -> espresso at the bottom.
   2) All sections transparent so they ride that gradient.
   3) The four cream sections re-scope their theme variables back to
      the DARK palette (mirrors the .events/.cities dark scope), so
      all their text/cards flip to light automatically.
   Same palette colors, just rearranged for a cohesive look.
   ============================================================ */
#root {
  background: linear-gradient(to bottom,
    #6F5640 0%, #62492F 35%, #4D3826 65%, #34251A 88%, #2A1E12 100%) !important;
}

/* let every section show the gradient */
.services, .moments, .why, .press, .footer { background: transparent !important; }

/* flip the former cream sections to the dark scope */
.services, .moments, .why, .press {
  --bg: #6F5640; --bg-card: #4D3826; --bg-elev: #4D3826; --bg-alt: #4D3826;
  --fg: #FFFFFF; --fg-ink: #FFFFFF;
  --fg-muted: #F4EFE6; --fg-subtle: #E6DCCB; --fg-faint: #DCD2C0;
  --fg-ink-muted: #F4EFE6; --fg-ink-subtle: #E6DCCB;
  --gold: #D9AE74; --gold-bright: #ECC58F; --gold-deep: #D9AE74;
  --terra: #D9AE74; --terra-bright: #ECC58F; --terra-deep: #D9AE74; --brass: #D9AE74;
  --hairline: rgba(250,241,221,0.14); --hairline-strong: rgba(250,241,221,0.26);
  --hairline-ink: rgba(250,241,221,0.14); --hairline-ink-strong: rgba(250,241,221,0.26);
  --ink-cream: #FFFFFF; --ink-cream-muted: #F4EFE6; --ink-cream-subtle: #E6DCCB;
  --bg-cream: transparent; --bg-cream-card: rgba(250,241,221,0.05); --bg-cream-alt: transparent;
  --hairline-cream: rgba(250,241,221,0.14); --hairline-cream-strong: rgba(250,241,221,0.26);
}

/* override dark-overrides.css hardcoded dark-on-cream text -> light */
.services h2, .moments h2, .why h2, .press h2,
.services .h-section, .moments .h-section, .why .h-section,
.why-item h4, .moment figcaption h3 { color: #FFFFFF !important; }
.services h2 em, .moments h2 em, .why h2 em,
.services .h-section em, .why .h-section em { color: #D9AE74 !important; }
.why .lede, .why-item p, .moments .moment figcaption p,
.services .lede, .press .lede { color: #F4EFE6 !important; }
.why-item .num, .why-item .num small { color: #D9AE74 !important; }

/* service cards: espresso boxes that pop on the camel ground */
.service-card { background: #4D3826 !important; border-color: rgba(250,241,221,0.12) !important; }

/* ============================================================
   Critique fixes (added): hero dominance, section separation,
   small-text accessibility. Same palette.
   ============================================================ */

/* 1) Hero headline now clearly out-scales section headings (was ~33px vs 34.5px h2) */
.hero-title {
  font-size: clamp(1.5rem, 2.9vw, 2.5rem) !important;
  line-height: 1.1 !important;
}
.hero-rating__est::before { content: "·"; margin: 0 7px; opacity: .55; }
.hero-rating__est { letter-spacing: .02em; }

/* Glowing-border accent for the home-base (New York) coverage pill */
@keyframes fd-pill-glow {
  0%, 100% { border-color: rgba(217,174,116,.38); box-shadow: 0 0 0 0 rgba(217,174,116,0); }
  50%      { border-color: rgba(217,174,116,.9);  box-shadow: 0 0 13px 1px rgba(217,174,116,.32); }
}
.cov-chip--hq { animation: fd-pill-glow 2.8s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .cov-chip--hq { animation: none; border-color: rgba(217,174,116,.7); } }
/* Page-hero display headings: keep in scale with the (now smaller) hero */
.h-display {
  font-size: clamp(1.7rem, 3.2vw, 2.9rem) !important;
  line-height: 1.08 !important;
}

/* 2) Subtle separation so merged sections don't fuse into one brown wall */
.events, .moments, .cities, .why, .advisors,
.testi, .press, .faq, .contact, .footer {
  border-top: 1px solid rgba(250, 241, 221, 0.07) !important;
}

/* 3a) Eyebrows: lift bronze to clear WCAG AA on the camel top (#ECC58F 4.20 -> #F0D0A3 4.63) */
.hero .eyebrow, .services .eyebrow, .events .eyebrow, .moments .eyebrow,
.cities .eyebrow, .why .eyebrow, .advisors .eyebrow, .testi .eyebrow,
.press .eyebrow, .faq .eyebrow { color: #F0D0A3 !important; }

/* 3b) Language switcher meets the 44px touch-target minimum */
.nav-lang-trigger { min-height: 44px !important; }

/* ============================================================
   Footer layout fix (added) — brand left, link columns in a tidy
   3-up grid on the right (was a 5-col grid overflowing to 6 cols).
   ============================================================ */
.footer-top { grid-template-columns: 1fr !important; gap: 48px !important; align-items: start; }
.footer-cols { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px 36px; }
@media (max-width: 900px) {
  .footer-top { grid-template-columns: 1fr !important; gap: 36px !important; }
  .footer-cols { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) { .footer-cols { grid-template-columns: 1fr; } }

/* Photos removed per request — hide all photo slots (kept files for a future correct selection).
   NOTE: this blanket rule is why stock (un-/cand-/etc.) images don't render. Curated sets that
   SHOULD render are exempted below — add a line per curated folder as real photos get selected. */
img[src*="assets/photos"] { display: none !important; }
/* Curated exemptions: */
img[src*="assets/photos/bespoke/"] { display: block !important; }   /* Luxotica vehicle fleet (Jun 24) */
img.wc-bg__img { display: block !important; }                       /* World Cup photo layers — designed + bronze-graded for that page */

/* ============================================================
   Typography refresh (per spec) — light serif headings + light
   sans body, weight 300. Loaded last so it wins.
   ============================================================ */
body { font-family: var(--font-sans); font-weight: 300; line-height: 1.6; }
h1, h2, h3, .h-display, .h-section, .hero-title, .sp-hero-title {
  font-family: var(--font-display); font-weight: 300; line-height: 1.08; letter-spacing: .005em;
}
.lede, .sp-hero-lede { font-family: var(--font-serif); font-weight: 300; }
.hero .lede, .sp-hero-lede, .hero-lede {
  font-size: clamp(1rem, 1.4vw, 1.18rem); line-height: 1.55;
}
.eyebrow { font-family: var(--font-sans); font-weight: 400; letter-spacing: .4em; }
.nav-link, nav a { font-family: var(--font-sans); font-weight: 300; letter-spacing: .24em; }
.nav-mark, .logo-mark, .footer-brand .logo-mark, .brand {
  font-family: var(--font-serif); letter-spacing: .34em;
}
/* wordmark: "DRIVE" in gold, everywhere (matches static .mark b) */
.nav-mark__d { color: var(--gold); }
/* FD monogram bug in the nav lockup — vertically centered with the wordmark so
   it reads as one clean lockup; sized up so the logo is clearly present. */
.nav-mark, .lux-nav__mark, .ac-nav__mark { display: inline-flex; align-items: center; }
.nav-mark__bug {
  height: 40px; width: auto; margin-right: 14px; flex: 0 0 auto;
  will-change: filter;
  animation: fd-bug-glow 3s ease-in-out infinite;   /* gold glow pulsing inside-out */
}
/* on hover the glow pulses a little faster */
.nav-mark:hover .nav-mark__bug,
.lux-nav__mark:hover .nav-mark__bug,
.ac-nav__mark:hover .nav-mark__bug { animation-duration: 1.6s; }
@keyframes fd-bug-glow {
  0%, 100% { filter: drop-shadow(0 0 0.5px rgba(236,197,143,0.25)) brightness(1); }
  50%      { filter: drop-shadow(0 0 9px rgba(236,197,143,0.92)) brightness(1.14); }
}
@media (prefers-reduced-motion: reduce) { .nav-mark__bug { animation: none; } }

/* Same pulsing gold glow on the FAMOUS DRIVE wordmark — text-shadow glows only
   the text, so it pairs with the bug's filter glow (in sync, same 3s timing). */
.nav-mark, .lux-nav__mark, .ac-nav__mark { animation: fd-word-glow 3s ease-in-out infinite; }
.nav-mark:hover, .lux-nav__mark:hover, .ac-nav__mark:hover { animation-duration: 1.6s; }
@keyframes fd-word-glow {
  0%, 100% { text-shadow: 0 0 2px rgba(236,197,143,0.30); }
  50%      { text-shadow: 0 0 7px rgba(236,197,143,0.95), 0 0 16px rgba(236,197,143,0.60); }
}
@media (prefers-reduced-motion: reduce) { .nav-mark, .lux-nav__mark, .ac-nav__mark { animation: none; } }
.nav-mark sup, .lux-nav__mark sup, .ac-nav__mark sup { align-self: flex-start; margin-top: 3px; }
@media (max-width: 600px) { .nav-mark__bug { height: 34px; margin-right: 11px; } }

/* ============================================================
   Trust strip — real credentials below the hero (added in proof pass).
   Quiet authority: thin hairline band, tabular figures, gilt accents.
   ============================================================ */
.trust-strip {
  border-top: 1px solid var(--bone-08, rgba(236,213,173,0.10));
  border-bottom: 1px solid var(--bone-08, rgba(236,213,173,0.10));
  background: rgba(20, 15, 10, 0.35);
  backdrop-filter: blur(6px);
}
.trust-strip__row {
  display: flex; align-items: center; justify-content: center;
  flex-wrap: wrap; gap: 10px 30px;
  padding: 22px 0;
}
.trust-item {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  text-align: center;
}
.trust-item__k {
  font-family: var(--font-display, 'Cormorant', serif);
  font-weight: 300; font-size: clamp(1.15rem, 2vw, 1.6rem);
  letter-spacing: 0.01em; line-height: 1;
  color: var(--bone, #FAF1DD);
  white-space: nowrap;
}
.trust-item__star { color: var(--gold, #D9AE74); margin-left: 2px; font-size: 0.8em; }
.trust-item__v {
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-weight: 300; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bone-50, rgba(236,213,173,0.6));
}
.trust-sep {
  width: 1px; height: 30px;
  background: linear-gradient(180deg, transparent, rgba(217,174,116,0.35), transparent);
}
@media (max-width: 720px) {
  .trust-strip__row { gap: 14px 22px; padding: 18px 0; }
  .trust-sep { display: none; }
  .trust-item { flex: 0 0 40%; }
}

/* ============================================================
   Hero video slot — dormant until window.FD_HERO_VIDEO is set.
   Drop a file at assets/hero.mp4, then in index.html before the
   App <script> add:  <script>window.FD_HERO_VIDEO='assets/hero.mp4'</script>
   The video fills the hero behind the existing dark gradient overlay.
   ============================================================ */
.hero-bg { position: absolute; inset: 0; overflow: hidden; }
.hero-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: 0;
  opacity: 0; animation: hero-video-in 1.6s ease forwards 0.3s;
}
@keyframes hero-video-in { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .hero-video { animation: none; opacity: 1; }
}

/* Testimonials — "Read all reviews on Google" CTA (added with real reviews) */
.testi-cta { display: flex; justify-content: center; margin-top: 40px; }

/* Events page — concert/event photo as a darkened, warm-toned hero backdrop */
.sp-hero.sp-hero--events { position: relative; isolation: isolate; }
.sp-hero.sp-hero--events::before {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background-image: url('assets/img/events-redcarpet.jpg');
  background-position: center 38%; background-size: cover; background-repeat: no-repeat;
  /* lighter grade than the old concert shot — keep the red carpet reading red */
  filter: saturate(1.06) brightness(.52) contrast(1.04);
  opacity: .7;
}
.sp-hero.sp-hero--events::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(26,19,13,.92), rgba(26,19,13,.55) 55%, rgba(26,19,13,.25)),
              linear-gradient(0deg, #2A1E12, transparent 55%);
}

/* ============================================================
   Homepage hero — real Mercedes S-Class backdrop (FD Photos shoot).
   Dark left/bottom gradient keeps the copy + chips readable; the
   line-art stage is hidden so the real car reads as the subject.
   ============================================================ */
/* Background = skyline still only (acts as the video poster / instant load).
   The video plays on top of it; all darkening lives on ::after so the scrim
   sits ABOVE the video and the copy stays legible whether the video has
   loaded or not. */
.hero-bg {
  background: #2A1E12 url('assets/img/hero-nyc.jpg') center / cover no-repeat !important;
  background-image: image-set(url('assets/img/hero-nyc.webp') type('image/webp'), url('assets/img/hero-nyc.jpg') type('image/jpeg')) !important;
}
.hero-bg::after {
  content: "" !important; display: block !important;   /* dark-overrides.css hides this; we need it as the video scrim */
  position: absolute !important; inset: 0 !important;
  z-index: 1 !important;                 /* above .hero-video (z 0), below .hero-inner (z 2) */
  background:
    linear-gradient(90deg, rgba(26,19,13,.93) 0%, rgba(26,19,13,.58) 44%, rgba(26,19,13,.20) 100%),
    linear-gradient(0deg, rgba(26,19,13,.85) 0%, rgba(26,19,13,.30) 30%, transparent 56%),
    radial-gradient(ellipse 900px 620px at 72% 30%, rgba(217,174,116,.14), transparent 62%) !important;
}
.hero-stage .hero-vehicle, .hero-stage .platform, .hero-stage .ring { display: none !important; }

/* ============================================================
   Fleet "on location" gallery — real FD Photos shoot, warm-graded
   so the photography matches the espresso/gold house palette.
   ============================================================ */
.fd-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 30px; }
@media (max-width: 760px) { .fd-gallery { grid-template-columns: 1fr 1fr; } }
.fd-gallery__item {
  position: relative; margin: 0; overflow: hidden;
  border-radius: var(--radius, 3px); border: 1px solid rgba(217,174,116,.25);
  background: #1a130d;
}
.fd-gallery__item--wide { grid-column: 1 / -1; }
.fd-gallery__item img {
  display: block; width: 100%; height: 100%; object-fit: cover; aspect-ratio: 3 / 2;
  filter: sepia(.32) saturate(1.2) hue-rotate(-10deg) brightness(.9) contrast(1.05);
  transition: transform .5s var(--ease-standard, ease), filter .4s ease;
}
.fd-gallery__item--wide img { aspect-ratio: 24 / 9; }
.fd-gallery__item:hover img { transform: scale(1.04); filter: sepia(.16) saturate(1.14) brightness(1) contrast(1.04); }
.fd-gallery__item figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 16px 16px 13px;
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--cream, #FAF1DD);
  background: linear-gradient(0deg, rgba(26,19,13,.88), transparent);
}

/* ============================================================
   RESTRAINT PASS (design critique) — retire the cinematic HUD
   flourishes site-wide so the hero reads calm + luxury, not
   "tech demo." The floating ETA/Vehicle cards in the hero stage
   stay (they tell the operational story); these corner/edge
   overlays go. Reduced-motion is still honoured via the OS.
   ============================================================ */
.fd-dash,
.concierge-cue,
.d5-motion,
.wcp-badge { display: none !important; }

/* Promote the booking widget up the desktop hero so the highest-intent
   action sits above the fold (it was landing ~17px below). Trim its top
   margin on large screens only — it stays clear of the hero stage above. */
@media (min-width: 1024px) {
  .hero-booking { margin-top: 22px; }
}

/* ===== animations.css ===== */
/* ============================================================
   ANIMATIONS LAYER — luxury motion vocabulary
   Loaded after polish.css. Defines the initial states + final
   states for all scroll-revealed elements, plus the
   keyframes for marquee, image-curtain, magnetic CTA hover,
   and headline-em underline draw.
   ============================================================ */

/* ---------- 1. Universal reveal (eyebrow / headline / lede / card) ----------
   Initial state: subtle 18px lift + opacity 0.
   Revealed state: settles in with cinematic timing.
   .is-revealed is added by animations.js via IntersectionObserver. */
[data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 600ms var(--ease-standard),
    transform 600ms var(--ease-standard);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

/* === Eyebrow — always elegantly highlighted ===
   The bright + glow treatment is applied to every .eyebrow, not gated on
   .is-revealed. This way eyebrows that aren't tagged by the reveal system
   (or have already revealed and faded) still read as gilt. When .is-revealed
   does fire, a brief pulse animation layers on top for the moment of entry. */
.eyebrow {
  font-weight: 500;
  color: var(--gold-bright);
  text-shadow: 0 0 12px rgba(236, 197, 143, 0.25);
}
.eyebrow::before {
  background: var(--gold-bright);
  box-shadow: 0 0 6px rgba(236, 197, 143, 0.40);
}

/* On reveal: hairline draws in from 0 → 28px and a soft gilt pulse fires */
[data-reveal] .eyebrow::before,
.eyebrow[data-reveal]::before {
  width: 0;
  transition: width 900ms cubic-bezier(.55, 0, .15, 1) 200ms;
}
[data-reveal].is-revealed .eyebrow::before,
.eyebrow[data-reveal].is-revealed::before,
.is-revealed .eyebrow::before,
.eyebrow.is-revealed::before {
  width: 28px;
}
.eyebrow.is-revealed,
.is-revealed > .eyebrow {
  animation: eyebrow-gilt-pulse 1400ms cubic-bezier(.4, 0, .2, 1) 300ms;
}
@keyframes eyebrow-gilt-pulse {
  0%   { text-shadow: 0 0 0 rgba(236, 197, 143, 0); }
  40%  { text-shadow: 0 0 22px rgba(236, 197, 143, 0.55); }
  100% { text-shadow: 0 0 12px rgba(236, 197, 143, 0.25); }
}

@media (prefers-reduced-motion: reduce) {
  .eyebrow.is-revealed { animation: none !important; }
  .eyebrow::before { transition: none !important; }
}
[data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0);
}

/* For headlines specifically — slightly longer travel + drop shadow during reveal */
[data-reveal="headline"] {
  transform: translateY(28px);
}

/* For cards — same motion but lifted shadow during settle */
[data-reveal="card"] {
  transform: translateY(24px) scale(0.985);
}
[data-reveal="card"].is-revealed {
  transform: translateY(0) scale(1);
}

/* ---------- 2. Hero cinematic entrance ----------
   Trigger fires once on load. Cascade: rating → title (per-line mask reveal)
   → lede paragraph (mask reveal) → bar → stats. The title and paragraph use
   clip-path masks instead of a block-level fade so each line sweeps in like
   an editorial title card, pairing naturally with a video backdrop. */
.hero-rating,
.hero-booking,
.hero-stats--below,
.hero-trustline {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity 1100ms var(--ease-standard),
    transform 1100ms var(--ease-standard);
}
.hero.is-loaded .hero-rating       { opacity: 1; transform: none; transition-delay: 120ms; }
.hero.is-loaded .hero-booking      { opacity: 1; transform: none; transition-delay: 420ms; }
.hero.is-loaded .hero-stats--below { opacity: 1; transform: none; transition-delay: 560ms; }
.hero.is-loaded .hero-trustline    { opacity: 1; transform: none; transition-delay: 680ms; }

/* === Per-line mask reveal for the H1 and paragraph ===
   Each child line hides behind a right-side inset mask, then sweeps clear
   left→right with a subtle up-translate. Cinematic title-card feel that
   pairs naturally with a video backdrop. */
.hero-title { opacity: 1; }
.hero-title__lede,
.hero-title__line,
.hero-lede {
  display: block;
  opacity: 0;
  clip-path: inset(0 100% -0.2em 0);
  transform: translateY(8px);
  transition:
    clip-path 1100ms cubic-bezier(.55, 0, .15, 1),
    opacity 600ms cubic-bezier(.4, 0, .2, 1),
    transform 1100ms cubic-bezier(.2, .7, .2, 1);
  will-change: clip-path, opacity, transform;
}
/* lede chip uses inline-flex for its bracketing hairlines — restore at end-state */
.hero-title__lede { display: inline-flex; }

.hero.is-loaded .hero-title__lede {
  clip-path: inset(0 0 -0.2em 0); opacity: 0.95; transform: none;
  transition-delay: 200ms;
}
.hero.is-loaded .hero-title__line:nth-child(2) {
  clip-path: inset(0 0 -0.2em 0); opacity: 1; transform: none;
  transition-delay: 420ms;
}
.hero.is-loaded .hero-title__line:nth-child(3) {
  clip-path: inset(0 0 -0.2em 0); opacity: 1; transform: none;
  transition-delay: 640ms;
}
.hero.is-loaded .hero-lede {
  clip-path: inset(0 0 -0.2em 0); opacity: 1; transform: none;
  transition-delay: 880ms;
}

/* === Bronze backlight bloom on the italic line ===
   A warm radial glow blooms once behind "Defined by Luxury." after the line
   has finished revealing. Decays back to zero so it never sits on the page. */
.hero-title em {
  position: relative;
  display: inline-block;
  isolation: isolate;
}
.hero-title em::before {
  content: "";
  position: absolute;
  inset: -0.4em -0.7em;
  background:
    radial-gradient(ellipse at center,
      rgba(217, 174, 116, 0.42) 0%,
      rgba(217, 174, 116, 0.18) 40%,
      transparent 70%);
  opacity: 0;
  z-index: -1;
  pointer-events: none;
  border-radius: 50%;
  filter: blur(8px);
}
.hero.is-loaded .hero-title em::before {
  animation: hero-italic-bloom 1700ms cubic-bezier(.4, 0, .2, 1) 1100ms forwards;
}
@keyframes hero-italic-bloom {
  0%   { opacity: 0; transform: scale(0.55); }
  35%  { opacity: 1; transform: scale(1.00); }
  100% { opacity: 0; transform: scale(1.18); }
}

/* Vehicle stage gets a slight slide-from-right plus a backlight pulse on entry */
.hero-stage {
  opacity: 0;
  transform: translateX(40px);
  transition:
    opacity 1300ms var(--ease-standard),
    transform 1300ms var(--ease-standard);
}
.hero.is-loaded .hero-stage { opacity: 1; transform: none; transition-delay: 340ms; }

/* ---------- 2b. Subpage hero cinematic entrance ----------
   Pure-CSS and auto-plays once on load — no JS class dependency — so it fires
   reliably no matter when the React subpage mounts or re-renders. Mirrors the
   homepage hero's editorial cascade: crumbs → eyebrow → masked title → lede →
   CTA, with a bronze underline drawn under the italic word. */
@keyframes sp-hero-rise {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}
@keyframes sp-hero-title-in {
  from { opacity: 0; clip-path: inset(0 100% -0.2em 0); transform: translateY(10px); }
  to   { opacity: 1; clip-path: inset(0 0 -0.2em 0); transform: none; }
}
@keyframes sp-hero-underline {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
.sp-hero .sp-crumbs { animation: sp-hero-rise 1000ms var(--ease-standard) 100ms both; }
.sp-hero .eyebrow {
  animation:
    sp-hero-rise 1000ms var(--ease-standard) 240ms both,
    eyebrow-gilt-pulse 1400ms cubic-bezier(.4,0,.2,1) 620ms;
}
.sp-hero-title {
  animation: sp-hero-title-in 1200ms cubic-bezier(.55,0,.15,1) 360ms both;
  will-change: opacity, clip-path, transform;
}
.sp-hero-lede { animation: sp-hero-rise 1100ms var(--ease-standard) 660ms both; }
.sp-hero-cta  { animation: sp-hero-rise 1100ms var(--ease-standard) 840ms both; }

/* Italic word in the subpage H1 draws a bronze underline, like the homepage */
.sp-hero-title em { position: relative; display: inline-block; }
.sp-hero-title em::after {
  content: "";
  position: absolute; left: 0; bottom: -0.04em; height: 1px;
  width: 100%; background: var(--terra); transform-origin: left center;
  opacity: 0.9;
  animation: sp-hero-underline 1400ms cubic-bezier(.55,0,.15,1) 1100ms both;
}

/* Failsafe — a stalled animation timeline (backgrounded tab, throttled load)
   can park a keyframe on its first/hidden frame. A wall-clock timeout in
   animations.js adds .is-loaded ~2.5s in, which snaps the hero fully visible so
   it can never remain blank. For a normal foreground load the entrance has
   already finished by then, so this is a no-op and the motion is preserved. */
.sp-hero.is-loaded .sp-crumbs,
.sp-hero.is-loaded .eyebrow,
.sp-hero.is-loaded .sp-hero-title,
.sp-hero.is-loaded .sp-hero-lede,
.sp-hero.is-loaded .sp-hero-cta {
  animation: none; opacity: 1; transform: none; clip-path: none;
}
.sp-hero.is-loaded .sp-hero-title em::after { animation: none; transform: scaleX(1); }

@media (prefers-reduced-motion: reduce) {
  .sp-hero .sp-crumbs,
  .sp-hero .eyebrow,
  .sp-hero-title,
  .sp-hero-lede,
  .sp-hero-cta,
  .sp-hero-title em::after {
    animation: none !important; opacity: 1 !important;
    transform: none !important; clip-path: none !important;
  }
}

/* ---------- 3. Headline italic — animated bronze underline draw ----------
   When the headline is revealed, draw a 2px bronze underline beneath every
   <em> element. Like a hand-pulled mark. */
.h-section em,
.h-display em,
.hero-title em,
.fleet-detail h3 em,
.moment figcaption h3 em {
  position: relative;
  display: inline-block;
}
.h-section em::after,
.h-display em::after,
.hero-title em::after,
.fleet-detail h3 em::after,
.moment figcaption h3 em::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0.02em; height: 1px;
  width: 22%;
  background: var(--gold);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 1100ms var(--ease-standard);
  transition-delay: 600ms;
  opacity: 0.9;
}
.is-revealed .h-section em::after,
.is-revealed .h-display em::after,
.is-revealed.h-section em::after,
.is-revealed.h-display em::after,
.hero.is-loaded .hero-title em::after,
.fleet-detail h3 em::after,           /* fleet em is always considered "in" once Fleet section reveals */
.moment.is-revealed figcaption h3 em::after { transform: scaleX(1); }

/* Hero italic underline — full-width travel across "Defined by Luxury."
   Starts hairline-thin from the left edge of the em and races to the end. */
.hero-title em::after {
  width: 100%;
  bottom: -0.04em;
  transition: transform 1500ms cubic-bezier(.55, 0, .15, 1);
  transition-delay: 1100ms;
}

/* ---------- 4. Press marquee — infinite horizontal scroll ----------
   The script duplicates the press-logos children, so the inner track
   contains two copies. Slide -50% over 38s linear for slow editorial pace. */
.press-logos {
  overflow: hidden;
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.press-logos__track {
  display: flex;
  gap: 56px;
  flex-wrap: nowrap;
  align-items: center;
  width: max-content;
  animation: press-scroll 42s linear infinite;
}
.press-logos__track:hover { animation-play-state: paused; }
@keyframes press-scroll {
  to { transform: translateX(-50%); }
}

/* ---------- 5. Moment image curtain reveal ----------
   When .moment enters viewport, its <img> reveals via clip-path slide
   plus a soft bronze veil that sweeps off. */
.moment-frame img {
  clip-path: inset(0 100% 0 0);
  transform: scale(1.08);
  transition:
    clip-path 1400ms var(--ease-standard),
    transform 2400ms var(--ease-standard);
}
.moment.is-revealed .moment-frame img {
  clip-path: inset(0 0 0 0);
  transform: scale(1);
}
.moment-frame::before {
  /* bronze curtain that sweeps left → right on top of the image */
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, var(--gold) 0%, var(--gold-bright) 50%, var(--gold-deep) 100%);
  z-index: 3;
  transform-origin: right center;
  transform: scaleX(1);
  transition: transform 1100ms cubic-bezier(.55, 0, .2, 1);
}
.moment.is-revealed .moment-frame::before {
  transform: scaleX(0);
  transition-delay: 180ms;
}

/* ---------- 6. CTA hover & click — restrained polish ----------
   No magnetic pull, no brightness flash. Three quiet cues:
     · 1px lift on hover with a softer-but-warmer drop shadow,
     · a slow bronze sheen that sweeps across the surface once on hover,
     · a press-down state on click.
   The buttons feel like polished brass that catches the light, not springs. */
.btn--gold,
.btn--primary,
.hb-cta-bar {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition:
    transform 280ms cubic-bezier(.2, .7, .2, 1),
    box-shadow 280ms ease,
    filter 240ms ease;
}

/* The sheen is a diagonal cream highlight that lives offscreen-left and
   slides across when the button is hovered. Rests off; runs once on enter. */
.btn--gold::after,
.btn--primary::after,
.hb-cta-bar::after {
  content: "";
  position: absolute;
  top: 0; left: -120%;
  width: 60%; height: 100%;
  background: linear-gradient(105deg,
    transparent 0%,
    rgba(255, 250, 240, 0.28) 45%,
    rgba(255, 250, 240, 0.42) 50%,
    rgba(255, 250, 240, 0.28) 55%,
    transparent 100%);
  pointer-events: none;
  z-index: 1;
  transform: skewX(-18deg);
  transition: left 700ms cubic-bezier(.4, 0, .2, 1);
}

.btn--gold:hover,
.btn--primary:hover,
.hb-cta-bar:hover {
  transform: translateY(-1px);
  filter: brightness(0.97);
  box-shadow:
    0 1px 2px rgba(0,0,0,0.25),
    0 18px 36px -10px rgba(160,106,56,0.55);
}
.btn--gold:hover::after,
.btn--primary:hover::after,
.hb-cta-bar:hover::after { left: 120%; }

.btn--gold:active,
.btn--primary:active,
.hb-cta-bar:active {
  transform: translateY(1px) scale(0.985);
  filter: brightness(0.92);
  box-shadow:
    inset 0 1px 2px rgba(0,0,0,0.25),
    0 1px 2px rgba(0,0,0,0.20);
  transition: transform 80ms ease, box-shadow 120ms ease, filter 80ms ease;
}

/* Ghost variants — bronze inner glow on hover, the only animation */
.btn--ghost,
.btn--ghost-dark {
  position: relative;
  transition:
    color 280ms ease,
    border-color 280ms ease,
    box-shadow 320ms ease,
    transform 80ms ease;
}
.btn--ghost:hover,
.btn--ghost-dark:hover {
  box-shadow: inset 0 0 0 1px rgba(217, 174, 116, 0.22),
              0 10px 24px -12px rgba(0, 0, 0, 0.40);
}
.btn--ghost:active,
.btn--ghost-dark:active {
  transform: translateY(1px);
  box-shadow: inset 0 1px 2px rgba(0,0,0,0.18);
}

/* Respect reduced-motion: no sheen sweep, no lift */
@media (prefers-reduced-motion: reduce) {
  .btn--gold::after,
  .btn--primary::after,
  .hb-cta-bar::after { display: none; }
  .btn--gold:hover,
  .btn--primary:hover,
  .hb-cta-bar:hover { transform: none; }
}

/* ---------- 7. Number counter — already styled; just smooth the change ---------- */
[data-count-to] {
  font-variant-numeric: tabular-nums;
  transition: color 320ms;
}

/* ---------- 8. Body link inline underline draw ----------
   For any anchor inside copy that's NOT a button or nav-link. */
.lede a:not(.btn),
.faq-a a:not(.btn),
.contact-row a {
  position: relative;
  background-image: linear-gradient(90deg, currentColor, currentColor);
  background-size: 0% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size 350ms var(--ease-standard);
  text-decoration: none;
}
.lede a:not(.btn):hover,
.faq-a a:not(.btn):hover,
.contact-row a:hover { background-size: 100% 1px; }

/* ---------- 9. Section header lift on reveal — bronze hairline emerges first ---------- */
.services-header,
.fleet-header,
.events-header,
.moments-header,
.cities-header,
.advisors-copy,
.pricing-header,
.testi-header,
.faq-header { position: relative; }

/* ---------- 10. Stat number tick-in for the hero ---------- */
.hero-stats--below .hero-stat .v {
  display: inline-flex; align-items: baseline;
}
.hero-stat .v[data-count-to]::after { content: ""; }

/* ---------- 11. Cursor-follow spotlight on tilt-cards (slow trail) ----------
   The existing tilt-card.js handles rotation; this layer adds a slower bronze
   radial that follows behind the cursor by ~120ms for a luxury "polished suede"
   feel. CSS uses --sx/--sy already set by tilt-card.js (--mx/--my). */
.tilt-card {
  position: relative;
  isolation: isolate;
}
.tilt-card > .tilt-card__shine {
  position: absolute; inset: -1px;
  background: radial-gradient(circle 240px at var(--mx, 50%) var(--my, 50%),
              rgba(217,174,116,0.16), transparent 60%);
  pointer-events: none;
  opacity: 0;
  transition: opacity 480ms var(--ease-standard);
  z-index: 0;
  border-radius: inherit;
}
.tilt-card:hover > .tilt-card__shine { opacity: 1; }

/* ---------- 12. Accessibility — kill everything if user requested ---------- */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal].is-revealed,
  .hero-rating,
  .hero-title,
  .hero-title__lede,
  .hero-title__line,
  .hero-lede,
  .hero-booking,
  .hero-stats--below,
  .hero-trustline,
  .hero-stage,
  .moment-frame img,
  .moment-frame::before {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    transition: none !important;
  }
  .press-logos__track { animation: none !important; }
  .btn--gold, .btn--primary, .hb-cta-bar { transform: none !important; }
}

/* ===== enhancements.css ===== */
/* ============================================================
   ENHANCEMENTS LAYER — masterpiece pass
   Modern luxury web vocabulary the site was still missing.

   Ships:
   1. Page-load bronze curtain reveal (cinematic entry)
   2. Scroll-progress bronze line at top of viewport
   3. Custom bronze cursor companion (desktop only)
   4. Back-to-top floating disc (bronze, breathing glow)
   5. Skip-to-main accessibility link (visible on focus)
   6. Section-divider hairline that draws on scroll-in
   7. Smooth nav state with frosted glass elevation on scroll
   ============================================================ */

/* ---------- 1. Page-load curtain ---------- */
.page-curtain {
  position: fixed; inset: 0;
  z-index: 9999;
  pointer-events: none;
  display: grid; place-items: center;
  background: var(--bg, #3A2C22);
  transform-origin: top;
  animation: curtain-lift 1500ms cubic-bezier(.7, 0, .2, 1) forwards;
  animation-delay: 250ms;
}
.page-curtain::before {
  /* horizontal bronze line that splits the curtain top→bottom */
  content: ""; position: absolute; top: 50%; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold, #D9AE74), transparent);
  opacity: 0.85;
  transform: scaleX(0);
  transform-origin: center;
  animation: curtain-line 1100ms cubic-bezier(.4,0,.2,1) forwards;
}
.page-curtain__mark {
  font-family: var(--font-display);
  font-weight: 400; font-size: 26px;
  letter-spacing: 0.36em; text-transform: uppercase;
  color: var(--fg, #FAF1DD);
  opacity: 0;
  animation: curtain-mark 900ms var(--ease-standard) forwards;
  animation-delay: 200ms;
}
.page-curtain__mark sup {
  font-family: 'Outfit', 'Helvetica Neue', sans-serif;
  font-size: 11px; font-weight: 500;
  letter-spacing: 0.20em; color: var(--gold, #D9AE74);
  vertical-align: 8px; margin-left: 10px;
}
@keyframes curtain-line {
  0%   { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}
@keyframes curtain-mark {
  0%   { opacity: 0; transform: translateY(8px); }
  60%  { opacity: 1; transform: translateY(0); }
  90%  { opacity: 1; }
  100% { opacity: 0; transform: translateY(-4px); }
}
@keyframes curtain-lift {
  0%   { clip-path: inset(0 0 0 0); }
  100% { clip-path: inset(0 0 100% 0); }
}
.is-loaded .page-curtain { display: none; }
@media (prefers-reduced-motion: reduce) {
  .page-curtain { animation: none; opacity: 0; }
  .page-curtain__mark, .page-curtain::before { animation: none; }
}

/* ---------- 2. Scroll-progress bronze line ---------- */
.scroll-progress {
  position: fixed; top: 0; left: 0;
  width: 100%; height: 2px;
  z-index: 9000;
  pointer-events: none;
  background: rgba(217,174,116,0.10);
}
.scroll-progress::before {
  content: ""; position: absolute; top: 0; left: 0; height: 100%;
  width: var(--scroll-progress, 0%);
  background: linear-gradient(90deg, var(--gold, #D9AE74), var(--gold-bright, #ECC58F), var(--gold, #D9AE74));
  box-shadow: 0 0 8px rgba(217,174,116,0.45);
  transition: width 80ms linear;
}

/* ---------- 3. Custom cursor companion (desktop only) ---------- */
@media (hover: hover) and (pointer: fine) {
  body.cursor-on, body.cursor-on * { cursor: none !important; }
  .custom-cursor {
    position: fixed; top: 0; left: 0;
    width: 32px; height: 32px;
    border: 1px solid var(--gold, #D9AE74);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9500;
    transform: translate(-50%, -50%);
    transition: width 220ms var(--ease-standard),
                height 220ms var(--ease-standard),
                border-color 220ms ease,
                background-color 220ms ease;
    mix-blend-mode: difference;
    opacity: 0;
  }
  .custom-cursor.is-active { opacity: 1; }
  .custom-cursor__dot {
    position: fixed; top: 0; left: 0;
    width: 4px; height: 4px;
    background: var(--gold-bright, #ECC58F);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9501;
    transform: translate(-50%, -50%);
    transition: width 180ms, height 180ms;
    opacity: 0;
  }
  .custom-cursor__dot.is-active { opacity: 1; }
  /* Hover state — over a clickable target, ring expands and fills slightly */
  body.cursor-link .custom-cursor {
    width: 56px; height: 56px;
    background: rgba(217,174,116,0.10);
    border-color: var(--gold-bright, #ECC58F);
  }
  body.cursor-link .custom-cursor__dot { width: 0; height: 0; }
  /* Over text — shrink to a fine I-beam-style point */
  body.cursor-text .custom-cursor { width: 6px; height: 18px; border-radius: 1px; }
  body.cursor-text .custom-cursor__dot { opacity: 0; }
}
@media (prefers-reduced-motion: reduce), (hover: none) {
  .custom-cursor, .custom-cursor__dot { display: none; }
  body.cursor-on, body.cursor-on * { cursor: auto !important; }
}

/* ---------- 4. Back-to-top disc ---------- */
.to-top {
  position: fixed; bottom: 32px; right: 32px;
  z-index: 80;
  width: 48px; height: 48px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--gold, #D9AE74);
  color: #2A1E12;
  border: 0; cursor: pointer;
  border-radius: 50%;
  font-family: 'Spectral', serif; font-size: 18px;
  box-shadow:
    0 1px 2px rgba(0,0,0,0.30),
    0 14px 32px -10px rgba(217,174,116,0.55),
    inset 0 1px 0 rgba(255,255,255,0.30);
  transform: translateY(20px) scale(0.85);
  opacity: 0;
  pointer-events: none;
  transition: all 420ms var(--ease-standard);
}
.to-top.is-visible {
  transform: translateY(0) scale(1);
  opacity: 1;
  pointer-events: auto;
  animation: top-breathe 3.6s ease-in-out infinite;
}
@keyframes top-breathe {
  0%, 100% { box-shadow: 0 1px 2px rgba(0,0,0,0.30), 0 14px 32px -10px rgba(217,174,116,0.45), inset 0 1px 0 rgba(255,255,255,0.30); }
  50%      { box-shadow: 0 1px 2px rgba(0,0,0,0.30), 0 20px 44px -10px rgba(217,174,116,0.75), inset 0 1px 0 rgba(255,255,255,0.30); }
}
.to-top:hover {
  background: var(--gold-bright, #ECC58F);
  transform: translateY(-4px) scale(1.04);
}
.to-top:active { transform: translateY(-2px) scale(0.98); }
.to-top svg { display: block; }
@media (max-width: 720px) { .to-top { bottom: 18px; right: 18px; } }

/* ---------- 5. Skip to main accessibility link ---------- */
.skip-link {
  position: fixed; top: -100px; left: 16px;
  z-index: 9999;
  padding: 12px 20px;
  background: var(--gold, #D9AE74);
  color: #2A1E12;
  font-family: 'Outfit', sans-serif; font-size: 11px;
  font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
  text-decoration: none;
  border-radius: var(--radius);
  transition: top 220ms ease;
}
.skip-link:focus { top: 16px; outline: 2px solid var(--gold-bright, #ECC58F); outline-offset: 3px; }

/* ---------- 6. Nav elevation on scroll ---------- */
.nav { transition: background 320ms ease, box-shadow 320ms ease, border-color 320ms ease; }
.nav.is-scrolled {
  background: rgba(31, 24, 18, 0.95) !important;
  backdrop-filter: blur(8px) saturate(160%);
  -webkit-backdrop-filter: blur(8px) saturate(160%);
  box-shadow: 0 1px 0 rgba(217,174,116,0.18),
              0 10px 40px -10px rgba(0,0,0,0.45);
}

/* ---------- 7. Section bronze hairline that draws on scroll ----------
   Add data-section-hairline to any section header you want to flag.
   The polish layer already gives the cream-section seam; this is the
   on-camel version. */
[data-section-hairline] {
  position: relative;
}
[data-section-hairline]::before {
  content: ""; position: absolute; top: 0; left: 0; height: 1px;
  width: 0; max-width: 240px;
  background: linear-gradient(90deg, var(--gold), transparent);
  opacity: 0.55;
  transition: width 1000ms var(--ease-standard);
}
[data-section-hairline].is-revealed::before { width: 240px; }

/* ---------- 8. Floating concierge dot — subtle "ready for you" cue ---------- */
.concierge-cue {
  position: fixed; left: 32px; bottom: 32px;
  z-index: 75;
  display: inline-flex; align-items: center; gap: 10px;
  background: rgba(20,14,9,0.78);
  backdrop-filter: blur(8px) saturate(160%);
  -webkit-backdrop-filter: blur(8px) saturate(160%);
  border: 1px solid rgba(217,174,116,0.30);
  padding: 10px 16px 10px 14px;
  border-radius: var(--radius-pill);
  color: var(--fg, #FAF1DD);
  font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transform: translateY(60px);
  opacity: 0;
  transition: all 480ms var(--ease-standard);
  box-shadow: 0 14px 36px -10px rgba(0,0,0,0.55);
}
.concierge-cue.is-visible { transform: translateY(0); opacity: 1; }
.concierge-cue::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%;
  background: #4FBE7A; flex: 0 0 auto;
  box-shadow: 0 0 0 0 rgba(79,190,122,0.6);
  animation: cue-pulse 2.4s ease-out infinite;
}
@keyframes cue-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(79,190,122,0.55); }
  80%  { box-shadow: 0 0 0 9px rgba(79,190,122,0); }
  100% { box-shadow: 0 0 0 0 rgba(79,190,122,0); }
}
.concierge-cue:hover {
  border-color: var(--gold-bright, #ECC58F);
  color: var(--gold-bright, #ECC58F);
}
@media (max-width: 720px) { .concierge-cue { left: 16px; bottom: 16px; } }

/* ---------- 9. Section depth — soft parallax via CSS var injected by JS ---------- */
.hero-bg { transform: translate3d(0, var(--hero-parallax, 0px), 0); transition: none; will-change: transform; }
.moment-frame img { will-change: transform; }

/* ---------- 10. Focus visible polish — already handled in polish.css; reinforce ---------- */
.skip-link:focus-visible { outline: 2px solid var(--gold-bright); }

/* ===== subpage.css ===== */
/* =========================================================================
   Subpage system — Services / Fleet / Events / Advisors
   Builds on site.css tokens (--terra, --gold, --fg-ink, --bg-elev, --hairline-ink)
   and shared utility classes (.container, .eyebrow, .h-section, .lede).
   ========================================================================= */

.subpage { min-height: 100vh; background: transparent; position: relative; }

/* ───────────────────── HERO ─────────────────────────────────────────── */
.sp-hero {
  padding: 152px 0 80px;
  position: relative;
  overflow: hidden;
}
.sp-hero::before {
  content: "";
  position: absolute; inset: 0; z-index: 1;
  background:
    radial-gradient(ellipse 1100px 600px at 78% 25%, rgba(213,164,114,0.16), transparent 60%),
    radial-gradient(ellipse 800px 500px at 12% 80%, rgba(0,0,0,0.22), transparent 60%);
  pointer-events: none;
}

/* Photographic hero backdrop — each subpage sets its own image inline.
   Sits beneath the bronze accents and the cream copy; a strong bottom-up
   wash keeps the camel palette and the text fully legible. */
.sp-hero__bg {
  position: absolute; inset: 0; z-index: 0;
  background-size: cover; background-position: center;
  filter: saturate(0.85) contrast(1.05);
  opacity: 0.42;
  pointer-events: none;
  transform: translate3d(0, var(--hero-parallax, 0px), 0);
  will-change: transform;
}
.sp-hero__bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(58,44,34,0.52) 0%, rgba(58,44,34,0.90) 70%, var(--bg) 100%),
    radial-gradient(ellipse 900px 500px at 72% 12%, rgba(217,174,116,0.16), transparent 60%);
}
.no-imagery .sp-hero__bg { display: none; }
.sp-hero-inner { position: relative; z-index: 2; }

.sp-crumbs {
  display: flex; width: fit-content; align-items: center; gap: 12px;
  font-family: var(--font-sans);
  font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
  margin-bottom: 28px;
}
.sp-crumbs a { color: var(--fg-ink-muted); text-decoration: none; transition: color 240ms; }
.sp-crumbs a:hover { color: var(--terra); }
.sp-crumbs .sep { color: var(--terra); }

.sp-hero-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(30px, 2.6vw, 36px);
  line-height: 1.06; letter-spacing: -0.014em;
  color: var(--fg-ink); margin: 24px 0 0;
  text-wrap: balance; max-width: 22ch;
}
.sp-hero-title em { font-style: italic; color: var(--terra); }
@media (max-width: 640px) {
  .sp-hero-title { font-size: clamp(28px, 7.5vw, 42px); }
}

.sp-hero-lede {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 19px; line-height: 1.6;
  color: var(--fg-ink-muted);
  margin: 32px 0 0;
  max-width: 60ch;
}

.sp-hero-cta {
  display: flex; flex-wrap: wrap; gap: 14px;
  margin: 40px 0 0;
}

/* Stats strip beneath the hero copy */
.sp-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 64px;
  border-top: 1px solid var(--hairline-ink-strong);
  border-bottom: 1px solid var(--hairline-ink-strong);
}
.sp-stat {
  padding: 32px 24px;
  border-right: 1px solid var(--hairline-ink);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 14px;
}
.sp-stat:last-child { border-right: 0; }
.sp-stat .k {
  font-family: var(--font-sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
}
.sp-stat .v {
  font-family: var(--font-display); font-weight: 400;
  font-size: 36px; line-height: 1.0;
  letter-spacing: -0.018em; color: var(--fg-ink);
  margin-top: 0;
}
.sp-stat .v em { font-style: italic; color: var(--terra); }

/* Secondary flourish: the number rises + settles just after its box
   reveals. Gated on [data-reveal] (added by animations.js) so the value
   is always visible if JS is disabled. */
.sp-stat[data-reveal] .v {
  transition: opacity 720ms ease, transform 720ms cubic-bezier(.2,.7,.2,1);
  transition-delay: calc(var(--reveal-delay, 0ms) + 140ms);
  will-change: transform, opacity;
}
.sp-stat[data-reveal]:not(.is-revealed) .v {
  opacity: 0;
  transform: translateY(12px) scale(0.94);
}
@media (prefers-reduced-motion: reduce) {
  .sp-stat[data-reveal] .v { transition: none; opacity: 1; transform: none; }
}
@media (max-width: 900px) {
  .sp-stats { grid-template-columns: repeat(2, 1fr); }
  .sp-stat:nth-child(2) { border-right: 0; }
  .sp-stat:nth-child(-n+2) { border-bottom: 1px solid var(--hairline-ink); }
}

/* ───────────────────── DETAIL SECTION ───────────────────────────────── */
.sp-section { padding: 110px 0; position: relative; }
.sp-section + .sp-section { border-top: 1px solid var(--hairline-ink); }
.sp-section--deep { background: rgba(0, 0, 0, 0.18); }

.sp-shead {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: end;
  margin-bottom: 56px;
}
.sp-shead p { margin: 0; }
@media (max-width: 900px) { .sp-shead { grid-template-columns: 1fr; gap: 24px; } }

/* ───────────────────── INCLUDED GRID ────────────────────────────────── */
.sp-included {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--hairline-ink);
  border: 1px solid var(--hairline-ink);
}
.sp-included-item {
  padding: 32px 28px;
  background: var(--bg-elev);
  display: flex; flex-direction: column; gap: 12px;
  position: relative;
  transition: background 320ms ease;
}
.sp-included-item:hover { background: rgba(213,164,114,0.04); }
.sp-included-no {
  font-family: var(--font-display); font-style: italic;
  font-size: 13px; color: var(--terra);
}
.sp-included-name {
  font-family: var(--font-display); font-weight: 400;
  font-size: 22px; line-height: 1.15; letter-spacing: -0.012em;
  color: #FFFFFF; margin: 0;
}
.sp-included-desc {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 13px; line-height: 1.6;
  color: rgba(255,255,255,0.78); margin: 0;
}
@media (max-width: 900px) { .sp-included { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .sp-included { grid-template-columns: 1fr; } }

/* ───────────────────── PROCESS STEPS ────────────────────────────────── */
.sp-steps {
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: 24px;
}
.sp-step {
  position: relative;
  padding: 28px 22px 22px;
  border-top: 1px solid var(--hairline-ink-strong);
}
.sp-step::before {
  content: ""; position: absolute; top: -1px; left: 0; width: 24px; height: 2px;
  background: var(--terra);
}
.sp-step-no {
  font-family: var(--font-display); font-style: italic;
  font-size: 13px; color: var(--terra);
  letter-spacing: 0.04em;
}
.sp-step-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: 22px; line-height: 1.15; letter-spacing: -0.01em;
  color: var(--fg-ink); margin: 14px 0 12px;
}
.sp-step-desc {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 13px; line-height: 1.6;
  color: var(--fg-ink-muted); margin: 0;
}
@media (max-width: 1080px) { .sp-steps { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px)  { .sp-steps { grid-template-columns: 1fr; } }

/* ───────────────────── SPEC TABLE ───────────────────────────────────── */
.sp-spec {
  width: 100%; border-collapse: collapse;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  font-family: var(--font-sans);
}
.sp-spec thead th {
  text-align: left;
  font-size: 10px; font-weight: 600;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--terra);
  padding: 20px 22px;
  border-bottom: 1px solid var(--hairline-ink-strong);
  background: rgba(0,0,0,0.18);
}
.sp-spec tbody td {
  padding: 22px 22px;
  border-bottom: 1px solid var(--hairline-ink);
  font-size: 14px; font-weight: 300;
  color: var(--fg-ink-muted);
  vertical-align: top;
}
.sp-spec tbody td:first-child {
  font-family: var(--font-display); font-weight: 400; font-style: italic;
  font-size: 18px; color: var(--fg-ink);
  letter-spacing: -0.01em;
}
.sp-spec tbody tr:last-child td { border-bottom: 0; }
.sp-spec tbody tr:hover td { background: rgba(213,164,114,0.04); }
@media (max-width: 720px) {
  .sp-spec { display: block; overflow-x: auto; white-space: nowrap; }
}

/* ───────────────────── CASE / FEATURE CARDS ─────────────────────────── */
.sp-cards {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.sp-card {
  padding: 32px 28px;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
  display: flex; flex-direction: column; gap: 14px;
  position: relative;
  transition: border-color 360ms ease, transform 480ms cubic-bezier(.2,.7,.2,1), box-shadow 480ms ease;
}
.sp-card:hover {
  border-color: var(--terra);
  transform: translateY(-3px);
  box-shadow: 0 32px 64px -28px rgba(0,0,0,0.55);
}
.sp-card-tag {
  font-family: var(--font-sans); font-size: 9px; font-weight: 600;
  letter-spacing: 0.26em; text-transform: uppercase;
  color: var(--terra);
}
.sp-card-name {
  font-family: var(--font-display); font-weight: 400;
  font-size: 22px; line-height: 1.15; letter-spacing: -0.012em;
  color: var(--fg-ink); margin: 0;
}
.sp-card-name em { font-style: italic; color: var(--terra); }
.sp-card-body {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 13px; line-height: 1.6;
  color: var(--fg-ink-muted); margin: 0; flex: 1;
}
.sp-card-meta {
  margin-top: 8px; padding-top: 14px;
  border-top: 1px solid var(--hairline-ink);
  display: flex; gap: 18px;
  font-family: var(--font-sans); font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fg-ink-subtle);
}
.sp-card-meta strong { color: var(--terra); font-weight: 600; }
@media (max-width: 1000px) { .sp-cards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px)  { .sp-cards { grid-template-columns: 1fr; } }

/* ───────────────────── TWO-COL SPLIT ────────────────────────────────── */
.sp-split {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: start;
}
.sp-split--reverse > :first-child { order: 2; }
.sp-split-media {
  height: 460px; position: relative; overflow: hidden;
  background: var(--bg-elev);
  border: 1px solid var(--hairline-ink);
}
.sp-split-media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: saturate(0.92) brightness(0.92) contrast(1.05);
}
.sp-split-media::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--terra), transparent);
  z-index: 2;
}
.sp-list {
  list-style: none; padding: 0; margin: 18px 0 0;
  display: flex; flex-direction: column; gap: 14px;
}
.sp-list li {
  display: grid; grid-template-columns: 18px 1fr; gap: 14px;
  align-items: baseline;
  font-family: var(--font-sans); font-weight: 300; font-size: 15px;
  line-height: 1.55; color: var(--fg-ink-muted);
}
.sp-list li::before {
  content: "—"; color: var(--terra);
  font-family: var(--font-display); font-size: 16px;
}
@media (max-width: 900px) {
  .sp-split { grid-template-columns: 1fr; gap: 40px; }
  .sp-split--reverse > :first-child { order: 0; }
  .sp-split-media { height: 320px; }
}

/* ───────────────────── FINAL CTA STRIP ──────────────────────────────── */
.sp-cta {
  padding: 100px 0;
  background:
    radial-gradient(ellipse 900px 400px at 50% 50%, rgba(217,174,116,0.12), transparent 60%),
    transparent;
  border-top: 1px solid rgba(250,241,221,0.12);
  border-bottom: 1px solid rgba(250,241,221,0.12);
  text-align: center;
}
.sp-cta-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(28px, 3.4vw, 41px);
  line-height: 1.06; letter-spacing: -0.012em;
  color: #FFFFFF; margin: 0 auto;
  text-wrap: balance; max-width: 22ch;
}
.sp-cta-title em { font-style: italic; color: #D9AE74; }
.sp-cta-lede {
  font-family: var(--font-sans); font-weight: 300;
  font-size: 17px; line-height: 1.55;
  color: #F4EFE6; max-width: 56ch;
  margin: 24px auto 32px;
}
.sp-cta-row { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
/* ghost button reads cream on the espresso CTA */
.sp-cta .btn--ghost { color: #FFFFFF; border-color: rgba(250,241,221,0.32); }
.sp-cta .btn--ghost:hover { color: #D9AE74; border-color: #D9AE74; }

/* =========================================================================
   SUBPAGE COLOUR COORDINATION — espresso grounds, espresso content boxes
   (matches the homepage dark motif). Applies to Services, Fleet, About,
   Events, Advisors and any page built on the .sp-* system.
   Cards are espresso #4D3826 with hairline cream edges; text is cream;
   accents are gold. Never dark text on dark.
   ========================================================================= */
.sp-included-item, .sp-card, .sp-spec, .sp-split-media {
  background: #4D3826 !important;
  border-color: rgba(250,241,221,0.12) !important;
  --fg: #FFFFFF; --fg-ink: #FFFFFF; --fg-muted: #F4EFE6;
  --fg-ink-muted: #F4EFE6; --fg-ink-subtle: #E6DCCB; --fg-subtle: #E6DCCB;
  --terra: #D9AE74; --terra-deep: #D9AE74; --terra-bright: #ECC58F; --gold: #D9AE74;
  --hairline-ink: rgba(250,241,221,0.12); --hairline-ink-strong: rgba(250,241,221,0.22);
}
.sp-included { background: rgba(250,241,221,0.12) !important; border-color: rgba(250,241,221,0.12) !important; }
.sp-included-name { color: #FFFFFF !important; }
.sp-included-desc { color: #F4EFE6 !important; }
.sp-included-item:hover, .sp-card:hover { background: #56402C !important; }
.sp-card:hover { box-shadow: 0 28px 60px -30px rgba(0,0,0,0.55) !important; }
.sp-spec thead th { background: #2A1E12 !important; color: #D9AE74 !important; }
.sp-spec tbody td { border-bottom-color: rgba(250,241,221,0.10) !important; }
.sp-spec tbody tr:hover td { background: #56402C !important; }
.sp-split-media { box-shadow: 0 24px 60px -30px rgba(0,0,0,0.5) !important; }

/* ── Audit polish (alignment + contrast), 2026-06-17 ──────────────────── */
/* Advisors "how to join" uses 3 steps; collapse cleanly on mobile
   (replaces an inline repeat(3,1fr) that overrode the breakpoint → 95px scroll) */
.sp-steps--3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 640px) { .sp-steps--3 { grid-template-columns: 1fr; } }

/* Equal-height card rows so the bottoms line up (no ragged columns) */
.sp-cards { grid-auto-rows: 1fr; }

/* Spec table — guarantee bright, legible text on the espresso surface */
.sp-spec { background: #4D3826 !important; }
.sp-spec thead th { background: #2A1E12 !important; color: #ECC58F !important; }
.sp-spec tbody td { color: #F4EFE6 !important; }
.sp-spec tbody td:first-child { color: #FFFFFF !important; }

/* CTA bands standardized to one content width (matches .ac-cta / .lux-cta = 900px) */
.sp-cta .container { max-width: 900px; }

/* ===== signature.css ===== */
/* ============================================================
   SIGNATURE LAYER — bespoke identity for Famous Drive.
   A chauffeur's "instrument cluster": live NYC time, the
   house's GPS coordinates, the current journey leg (scroll-spy),
   a distance odometer, plus a headlight cursor glow.
   Pure overlay — never touches the React tree. Tokens only.
   ============================================================ */

/* ---------- Instrument cluster (bottom console) ---------- */
.fd-dash { display: none; }
@media (min-width: 1024px) {
  .fd-dash {
    display: inline-flex; align-items: center; gap: 0;
    position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%);
    z-index: 60;
    font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--fg-subtle);
    background: rgba(26, 19, 13, 0.62); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    border: 1px solid rgba(250, 241, 221, 0.12); border-radius: var(--radius);
    box-shadow: 0 18px 50px -18px rgba(0,0,0,0.6);
    overflow: hidden;
  }
}
.fd-dash .seg { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; white-space: nowrap; }
.fd-dash .seg + .seg { border-left: 1px solid rgba(250,241,221,0.10); }
.fd-dash b { color: #FFFFFF; font-weight: 500; letter-spacing: 0.10em; }
.fd-dash .accent { color: #D9AE74; }
.fd-dash .num { color: #D9AE74; font-variant-numeric: tabular-nums; letter-spacing: 0.04em; }
.fd-dash .dot {
  width: 6px; height: 6px; border-radius: 50%; background: #D9AE74;
  box-shadow: 0 0 8px rgba(217,174,116,0.8); animation: fdPulse 2.4s infinite;
}
@keyframes fdPulse { 0%{box-shadow:0 0 0 0 rgba(217,174,116,0.5)} 70%{box-shadow:0 0 0 7px rgba(217,174,116,0)} 100%{box-shadow:0 0 0 0 rgba(217,174,116,0)} }

/* ---------- Headlight cursor glow ---------- */
.fd-headlight {
  position: fixed; inset: 0; z-index: 3; pointer-events: none; opacity: 0;
  transition: opacity .7s ease; mix-blend-mode: screen;
  background: radial-gradient(460px circle at var(--hx, 50%) var(--hy, 50%),
    rgba(255,233,194,0.16), rgba(245,210,150,0.05) 38%, transparent 64%);
}
@media (hover: hover) and (pointer: fine) { .fd-headlight.on { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .fd-headlight { display: none !important; } .fd-dash .dot { animation: none; } }

/* ============================================================
   All-dark unification for SUB-PAGES (match the homepage).
   Flips the remaining full-width white "bands" to the dark scope.
   Loads last on every page, so !important + var re-scope wins.
   White CONTENT BOXES (.sp-card etc.) are intentional accents — left as-is.
   ============================================================ */
#tiers, #addons, #faq, .wc-photosec--light {
  background: transparent !important;
  --bg: #6F5640; --bg-card: #4D3826; --bg-elev: #4D3826; --bg-alt: #4D3826;
  --fg: #FFFFFF; --fg-ink: #FFFFFF;
  --fg-muted: #F4EFE6; --fg-subtle: #E6DCCB; --fg-faint: #DCD2C0;
  --fg-ink-muted: #F4EFE6; --fg-ink-subtle: #E6DCCB;
  --gold: #D9AE74; --gold-bright: #ECC58F; --gold-deep: #D9AE74;
  --terra: #D9AE74; --terra-bright: #ECC58F; --terra-deep: #D9AE74; --brass: #D9AE74;
  --hairline: rgba(250,241,221,0.14); --hairline-strong: rgba(250,241,221,0.26);
  --hairline-ink: rgba(250,241,221,0.14); --hairline-ink-strong: rgba(250,241,221,0.26);
  --ink-cream: #FFFFFF; --ink-cream-muted: #F4EFE6; --ink-cream-subtle: #E6DCCB;
}
/* worldcup light break: also neutralize its pale veil so text stays readable on dark */
.wc-photosec--light .wc-bg__veil { background: rgba(42,30,18,0.55) !important; }

/* ===== worldcup-promo.css ===== */
/* =========================================================================
   worldcup-promo.css — homepage popup + floating re-open badge.
   Self-contained; uses site.css tokens where present, with hard fallbacks so
   it also works if loaded before tokens. Loaded on index.html only.
   ========================================================================= */

.wcp-scrim {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(20, 14, 9, 0.66);
  backdrop-filter: blur(6px) saturate(120%);
  -webkit-backdrop-filter: blur(6px) saturate(120%);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  opacity: 0; transition: opacity 420ms cubic-bezier(.16,1,.3,1);
}
.wcp-scrim.is-open { opacity: 1; }

.wcp-modal {
  position: relative;
  width: min(660px, 100%);
  background:
    radial-gradient(ellipse 700px 360px at 80% 0%, rgba(217,174,116,0.16), transparent 60%),
    #4D3826;
  border: 1px solid rgba(217,174,116,0.40);
  box-shadow: 0 40px 100px -20px rgba(0,0,0,0.7);
  padding: 44px 48px 40px;
  transform: translateY(18px) scale(0.985);
  opacity: 0;
  transition: transform 520ms cubic-bezier(.16,1,.3,1), opacity 420ms ease;
}
.wcp-scrim.is-open .wcp-modal { transform: translateY(0) scale(1); opacity: 1; }

.wcp-modal__close {
  position: absolute; top: 18px; right: 18px;
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid rgba(250,241,221,0.24);
  color: #F4EFE6; font-size: 15px; cursor: pointer;
  transition: border-color 220ms, color 220ms;
}
.wcp-modal__close:hover { border-color: #D9AE74; color: #D9AE74; }

.wcp-modal__eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Outfit','Helvetica Neue',Arial,sans-serif;
  font-size: 10px; font-weight: 700; letter-spacing: 0.26em;
  text-transform: uppercase; color: #ECC58F;
}
.wcp-modal__eyebrow::before {
  content: ""; width: 26px; height: 1px; background: #ECC58F;
}
.wcp-modal__pulse {
  width: 7px; height: 7px; border-radius: 50%; background: #ECC58F;
  box-shadow: 0 0 0 0 rgba(236,197,143,0.6);
  animation: wcp-pulse 2.2s infinite;
}
@keyframes wcp-pulse {
  0% { box-shadow: 0 0 0 0 rgba(236,197,143,0.5); }
  70% { box-shadow: 0 0 0 9px rgba(236,197,143,0); }
  100% { box-shadow: 0 0 0 0 rgba(236,197,143,0); }
}

.wcp-modal__title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(26px, 3.6vw, 36px); line-height: 1.06;
  letter-spacing: -0.014em; color: #FFFFFF;
  margin: 18px 0 0; text-wrap: balance;
}
.wcp-modal__title em { font-style: italic; color: #ECC58F; }

.wcp-modal__lede {
  font-family: 'Outfit','Helvetica Neue',Arial,sans-serif; font-weight: 300;
  font-size: 15px; line-height: 1.55; color: #F4EFE6;
  margin: 16px 0 0; max-width: 52ch;
}

/* compact countdown */
.wcp-count { display: flex; align-items: center; gap: 8px; margin: 26px 0 4px; }
.wcp-count__cell {
  background: rgba(20,14,9,0.4); border: 1px solid rgba(250,241,221,0.18);
  padding: 9px 13px 7px; min-width: 58px; text-align: center;
}
.wcp-count__num {
  font-family: var(--font-display); font-size: 26px; line-height: 1;
  color: #FFFFFF; font-variant-numeric: tabular-nums; letter-spacing: -0.01em;
}
.wcp-count__lab {
  font-family: 'Outfit',Arial,sans-serif; font-size: 8px; font-weight: 600;
  letter-spacing: 0.2em; text-transform: uppercase; color: #E6DCCB; margin-top: 6px;
}
.wcp-count__hint {
  font-family: 'Outfit',Arial,sans-serif; font-size: 10px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase; color: #D9AE74;
  margin-left: 6px;
}

/* city chips */
.wcp-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 22px 0 0; }
.wcp-chip {
  font-family: 'Outfit',Arial,sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.06em; color: #F4EFE6;
  border: 1px solid rgba(250,241,221,0.18); padding: 5px 10px;
  white-space: nowrap;
}
.wcp-chip--more { color: #D9AE74; border-color: rgba(217,174,116,0.45); }

.wcp-cta { display: flex; align-items: center; gap: 18px; margin: 30px 0 0; flex-wrap: wrap; }
.wcp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  height: 50px; padding: 0 26px; border: 1px solid #D9AE74;
  background: #D9AE74; color: #2A1E12;
  font-family: 'Outfit',Arial,sans-serif; font-size: 11px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase; text-decoration: none;
  border-radius: var(--radius); cursor: pointer;
  box-shadow: 0 12px 28px -8px rgba(160,106,56,0.5);
  transition: transform 180ms ease;
}
.wcp-btn:active { transform: translateY(1px); }
.wcp-later {
  background: transparent; border: 0; cursor: pointer;
  font-family: 'Outfit',Arial,sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase; color: #E6DCCB;
  transition: color 200ms;
}
.wcp-later:hover { color: #FFFFFF; }

@media (max-width: 560px) {
  .wcp-modal { padding: 36px 24px 30px; }
  .wcp-count__cell { min-width: 48px; padding: 8px 8px 6px; }
}

/* ── Floating re-open badge (bottom-right; concierge cue is bottom-left) ── */
.wcp-badge {
  position: fixed; right: 28px; bottom: 28px; z-index: 80;
  display: inline-flex; align-items: center; gap: 10px;
  height: 46px; padding: 0 18px;
  background: #4D3826; border: 1px solid rgba(217,174,116,0.5);
  color: #FFFFFF; cursor: pointer;
  font-family: 'Outfit',Arial,sans-serif; font-size: 10px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  box-shadow: 0 14px 36px -10px rgba(0,0,0,0.55);
  border-radius: var(--radius);
  transform: translateY(20px); opacity: 0;
  transition: transform 520ms cubic-bezier(.16,1,.3,1), opacity 420ms, border-color 220ms, color 220ms;
}
.wcp-badge.is-visible { transform: translateY(0); opacity: 1; }
.wcp-badge:hover { border-color: #ECC58F; color: #ECC58F; }
.wcp-badge__dot {
  width: 7px; height: 7px; border-radius: 50%; background: #ECC58F;
  box-shadow: 0 0 0 0 rgba(236,197,143,0.6);
  animation: wcp-pulse 2.2s infinite;
}
.wcp-badge__num { color: #ECC58F; }
@media (max-width: 720px) { .wcp-badge { right: 16px; bottom: 76px; } }

/* ============================================================
   World Cup '26 top ribbon (added) — always-visible announcement
   above the nav, with live countdown + Reserve CTA. Dismissible.
   ============================================================ */
:root { --wc-ribbon-h: 0px; }
.wc-ribbon-on { --wc-ribbon-h: 46px; }
.wc-ribbon-on .nav { top: var(--wc-ribbon-h); }
.wc-ribbon-on body { padding-top: var(--wc-ribbon-h); }
html.wc-ribbon-on { scroll-padding-top: calc(var(--wc-ribbon-h) + 78px); }

.wc-ribbon {
  position: fixed; top: 0; left: 0; right: 0; z-index: 95;
  height: var(--wc-ribbon-h, 46px);
  display: flex; align-items: center; justify-content: center; gap: 18px;
  padding: 0 48px 0 18px;
  background: linear-gradient(90deg, #2A1E12 0%, #4D3826 45%, #2A1E12 100%);
  border-bottom: 1px solid var(--hairline-gold, rgba(160,106,56,0.5));
  font-family: 'Outfit', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  transform: translateY(-100%); transition: transform 520ms cubic-bezier(.2,.8,.2,1);
}
.wc-ribbon.is-in { transform: translateY(0); }
.wc-ribbon__link {
  display: flex; align-items: center; gap: 16px;
  text-decoration: none; color: var(--fg, #FAF1DD);
  max-width: 100%; overflow: hidden;
}
.wc-ribbon__pulse {
  width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto;
  background: var(--terra-bright, #ECC58F);
  box-shadow: 0 0 0 0 rgba(236,197,143,0.55);
  animation: wcRibbonPulse 2.2s infinite;
}
@keyframes wcRibbonPulse {
  0% { box-shadow: 0 0 0 0 rgba(236,197,143,0.5); }
  70% { box-shadow: 0 0 0 9px rgba(236,197,143,0); }
  100% { box-shadow: 0 0 0 0 rgba(236,197,143,0); }
}
.wc-ribbon__lead {
  font-size: 12px; letter-spacing: 0.10em; text-transform: uppercase;
  white-space: nowrap; color: var(--fg-muted, #ECD5AD);
}
.wc-ribbon__lead b { color: var(--terra-bright, #ECC58F); font-weight: 600; }
.wc-ribbon__count {
  font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase;
  white-space: nowrap; color: var(--fg, #FAF1DD);
  font-variant-numeric: tabular-nums;
}
.wc-ribbon__count b { color: var(--terra-bright, #ECC58F); font-weight: 600; }
.wc-ribbon__cta {
  font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 600;
  white-space: nowrap; color: #2A1E12;
  background: var(--terra, #D9AE74); padding: 7px 14px; border-radius: var(--radius);
  transition: filter .2s;
}
.wc-ribbon__link:hover .wc-ribbon__cta { filter: brightness(1.07); }
.wc-ribbon__close {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  background: transparent; border: 0; cursor: pointer;
  color: var(--fg-subtle, #E2D0AF); font-size: 15px; line-height: 1; padding: 6px;
}
.wc-ribbon__close:hover { color: var(--fg, #FAF1DD); }

@media (max-width: 880px) {
  .wc-ribbon__lead { display: none; }
}
@media (max-width: 768px) {
  .wc-ribbon-on { --wc-ribbon-h: 42px; }
  .wc-ribbon { gap: 12px; padding: 0 40px 0 14px; }
  .wc-ribbon__cta { padding: 6px 11px; letter-spacing: 0.1em; }
}

/* ===== depth5d.css ===== */
/* ============================================================
   depth5d.css — Famous Drive "5D" depth layer.
   Adds dimension to the EXISTING design (no redesign):
   atmosphere fog + gold dust in depth bands, cinematic vignette,
   depth-of-field scroll reveals, and live 3D card tilt.
   Loaded after polish.css / animations.css. Purely additive.
   ============================================================ */

/* ---------- 1. Atmosphere — fixed scene layers ----------
   Painted above section backgrounds (low alpha, blend) but below
   the booking scrim (z-index 5) and pointer-events: none. */
.d5-atmo {
  position: fixed; inset: -12vh -12vw;
  pointer-events: none; z-index: 2;
  will-change: transform;
}
.d5-atmo--far {
  background:
    radial-gradient(900px 600px at 18% 22%, rgba(213, 164, 114, 0.055), transparent 65%),
    radial-gradient(1100px 700px at 84% 78%, rgba(120, 96, 70, 0.05), transparent 65%);
  mix-blend-mode: screen;
}
.d5-atmo--near {
  background:
    radial-gradient(700px 460px at 70% 18%, rgba(236, 197, 143, 0.045), transparent 60%),
    radial-gradient(820px 540px at 24% 86%, rgba(213, 164, 114, 0.04), transparent 62%);
  mix-blend-mode: screen;
}
.d5-vignette {
  position: fixed; inset: 0;
  pointer-events: none; z-index: 2;
  background: radial-gradient(120% 90% at 50% 42%, transparent 58%, rgba(0, 0, 0, 0.30) 100%);
}

/* ---------- 2. Gold dust — three depth bands ----------
   Far band: small, dim, slow. Near band: larger, brighter, faster.
   Bands are mouse-parallaxed at different rates by depth5d.js. */
.d5-dust {
  position: fixed; inset: -6vh 0;
  pointer-events: none; z-index: 2;
  will-change: transform;
}
.d5-mote {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(236, 197, 143, 0.85), rgba(213, 164, 114, 0) 70%);
  animation: d5-drift var(--d5-dur, 26s) linear infinite;
  animation-delay: var(--d5-delay, 0s);
  opacity: 0;
}
@keyframes d5-drift {
  0%   { transform: translate3d(0, 0, 0);            opacity: 0; }
  8%   { opacity: var(--d5-op, 0.3); }
  86%  { opacity: var(--d5-op, 0.3); }
  100% { transform: translate3d(var(--d5-sway, 18px), -106vh, 0); opacity: 0; }
}

/* ---------- 3. Depth-of-field reveal ----------
   Deepens the existing [data-reveal] system: elements now arrive
   from a far focal plane (translateZ + blur) and settle crisp.
   Same selectors, same .is-revealed trigger — only more depth. */
@media (prefers-reduced-motion: no-preference) {
  [data-reveal] {
    transform: perspective(900px) translateY(20px) translateZ(-48px);
    filter: blur(7px);
    transition:
      opacity 950ms var(--ease-standard),
      transform 950ms var(--ease-standard),
      filter 950ms var(--ease-standard);
    transition-delay: var(--reveal-delay, 0ms);
  }
  [data-reveal="headline"] { transform: perspective(900px) translateY(30px) translateZ(-70px); }
  [data-reveal="card"]     { transform: perspective(900px) translateY(26px) translateZ(-60px) scale(0.982); }
  [data-reveal].is-revealed {
    transform: perspective(900px) translateY(0) translateZ(0) scale(1);
    filter: blur(0);
  }
}

/* ---------- 4. Live 3D tilt for extra card-likes ----------
   .tilt-card already has the full treatment in site.css; depth5d.js
   finally drives its --rx/--ry. .d5-tilt extends the same physics to
   stats, list items and panels that aren't .tilt-card. */
.d5-tilt {
  --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%;
  position: relative;
  transform: perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry));
  transform-style: preserve-3d;
  transition: transform 420ms var(--ease-standard), box-shadow 420ms var(--ease-standard);
}
.d5-tilt::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: radial-gradient(circle 200px at var(--mx) var(--my),
              rgba(213, 164, 114, 0.13), transparent 62%);
  opacity: 0; transition: opacity 300ms; pointer-events: none;
}
.d5-tilt:hover::after { opacity: 1; }
.d5-tilt:hover { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 18px 40px -18px rgba(0, 0, 0, 0.5); }

/* While a card is actively tilting, snap to the pointer (no easing lag) */
.tilt-card.d5-live, .d5-tilt.d5-live { transition-property: box-shadow, border-color; }

/* ---------- 5. Hero depth planes ----------
   depth5d.js drives --d5x/--d5y per plane at different rates.
   Composed via CSS vars so the existing entrance animations finish
   untouched (parallax starts after the entrance settles). */
.d5-plane { transform: translate3d(var(--d5x, 0px), var(--d5y, 0px), 0); will-change: transform; }

/* ---------- 6. Reduced motion / touch ---------- */
@media (prefers-reduced-motion: reduce) {
  .d5-atmo, .d5-dust, .d5-vignette { display: none !important; }
  .d5-tilt { transform: none !important; }
  .d5-plane { transform: none !important; }
  [data-reveal] { filter: none !important; }
}

/* ===== depth5d-pro.css ===== */
/* ============================================================
   depth5d-pro.css — Famous Drive "5D, next level".
   Layers ON TOP of depth5d.css. Everything here is additive,
   pointer-events:none for ambience, brand palette only.
   Driven by depth5d-pro.js (one shared rAF loop).
   ============================================================ */

/* ---------- 1. Aurora mesh — living light behind the scene ----------
   Three huge, heavily-blurred bronze blobs that breathe and drift.
   Soft-light blend so they grade the espresso background without
   washing it out. Mouse/gyro parallax applied via --aur-x/--aur-y. */
.d5-aurora {
  position: fixed; inset: -25vh -25vw;
  pointer-events: none; z-index: 1;
  filter: blur(8px) saturate(1.1);
  mix-blend-mode: soft-light;
  opacity: 0.9;
  transform: translate3d(var(--aur-x, 0px), var(--aur-y, 0px), 0);
  will-change: transform;
}
.d5-aurora__blob { position: absolute; border-radius: 50%; }
.d5-aurora__blob--1 {
  width: 46vw; height: 46vw; left: 8%; top: 6%;
  background: radial-gradient(circle, rgba(236,197,143,0.50), rgba(217,174,116,0) 70%);
  animation: d5-aur1 28s ease-in-out infinite;
}
.d5-aurora__blob--2 {
  width: 52vw; height: 52vw; right: 4%; top: 34%;
  background: radial-gradient(circle, rgba(176,128,84,0.42), rgba(120,96,70,0) 70%);
  animation: d5-aur2 36s ease-in-out infinite;
}
.d5-aurora__blob--3 {
  width: 40vw; height: 40vw; left: 30%; bottom: -6%;
  background: radial-gradient(circle, rgba(217,174,116,0.38), rgba(217,174,116,0) 70%);
  animation: d5-aur3 32s ease-in-out infinite;
}
@keyframes d5-aur1 { 0%,100%{transform:translate3d(0,0,0) scale(1)} 50%{transform:translate3d(6vw,4vh,0) scale(1.16)} }
@keyframes d5-aur2 { 0%,100%{transform:translate3d(0,0,0) scale(1.05)} 50%{transform:translate3d(-7vw,-3vh,0) scale(0.9)} }
@keyframes d5-aur3 { 0%,100%{transform:translate3d(0,0,0) scale(0.95)} 50%{transform:translate3d(4vw,-5vh,0) scale(1.2)} }

/* ---------- 2. Cursor key-light — the scene lit by a moving lamp ----------
   A soft radial highlight that trails the cursor across the whole page. */
.d5-keylight {
  position: fixed; inset: 0;
  pointer-events: none; z-index: 2;
  mix-blend-mode: soft-light;
  background: radial-gradient(620px circle at var(--kx, 50%) var(--ky, 35%),
              rgba(236,197,143,0.20), transparent 60%);
  opacity: 0; transition: opacity 1.2s ease;
}
.d5-keylight.is-live { opacity: 1; }

/* ---------- 3. Film grain — cinematic texture over everything ---------- */
.d5-grain {
  position: fixed; inset: -120%;
  pointer-events: none; z-index: 3;
  opacity: 0.05; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: d5-grain 0.9s steps(4) infinite;
  will-change: transform;
}
@keyframes d5-grain {
  0%{transform:translate3d(0,0,0)} 25%{transform:translate3d(-3%,2%,0)}
  50%{transform:translate3d(2%,-3%,0)} 75%{transform:translate3d(-2%,-2%,0)} 100%{transform:translate3d(3%,2%,0)}
}

/* ---------- 4. Magnetic CTAs with depth ----------
   depth5d-pro.js sets --mgx/--mgy (pull) on hover-near.
   The label gets a small counter-translate on Z for parallax. */
.btn, .nav-login, .lux-btn {
  transform: translate3d(var(--mgx, 0px), var(--mgy, 0px), 0);
  transition: transform 260ms cubic-bezier(.22,.61,.36,1), filter .25s, box-shadow .35s;
  transform-style: preserve-3d;
}
.btn.d5-mag, .nav-login.d5-mag, .lux-btn.d5-mag { transition: transform 80ms linear, box-shadow .35s; }
.btn--gold.d5-mag, .lux-btn--gold.d5-mag {
  box-shadow: 0 6px 22px -6px rgba(217,174,116,0.55), 0 0 0 1px rgba(236,197,143,0.25) inset;
}

/* ---------- 5. Heading shimmer sweep — one gilt pass on reveal ----------
   A narrow diagonal highlight wipes across the heading box once.
   .d5-sweep is toggled by JS (on reveal, and on hover for h2). */
.d5-shimmer { position: relative; }
.d5-shimmer::after {
  content: ""; position: absolute; inset: -2px -6px;
  pointer-events: none; opacity: 0;
  background: linear-gradient(105deg, transparent 38%,
              rgba(236,197,143,0.55) 48%, rgba(255,244,224,0.85) 50%,
              rgba(236,197,143,0.55) 52%, transparent 62%);
  background-size: 280% 100%; background-position: 120% 0;
  mix-blend-mode: screen;
  -webkit-mask: linear-gradient(#000,#000);
}
.d5-shimmer.d5-sweep::after { animation: d5-sweep 1100ms cubic-bezier(.4,0,.2,1) forwards; }
@keyframes d5-sweep {
  0%{opacity:0; background-position:120% 0}
  12%{opacity:1}
  100%{opacity:0; background-position:-40% 0}
}

/* ---------- 6. Dynamic tilt shadow — cards lift off the page ----------
   Uses --rx/--ry that depth5d.js already sets on hovered cards.
   Shadow falls opposite the tilt for a real "floating" read. */
.tilt-card.d5-live, .d5-tilt.d5-live {
  box-shadow:
    calc(var(--ry, 0deg) / 1deg * -1.6px) calc(var(--rx, 0deg) / 1deg * 1.6px) 40px -12px rgba(0,0,0,0.6),
    0 2px 4px rgba(0,0,0,0.35);
}

/* ---------- 7. Scroll-velocity motion ----------
   depth5d-pro.js writes --d5vel (0..1) and a sign to <body>.
   Fast scroll → dust streaks vertically + the aurora smears slightly. */
body.d5-fast .d5-mote { transform: scaleY(calc(1 + var(--d5vel, 0) * 7)); transform-origin: center; }
body.d5-fast .d5-aurora { filter: blur(8px) saturate(1.1) blur(calc(var(--d5vel,0) * 6px)); }

/* ---------- 8. Scroll progress rail — thin gilt line of the journey ---------- */
.d5-rail {
  position: fixed; top: 0; left: 0; height: 2px; z-index: 60;
  width: 100%; transform: scaleX(var(--d5prog, 0)); transform-origin: 0 50%;
  background: linear-gradient(90deg, rgba(217,174,116,0.0), #D9AE74 35%, #ECC58F 70%, #FAF1DD);
  box-shadow: 0 0 12px rgba(236,197,143,0.6);
  pointer-events: none;
}

/* ---------- 9. Reduced motion / coarse pointer guards ---------- */
@media (prefers-reduced-motion: reduce) {
  .d5-aurora, .d5-keylight, .d5-grain, .d5-rail { display: none !important; }
  .d5-shimmer::after { display: none !important; }
  .btn, .nav-login, .lux-btn { transform: none !important; }
}

/* ===== depth5d-intensity.css ===== */
/* ============================================================
   depth5d-intensity.css — tiers the 5D effects by page + user choice.
   <html> gets one of: d5i-full | d5i-med | d5i-calm (set by JS).
   Restraint pass: transactional pages stay quiet; hero pages get drama.
   The visitor can override via the motion toggle (persisted).
   ============================================================ */

/* ---------- MED: dial the spectacle back a notch ---------- */
html.d5i-med .d5-grain { opacity: 0.03; }
html.d5i-med .d5-aurora { opacity: 0.6; }
html.d5i-med .d5-keylight { background: radial-gradient(560px circle at var(--kx,50%) var(--ky,35%), rgba(236,197,143,0.13), transparent 60%); }

/* ---------- CALM: quiet, transactional, "quiet wealth" ---------- */
html.d5i-calm .d5-grain,
html.d5i-calm .d5-keylight { display: none !important; }
html.d5i-calm .d5-aurora { opacity: 0.4; filter: blur(8px) saturate(1.05); }
html.d5i-calm .d5-aurora__blob { animation-duration: 60s; }        /* slower, calmer drift */
html.d5i-calm .d5-mote { opacity: 0 !important; }                  /* no gold dust */
html.d5i-calm body.d5-fast .d5-mote { transform: none !important; }/* no scroll streaks */
html.d5i-calm body.d5-fast .d5-aurora { filter: blur(8px) saturate(1.05) !important; }
html.d5i-calm .btn,
html.d5i-calm .nav-login,
html.d5i-calm .lux-btn { transform: none !important; }             /* drop magnetic pull */
html.d5i-calm .d5-shimmer::after { display: none !important; }     /* no heading sweeps */
/* tilt stays, but gentler */
html.d5i-calm .tilt-card, html.d5i-calm .d5-tilt { transition-duration: 480ms; }

/* ---------- The motion toggle ---------- */
.d5-motion {
  position: fixed; left: 18px; bottom: 74px; z-index: 58;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 13px; border-radius: 100px;
  font-family: var(--font-sans, 'Outfit', sans-serif);
  font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 400;
  color: var(--bone-60, #ECD5AD);
  background: rgba(20, 15, 10, 0.6); backdrop-filter: blur(10px);
  border: 1px solid rgba(236,213,173,0.16);
  cursor: pointer; opacity: 0; transform: translateY(8px);
  transition: opacity .5s ease, transform .5s ease, color .25s, border-color .25s;
  -webkit-tap-highlight-color: transparent;
}
.d5-motion.is-in { opacity: 0.65; transform: translateY(0); }
.d5-motion:hover { opacity: 1; color: var(--bone, #FAF1DD); border-color: rgba(217,174,116,0.5); }
.d5-motion__dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--gold, #D9AE74); box-shadow: 0 0 8px rgba(217,174,116,0.8);
  transition: background .25s, box-shadow .25s;
}
.d5-motion[data-mode="subtle"] .d5-motion__dot { background: var(--bone-40, rgba(236,213,173,0.4)); box-shadow: none; }
@media (max-width: 760px) { .d5-motion { display: none; } } /* mobile already calmed */
@media (prefers-reduced-motion: reduce) { .d5-motion { display: none; } }

/* ===== mobile.css ===== */
/* ============================================================
   MOBILE.CSS — final-word responsive layer for the React app
   (index + fleet/events/services/advisors/about/world-cup).
   Loaded dead-last so it corrects mobile breakage without
   rewriting the desktop CSS. Static SEO pages already ship
   their own mobile rules and are untouched here.

   Map of fixes:
   1. Overflow safety net
   2. Nav — logo fit + hamburger dropdown menu
   3. World Cup ribbon — stop the count/CTA from overflowing
   4. Floating World Cup badge — clear the sticky bottom bar
   5. Advisors — collapse the two-column block cleanly
   6. Subpage heroes, stat grids, spec tables, card grids
   7. Booking modal + forms
   8. Typography down-scale for oversized display heads
   9. Sticky bottom CTA clearance
   ============================================================ */

/* ---------- 1. Overflow safety net ---------- */
@media (max-width: 768px) {
  /* overflow-x: clip prevents sideways scroll WITHOUT creating a scroll
     container (which `hidden` does — and which would break vertical page
     scrolling on both html and body). */
  body { overflow-x: clip; max-width: 100%; }
  img, svg, video, canvas { max-width: 100%; height: auto; }
  /* Button rows should wrap rather than force the page wider */
  .sp-hero-cta, .sp-cta-row, .advisors-actions, .hero-cta, .cta-row { flex-wrap: wrap; }
}

/* ---------- 2. Nav — logo fit + hamburger ---------- */
/* The hamburger lives in the markup at all sizes but only shows on mobile. */
.nav-burger { display: none; }
.nav-links-actions { display: none; }

@media (max-width: 1024px) {
  /* Flex (not grid): the menu is position:fixed/out of flow, so a 3-col grid
     auto-placed the hamburger into the empty middle column. Flex + space-between
     keeps the logo left and the hamburger flush right. */
  .nav {
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 16px; gap: 12px; height: 64px;
  }
  /* Services dropdown collapses to an inline expanded list inside the drawer */
  .nav-dd { display: block; width: 100%; }
  .nav-dd::after { display: none; }
  .nav-dd-caret { display: none; }
  .nav-dd-menu {
    position: static; transform: none; opacity: 1; visibility: visible; pointer-events: auto;
    min-width: 0; background: none; border: 0; box-shadow: none; padding: 4px 0 10px 16px;
  }
  .nav-dd-item { padding: 12px 4px; border-bottom: 1px solid var(--hairline, rgba(250,241,221,0.08)); }
  .nav-dd-item__desc { display: none; }
  .nav-dd-item__label { font-size: 15px; }
  /* Logo: shrink + tame the wide tracking so it never pushes Reserve off-screen */
  .nav-mark {
    font-size: 14px; letter-spacing: 0.16em;
    min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .nav-mark sup { margin-left: 4px; vertical-align: 5px; }

  /* Hide the desktop right-side cluster; the burger menu carries these */
  .nav-right .nav-lang,
  .nav-right .nav-login,
  .nav-right > .btn--gold { display: none; }

  /* Hamburger button */
  .nav-burger {
    display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 44px; height: 44px; padding: 0 10px;
    background: transparent; border: 1px solid var(--hairline-strong, rgba(250,241,221,0.26));
    border-radius: var(--radius, 3px); cursor: pointer;
  }
  .nav-burger span {
    display: block; height: 1.5px; width: 100%; background: var(--gold, #D9AE74);
    transition: transform .28s ease, opacity .2s ease;
  }
  .nav-burger.is-open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .nav-burger.is-open span:nth-child(2) { opacity: 0; }
  .nav-burger.is-open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

  /* Turn the link list into a full-width dropdown panel */
  .nav-links {
    position: fixed; top: 64px; left: 0; right: 0;
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    padding: 8px 16px calc(20px + env(safe-area-inset-bottom, 0px));
    max-height: calc(100vh - 64px); overflow-y: auto;
    background: rgba(31, 27, 23, 0.98);
    -webkit-backdrop-filter: blur(8px) saturate(140%);
    backdrop-filter: blur(8px) saturate(140%);
    border-bottom: 1px solid var(--hairline, rgba(250,241,221,0.14));
    box-shadow: 0 24px 48px rgba(0,0,0,0.5);
    transform: translateY(-12px); opacity: 0; pointer-events: none;
    transition: transform .3s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
    z-index: 89;
  }
  .nav-links.is-open { transform: translateY(0); opacity: 1; pointer-events: auto; }
  .nav-link {
    font-size: 15px !important; letter-spacing: 0.04em !important; text-transform: none;
    text-align: left; padding: 14px 4px !important; width: 100%;
    min-height: 44px; display: flex; align-items: center;   /* ≥44px touch target on mobile */
    border-bottom: 1px solid var(--hairline, rgba(250,241,221,0.10));
  }
  .nav-link::after { display: none; }   /* kill the underline-grow affordance in the list */

  /* In-menu Login + Reserve */
  .nav-links-actions {
    display: flex; align-items: center; gap: 12px;
    margin-top: 16px; border: 0;
  }
  .nav-links-actions .nav-link { width: auto; border: 0; padding: 12px 4px; }
  .nav-links-reserve {
    flex: 1 1 auto; height: 50px !important; font-size: 12px !important; letter-spacing: 0.14em;
  }
}

/* ---------- 3. World Cup ribbon ---------- */
@media (max-width: 600px) {
  /* The count string ("LIVE NOW · JUNE 11 – JULY 19") + CTA can't both fit;
     drop the count, keep the clickable CTA centered and visible. */
  .wc-ribbon__count { display: none; }
  .wc-ribbon { gap: 10px; padding: 0 38px 0 14px; }
  .wc-ribbon__cta { padding: 6px 12px; letter-spacing: 0.08em; }
}

/* ---------- 4. Floating World Cup badge ---------- */
@media (max-width: 768px) {
  /* The sticky bottom CTA already owns the lower-right; hide the badge so
     the two don't stack on top of each other. World Cup stays promoted via
     the top ribbon + nav link. */
  .wcp-badge { display: none !important; }
}

/* ---------- 5. Advisors block ---------- */
@media (max-width: 900px) {
  .advisors-inner, .advisors-copy, .advisors-members { min-width: 0; }
  /* min-width:0 lets the 1fr column shrink below its button-row min-content,
     which is what was forcing the whole section ~480px wide. */
  .advisors-actions { flex-wrap: wrap; gap: 12px; }
  .advisors-actions .btn { flex: 1 1 100%; justify-content: center; text-align: center; }
}
@media (max-width: 560px) {
  .advisors-members { padding: 28px 20px; }
  .advisors-members-grid { grid-template-columns: 1fr; gap: 14px; }
  .advisors-member { font-size: 19px; }
}

/* ---------- 6. Subpages — heroes, stats, tables, cards ---------- */
@media (max-width: 768px) {
  .sp-hero-inner { padding-top: 12px; }
  .sp-hero-title { font-size: clamp(34px, 11vw, 52px); line-height: 1.04; }
  .sp-hero-lede, .lede { font-size: 16px; }
  .sp-shead { grid-template-columns: 1fr; gap: 18px; }

  /* Stat strips: 2 across instead of 4 */
  .sp-stats { grid-template-columns: 1fr 1fr !important; gap: 16px 18px; }

  /* Card + included grids stack */
  .sp-cards, .sp-included { grid-template-columns: 1fr !important; }

  /* Spec table: let it scroll horizontally instead of overflowing the page */
  .sp-spec { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; }
  .sp-spec thead, .sp-spec tbody, .sp-spec tr { width: 100%; }
}
@media (max-width: 460px) {
  .sp-stats { grid-template-columns: 1fr 1fr !important; }
}

/* ---------- 7. Booking modal + forms ---------- */
@media (max-width: 768px) {
  /* Any field grid collapses to a single column on phones */
  .form-row, .field-row, .booking-grid, .hb-fields { grid-template-columns: 1fr !important; }
  input, select, textarea { max-width: 100%; }
  /* Modals never exceed the viewport */
  .booking-modal, .modal, .wcp-modal { width: min(96vw, 560px); max-width: 96vw; }
}

/* ---------- 8. Typography down-scale ---------- */
@media (max-width: 480px) {
  .h-display { font-size: clamp(30px, 9.5vw, 44px); line-height: 1.06; }
  /* Section headings carry inline fontSize (35–38px) set in JSX, which silently ignored
     this rule (an inline style beats a selector). !important lets the mobile down-scale win
     so headings stop dominating the phone viewport; the relaxed max-width stops them wrapping
     into 4 cramped lines. */
  .h-section { font-size: clamp(23px, 6.3vw, 30px) !important; line-height: 1.14; letter-spacing: -0.012em; }
  .h-section[style*="max-width"] { max-width: 32ch !important; }
}

/* ---------- 8b. Promote the booking widget on desktop ----------
   It was landing ~17px below the fold. Pull it up so the mode tabs +
   top of the input card sit above the fold (stays clear of the hero
   stage, which ends well above it). Desktop only. */
@media (min-width: 1024px) {
  .hero-booking { margin-top: 24px !important; }
}

/* ---------- 9. Sticky bottom CTA clearance ---------- */
@media (max-width: 768px) {
  /* Bar is 50px tall + 10px*2 padding ≈ 70px; clear it fully. */
  body { padding-bottom: 74px; }
  /* Don't let the body lock interfere when the nav menu is open */
  body.nav-menu-open { overflow: hidden; }
}

/* ---------- 10. Hero skyline — phone treatment ----------
   On desktop the NYC skyline fills the hero via `cover`. The hero is far
   taller on a phone (stacked content), so `cover` zooms the wide panorama
   into an unreadable blur. Instead, render the skyline as a band across the
   TOP that fades into the espresso ground — recognizable + keeps the copy
   readable. */
@media (max-width: 768px) {
  /* Skyline becomes a clean banner pinned to the top of the hero; the copy
     flows BELOW it on the espresso ground (instead of overlaying the photo).
     This also reclaims the dead space the desktop "stage" used to reserve. */
  .hero { padding-top: 0 !important; }
  .hero-video { display: none !important; }   /* skyline banner instead of autoplay video on phones */
  .hero-bg {
    height: 320px !important; bottom: auto !important;
    background:
      linear-gradient(180deg, rgba(26,19,13,.14) 0%, rgba(26,19,13,.20) 52%, rgba(26,19,13,.66) 84%, #2A1E12 100%),
      url('assets/img/hero-nyc.webp') center 42% / cover no-repeat,
      #2A1E12 !important;
  }
  .hero-bg::after { display: none !important; }

  /* drop the copy below the 320px banner */
  .hero-inner { padding-top: 344px !important; }
  .hero-copy { transform: none !important; }   /* pin (it's a parallax plane) */

  /* the desktop car/telemetry stage is empty on mobile — collapse the 360px gap */
  .hero-stage { display: none !important; }

  /* over the photo it no longer sits, so the rating/eyebrow scrim isn't needed */
  .hero-rating, .hero-title__lede { text-shadow: none; }

  /* tighten the pillar stack (it's spaced for a desktop row) */
  .hero-pillars { gap: 2px !important; margin-top: 24px !important; }
  .hero-pillar { padding-bottom: 14px !important; }
}

/* ---------- 11. Accessibility (WCAG 2.1 AA) — mobile audit fixes ---------- */
@media (max-width: 768px) {
  /* 2.5.5 Target Size — interactive controls ≥ 44×44px */
  .footer-social a, .social a {
    min-width: 44px; min-height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
  }
  .fdb-input, .hbq__bar-input,
  .hbq__pill-btn, .fdb-date-btn, .fdb-btn,
  .hbq__bar-cta, .fdb-cta { min-height: 44px; }

  /* 1.4.3 Contrast — the hero rating/eyebrow sit over the bright sky band.
     A dark text-shadow scrim guarantees legibility without darkening the
     skyline itself. */
  .hero-rating, .hero-title__lede {
    text-shadow: 0 1px 6px rgba(18,12,6,.92), 0 0 2px rgba(18,12,6,.85);
  }
  .hero-rating .hero-rating__stars, .hero-rating svg { filter: drop-shadow(0 1px 3px rgba(18,12,6,.8)); }
}

/* ---------- 12b. Booking widget — stop parallax drift on phones ----------
   The hero booking bar's tabs (One way / By the hour) and the input card are
   depth5d parallax planes; on the tall mobile hero their scroll-driven offset
   slides the card UP over the tabs, cutting them off. Pin every layer inside
   the inline booking bar so it stacks cleanly, and give the tabs a clear gap. */
@media (max-width: 768px) {
  .hbq--bar, .hbq--bar .d5-plane,
  .hbq--bar .hbq__pill, .hbq--bar .hbq__bar, .hbq--bar .fdb__bar {
    transform: none !important;
  }
  .hbq--bar .hbq__pill { margin-bottom: 12px; position: relative; z-index: 2; }
}

/* ---------- 12. Declutter the bottom HUD on phones ----------
   The cinematic desktop flourishes (telemetry dash, concierge cue, motion
   toggle) stack in the lower-left and collide with the sticky reserve bar on
   a phone. They add nothing essential on mobile — hide them so the bottom
   reads as one clean CTA. (Reduced-motion is still honoured via the OS.) */
@media (max-width: 768px) {
  .fd-dash, .concierge-cue, .d5-motion { display: none !important; }
}

/* ===== cinematic-fx.css ===== */
/* ============================================================
   CINEMATIC-FX — premium "multi-million-dollar" interaction layer.
   Loaded last. Pure enhancement: cursor-reactive lighting, card
   depth, glass sheen, ambient glow, refined reveals. Designed to
   sit ON TOP of the existing depth5d tilt/aurora system without
   touching transforms (so the 3D tilt keeps working).
   All motion is gated on (prefers-reduced-motion: no-preference).
   ============================================================ */

/* ---------- 1. Ambient cursor light — a faint warm bloom that
   follows the pointer across the dark page. The single most
   "expensive"-feeling touch. ---------- */
.fx-ambient {
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(420px circle at var(--fx-gx, 50%) var(--fx-gy, -10%),
              rgba(236, 197, 143, 0.10), transparent 60%);
  opacity: 0; transition: opacity 1.2s ease;
  mix-blend-mode: screen;
}
.fx-ambient.is-live { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .fx-ambient { display: none; } }

/* ---------- 2. Cursor-reactive cards — "5D boxes" ----------
   A light that tracks the cursor across the card surface + a
   glowing edge that follows it. Layered over the existing tilt. */
.fx-card { position: relative; isolation: isolate; }

/* inner light pool */
.fx-card::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  z-index: 4; pointer-events: none;
  background: radial-gradient(240px circle at var(--mx, 50%) var(--my, -20%),
              rgba(236, 197, 143, 0.18), transparent 58%);
  opacity: 0; transition: opacity .45s ease;
}
.fx-card:hover::after { opacity: 1; }

/* glowing edge that follows the cursor (border-only via mask) */
.fx-card::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  z-index: 5; pointer-events: none; padding: 1.25px;
  background: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%),
              rgba(217, 174, 116, 0.75), rgba(217,174,116,0.0) 55%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity .4s ease;
}
.fx-card:hover::before { opacity: 1; }

/* depth on hover — shadow only (no transform, so it never fights the tilt) */
.fx-card {
  transition: box-shadow .5s var(--ease-standard, cubic-bezier(.2,.8,.2,1)),
              border-color .4s ease;
}
.fx-card:hover {
  box-shadow:
    0 2px 4px rgba(0,0,0,0.18),
    0 28px 60px -28px rgba(0,0,0,0.62),
    0 0 0 1px rgba(217,174,116,0.16);
}

@media (prefers-reduced-motion: reduce) {
  .fx-card::after, .fx-card::before { display: none; }
}

/* ---------- 3. Glass sheen — a slow diagonal specular sweep that
   crosses cards on hover (very subtle, premium). ---------- */
.fx-card .fx-sheen {
  position: absolute; inset: 0; border-radius: inherit; z-index: 3;
  pointer-events: none; overflow: hidden;
}
.fx-card .fx-sheen::before {
  content: ""; position: absolute; top: -60%; left: -30%;
  width: 50%; height: 220%;
  background: linear-gradient(100deg, transparent, rgba(255,248,232,0.10), transparent);
  transform: translateX(-60%) rotate(8deg); opacity: 0;
}
.fx-card:hover .fx-sheen::before {
  animation: fx-sheen-sweep 1.1s var(--ease-standard, cubic-bezier(.2,.8,.2,1)) 1;
}
@keyframes fx-sheen-sweep {
  0% { transform: translateX(-60%) rotate(8deg); opacity: 0; }
  35% { opacity: 1; }
  100% { transform: translateX(320%) rotate(8deg); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .fx-card .fx-sheen { display: none; } }

/* ---------- 4. Refined scroll reveals — blur + rise + clip with
   expensive easing. Applied by JS as elements enter the viewport. */
.fx-reveal {
  opacity: 0;
  transform: translateY(26px) scale(0.985);
  filter: blur(8px);
  transition:
    opacity .9s cubic-bezier(.16,1,.3,1),
    transform 1.05s cubic-bezier(.16,1,.3,1),
    filter .9s cubic-bezier(.16,1,.3,1);
  will-change: opacity, transform, filter;
}
.fx-reveal.is-in { opacity: 1; transform: none; filter: none; }
@media (prefers-reduced-motion: reduce) {
  .fx-reveal { opacity: 1 !important; transform: none !important; filter: none !important; }
}

/* ---------- 5. Animated light-bloom backgrounds on dark sections.
   Two slow, counter-drifting warm radial blooms — adds depth and
   life to the espresso ground without reading as "busy". ---------- */
/* z-index:0 makes the section its own stacking context so the bloom layer
   (z-index:-1) stays bounded to the section AND below all content — it can
   never cover text, no matter how the section's children are stacked. */
.fx-bloom { position: relative; z-index: 0; }
.fx-bloom > .fx-bloom-layer {
  position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden;
}
.fx-bloom > .fx-bloom-layer::before,
.fx-bloom > .fx-bloom-layer::after {
  content: ""; position: absolute; border-radius: 50%;
  filter: blur(8px); opacity: 0.5;
}
.fx-bloom > .fx-bloom-layer::before {
  width: 46vw; height: 46vw; top: -12%; right: -8%;
  background: radial-gradient(circle, rgba(217,174,116,0.16), transparent 70%);
  animation: fx-bloom-a 26s ease-in-out infinite;
}
.fx-bloom > .fx-bloom-layer::after {
  width: 40vw; height: 40vw; bottom: -16%; left: -10%;
  background: radial-gradient(circle, rgba(124,98,73,0.20), transparent 70%);
  animation: fx-bloom-b 32s ease-in-out infinite;
}
@keyframes fx-bloom-a {
  0%,100% { transform: translate(0,0) scale(1); }
  50% { transform: translate(-4vw, 5vh) scale(1.12); }
}
@keyframes fx-bloom-b {
  0%,100% { transform: translate(0,0) scale(1); }
  50% { transform: translate(5vw, -4vh) scale(1.1); }
}
@media (prefers-reduced-motion: reduce) {
  .fx-bloom > .fx-bloom-layer::before,
  .fx-bloom > .fx-bloom-layer::after { animation: none; }
}

/* ---------- 6. Magnetic CTA glow — warm halo that breathes on the
   primary buttons. ---------- */
.btn--gold { position: relative; }
.btn--gold::after {
  content: ""; position: absolute; inset: -2px; border-radius: inherit;
  z-index: -1; pointer-events: none;
  background: radial-gradient(60% 120% at 50% 50%, rgba(236,197,143,0.55), transparent 70%);
  opacity: 0; filter: blur(10px); transition: opacity .45s ease;
}
.btn--gold:hover::after { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .btn--gold::after { display: none; } }

/* ===== premium-boxes.css ===== */
/* ============================================================
   PREMIUM BOXES — "Signature" · Option D (gold edge), BACKGROUND-PRESERVING.
   The gold gradient EDGE defines the box; each card KEEPS ITS NATIVE FILL,
   so text contrast can never break (dark cards stay dark, light cards stay
   light — across homepage AND subpages, no per-class theming needed).
   The edge is an injected .pb-edge ring (independent of cinematic-fx's
   ::before/::after cursor layers). Additive: only under  body.fx-premium .
   ============================================================ */

:root { --pb-radius: 14px; }

/* ---- the cards this variant touches ---- */
body.fx-premium .service-card,
body.fx-premium .event-card,
body.fx-premium .sp-card,
body.fx-premium .sp-included-item,
body.fx-premium .testi-card,
body.fx-premium .advisors-members,
body.fx-premium .fleet-tab--card,
body.fx-premium .ac-tier,
body.fx-premium .lux-card,
body.fx-premium .lux-vcard,
body.fx-premium .lux-occasion,
body.fx-premium .why-item,
body.fx-premium .hb-vehicle,
body.fx-premium .card,
body.fx-premium .tier,
body.fx-premium .contact-form-card,
body.fx-premium .cities-ledger,
body.fx-premium .cities-map {
  position: relative;
  border-color: rgba(217, 174, 116, 0.34) !important;  /* static gold border on every premium box (hover gold-ring layers on top) */
  border-radius: var(--pb-radius) !important;
  -webkit-backdrop-filter: blur(8px) saturate(1.08);
          backdrop-filter: blur(8px) saturate(1.08);
  box-shadow:
    inset 0 1px 0 rgba(255, 248, 232, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.26),
    0 26px 56px -28px rgba(0, 0, 0, 0.60) !important;
  transition: box-shadow .55s cubic-bezier(.16,1,.3,1) !important;
}

/* ---- the gold gradient EDGE (injected child; follows border-radius) ---- */
.pb-edge { display: none; }   /* zero layout impact in Classic mode */
.fx-premium .pb-edge {
  display: block;
  position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 6;
  padding: 1.5px;
  background: linear-gradient(135deg,
              rgba(236,197,143,0.92) 0%, rgba(217,174,116,0.20) 48%, rgba(236,197,143,0.84) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  transition: background .4s ease;
}

/* ---- hover — edge brightens + a soft gold halo blooms (no transform: keeps tilt) ---- */
body.fx-premium .service-card:hover,
body.fx-premium .event-card:hover,
body.fx-premium .sp-card:hover,
body.fx-premium .sp-included-item:hover,
body.fx-premium .testi-card:hover,
body.fx-premium .advisors-members:hover,
body.fx-premium .fleet-tab--card:hover,
body.fx-premium .ac-tier:hover,
body.fx-premium .lux-card:hover,
body.fx-premium .lux-occasion:hover,
body.fx-premium .why-item:hover,
body.fx-premium .hb-vehicle:hover,
body.fx-premium .card:hover,
body.fx-premium .tier:hover,
body.fx-premium .contact-form-card:hover,
body.fx-premium .cities-ledger:hover,
body.fx-premium .cities-map:hover {
  box-shadow:
    inset 0 1px 0 rgba(255, 248, 232, 0.10),
    0 3px 8px rgba(0, 0, 0, 0.30),
    0 34px 66px -30px rgba(0, 0, 0, 0.70),
    0 0 26px -8px rgba(217, 174, 116, 0.40) !important;
}
body.fx-premium .service-card:hover .pb-edge,
body.fx-premium .event-card:hover .pb-edge,
body.fx-premium .sp-card:hover .pb-edge,
body.fx-premium .sp-included-item:hover .pb-edge,
body.fx-premium .testi-card:hover .pb-edge,
body.fx-premium .advisors-members:hover .pb-edge,
body.fx-premium .fleet-tab--card:hover .pb-edge,
body.fx-premium .ac-tier:hover .pb-edge,
body.fx-premium .lux-card:hover .pb-edge,
body.fx-premium .lux-occasion:hover .pb-edge,
body.fx-premium .why-item:hover .pb-edge,
body.fx-premium .hb-vehicle:hover .pb-edge,
body.fx-premium .card:hover .pb-edge,
body.fx-premium .tier:hover .pb-edge,
body.fx-premium .contact-form-card:hover .pb-edge,
body.fx-premium .cities-ledger:hover .pb-edge,
body.fx-premium .cities-map:hover .pb-edge {
  background: linear-gradient(135deg,
              rgba(245,221,182,1) 0%, rgba(217,174,116,0.4) 48%, rgba(245,221,182,0.95) 100%);
}

/* ---- numbers / stats — gold gradient text for the "expensive" data look ---- */
body.fx-premium .tier-price,
body.fx-premium .sp-stat .v,
body.fx-premium .why-item .num,
body.fx-premium .lux-hero__stat .v,
body.fx-premium .event-day {
  background: linear-gradient(180deg, #FCEAC6 0%, #D9AE74 55%, #B8894E 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}

/* ---- photo-led cards — gold edge only (image stays fully opaque) ---- */
body.fx-premium .fd-gallery__item,
body.fx-premium .moment-frame,
body.fx-premium .fleet-stage {
  position: relative; border-color: transparent !important;
  border-radius: var(--pb-radius) !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.28), 0 26px 56px -28px rgba(0,0,0,0.66) !important;
}

/* ---- guards ---- */
@media (prefers-reduced-motion: reduce) {
  body.fx-premium .service-card, body.fx-premium .event-card, body.fx-premium .card,
  body.fx-premium .sp-card, body.fx-premium .tier { transition: none !important; }
}
@media (max-width: 768px) {  /* drop heavy blur on phones (perf) */
  body.fx-premium .service-card, body.fx-premium .event-card, body.fx-premium .sp-card,
  body.fx-premium .sp-included-item, body.fx-premium .testi-card, body.fx-premium .advisors-members,
  body.fx-premium .fleet-tab--card, body.fx-premium .ac-tier, body.fx-premium .lux-card,
  body.fx-premium .lux-occasion, body.fx-premium .why-item, body.fx-premium .hb-vehicle,
  body.fx-premium .card, body.fx-premium .tier, body.fx-premium .contact-form-card,
  body.fx-premium .cities-ledger, body.fx-premium .cities-map {
    -webkit-backdrop-filter: none; backdrop-filter: none;
  }
}

/* ---- compare toggle (discreet pill, bottom-left) ---- */
.pb-toggle {
  position: fixed; left: 18px; bottom: 18px; z-index: 70;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px; border-radius: 100px; cursor: pointer;
  font-family: 'Outfit', system-ui, sans-serif; font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase; color: #FFFFFF;
  background: rgba(42, 30, 18, 0.72);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(217, 174, 116, 0.32);
  box-shadow: 0 10px 30px -12px rgba(0,0,0,0.6);
  transition: border-color .3s ease;
}
.pb-toggle:hover { border-color: rgba(236,197,143,0.6); }
.pb-toggle__dot { width: 7px; height: 7px; border-radius: 50%; background: #D9AE74; box-shadow: 0 0 8px #D9AE74; }
body:not(.fx-premium) .pb-toggle__dot { background: #6b5640; box-shadow: none; }
.pb-toggle__label::before { content: 'Signature'; }
body:not(.fx-premium) .pb-toggle__label::before { content: 'Classic'; }
@media (max-width: 768px) { .pb-toggle { left: 12px; bottom: 84px; padding: 8px 12px; } }

/* ============================================================
   CITIES — espresso/gold conversion (was a flat white "intermission"
   block that clashed with the unified homepage). Loads after
   dark-overrides.css so these re-assert the dark treatment, plus a few
   premium touches: warm-depth surfaces, glowing champagne map, gold pins.
   ============================================================ */

/* --- LEDGER surface: Espresso Atlas (Option A) --- */
body.fx-premium .cities-ledger {
  background:
    radial-gradient(120% 140% at 50% -10%, #56402C 0%, rgba(86,64,44,0) 60%),
    linear-gradient(180deg, #4D3826 0%, #432F1F 100%) !important;
  color: #FFFFFF !important;
}

/* ============================================================
   MAP — Ivory Atlas (Option B): warm parchment surface, sepia map,
   burnt-gold accents. Pairs the chosen light map with the dark ledger.
   ============================================================ */
body.fx-premium .cities-map {
  background: linear-gradient(180deg, #FBF4E6 0%, #F1E4C9 100%) !important;
  color: #3A2A18 !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.70),
    0 2px 6px rgba(80,50,20,0.14),
    0 30px 60px -30px rgba(80,50,20,0.34) !important;
}

/* dotted world map: sepia landmass + faint ink grid */
body.fx-premium .cities-map .land { fill: #B98A4E !important; opacity: 0.50 !important; }
body.fx-premium .cities-map .graticule line { stroke: #3A2A18 !important; opacity: 0.07 !important; }

/* routes + pins in burnt gold on the paper surface */
body.fx-premium .cities-map .route { stroke: #9A5A1E !important; opacity: 0.40 !important; }
body.fx-premium .cities-map .pin      { fill: #9A5A1E !important; }
body.fx-premium .cities-map .pin-ring { stroke: #9A5A1E !important; }
body.fx-premium .cities-map .pin-group.is-hq .pin { fill: #7A4416 !important; filter: none; }
body.fx-premium .cities-map .label    { fill: #6E5132 !important; }
body.fx-premium .cities-map .label.hq { fill: #8A5A1E !important; }

/* --- live world-clock ribbon (on ivory) --- */
body.fx-premium .cities-map .world-clock {
  background: linear-gradient(180deg, rgba(120,80,30,0.06), transparent) !important;
  border-bottom-color: rgba(120,80,30,0.18) !important;
}
body.fx-premium .cities-map .world-clock-label { color: #8A5A1E !important; border-right-color: rgba(120,80,30,0.14) !important; }
body.fx-premium .cities-map .wc-cell { border-right-color: rgba(120,80,30,0.12) !important; }
body.fx-premium .cities-map .wc-cell:hover { background: rgba(138,90,30,0.06) !important; }
body.fx-premium .cities-map .wc-time { color: #2B1C0E !important; }
body.fx-premium .cities-map .wc-cell.is-hq .wc-time { color: #8A5A1E !important; }
body.fx-premium .cities-map .wc-cell.is-night .wc-time { color: #6E5132 !important; }
body.fx-premium .cities-map .wc-city  { color: #6E5132 !important; }
body.fx-premium .cities-map .wc-code  { color: #8A6B45 !important; }
body.fx-premium .cities-map .wc-cell.is-hq .wc-code { color: #8A5A1E !important; }
body.fx-premium .cities-map .wc-offset { color: #9A7B52 !important; }

/* --- legend: ivory pill --- */
body.fx-premium .cities-map-legend {
  color: #6E5132 !important;
  background: rgba(255,252,244,0.86) !important;
  border-color: rgba(120,80,30,0.16) !important;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
body.fx-premium .cities-map-legend .dot { background: #9A5A1E !important; }
body.fx-premium .cities-map-legend .dot--out { background: #B89B6A !important; }
body.fx-premium .cities-map-legend .dot--out.is-night { background: transparent !important; border-color: #8A6B45 !important; }

/* --- the 3-column network ledger --- */
body.fx-premium .cities-ledger { border-top-color: rgba(250,241,221,0.12) !important; }
body.fx-premium .cities-col { border-right-color: rgba(250,241,221,0.10) !important; }
body.fx-premium .cities-col h4 { color: #ECC58F !important; }
body.fx-premium .cities-col li {
  color: #FFFFFF !important;
  padding: 4px 6px; margin: -4px -6px; border-radius: 7px;
  transition: background .3s ease;
}
body.fx-premium .cities-col li:hover { background: rgba(236,197,143,0.06) !important; }
body.fx-premium .cities-col li .code { color: #E6DCCB !important; }
body.fx-premium .cities-col li.is-hq { color: #ECC58F !important; }

/* ===== page-unify.css ===== */
/* ============================================================
   page-unify.css — enforce the HOMEPAGE espresso/gold look on EVERY page.
   Must be loaded LAST (after premium-boxes.css) so it wins over page-local
   palettes such as colors_and_type.css (which sets --bg to near-black obsidian).
   Mirrors polish.css's "all-dark unified" base so subpages match index.html.
   ============================================================ */

/* 0) Static-page nav (.nav .links) now carries the full canonical 9 tabs.
      It was built for 5, so tighten spacing at laptop widths to clear the CTA,
      and gold-accent the World Cup tab to match the React nav. React pages use
      different nav markup (.nav-link), so these .nav .links rules never hit them. */
.nav .links a.nav-wc { color: #D9AE74; }

/* Wordmark: match the React mark exactly — uppercase "FAMOUS DRIVE" with DRIVE
   gold and a small gold "NY" superscript (static .mark is title-case by default). */
.nav .mark { text-transform: uppercase; letter-spacing: 0.30em; font-weight: 400; }
.nav .mark b { color: #D9AE74; font-weight: 400; }
.nav .mark::after {
  content: "NY"; font-size: 0.5em; letter-spacing: 0.16em;
  color: #D9AE74; margin-left: 0.45em;
  align-self: flex-start; margin-top: 0.15em;
}
/* FD monogram bug in the static nav lockup (inline so the NY superscript survives) */
.nav .mark { display: inline-flex; align-items: center; }
.nav .mark .nav-mark__bug {
  height: 40px; width: auto; margin-right: 14px; flex: 0 0 auto; vertical-align: middle;
  will-change: filter;
  animation: fd-bug-glow 3s ease-in-out infinite;   /* gold glow pulsing inside-out (matches React nav) */
}
.nav .mark:hover .nav-mark__bug { animation-duration: 1.6s; }
@keyframes fd-bug-glow {
  0%, 100% { filter: drop-shadow(0 0 0.5px rgba(236,197,143,0.25)) brightness(1); }
  50%      { filter: drop-shadow(0 0 9px rgba(236,197,143,0.92)) brightness(1.14); }
}
@media (prefers-reduced-motion: reduce) { .nav .mark .nav-mark__bug { animation: none; } }

/* Same gold glow on the Famous Drive wordmark text (synced 3s) */
.nav .mark { animation: fd-word-glow 3s ease-in-out infinite; }
.nav .mark:hover { animation-duration: 1.6s; }
@keyframes fd-word-glow {
  0%, 100% { text-shadow: 0 0 2px rgba(236,197,143,0.30); }
  50%      { text-shadow: 0 0 7px rgba(236,197,143,0.95), 0 0 16px rgba(236,197,143,0.60); }
}
@media (prefers-reduced-motion: reduce) { .nav .mark { animation: none; } }
.nav .mark b { margin-left: 0.3em; }   /* flex collapses the FAMOUS·DRIVE space — restore it */

@media (max-width: 1200px) { .nav .links { gap: 14px; font-size: 10px; letter-spacing: 0.10em; } }
@media (max-width: 1040px) { .nav .links { gap: 9px; } }

/* Full logo that nav-mobile.js injects at the top of the OPEN mobile menu.
   Must be hidden on desktop — pages that don't load sections3.css (e.g. the
   static contact page) otherwise render this 365px logo inside the nav row,
   where it overflows and bleeds the FD wordmark across the hero. Mirror the
   sections3.css rule here so every page-unify page hides it correctly. */
.nav-menu-logo, .links__logo { display: none; }
.nav-links.is-open .nav-menu-logo,
.nav.nav-open .links .links__logo {
  display: block; width: 150px; height: auto; margin: 4px auto 20px;
  filter: drop-shadow(0 8px 18px rgba(0,0,0,0.4));
}

/* Hamburger + slide-down tab menu for the static pages (injected by nav-mobile.js).
   Desktop: burger hidden, links inline. Mobile (<=760px): burger shows, links
   become a full-width espresso dropdown when .nav has .nav-open. */
.nav-burger { display: none; }
@media (max-width: 760px) {
  .nav-burger {
    display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 42px; height: 42px; padding: 10px; margin-left: 8px;
    background: transparent; border: 1px solid var(--hairline, rgba(250,241,221,0.14));
    border-radius: 6px; cursor: pointer;
  }
  .nav-burger span { display: block; height: 1.5px; width: 100%; background: #FAF1DD; transition: transform .3s ease, opacity .2s ease; }
  .nav.nav-open .nav-burger span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .nav.nav-open .nav-burger span:nth-child(2) { opacity: 0; }
  .nav.nav-open .nav-burger span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

  .nav.nav-open .links {
    display: flex !important; flex-direction: column; gap: 0;
    position: absolute; top: 100%; left: 0; right: 0;
    background: rgba(31, 24, 18, 0.97); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    border-bottom: 1px solid rgba(250,241,221,0.14);
    box-shadow: 0 24px 48px -18px rgba(0,0,0,0.7);
    padding: 6px 24px 18px; font-size: 13px; letter-spacing: 0.14em;
  }
  .nav.nav-open .links a {
    padding: 15px 2px; border-bottom: 1px solid rgba(250,241,221,0.08); color: #FFFFFF;
  }
  .nav.nav-open .links a:last-child { border-bottom: 0; }
  .nav.nav-open .links a.nav-wc { color: #D9AE74; }
}

/* 1) Re-assert the espresso palette globally (neutralises obsidian/off-hue vars) */
:root, body, .app, .subpage {
  --bg: #6F5640; --bg-card: #4D3826; --bg-elev: #4D3826; --bg-alt: #4D3826; --bg-deep: #2A1E12;
  --fg: #FFFFFF; --fg-ink: #FFFFFF;
  --fg-muted: #F4EFE6; --fg-subtle: #E6DCCB; --fg-faint: #DCD2C0;
  --fg-ink-muted: #F4EFE6; --fg-ink-subtle: #E6DCCB;
  --gold: #D9AE74; --gold-bright: #ECC58F; --gold-deep: #D9AE74;
  --terra: #D9AE74; --terra-bright: #ECC58F; --terra-deep: #D9AE74; --brass: #D9AE74;
  --hairline: rgba(250,241,221,0.14); --hairline-strong: rgba(250,241,221,0.26);
  --hairline-ink: rgba(250,241,221,0.14); --hairline-ink-strong: rgba(250,241,221,0.26);
  --ink-cream: #FFFFFF; --ink-cream-muted: #F4EFE6; --ink-cream-subtle: #E6DCCB;
}

/* 2) The warm tonal descent — on the React root AND on body (covers static pages too) */
#root {
  background: linear-gradient(to bottom,
    #6F5640 0%, #62492F 35%, #4D3826 65%, #34251A 88%, #2A1E12 100%) !important;
}
body {
  background-color: #4D3826;
}

/* 3) Kill stray light "intermission" fills so sections ride the gradient.
      Page-specific section selectors are handled in each page's own CSS. */
.subpage, .app { background: transparent; }

/* 4) Events list cards — dark-overrides.css gives these a WHITE fill with dark
      text on the events subpage (the homepage flips them to espresso via polish).
      Force the espresso/cream treatment everywhere so it matches the homepage. */
.event-card { background: var(--bg-card) !important; border-color: rgba(250,241,221,0.12) !important; }
.event-card:hover { background: #56402C !important; }
.event-card .event-name, .event-card .event-day { color: #FFFFFF !important; }
.event-card .event-mon, .event-card .event-tag, .event-card .event-arrow,
.event-card:hover .event-num, .event-card:hover .event-arrow { color: #D9AE74 !important; }
.event-card:hover .event-name, .event-card:hover .event-day { color: #FFFFFF !important; }

/* 5) Unify gold CTA buttons to the HOMEPAGE treatment everywhere.
      React subpages already use .btn--gold (cinematic-fx gives them the warm
      halo glow on hover). This brings the two systems that lack it into line:
      Luxotica's .lux-btn--gold and the static pages' plain gold .btn.
      .btn:not([class*="--"]) hits ONLY static gold buttons — React always
      pairs .btn with a modifier (--gold/--ghost/…), so it never matches there. */
.lux-btn--gold {
  background: var(--gold) !important;
  border-color: var(--gold) !important;
  color: #2A1E12 !important;
  isolation: auto !important;
  overflow: visible !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.22), 0 12px 28px -8px rgba(160,106,56,0.50) !important;
}
.lux-btn--gold::after { display: none !important; }   /* drop the shimmer sweep */

.lux-btn--gold, .btn:not([class*="--"]) { position: relative; }
.lux-btn--gold::before,
.btn:not([class*="--"])::before {
  content: ""; position: absolute; inset: -2px; border-radius: inherit;
  z-index: -1; pointer-events: none;
  background: radial-gradient(60% 120% at 50% 50%, rgba(236,197,143,0.55), transparent 70%);
  opacity: 0; filter: blur(10px); transition: opacity .45s ease;
}
.lux-btn--gold:hover::before,
.btn:not([class*="--"]):hover::before { opacity: 1; }
.lux-btn--gold:hover {
  transform: translateY(-1px);
  box-shadow: 0 1px 2px rgba(0,0,0,0.22), 0 16px 34px -10px rgba(160,106,56,0.60) !important;
}
.lux-btn--gold:active { transform: translateY(1px); }
@media (prefers-reduced-motion: reduce) {
  .lux-btn--gold::before, .btn:not([class*="--"])::before { display: none; }
}

/* Brand wordmark as an IMAGE in the nav (pixel-identical across OS; the bug + footer logo were already images). */
.nav-mark__wm { height: 13px; width: auto; display: inline-block; vertical-align: middle; margin-left: 0.55em; }
.nav .mark::after, .nav-mark::after { content: none !important; }   /* NY is baked into the image now */

/* ===== splash.css ===== */
/* Loading splash — full FD logo on espresso, shown once per session. */
.fd-splash {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 26px;
  background: radial-gradient(ellipse at center, #3a2a1b 0%, #1a120b 80%);
  transition: opacity .6s ease, visibility .6s ease;
}
.fd-splash.is-out { opacity: 0; visibility: hidden; }
.fd-splash__logo {
  width: clamp(150px, 22vw, 200px); height: auto;
  filter: drop-shadow(0 16px 30px rgba(0,0,0,0.5));
  animation: fdSplashIn 1s cubic-bezier(.2,.7,.2,1) both;
}
.fd-splash__bar {
  width: 220px; height: 2px; border-radius: 2px; overflow: hidden; position: relative;
  background: rgba(217,174,116,0.16);
}
.fd-splash__bar::after {
  content: ""; position: absolute; top: 0; height: 100%; width: 40%; left: -40%;
  background: linear-gradient(90deg, transparent, #ECC58F, transparent);
  animation: fdSplashBar 1.1s ease-in-out infinite;
}
@keyframes fdSplashIn { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes fdSplashBar { 0% { left: -40%; } 100% { left: 100%; } }
@media (prefers-reduced-motion: reduce) { .fd-splash__logo, .fd-splash__bar::after { animation: none; } }

/* ============================================================
   Site-wide brand-logo glow — the same pulsing gold glow as the nav lockup,
   applied to every FD logo instance (footer, splash, homepage divider, mobile
   menu). splash.css loads on all pages, so this covers the whole site.
   (Inline body-text mentions of "Famous Drive" are intentionally NOT glowed —
   there are 300+ and glowing paragraph copy reads as gaudy / hurts legibility.)
   ============================================================ */
@keyframes fd-logo-glow {
  0%, 100% { filter: drop-shadow(0 0 1px rgba(236,197,143,0.25)) brightness(1); }
  50%      { filter: drop-shadow(0 0 11px rgba(236,197,143,0.88)) brightness(1.10); }
}
.footer-blogo,
.fd-splash__logo,
.fd-divider__logo,
.nav-menu-logo,
.links__logo {
  will-change: filter;
  animation: fd-logo-glow 3s ease-in-out infinite;
}
.footer-blogo:hover { animation-duration: 1.6s; }
@media (prefers-reduced-motion: reduce) {
  .footer-blogo, .fd-splash__logo, .fd-divider__logo, .nav-menu-logo, .links__logo { animation: none; }
}

/* ============================================================
   Pulsing gold glow on the primary "Reserve" / gold CTA buttons —
   same champagne glow as the logo lockup. Idle pulse + quicker on hover.
   Scoped to gold buttons only (ghost/outline buttons via --modifier excluded).
   ============================================================ */
@keyframes fd-btn-glow {
  0%, 100% { filter: drop-shadow(0 0 0.5px rgba(236,197,143,0.18)); }
  50%      { filter: drop-shadow(0 0 12px rgba(236,197,143,0.72)); }
}
.btn--gold,
a.btn:not([class*="--"]),
button.btn:not([class*="--"]) {
  animation: fd-btn-glow 3s ease-in-out infinite;
  will-change: filter;
}
.btn--gold:hover,
a.btn:not([class*="--"]):hover,
button.btn:not([class*="--"]):hover { animation-duration: 1.5s; }
@media (prefers-reduced-motion: reduce) {
  .btn--gold, a.btn:not([class*="--"]), button.btn:not([class*="--"]) { animation: none; }
}

/* Reserve / gold CTA buttons → Bright champagne #ECC58F (user pick 2026-06-18) */
.btn--gold,
a.btn:not([class*="--"]),
button.btn:not([class*="--"]) {
  background: #ECC58F !important;
  border-color: #ECC58F !important;
  color: #2A1E12 !important;
}
.btn--gold:hover,
a.btn:not([class*="--"]):hover,
button.btn:not([class*="--"]):hover {
  background: #F2D6A2 !important;
  border-color: #F2D6A2 !important;
  color: #2A1E12 !important;
}
