/* ==========================================================================
   TOUR LINK — Design System
   Executive-premium motorcoach transportation brand.
   Built with Flexbox-only layouts so every section maps to a native
   Elementor Container in the future WordPress rebuild. No CSS Grid.
   ========================================================================== */

/* ---------- Design Tokens ---------- */
:root {
  --navy: #0B1F3A;
  --navy-2: #153452;
  --navy-deep: #081827; /* cinematic dark surface — hero scrim, dark editorial bands */
  --warm-white: #F8F7F3;
  --white: #FFFFFF;
  --charcoal: #262B30;
  --gray: #66717C;
  --gold: #C59032;
  --gold-dark: #A6772A;
  --gold-soft: rgba(197, 144, 50, 0.55);
  --border: #E1E5E8;
  --border-on-dark: rgba(248, 247, 243, 0.14);

  --font-heading: 'Manrope', 'Segoe UI', Arial, sans-serif;
  --font-body: 'Inter', 'Segoe UI', Arial, sans-serif;

  --container-w: 1220px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;

  --shadow-sm: 0 1px 3px rgba(11, 31, 58, 0.08);
  --shadow-md: 0 8px 24px rgba(11, 31, 58, 0.10);
  --shadow-lg: 0 16px 40px rgba(11, 31, 58, 0.14);

  /* Spacing scale — used by new editorial sections */
  --space-xs: 8px;
  --space-sm: 16px;
  --space-md: 24px;
  --space-lg: 40px;
  --space-xl: 64px;
  --space-2xl: 96px;
  --space-3xl: 140px;

  /* Motion */
  --ease-base: 280ms cubic-bezier(.4,0,.2,1);
  --ease-fast: 160ms ease;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- Reset / Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  color: var(--charcoal);
  background: var(--white);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4 {
  font-family: var(--font-heading);
  font-weight: 800;
  line-height: 1.2;
  margin: 0 0 16px;
  color: var(--navy);
  letter-spacing: -0.01em;
}
h1 { font-size: clamp(2.4rem, 4.6vw, 3.8rem); }
p { margin: 0 0 16px; color: var(--gray); }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 1rem; }

/* Visible keyboard focus */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid var(--gold);
  outline-offset: 2px;
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--navy);
  color: var(--white);
  padding: 12px 20px;
  z-index: 1000;
  border-radius: 0 0 var(--radius-sm) 0;
}
.skip-link:focus { left: 0; }

/* ---------- Layout Helpers ---------- */
.container {
  width: 100%;
  max-width: var(--container-w);
  margin: 0 auto;
  padding: 0 24px;
}
.section { padding: 88px 0; }
.section-sm { padding: 56px 0; }
.section--warm { background: var(--warm-white); }
.section--navy { background: var(--navy); }
.section--navy h2, .section--navy h3 { color: var(--white); }
.section--navy p { color: rgba(248, 247, 243, 0.78); }

.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.gap-sm { gap: 16px; }
.gap-md { gap: 32px; }
.gap-lg { gap: 56px; }

.eyebrow {
  display: inline-block;
  font-family: var(--font-heading);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-dark);
  margin-bottom: 14px;
  position: relative;
  padding-left: 22px;
}
.eyebrow::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 14px;
  height: 2px;
  background: var(--gold);
}
.section--navy .eyebrow { color: var(--gold); }

.section-head {
  max-width: 720px;
  margin: 0 0 48px;
}
.section-head.center { margin-left: auto; margin-right: auto; text-align: center; }
.section-head h2 { margin-bottom: 14px; }
.section-head p { font-size: 1.05rem; margin-bottom: 0; }

.text-white { color: var(--white) !important; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 15px 30px;
  border-radius: var(--radius-sm);
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  border: 2px solid transparent;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  white-space: nowrap;
}
.btn:hover { transform: translateY(-1px); }
.btn-gold {
  background: var(--gold);
  color: var(--navy);
}
.btn-gold:hover { background: var(--gold-dark); color: var(--white); }
.btn-outline-light {
  background: transparent;
  color: var(--white);
  border-color: rgba(248, 247, 243, 0.55);
}
.btn-outline-light:hover { border-color: var(--white); background: rgba(255,255,255,0.08); }
.btn-outline-navy {
  background: transparent;
  color: var(--navy);
  border-color: var(--navy);
}
.btn-outline-navy:hover { background: var(--navy); color: var(--white); }
.btn-navy {
  background: var(--navy);
  color: var(--white);
}
.btn-navy:hover { background: var(--navy-2); }
.btn-block { width: 100%; }
.btn-lg { padding: 18px 36px; font-size: 1rem; }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 500;
  background: var(--white);
  border-bottom: 1px solid var(--border);
}
.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 14px;
  padding-bottom: 14px;
  gap: 24px;
}
.logo-link { display: flex; align-items: center; flex-shrink: 0; }
.logo-link img { height: 52px; width: auto; }

.main-nav { display: flex; align-items: center; gap: 8px; }
.main-nav ul { display: flex; align-items: center; gap: 4px; }
.main-nav a:not(.btn) {
  display: inline-block;
  padding: 10px 14px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--navy);
  border-radius: var(--radius-sm);
  transition: background 0.15s ease, color 0.15s ease;
}
.main-nav a:not(.btn):hover { background: var(--warm-white); color: var(--gold-dark); }
.main-nav a.is-active { color: var(--gold-dark); }
.header-actions { display: flex; align-items: center; gap: 10px; }
.header-call {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--navy);
  padding: 10px 8px;
}
.header-call svg { flex-shrink: 0; }

.nav-toggle {
  display: none;
  background: none;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 9px 11px;
}
.nav-toggle svg { display: block; }

/* ---------- Cards: Services ---------- */
.card-row { display: flex; flex-wrap: wrap; gap: 28px; }
.service-card {
  flex: 1 1 320px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color .2s ease;
}
.service-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); border-color: transparent; }
.service-icon {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: var(--warm-white);
  color: var(--gold-dark);
  margin-bottom: 20px;
}
.service-card h3 { font-size: 1.2rem; margin-bottom: 10px; }
.service-card p { font-size: 0.95rem; margin-bottom: 18px; flex-grow: 1; }
.card-link {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.88rem;
  color: var(--navy);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.service-card:hover .card-link { color: var(--gold-dark); }

/* ---------- Quote Form ---------- */
.quote-section .section-head { max-width: 640px; }
.quote-form {
  background: var(--white);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: var(--shadow-lg);
}
.quote-form__fields { min-width: 0; margin: 0; padding: 0; border: 0; }
.quote-form__fallback { margin: 0 0 20px; }
.form-row { display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 20px; }
.form-field { flex: 1 1 240px; display: flex; flex-direction: column; gap: 6px; }
.form-field.full { flex-basis: 100%; }
.form-field label {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.85rem;
  color: var(--navy);
}
.form-field .req { color: var(--gold-dark); }
.form-field input,
.form-field select,
.form-field textarea {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  color: var(--charcoal);
  background: var(--white);
}
.form-field textarea { resize: vertical; min-height: 100px; }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus { border-color: var(--gold); }
.form-note {
  font-size: 0.82rem;
  color: var(--gray);
  margin-top: 14px;
  margin-bottom: 0;
}
.form-success {
  display: none;
  background: var(--warm-white);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 24px;
  margin-top: 20px;
  color: var(--navy);
  font-family: var(--font-heading);
  font-weight: 600;
}
.form-success.is-visible { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 16px; align-items: start; }
.form-success { scroll-margin-block: 100px; }
.form-success:focus-visible { outline: 2px solid #886225; outline-offset: 6px; }
.form-success__mark {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  color: #886225;
  border: 1px solid currentColor;
  border-radius: 50%;
}
.form-success .form-success__message { margin: 0; color: inherit; font: inherit; line-height: 1.6; text-wrap: pretty; }
@media (max-width: 600px) {
  .form-success.is-visible { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Final CTA ---------- */
.final-cta { background: var(--navy-2); }
.final-cta .container {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-top: 56px;
  padding-bottom: 56px;
}
.final-cta h2 { color: var(--white); margin-bottom: 6px; }
.final-cta p { margin: 0; color: rgba(248, 247, 243, 0.82); }
.final-cta-actions { display: flex; flex-wrap: wrap; gap: 14px; }

/* ---------- Footer ---------- */
.site-footer { background: var(--navy); color: rgba(248,247,243,0.75); }
.footer-top {
  display: flex;
  flex-wrap: wrap;
  gap: 48px;
  padding: 72px 0 48px;
}
.footer-brand { flex: 1 1 280px; min-width: 240px; }
.footer-brand img { height: 44px; margin-bottom: 0; }
.footer-brand .logo-lockup { margin-bottom: 12px; }
.footer-brand p { color: rgba(248,247,243,0.75); font-size: 0.92rem; max-width: 320px; margin: 0; }
.footer-col { flex: 1 1 180px; min-width: 160px; }
.footer-col h4 {
  color: var(--white);
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 18px;
}
.footer-col ul { display: flex; flex-direction: column; gap: 11px; }
.footer-col a { font-size: 0.92rem; color: rgba(248,247,243,0.75); }
.footer-col a:hover { color: var(--gold); }
.footer-bottom {
  border-top: 1px solid rgba(248,247,243,0.14);
  padding: 22px 0;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: space-between;
  font-size: 0.85rem;
  color: rgba(248,247,243,0.55);
}
.footer-bottom a { color: rgba(248,247,243,0.55); }
.footer-bottom a:hover { color: var(--gold); }
.footer-link-button {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: rgba(248,247,243,0.55);
  cursor: pointer;
}
.footer-link-button:hover { color: var(--gold); }
.footer-nav-mobile { display: none; }
.footer-privacy { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; }
.footer-privacy a,
.footer-privacy button { display: inline-flex; align-items: center; min-height: 44px; }
.footer-bottom,
.footer-bottom a,
.footer-link-button { color: rgba(248,247,243,0.72); }

/* ---------- Consent Banner ---------- */
.consent-banner {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 700;
  background: var(--navy);
  border-top: 1px solid rgba(248,247,243,0.14);
  padding: 18px 0;
  box-shadow: 0 -6px 20px rgba(11,31,58,0.18);
}
.consent-banner-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.consent-banner-inner p {
  color: rgba(248,247,243,0.85);
  font-size: 0.9rem;
  margin: 0;
  max-width: 640px;
}
.consent-banner-actions {
  display: flex;
  gap: 12px;
  flex-shrink: 0;
}
@media (max-width: 860px) {
  .consent-banner { bottom: 62px; }
}

/* ---------- Generic Content Page Blocks ---------- */
.page-hero { background: var(--navy); padding: 64px 0; }
.page-hero .eyebrow { color: var(--gold); }
.page-hero h1 { color: var(--white); margin-bottom: 14px; max-width: 760px; }
.page-hero p:not(.breadcrumbs) { color: rgba(248,247,243,0.8); max-width: 620px; font-size: 1.05rem; margin-bottom: 0; }
.breadcrumbs {
  font-size: 0.85rem;
  color: rgba(248,247,243,0.6);
  margin-bottom: 18px;
}
.breadcrumbs a { color: rgba(248,247,243,0.75); }
.breadcrumbs a:hover { color: var(--gold); }
.page-hero--compact { padding: clamp(40px, 5vw, 64px) 0; }
.page-hero--compact h1 { text-wrap: balance; letter-spacing: -0.025em; }
.page-hero--compact p:not(.breadcrumbs) { text-wrap: pretty; }
@media (max-width: 640px) {
  .page-hero--compact { padding: 28px 0 32px; }
  .page-hero--compact .breadcrumbs { font-size: 0.8rem; line-height: 1.6; margin-bottom: 20px; }
  .page-hero--compact h1 { font-size: clamp(1.9rem, 8.3vw, 2.5rem); line-height: 1.13; margin-bottom: 16px; }
  .page-hero--compact .eyebrow { font-size: 0.68rem; margin-bottom: 12px; }
  .page-hero--compact + .section { padding-top: 32px; }
}

.content-block { display: flex; gap: 56px; align-items: center; flex-wrap: wrap; }
.content-block.reverse { flex-direction: row-reverse; }
.content-block-media { flex: 1 1 460px; min-width: 300px; }
.content-block-media img { border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
.content-block-copy { flex: 1 1 460px; min-width: 300px; }
.content-block-copy ul { display: flex; flex-direction: column; gap: 12px; margin: 20px 0; }
.content-block-copy ul li {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  color: var(--charcoal);
}
.content-block-copy ul li svg { flex-shrink: 0; color: var(--gold); margin-top: 4px; }

.two-col { display: flex; flex-wrap: wrap; gap: 40px; }
.two-col > * { flex: 1 1 320px; min-width: 280px; }

.info-card {
  background: var(--warm-white);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 26px;
}
.info-card h3 { font-size: 1.05rem; margin-bottom: 8px; }
.info-card p { margin: 0; font-size: 0.92rem; }

.notice-card {
  background: var(--white);
  border: 1px solid var(--gold);
  border-left: 4px solid var(--gold);
  border-radius: var(--radius-sm);
  padding: 18px 22px;
  font-size: 0.92rem;
  color: var(--charcoal);
}

.accordion-item { border-bottom: 1px solid var(--border); }
.accordion-trigger {
  width: 100%;
  background: none;
  border: none;
  text-align: left;
  padding: 20px 4px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--navy);
  font-size: 1rem;
}
.accordion-trigger .plus { transition: transform 0.2s ease; color: var(--gold); flex-shrink: 0; }
.accordion-trigger[aria-expanded="true"] .plus { transform: rotate(45deg); }
.accordion-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.25s ease;
}
.accordion-panel-inner { padding: 0 4px 20px; }
.accordion-panel-inner p { margin: 0; }

/* ---------- Location list (Service Areas hub) ---------- */
.location-grid { display: flex; flex-wrap: wrap; gap: 24px; }
.location-card {
  flex: 1 1 280px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 26px;
}
.location-card h3 { font-size: 1.05rem; margin-bottom: 8px; }
.location-card p { font-size: 0.9rem; margin-bottom: 14px; }

/* ---------- Mobile actions: the same dark surface as the header ---------- */
.mobile-conv-bar {
  display: none;
  position: fixed;
  inset: auto 0 0;
  z-index: 600;
  padding: 6px max(12px, env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  background: #0b1d2b;
  border-top: 1px solid rgba(222, 209, 181, 0.18);
  box-shadow: 0 -8px 24px rgba(3, 12, 20, 0.18);
}
.mobile-conv-bar .container { padding: 0; }
.mobile-conv-bar ul { display: grid; grid-template-columns: 1fr 1fr 1.15fr; gap: 6px; }
.mobile-conv-bar li { min-width: 0; }
.mobile-conv-bar a {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 50px;
  padding: 7px 4px;
  border-radius: 8px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 0.7rem;
  line-height: 1.15;
  letter-spacing: 0.01em;
  color: #e1e6e7;
  transition: background 160ms ease-out, transform 160ms ease-out;
}
.mobile-conv-bar svg { width: 18px; height: 18px; }
.mobile-conv-bar li.is-quote a {
  background: #d0aa64;
  color: #091b2b;
}
.mobile-conv-bar a:active { transform: translateY(1px); }
.mobile-conv-bar a:focus-visible { outline: 2px solid #f4d38c; outline-offset: 2px; }
@media (hover: hover) {
  .mobile-conv-bar a:hover { background: #243b4a; }
  .mobile-conv-bar li.is-quote a:hover { background: #dfbd80; }
}
@media (max-width: 860px) {
  body { --mobile-actions-height: calc(68px + env(safe-area-inset-bottom)); }
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1024px) {
  .main-nav ul { gap: 0; }
  .main-nav a:not(.btn) { padding: 10px 10px; font-size: 0.9rem; }
  .trust-item { flex: 1 1 45%; }
  .trust-item:nth-child(3) { border-left: none; }
}

@media (max-width: 860px) {
  .site-header .main-nav { display: none; }
  .nav-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .header-call span.call-text { display: none; }

  .site-header.is-open .main-nav {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--white);
    border-bottom: 1px solid var(--border);
    box-shadow: var(--shadow-md);
    padding: 12px 24px 20px;
  }
  .site-header.is-open .main-nav ul { flex-direction: column; align-items: stretch; gap: 2px; }
  .site-header.is-open .main-nav a:not(.btn) { padding: 13px 10px; }

  .hero .container { flex-direction: column; padding-top: 44px; padding-bottom: 44px; }
  .hero-media { order: -1; width: 100%; }
  .hero-copy { width: 100%; }
  .hero-copy .lead { max-width: none; }

  .fleet-section .container { flex-direction: column; }
  .content-block, .content-block.reverse { flex-direction: column; gap: 32px; }
  /* Desktop width bases become empty height in a column. Stack to content. */
  .content-block-media, .content-block-copy { flex: 0 1 auto; min-width: 0; width: 100%; }
  .content-block-copy > :last-child { margin-bottom: 0; }

  .final-cta .container { flex-direction: column; align-items: flex-start; }

  body { padding-bottom: 62px; }
  .mobile-conv-bar { display: block; }
}

@media (max-width: 640px) {
  .section { padding: 56px 0; }
  .section-sm { padding: 40px 0; }
  .trust-item { flex: 1 1 100%; border-left: none !important; border-top: 1px solid var(--border); padding: 18px 0 0; }
  .trust-item:first-child { border-top: none; padding-top: 8px; }
  .quote-form { padding: 26px 20px; }
  .footer-top { padding: 52px 0 32px; }
  .footer-bottom { flex-direction: column; }
  .final-cta .container { padding-top: 40px; padding-bottom: 40px; }
  .final-cta-actions .btn { flex: 1 1 auto; white-space: normal; text-align: center; }
}

/* ==========================================================================
   EDITORIAL SYSTEM — introduced on the homepage, now shared site-wide
   Originated as additive, homepage-only components; several (.service-index,
   .route-list, .capability-stats) are now reused directly on other pages
   during the design-system propagation pass. Section-specific components
   that are genuinely homepage-only (.hero-cinematic, .display-1, the
   Capability/Fleet/Florida dark bands, the Quote section) are still scoped
   to the homepage only — see DESIGN.md for which is which.
   ========================================================================== */

.display-1 {
  font-family: var(--font-heading);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.04;
  font-size: clamp(2.75rem, 6.4vw, 5.6rem);
  margin: 0;
}
.display-2 {
  font-family: var(--font-heading);
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.08;
  font-size: clamp(2.1rem, 4.6vw, 3.9rem);
  margin: 0;
}
.signal-label {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold-dark);
}

/* Dark-section text/color standardization (mirrors the Phase-1
   .section--navy pattern for the v2 homepage's dark bands, which don't use
   that class since they need navy-deep/navy-2 backgrounds instead of the
   plain --navy it applies). Replaces what were previously inline
   style="color:..." attributes on each element — same computed colors,
   now systematic. */
.capability-band .signal-label,
.scale-band .signal-label,
.florida-band .signal-label,
.quote-section .signal-label { color: var(--gold); }

.florida-band h2,
.quote-section h2 { color: var(--white); }
.florida-band p,
.quote-section p { color: rgba(248, 247, 243, 0.78); }

.quote-section { background: var(--navy-2); padding: var(--space-2xl) 0; }
.airport-quote-section { scroll-margin-top: 92px; }

.site-footer .logo-word { color: var(--white); }
.site-footer .logo-tagline { color: var(--gold); }

/* Scroll reveal — progressive enhancement only; content is visible without JS.
   Only .js-reveal-ready (added by main.js when IntersectionObserver exists)
   arms the pre-reveal hidden state, so no-JS visitors always see full content. */
.reveal { transition: opacity 600ms var(--ease-base), transform 600ms var(--ease-base); }
.js-reveal-ready .reveal { opacity: 0; transform: translateY(18px); }
.js-reveal-ready .reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .js-reveal-ready .reveal { opacity: 1 !important; transform: none !important; }
}

/* ---------- Header v2 (logo lockup) ---------- */
.logo-lockup { display: flex; align-items: center; gap: 10px; }
img.logo-mark-icon { height: 36px; width: auto; display: block; }
/* The approved mark is navy+gold (light-background version); on a dark
   surface like the footer its navy strokes disappear, so it sits on a
   small warm-white plate there — the same light-background treatment
   shown in the brand concept board, not a recolor of the mark itself. */
.logo-icon-plate {
  display: flex;
  align-items: center;
  background: var(--warm-white);
  border-radius: var(--radius-sm);
  padding: 6px 8px;
}
.logo-word-group { display: flex; flex-direction: column; line-height: 1; }
.logo-word {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.24rem;
  color: var(--navy);
  letter-spacing: -0.01em;
}
.logo-tagline {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.56rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-dark);
  margin-top: 3px;
}

/* ---------- Hero Cinematic ---------- */
.hero-cinematic {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--navy-deep);
}
.hero-cinematic .hero-media { position: absolute; inset: 0; z-index: 0; }
.hero-cinematic .hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 68% center;
  filter: brightness(0.92) saturate(1.02);
  /* Carried forward from the old (now-removed) Phase-1 .hero-media img rule,
     which was still leaking these two properties onto this element via the
     cascade — preserved here verbatim so removing that dead rule causes no
     visual change. */
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
}
.hero-scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(100deg,
    rgba(8,24,39,0.94) 0%,
    rgba(8,24,39,0.82) 30%,
    rgba(8,24,39,0.42) 55%,
    rgba(8,24,39,0.08) 75%,
    rgba(8,24,39,0) 88%);
}
.hero-content {
  position: relative;
  z-index: 2;
  max-width: 620px;
  padding: var(--space-2xl) 0;
}
.hero-content .display-1 { color: var(--white); margin-bottom: var(--space-md); }
.hero-content .display-1 em { font-style: normal; color: var(--white); opacity: 0.72; }
.hero-lead {
  font-size: 1.15rem;
  color: rgba(248,247,243,0.86);
  max-width: 480px;
  margin-bottom: var(--space-lg);
}
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: var(--space-lg); }
.hero-signal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  color: rgba(248,247,243,0.85);
}
.hero-signal .dot { color: var(--gold); }

/* ---------- Capability Band (dark statement) ---------- */
.capability-band { background: var(--navy-deep); color: var(--white); overflow: hidden; }
.capability-band .container { display: flex; align-items: center; gap: var(--space-2xl); flex-wrap: wrap; }
.capability-copy { flex: 1 1 480px; min-width: 300px; }
.capability-copy .display-2 { color: var(--white); }
.capability-copy .display-2 span { display: block; }
.capability-copy .display-2 span.is-muted { color: rgba(248,247,243,0.4); }
.capability-lead { color: rgba(248,247,243,0.78); font-size: 1.05rem; max-width: 460px; margin: var(--space-md) 0 var(--space-lg); }
.capability-stats { display: flex; flex-wrap: wrap; gap: var(--space-lg); }
.capability-stat { border-left: 1px solid var(--border-on-dark); padding-left: 16px; }
.capability-stat:first-child { border-left: none; padding-left: 0; }
.capability-stat .num { display: block; font-family: var(--font-heading); font-weight: 800; font-size: 1.6rem; color: var(--gold); margin-bottom: 4px; }
.capability-stat .lbl { font-size: 0.82rem; color: rgba(248,247,243,0.7); }
/* Light-surface variant — same gold-numeral stat pattern, reused on light
   pages (e.g. the Fleet page) where the dark-background hairline/label
   colors above would be invisible. */
.capability-stats.is-light .capability-stat { border-left-color: var(--border); }
.capability-stats.is-light .capability-stat .lbl { color: var(--gray); }
.capability-media { flex: 1 1 420px; min-width: 280px; }
.capability-media img {
  width: 100%;
  border-radius: var(--radius-md);
  filter: saturate(1.02);
}

/* ---------- Services — editorial index rows ---------- */
.service-index { display: flex; flex-direction: column; }
.service-row {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  padding: 34px 0;
  border-top: 1px solid var(--border);
  text-decoration: none;
  transition: padding-left var(--ease-base), background var(--ease-base);
}
.service-index a.service-row:hover,
.service-index a.service-row:focus-visible { padding-left: 14px; background: var(--warm-white); }
.service-row:last-child { border-bottom: 1px solid var(--border); }
.service-row-num {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.1rem;
  color: var(--gold);
  flex: 0 0 48px;
}
.service-row-body { flex: 1 1 auto; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 28px; }
.service-row-title { font-family: var(--font-heading); font-weight: 800; font-size: 1.35rem; color: var(--navy); margin: 0; flex: 0 0 auto; min-width: 280px; }
.service-row-desc { color: var(--gray); font-size: 0.98rem; margin: 0; max-width: 480px; }
.service-row-arrow {
  flex: 0 0 auto;
  color: var(--navy);
  display: flex;
  align-items: center;
  transition: transform var(--ease-base), color var(--ease-base);
}
.service-index a.service-row:hover .service-row-arrow,
.service-index a.service-row:focus-visible .service-row-arrow { transform: translateX(6px); color: var(--gold-dark); }

/* ---------- Movement (route motif) ---------- */
.route-list { display: flex; flex-direction: column; }
.route-row {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 22px 0;
  border-top: 1px solid var(--border);
  flex-wrap: wrap;
}
.route-list .route-row:last-child { border-bottom: 1px solid var(--border); }
.route-point {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: clamp(1.15rem, 2.4vw, 1.7rem);
  color: var(--navy);
  letter-spacing: -0.01em;
}
.route-line {
  flex: 1 1 60px;
  min-width: 40px;
  height: 1px;
  background: var(--border);
  position: relative;
  margin: 0 2px;
}
.route-line::after {
  content: "";
  position: absolute;
  right: -1px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-top: 2px solid var(--gold);
  border-right: 2px solid var(--gold);
  transform: translateY(-50%) rotate(45deg);
  transition: transform var(--ease-base);
}
.route-row:hover .route-line::after { transform: translateY(-50%) rotate(45deg) translateX(4px); }
.route-note { font-size: 0.85rem; color: var(--gray); margin-top: var(--space-md); }

/* ---------- Cruise port ↔ airport conversion page ---------- */
/* V2: one composed scene, not a card beside text. Everything scroll-linked
   reads one custom property, --cruise-p (0 → 1), written by
   useScrollProgress. The CSS default is the finished state, so no-JS
   visitors, crawlers and reduced-motion always get the resolved route. The
   hook adds `.is-scrub` plus one mode class: `.is-pinned` (wide, tall
   viewports: the stage pins and the thread resolves over extra scroll room)
   or `.is-flow` (everything else: no pin; the thread resolves during the
   first short scroll while the headline and actions are still on screen).
   Layout never changes on activation, so arming causes no layout shift.
   The H1, support line, Quote and Call are never faded or moved out of
   view; only the thread, its fragments, the markers and the divider animate. */
.cruise-transfer-page { --cruise-p: 1; }
.cruise-transfer-page.is-scrub { --cruise-p: 0; }

.cruise-transfer-hero { background: var(--navy-deep); padding: 0; }
.cruise-hero-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 560px;
  padding: 64px 0 0;
  overflow: clip;
  isolation: isolate;
}
/* Wide, tall viewports: the stage is one viewport tall with or without JS,
   its top padding clears the sticky site header (~90px), and the scene sits
   on the bottom edge so the divider lands exactly where the next section
   will arrive. */
@media (min-width: 901px) and (min-height: 720px) {
  .cruise-hero-stage { min-height: 100vh; min-height: 100svh; padding: 124px 0 0; }
}
.cruise-transfer-page.is-pinned .cruise-transfer-hero { min-height: 172vh; }
.cruise-transfer-page.is-pinned .cruise-hero-stage { position: sticky; top: 0; }
/* Cold-load beat: when the scrub arms, the resolved thread pulls back into
   fragments over one short ease instead of snapping. Transforms and strokes
   never register as layout shift; this only removes the visible hop. */
.cruise-transfer-page.is-arming .cruise-thread-draw,
.cruise-transfer-page.is-arming .cruise-thread-head,
.cruise-transfer-page.is-arming .cruise-thread-frag {
  transition: stroke-dashoffset 480ms var(--ease-base), opacity 480ms var(--ease-base), transform 480ms var(--ease-base);
}
.cruise-transfer-page.is-arming .cruise-hero-copy,
.cruise-transfer-page.is-arming .cruise-divider,
.cruise-transfer-page.is-arming .cruise-plan-layout {
  transition: transform 480ms var(--ease-base), clip-path 480ms var(--ease-base);
}
/* Calm depth: one key light near the crest of the route and a soft ground
   glow under it. Surface lighting, not a decorative gradient; below content. */
.cruise-hero-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(42% 38% at 62% 74%, rgba(197, 144, 50, 0.10), transparent 70%),
    radial-gradient(55% 45% at 18% 96%, rgba(248, 247, 243, 0.05), transparent 70%);
  pointer-events: none;
}
.cruise-hero-layout {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  gap: 28px;
  width: 100%;
}
.cruise-hero-copy {
  max-width: 760px;
  transform: translateY(calc(var(--cruise-p) * -6px));
}
.cruise-transfer-hero h1 {
  max-width: 760px;
  font-size: clamp(2.3rem, 4.9vw, 4.2rem);
  line-height: 1.02;
  letter-spacing: -0.02em;
  margin-bottom: 18px;
}
.cruise-h1-line { display: block; }
.cruise-transfer-hero .cruise-hero-copy > p:not(.breadcrumbs) {
  max-width: 560px;
  font-size: 1.08rem;
  color: rgba(248, 247, 243, 0.86);
}
.cruise-hero-actions { margin-top: 28px; margin-bottom: 0; }

/* The scene: the route thread and its three marks, sitting on the bottom
   edge of the stage. --exit is where the thread leaves the scene and the
   divider grows from. */
.cruise-scene {
  --exit: 90%;
  position: relative;
  flex: 1 1 300px;
  width: 100%;
  min-height: 300px;
  margin: 0;
}
.cruise-thread-svg {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}
.cruise-thread-svg--m { display: none; }
.cruise-thread-svg path {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.cruise-thread-base { stroke: rgba(248, 247, 243, 0.14); stroke-width: 1; }
/* Fragments: the planner's separate details. Two dashed layers drift along
   the route and converge onto it as the thread resolves, fading out over the
   last quarter; the solid thread covers whatever remains behind its head. */
.cruise-thread-frag {
  stroke: var(--gold);
  stroke-width: 1.5;
  opacity: calc(0.7 * clamp(0, (1 - var(--cruise-p)) * 4, 1));
}
.cruise-thread-frag--a {
  stroke-dasharray: 0.028 0.052;
  stroke-dashoffset: calc(var(--cruise-p) * -0.24);
}
.cruise-thread-frag--b {
  stroke-dasharray: 0.016 0.07;
  stroke-dashoffset: calc(0.045 - var(--cruise-p) * 0.32);
  transform: translateY(calc((1 - var(--cruise-p)) * -9px));
  opacity: calc(0.5 * clamp(0, (1 - var(--cruise-p)) * 4, 1));
}
.cruise-thread-draw {
  stroke: var(--gold);
  stroke-width: 1.5;
  stroke-dasharray: 1 1;
  stroke-dashoffset: calc(1 - var(--cruise-p));
}
/* The luminous head: a short dash that always ends at the drawn tip. */
.cruise-thread-head {
  stroke: #f3d28a;
  stroke-width: 3;
  stroke-dasharray: 0.07 1;
  stroke-dashoffset: calc(0.07 - var(--cruise-p));
  filter: drop-shadow(0 0 6px rgba(197, 144, 50, 0.9));
  opacity: calc(min(var(--cruise-p) * 40, 1) - max((var(--cruise-p) - 0.985) * 66, 0));
}
/* Marks: labels pinned to points on the route, not a stepper. Each lights
   as the head passes (--at). Text is always fully legible. */
.cruise-marks {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}
.cruise-mark {
  --lit: clamp(0, calc((var(--cruise-p) - var(--at)) * 10), 1);
  position: absolute;
  left: var(--dx);
  top: var(--dy);
  width: 0;
  height: 0;
  color: var(--white);
}
.cruise-mark-dot {
  position: absolute;
  left: -7px;
  top: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 1.5px solid rgba(248, 247, 243, 0.5);
  background: var(--navy-deep);
  box-shadow: 0 0 0 5px var(--navy-deep);
}
.cruise-mark-dot::after {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: inherit;
  background: var(--gold);
  box-shadow: 0 0 14px rgba(197, 144, 50, 0.8);
  opacity: var(--lit);
  transform: scale(calc(0.6 + var(--lit) * 0.4));
  transition: opacity 240ms var(--ease-base), transform 240ms var(--ease-base);
}
/* The coach is the one solid unit on the line: a short gold bar, not a dot. */
.cruise-mark--coach .cruise-mark-dot {
  left: -17px;
  top: -5px;
  width: 34px;
  height: 10px;
  border-radius: 5px;
}
.cruise-mark--coach .cruise-mark-dot::after { inset: 2px; }
.cruise-mark-label {
  position: absolute;
  display: flex;
  flex-direction: column;
  gap: 3px;
  white-space: nowrap;
}
.cruise-mark-title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.98rem;
  letter-spacing: -0.01em;
  line-height: 1.15;
}
.cruise-mark-places {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: 1.3;
  color: var(--gold);
}
.cruise-mark--terminal .cruise-mark-label { left: 16px; top: 10px; }
.cruise-mark--coach .cruise-mark-label { left: 0; bottom: 18px; transform: translateX(-50%); align-items: center; text-align: center; }
.cruise-mark--airport .cruise-mark-label { right: 14px; top: 12px; align-items: flex-end; text-align: right; }
.cruise-scene-caption {
  position: absolute;
  top: 4px;
  right: 0;
  max-width: 240px;
  margin: 0;
  text-align: right;
  font-size: 0.72rem;
  line-height: 1.4;
  letter-spacing: 0.02em;
  color: rgba(248, 247, 243, 0.7);
}
/* The peak: the thread leaves the scene at --exit and becomes the gold rule
   that opens the next section, growing outward from that point. */
.cruise-divider {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  border-radius: 2px 2px 0 0;
  background: var(--gold);
  box-shadow: 0 0 14px rgba(197, 144, 50, 0.6);
  transform-origin: var(--exit) 50%;
  transform: scaleX(clamp(0, calc((var(--cruise-p) - 0.86) * 7), 1));
}
/* One short flare where the head exits into the divider: rises from 0.84,
   peaks near 0.92 and settles to a low resting glow at completion. Part of
   the same exit event, not a second interaction. */
.cruise-exit-flare {
  --rise: clamp(0, calc((var(--cruise-p) - 0.84) * 10), 1);
  --settle: clamp(0, calc(1 - (var(--cruise-p) - 0.92) * 8), 1);
  position: absolute;
  left: var(--exit);
  bottom: 0;
  width: 44px;
  height: 44px;
  margin: 0 0 -22px -22px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(243, 210, 138, 0.95) 0%, rgba(197, 144, 50, 0.55) 28%, rgba(197, 144, 50, 0) 70%);
  opacity: calc(var(--rise) * (0.4 + 0.6 * var(--settle)));
  transform: scale(calc(0.3 + var(--rise) * (0.5 + 0.5 * var(--settle))));
  pointer-events: none;
}

/* First transition: "What do you need from me?" The block is revealed by the
   last 10% of hero progress through a clip, so it opens under the divider
   without any layout movement. Finished state by default; scrubbed only
   under .is-scrub. */
.cruise-plan-section { padding-top: 64px; }
.cruise-plan-layout {
  --plan: clamp(0, calc((var(--cruise-p) - 0.9) * 10), 1);
  display: flex;
  align-items: flex-start;
  gap: var(--space-2xl);
  clip-path: inset(0 0 calc((1 - var(--plan)) * 100%) 0);
  transform: translateY(calc((1 - var(--plan)) * 18px));
  transition: clip-path 240ms var(--ease-base), transform 240ms var(--ease-base);
}
.cruise-plan-head { flex: 0 1 400px; }
.cruise-plan-head h2 { margin-bottom: 14px; }
.cruise-plan-head p { font-size: 1.05rem; margin: 0; }
.cruise-inputs {
  flex: 1 1 560px;
  min-width: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid rgba(197, 144, 50, 0.55);
}
.cruise-inputs li {
  display: grid;
  grid-template-columns: 18px minmax(0, 300px) 1fr;
  align-items: baseline;
  column-gap: 20px;
  padding: 18px 0;
  border-bottom: 1px solid var(--border);
}
.cruise-inputs li::before {
  content: "";
  height: 2px;
  background: var(--gold);
  align-self: center;
}
.cruise-input-title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.15rem;
  letter-spacing: -0.01em;
  color: var(--navy);
}
.cruise-input-hint { font-size: 0.92rem; color: var(--gray); }

@media (prefers-reduced-motion: reduce) {
  .cruise-transfer-page,
  .cruise-transfer-page.is-scrub { --cruise-p: 1 !important; }
  .cruise-transfer-page.is-pinned .cruise-transfer-hero { min-height: 0; }
  .cruise-transfer-page.is-pinned .cruise-hero-stage { position: relative; }
  .cruise-thread-head,
  .cruise-thread-frag { opacity: 0; }
  .cruise-hero-copy,
  .cruise-divider,
  .cruise-plan-layout,
  .cruise-mark-dot::after { transition: none; }
}

.cruise-route-list { display: flex; flex-direction: column; }
.cruise-route-row {
  display: flex;
  align-items: center;
  gap: 22px;
  padding: 22px 0;
  border-top: 1px solid var(--border);
}
.cruise-route-row:last-child { border-bottom: 1px solid var(--border); }
.cruise-route-row > a {
  flex: 0 1 280px;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: clamp(1.05rem, 2.2vw, 1.55rem);
  color: var(--navy);
}
.cruise-route-row > a:last-child { text-align: right; }
.cruise-route-row > a:hover,
.cruise-route-row > a:focus-visible { color: var(--gold-dark); }
.cruise-route-line {
  flex: 1 1 100px;
  display: flex;
  align-items: center;
  gap: 14px;
  color: var(--gold-dark);
}
.cruise-route-line::before,
.cruise-route-line::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--border); }

.cruise-details-layout {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2xl);
}
.cruise-details-intro { flex: 0 1 390px; position: sticky; top: 112px; }
.cruise-details-intro .btn { margin-top: var(--space-sm); }
.cruise-detail-list { flex: 1 1 620px; display: flex; flex-wrap: wrap; }
.cruise-detail-list li {
  flex: 1 1 46%;
  display: flex;
  gap: 18px;
  padding: 24px 20px 24px 0;
  border-top: 1px solid var(--border);
}
.cruise-detail-number {
  color: var(--gold-dark);
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
}
.cruise-detail-list h3 { font-size: 1rem; margin-bottom: 6px; }
.cruise-detail-list p { font-size: 0.9rem; margin: 0; }
.cruise-process { display: flex; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.cruise-process li { flex: 1 1 0; padding: 32px; border-left: 1px solid var(--border); }
.cruise-process li:first-child { border-left: 0; }
.cruise-process li > span {
  display: block;
  color: var(--gold-dark);
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  margin-bottom: 18px;
}
.cruise-process h3 { font-size: 1.05rem; }
.cruise-process p { font-size: 0.9rem; margin: 0; }
.cruise-location-layout { display: flex; align-items: center; gap: var(--space-xl); }
.cruise-location-layout > div { flex: 0 1 420px; }
.cruise-location-layout h2 { margin-bottom: 0; }
.cruise-location-links { flex: 1 1 600px; display: flex; flex-wrap: wrap; }
.cruise-location-links a {
  flex: 1 1 46%;
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 16px 0;
  margin-right: 24px;
  border-top: 1px solid var(--border);
  color: var(--navy);
  font-family: var(--font-heading);
  font-weight: 700;
}
.cruise-location-links a:hover,
.cruise-location-links a:focus-visible { color: var(--gold-dark); }

.cruise-faq-layout { display: flex; align-items: flex-start; gap: var(--space-2xl); }
.cruise-faq-heading { flex: 0 1 380px; }
.cruise-faq-list { flex: 1 1 650px; border-top: 1px solid var(--border); }
.cruise-faq-list details { border-bottom: 1px solid var(--border); }
.cruise-faq-list summary {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding: 22px 0;
  color: var(--navy);
  font-family: var(--font-heading);
  font-weight: 800;
  cursor: pointer;
  list-style: none;
}
.cruise-faq-list summary::-webkit-details-marker { display: none; }
.cruise-faq-list summary span { color: var(--gold-dark); font-size: 1.25rem; transition: transform var(--ease-fast); }
.cruise-faq-list details[open] summary span { transform: rotate(45deg); }
.cruise-faq-list details p { max-width: 680px; padding: 0 44px 22px 0; margin: 0; }
.cruise-quote-section { scroll-margin-top: 92px; }
.cruise-quote-layout { display: flex; align-items: flex-start; gap: var(--space-2xl); }
.cruise-quote-copy { flex: 0 1 430px; position: sticky; top: 112px; }
.cruise-quote-copy h2 { margin-top: 14px; }
.cruise-quote-copy .btn { margin-top: var(--space-sm); }
.cruise-quote-form { flex: 1 1 650px; }

@media (max-width: 900px) {
  .cruise-hero-layout,
  .cruise-details-layout,
  .cruise-location-layout,
  .cruise-faq-layout,
  .cruise-quote-layout { flex-direction: column; gap: 32px; }
  .cruise-location-layout > div { flex-basis: auto; width: 100%; }
  .cruise-hero-layout { align-items: stretch; gap: 20px; }
  .cruise-hero-stage::before {
    background:
      radial-gradient(60% 34% at 64% 84%, rgba(197, 144, 50, 0.10), transparent 70%),
      radial-gradient(70% 40% at 20% 100%, rgba(248, 247, 243, 0.05), transparent 70%);
  }
  /* Mobile scene: the same movement in a shorter box; marks use their
     mobile positions. The thread leaves near the right edge. */
  .cruise-scene { --exit: 97.2%; flex: 0 0 auto; height: 230px; min-height: 0; }
  .cruise-thread-svg--d { display: none; }
  .cruise-thread-svg--m { display: block; }
  .cruise-mark { left: var(--mx); top: var(--my); }
  .cruise-mark-title { font-size: 0.86rem; }
  .cruise-mark-places { font-size: 0.62rem; letter-spacing: 0.1em; }
  /* Explicit width: the mark itself is a zero-size anchor, so an absolutely
     positioned label would otherwise shrink to one word per line. */
  .cruise-mark--terminal .cruise-mark-label { left: 14px; top: 10px; width: 200px; white-space: normal; }
  .cruise-mark--coach .cruise-mark-label { left: auto; right: 10px; bottom: 12px; transform: none; align-items: flex-end; text-align: right; }
  .cruise-mark--airport .cruise-mark-label { right: 6px; top: 14px; }
  .cruise-scene-caption { max-width: 120px; font-size: 0.66rem; }
  .cruise-plan-layout { flex-direction: column; gap: var(--space-md); }
  .cruise-plan-head,
  .cruise-inputs { flex-basis: auto; width: 100%; }
  .cruise-inputs li { grid-template-columns: 18px 1fr; row-gap: 4px; }
  .cruise-input-title { grid-column: 2; }
  .cruise-input-hint { grid-column: 2; }
  .cruise-details-intro,
  .cruise-faq-heading,
  .cruise-quote-copy { position: static; flex-basis: auto; }
  .cruise-detail-list,
  .cruise-location-links,
  .cruise-faq-list,
  .cruise-quote-form { width: 100%; flex-basis: auto; }
}

@media (max-width: 640px) {
  /* Phone budget: headline, support line, Quote, Call and the whole scene
     (divider included) sit above the mobile conversion bar at 390x844. */
  .cruise-hero-stage { min-height: 0; padding: 22px 0 0; }
  .cruise-hero-layout { gap: 14px; }
  .cruise-hero-copy .breadcrumbs { margin-bottom: 10px; }
  .cruise-hero-copy .eyebrow { margin-bottom: 10px; }
  /* Two beats on a phone: the first sentence fits one line at 390px. */
  .cruise-transfer-hero h1 { font-size: clamp(1.5rem, 6.8vw, 2.4rem); letter-spacing: -0.025em; margin-bottom: 12px; }
  .cruise-transfer-hero .cruise-hero-copy > p:not(.breadcrumbs) { font-size: 1.02rem; margin-bottom: 12px; }
  .cruise-hero-actions { margin-top: 20px; gap: 10px; }
  .cruise-hero-actions .btn { width: 100%; padding-top: 13px; padding-bottom: 13px; }
  .cruise-scene { height: 200px; }
  .cruise-plan-section { padding-top: 48px; }
  .cruise-route-row { gap: 12px; }
  .cruise-route-row > a { flex-basis: 42%; font-size: 1rem; }
  .cruise-route-line { flex-basis: 16%; gap: 7px; }
  .cruise-detail-list li { flex-basis: 100%; padding-right: 0; }
  .cruise-process { flex-direction: column; }
  .cruise-process li { border-left: 0; border-top: 1px solid var(--border); padding: 26px 0; }
  .cruise-process li:first-child { border-top: 0; }
  .cruise-location-links a { flex-basis: 100%; margin-right: 0; }
  .cruise-faq-list details p { padding-right: 0; }
}

/* ---------- Fleet / Scale band ---------- */
.scale-band { background: var(--navy-deep); overflow: hidden; }
.scale-band .container { display: flex; align-items: center; gap: var(--space-2xl); flex-wrap: wrap; }
.scale-media { flex: 1 1 55%; min-width: 300px; }
.scale-media img { width: 100%; border-radius: var(--radius-md); }
.scale-copy { flex: 1 1 380px; min-width: 280px; }
.scale-copy .display-2 { color: var(--white); margin-bottom: var(--space-md); }
.scale-copy p { color: rgba(248,247,243,0.78); max-width: 420px; }
.scale-copy .btn { margin-top: var(--space-md); }

/* ---------- Why Tour Link — editorial list ---------- */
.value-editorial { display: flex; flex-direction: column; }
.value-editorial-row {
  display: flex;
  gap: var(--space-lg);
  padding: 26px 0;
  border-top: 1px solid var(--border);
  align-items: baseline;
  flex-wrap: wrap;
}
.value-editorial-row:last-child { border-bottom: 1px solid var(--border); }
.value-editorial-title { flex: 0 0 260px; font-family: var(--font-heading); font-weight: 800; font-size: 1.1rem; color: var(--navy); margin: 0; }
.value-editorial-desc { flex: 1 1 360px; color: var(--gray); margin: 0; max-width: 520px; }

/* ---------- Process — oversized numerals ---------- */
.process-editorial { display: flex; flex-wrap: wrap; }
.process-editorial-item { flex: 1 1 300px; padding: 0 var(--space-md) var(--space-md) 0; position: relative; }
.process-editorial-num {
  display: block;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: clamp(2.6rem, 5vw, 4.2rem);
  color: var(--border);
  line-height: 1;
  margin-bottom: var(--space-sm);
}
.process-editorial-item h3 { font-size: 1.15rem; margin-bottom: 8px; }
.process-editorial-item p { margin: 0; max-width: 320px; }

/* ---------- Florida destination field ---------- */
.florida-band { background: var(--navy-deep); }
.destination-field { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35em 0.6em; margin: var(--space-lg) 0; }
.destination-field .dest {
  font-family: var(--font-heading);
  font-weight: 800;
  color: rgba(248,247,243,0.9);
  letter-spacing: -0.01em;
}
.destination-field .dest.is-home { color: var(--gold); }
.destination-field .dest-sep { color: rgba(248,247,243,0.28); font-weight: 400; }

/* ---------- Responsive: Homepage v2 ---------- */
@media (max-width: 900px) {
  .capability-stats { gap: var(--space-md); }
  .service-row-title { flex: 1 1 100%; min-width: 0; }
  .value-editorial-title { flex-basis: 100%; }
}

@media (max-width: 860px) {
  .hero-cinematic { min-height: 84vh; align-items: flex-end; }
  .hero-cinematic .hero-media img { object-position: 62% center; }
  .hero-scrim {
    background: linear-gradient(180deg,
      rgba(8,24,39,0.15) 0%,
      rgba(8,24,39,0.55) 45%,
      rgba(8,24,39,0.94) 100%);
  }
  .hero-content { padding: var(--space-xl) 0 var(--space-lg); max-width: 100%; }
  .capability-band .container,
  .scale-band .container { flex-direction: column; }
  .scale-media { order: -1; width: 100%; }
  /* min-width values exist only to keep desktop flex-wrap columns from
     getting too narrow before wrapping; once stacked they'd force overflow
     on narrow phones instead, so reset them here. */
  .capability-copy, .capability-media,
  .scale-copy, .scale-media { min-width: 0; width: 100%; }
}

@media (max-width: 640px) {
  .hero-cinematic { min-height: 78vh; }
  .service-row { flex-wrap: wrap; gap: var(--space-sm); padding: 26px 0; }
  .service-row-num { flex-basis: auto; }
  .route-point { font-size: 1.1rem; }
  .route-row { gap: 10px; padding: 16px 0; }
  .capability-stat { flex: 1 1 45%; border-left: none; padding-left: 0; }
  .destination-field .dest { font-size: 1.1rem; }
}

/* Small-phone header: the icon+wordmark lockup is wider than the old
   single-image logo, so it needs to shrink (and the phone link needs to
   drop) before it collides with the Get a Quote button + hamburger. The
   mobile conversion bar still provides a Call action, so hiding the header
   phone link here loses no functionality. */
@media (max-width: 560px) {
  img.logo-mark-icon { height: 28px; }
  .logo-tagline { display: none; }
  .logo-word { font-size: 1.02rem; }
  .header-call { display: none; }
  .header-actions { gap: 8px; }
  .header-actions .btn-gold { padding: 11px 16px; font-size: 0.82rem; }
}

@media (max-width: 360px) {
  .site-header .container { padding-left: 14px; padding-right: 14px; }
  .logo-lockup { gap: 6px; }
  img.logo-mark-icon { height: 24px; }
  .logo-word { font-size: 0.86rem; }
  .header-actions { gap: 6px; }
  .header-actions .btn-gold { padding: 10px 11px; font-size: 0.76rem; }
  .nav-toggle { padding: 8px; }
}

/* ---------- Homepage: The Convergence V1 ---------- */
/* Homepage-only choreography. The shared gold route line remains brand
   vocabulary; the five scattered trip fragments gathering into one movement
   are unique to this page. All media positions are replaceable abstract slots. */
.home-convergence {
  --home-convergence-p: 1;
  /* Feeling curve: trace the route (0-45%), pull the pieces in (14-61%),
     lock the bold movement and the coach form onto it (42-60%), one brief
     peak (54-61%), then settle and release toward the next section
     (66-98%). Everything below is derived from these five ramps. */
  --home-trace: clamp(0, calc(var(--home-convergence-p) * 2.22), 1);
  --home-gather: clamp(0, calc((var(--home-convergence-p) - 0.14) * 2.13), 1);
  --home-lock: clamp(0, calc((var(--home-convergence-p) - 0.42) * 5.6), 1);
  --home-resolve: clamp(0, calc((var(--home-convergence-p) - 0.54) * 14.3), 1);
  --home-release: clamp(0, calc((var(--home-convergence-p) - 0.66) * 3.1), 1);
  background: var(--warm-white);
  overflow: clip;
}
.home-convergence.is-scrub { --home-convergence-p: 0; }
/* Cold-load beat: when the scrub arms, the resolved scene eases back to its
   scattered start instead of snapping. Transforms and strokes only, so no
   layout shift. */
.home-convergence.is-arming .home-convergence__fragment,
.home-convergence.is-arming .home-convergence__thread path,
.home-convergence.is-arming .home-convergence__resolution,
.home-convergence.is-arming .home-convergence__field::after,
.home-convergence.is-arming .home-convergence__destination::after {
  transition:
    transform 480ms var(--ease-base),
    opacity 480ms var(--ease-base),
    stroke-dashoffset 480ms var(--ease-base),
    stroke-width 480ms var(--ease-base);
}

.home-convergence .home-convergence__signal {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
  color: var(--gold);
  font-family: var(--font-heading);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  line-height: 1.3;
  text-transform: uppercase;
}
.home-convergence .home-convergence__signal::before {
  content: "";
  width: 32px;
  height: 1px;
  background: currentColor;
}

.home-convergence .home-convergence__hero {
  position: relative;
  min-height: min(920px, 94svh);
  display: flex;
  align-items: stretch;
  overflow: hidden;
  color: var(--white);
  background: #081827;
}
.home-convergence .home-convergence__hero-layout {
  position: relative;
  z-index: 2;
  min-height: min(920px, 94svh);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 56px;
  padding-top: 88px;
  padding-bottom: 72px;
}
.home-convergence .home-convergence__hero-copy {
  flex: 0 1 760px;
  max-width: 760px;
}
.home-convergence .home-convergence__hero h1 {
  max-width: 760px;
  margin-bottom: 24px;
  color: var(--white);
  font-size: clamp(2.75rem, 5.45vw, 5rem);
  letter-spacing: -0.045em;
  line-height: 0.98;
  text-wrap: balance;
}
.home-convergence .home-convergence__hero-copy > p {
  max-width: 590px;
  margin-bottom: 34px;
  color: rgba(248, 247, 243, 0.78);
  font-size: clamp(1.04rem, 1.35vw, 1.22rem);
}
.home-convergence .home-convergence__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.home-convergence .home-convergence__hero-note {
  align-self: flex-end;
  flex: 0 0 235px;
  margin: 0 0 12px;
  padding: 0 0 0 20px;
  border-left: 1px solid rgba(197, 144, 50, 0.65);
  color: rgba(248, 247, 243, 0.68);
  font-size: 0.88rem;
  line-height: 1.6;
}

.home-convergence .home-convergence__hero-atmosphere {
  position: absolute;
  inset: 0 0 0 42%;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}
.home-convergence .home-convergence__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.09);
  background: rgba(21, 52, 82, 0.5);
  transform-origin: center;
}
.home-convergence .home-convergence__plane--back {
  width: 68%;
  height: 68%;
  top: 4%;
  right: -13%;
  transform: rotate(12deg);
}
.home-convergence .home-convergence__plane--middle {
  width: 63%;
  height: 63%;
  top: 27%;
  right: 11%;
  background: rgba(11, 31, 58, 0.84);
  transform: rotate(-8deg);
}
.home-convergence .home-convergence__plane--front {
  width: 54%;
  height: 52%;
  right: -3%;
  bottom: -17%;
  border-color: rgba(197, 144, 50, 0.25);
  background: rgba(38, 43, 48, 0.54);
  transform: rotate(7deg);
}
.home-convergence .home-convergence__media-slot--pressure {
  position: absolute;
  inset: 13% 4% 10% 10%;
  margin: 0;
}
.home-convergence .home-convergence__media-slot--pressure span {
  position: absolute;
  display: block;
  min-width: 122px;
  padding: 13px 16px;
  border-top: 1px solid rgba(197, 144, 50, 0.65);
  background: #102b45;
  color: rgba(248, 247, 243, 0.78);
  font-family: var(--font-heading);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.2);
}
.home-convergence .home-convergence__media-slot--pressure span:nth-child(1) { top: 8%; left: 7%; transform: rotate(-7deg); }
.home-convergence .home-convergence__media-slot--pressure span:nth-child(2) { top: 27%; right: 4%; transform: rotate(5deg); }
.home-convergence .home-convergence__media-slot--pressure span:nth-child(3) { right: 27%; bottom: 27%; transform: rotate(-3deg); }
.home-convergence .home-convergence__media-slot--pressure span:nth-child(4) { left: 1%; bottom: 10%; transform: rotate(9deg); }

.home-convergence .home-convergence__sequence {
  position: relative;
  background: #efede6;
}
.home-convergence .home-convergence__stage {
  min-height: 100svh;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.home-convergence.is-pinned .home-convergence__sequence { min-height: 270vh; }
.home-convergence.is-pinned .home-convergence__stage {
  position: sticky;
  top: 0;
}
.home-convergence .home-convergence__stage-layout {
  display: flex;
  align-items: center;
  gap: clamp(34px, 6vw, 92px);
  padding-top: 78px;
  padding-bottom: 78px;
}
.home-convergence .home-convergence__sequence-copy {
  position: relative;
  z-index: 2;
  flex: 0 1 390px;
}
.home-convergence .home-convergence__sequence-copy h2 {
  max-width: 390px;
  margin-bottom: 20px;
  font-size: clamp(2.25rem, 4.4vw, 4.55rem);
  letter-spacing: -0.04em;
  line-height: 1;
  text-wrap: balance;
}
.home-convergence .home-convergence__sequence-copy > p:not(.home-convergence__resolution) {
  max-width: 370px;
  color: #53606b;
}
.home-convergence .home-convergence__resolution {
  margin: 48px 0 0;
  padding-top: 20px;
  border-top: 1px solid rgba(197, 144, 50, 0.62);
  color: var(--navy);
  font-family: var(--font-heading);
  font-size: clamp(1.35rem, 2.4vw, 2.15rem);
  font-weight: 800;
  letter-spacing: calc(-0.01em - var(--home-resolve) * 0.015em);
  line-height: 1.2;
  opacity: calc(0.35 + var(--home-resolve) * 0.65);
  transform: translateY(calc((1 - var(--home-resolve)) * 10px));
}

.home-convergence .home-convergence__field {
  position: relative;
  flex: 1 1 650px;
  min-width: 0;
  min-height: clamp(480px, 60vw, 650px);
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(197, 144, 50, 0.24);
  background: #0b1f3a;
  box-shadow: 0 38px 90px rgba(8, 24, 39, 0.17);
}
.home-convergence .home-convergence__field::before,
.home-convergence .home-convergence__field::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.home-convergence .home-convergence__field::before {
  inset: 7% 6%;
  border: 1px solid rgba(248, 247, 243, 0.07);
  transform: translate(calc((1 - var(--home-gather)) * 18px), calc((1 - var(--home-gather)) * -16px));
  /* The inner frame fades as the scene releases. */
  opacity: calc(1 - var(--home-release) * 0.7);
}
.home-convergence .home-convergence__field::after {
  width: 42%;
  height: 46%;
  right: -9%;
  bottom: -12%;
  border: 1px solid rgba(197, 144, 50, 0.18);
  background: rgba(21, 52, 82, 0.6);
  /* The cropped movement form settles from its tilt as the scene releases. */
  transform: rotate(calc(12deg - var(--home-release) * 8deg));
}
.home-convergence .home-convergence__thread {
  position: absolute;
  z-index: 1;
  inset: 8% 4% 7%;
  width: 92%;
  height: 85%;
  overflow: visible;
}
.home-convergence .home-convergence__thread path {
  fill: none;
  stroke: var(--gold);
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
/* Route echoes: two dashed traces that start displaced from the route and
   drift onto it as the pieces gather; gone once the movement locks. */
/* Layer rules carry the .home-convergence__thread ancestor so they outrank
   the element-level base rule above. */
.home-convergence .home-convergence__thread .home-convergence__thread-echo {
  stroke: rgba(197, 144, 50, 0.55);
  stroke-width: 1.2;
  stroke-dasharray: 0.03 0.045;
  opacity: calc(1 - var(--home-lock));
}
.home-convergence .home-convergence__thread .home-convergence__thread-echo--a {
  stroke-dashoffset: calc(var(--home-gather) * -0.22);
  transform: translate(calc((1 - var(--home-gather)) * -26px), calc((1 - var(--home-gather)) * 20px));
}
.home-convergence .home-convergence__thread .home-convergence__thread-echo--b {
  stroke-dasharray: 0.016 0.06;
  stroke-dashoffset: calc(0.04 + var(--home-gather) * -0.3);
  transform: translate(calc((1 - var(--home-gather)) * 32px), calc((1 - var(--home-gather)) * -24px));
}
.home-convergence .home-convergence__thread .home-convergence__thread-ghost {
  stroke: rgba(248, 247, 243, 0.13);
  stroke-width: 1;
  stroke-dasharray: 0.018 0.028;
}
/* The traced route: thin, found first. */
.home-convergence .home-convergence__thread .home-convergence__thread-trace {
  /* Normalized dashes must scale with this stretched SVG. Non-scaling
     strokes leave a gap before the endpoint in wide, shallow fields. */
  vector-effect: none;
  stroke-width: 2;
  stroke-dasharray: 1;
  stroke-dashoffset: calc(1 - var(--home-trace));
}
/* The movement body: one bold gold sweep laid down as the coach form
   advances, then settling to a calmer weight after the peak. */
.home-convergence .home-convergence__thread .home-convergence__thread-body {
  vector-effect: none;
  stroke-width: calc(9px - var(--home-release) * 3px);
  stroke-dasharray: 1;
  stroke-dashoffset: calc(1 - var(--home-lock));
}
/* The coach-length form: a short warm-white capsule that rides the route
   and comes to rest at the destination. Abstract, not a vehicle. */
.home-convergence .home-convergence__thread .home-convergence__thread-coach {
  /* This path carries pathLength="100", so the dash is 11% of the route.
     Verified in Chromium: a short dash on a non-scaling stroke collapses to
     a dot, so this one path scales with the field instead. */
  stroke: var(--warm-white);
  stroke-width: 9;
  stroke-dasharray: 11 100;
  stroke-dashoffset: calc(11 - var(--home-lock) * 99.5);
  vector-effect: none;
  opacity: clamp(0, calc(var(--home-lock) * 8), 1);
}
/* Release tail: after the peak a thin line continues past the destination
   and leaves the field toward the next section. */
.home-convergence .home-convergence__thread .home-convergence__thread-tail {
  vector-effect: none;
  stroke-width: 2;
  stroke-dasharray: 1;
  stroke-dashoffset: calc(1 - var(--home-release));
  opacity: 0.85;
}
.home-convergence .home-convergence__origin,
.home-convergence .home-convergence__destination {
  position: absolute;
  z-index: 3;
  display: block;
}
.home-convergence .home-convergence__origin {
  /* Centers follow the route's actual start/end after the SVG inset. */
  left: 7.45%;
  top: 75.209302%;
  transform: translate(-50%, -50%);
  width: 13px;
  height: 13px;
  border: 3px solid #0b1f3a;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 1px rgba(197, 144, 50, 0.72);
}
.home-convergence .home-convergence__destination {
  top: 22.232558%;
  left: 93.47%;
  transform: translate(-50%, -50%);
  width: 18px;
  height: 18px;
  border: 2px solid var(--gold);
  border-radius: 50%;
  background: #0b1f3a;
  opacity: calc(0.38 + var(--home-resolve) * 0.62);
}
.home-convergence .home-convergence__destination::after {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--gold);
  opacity: var(--home-resolve);
  transform: scale(calc(0.4 + var(--home-resolve) * 0.6));
}

/* Itinerary slips: five clipped paper-like pieces of different widths and
   depths, not equal cards. Each starts scattered, tilted and at its own
   depth (scale, opacity, z-order), is pulled onto the route as the scene
   gathers, and its gold stub turns solid when the movement locks. */
.home-convergence .home-convergence__fragment {
  --scatter-x: 0px;
  --scatter-y: 0px;
  --scatter-r: 0deg;
  --slip-w: 128px;
  --depth-scale: 1;
  --depth-opacity: 0.9;
  --depth-z: 3;
  position: absolute;
  z-index: var(--depth-z);
  display: flex;
  min-width: var(--slip-w);
  flex-direction: column;
  gap: 3px;
  padding: 9px 14px 9px 24px;
  border: 1px solid rgba(11, 31, 58, 0.18);
  background: var(--warm-white);
  color: var(--navy);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.28);
  transform-origin: 50% 50%;
  transform:
    translate(
      calc((1 - var(--home-gather)) * var(--scatter-x)),
      calc((1 - var(--home-gather)) * var(--scatter-y))
    )
    rotate(calc((1 - var(--home-gather)) * var(--scatter-r)))
    scale(calc(var(--depth-scale) + (1 - var(--depth-scale)) * var(--home-gather)));
  opacity: calc(var(--depth-opacity) + (1 - var(--depth-opacity)) * var(--home-gather) - var(--home-release) * 0.14);
}
.home-convergence .home-convergence__fragment::before {
  content: "";
  position: absolute;
  left: 9px;
  top: 50%;
  width: 7px;
  height: 7px;
  margin-top: -3.5px;
  border-radius: 50%;
  background: var(--navy);
  opacity: 0.85;
}
.home-convergence .home-convergence__fragment::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3px;
  background: var(--gold);
  opacity: calc(0.35 + var(--home-resolve) * 0.65);
}
.home-convergence .home-convergence__fragment small {
  color: #53606b;
  font-size: 0.56rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
}
.home-convergence .home-convergence__fragment strong {
  font-family: var(--font-heading);
  font-size: 0.9rem;
  letter-spacing: -0.01em;
  white-space: nowrap;
}
.home-convergence .home-convergence__fragment--pickup { left: 6%; bottom: 15%; --slip-w: 150px; --scatter-x: -70px; --scatter-y: 110px; --scatter-r: -13deg; --depth-scale: 1.12; --depth-opacity: 0.96; --depth-z: 4; }
.home-convergence .home-convergence__fragment--timing { left: 21%; top: 52%; --slip-w: 118px; --scatter-x: 120px; --scatter-y: -170px; --scatter-r: 9deg; --depth-scale: 0.84; --depth-opacity: 0.66; --depth-z: 2; }
.home-convergence .home-convergence__fragment--travelers { left: 42%; top: 48%; --slip-w: 128px; --scatter-x: -150px; --scatter-y: 150px; --scatter-r: -8deg; --depth-scale: 1; --depth-opacity: 0.84; --depth-z: 3; }
.home-convergence .home-convergence__fragment--destination { right: 20%; top: 21%; --slip-w: 160px; --scatter-x: 130px; --scatter-y: -120px; --scatter-r: 12deg; --depth-scale: 1.1; --depth-opacity: 0.94; --depth-z: 4; }
.home-convergence .home-convergence__fragment--details { right: 3%; top: 8%; --slip-w: 172px; --scatter-x: 60px; --scatter-y: 200px; --scatter-r: -10deg; --depth-scale: 0.86; --depth-opacity: 0.68; --depth-z: 2; }

.home-convergence .home-convergence__services {
  padding: clamp(80px, 8vw, 112px) 0;
  background: #ffffff;
}
.home-convergence .home-convergence__section-intro {
  max-width: 760px;
  margin-bottom: 58px;
}
.home-convergence .home-convergence__section-intro .home-convergence__signal {
  color: var(--gold-dark);
}
.home-convergence .home-convergence__section-intro h2 {
  max-width: 720px;
  margin-bottom: 18px;
  font-size: clamp(2.25rem, 4.7vw, 4.7rem);
  letter-spacing: -0.045em;
  line-height: 1.02;
  text-wrap: balance;
}
.home-convergence .home-convergence__section-intro p {
  font-size: 1.05rem;
}
.home-convergence .home-convergence__service-index {
  display: flex;
  flex-direction: column;
  border-bottom: 1px solid var(--border);
}
.home-convergence .home-convergence__service-row {
  display: flex;
  align-items: center;
  gap: clamp(18px, 4vw, 58px);
  min-height: 112px;
  padding: 26px 4px;
  border-top: 1px solid var(--border);
  transition: padding-left var(--ease-base), color var(--ease-fast);
}
.home-convergence .home-convergence__service-row:hover,
.home-convergence .home-convergence__service-row:focus-visible {
  padding-left: 16px;
}
.home-convergence .home-convergence__service-number {
  flex: 0 0 44px;
  color: var(--gold-dark);
  font-family: var(--font-heading);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}
.home-convergence .home-convergence__service-body {
  flex: 1 1 auto;
  display: flex;
  align-items: baseline;
  gap: 18px 42px;
}
.home-convergence .home-convergence__service-title {
  flex: 0 1 390px;
  color: var(--navy);
  font-family: var(--font-heading);
  font-size: clamp(1.22rem, 2vw, 1.65rem);
  font-weight: 800;
  letter-spacing: -0.02em;
}
.home-convergence .home-convergence__service-description {
  flex: 1 1 360px;
  max-width: 470px;
  color: var(--gray);
  font-size: 0.94rem;
}
.home-convergence .home-convergence__service-arrow {
  flex: 0 0 auto;
  display: flex;
  color: var(--navy);
  transition: transform var(--ease-base), color var(--ease-fast);
}
.home-convergence .home-convergence__service-row:hover .home-convergence__service-arrow,
.home-convergence .home-convergence__service-row:focus-visible .home-convergence__service-arrow {
  color: var(--gold-dark);
  transform: translateX(6px);
}

.home-convergence .home-convergence__plan {
  position: relative;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: #081827;
}
.home-convergence .home-convergence__plan-layout {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: clamp(54px, 8vw, 118px);
  padding-top: 124px;
  padding-bottom: 124px;
}
.home-convergence .home-convergence__plan-copy {
  flex: 0 1 515px;
}
.home-convergence .home-convergence__plan-copy h2 {
  max-width: 500px;
  color: var(--white);
  font-size: clamp(2.35rem, 4.6vw, 4.65rem);
  letter-spacing: -0.045em;
  line-height: 1.02;
  text-wrap: balance;
}
.home-convergence .home-convergence__plan-copy > p {
  max-width: 470px;
  color: rgba(248, 247, 243, 0.72);
  font-size: 1.05rem;
}
.home-convergence .home-convergence__plan-links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  margin-top: 34px;
}
.home-convergence .home-convergence__plan-links a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(197, 144, 50, 0.55);
  color: var(--white);
  font-family: var(--font-heading);
  font-size: 0.82rem;
  font-weight: 800;
}
.home-convergence .home-convergence__plan-links svg {
  width: 16px;
}
.home-convergence .home-convergence__steps {
  flex: 0 1 500px;
  border-bottom: 1px solid rgba(248, 247, 243, 0.15);
}
.home-convergence .home-convergence__steps li {
  display: flex;
  gap: 24px;
  padding: 28px 0;
  border-top: 1px solid rgba(248, 247, 243, 0.15);
}
.home-convergence .home-convergence__steps li > span {
  flex: 0 0 34px;
  color: var(--gold);
  font-family: var(--font-heading);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}
.home-convergence .home-convergence__steps h3 {
  margin-bottom: 7px;
  color: var(--white);
  font-size: 1.18rem;
}
.home-convergence .home-convergence__steps p {
  max-width: 390px;
  margin: 0;
  color: rgba(248, 247, 243, 0.65);
  font-size: 0.92rem;
}
.home-convergence .home-convergence__plan-media {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}
.home-convergence .home-convergence__plan-orbit {
  position: absolute;
  width: 620px;
  height: 620px;
  left: -360px;
  bottom: -260px;
  border: 1px solid rgba(197, 144, 50, 0.18);
  border-radius: 50%;
}
.home-convergence .home-convergence__plan-line {
  position: absolute;
  width: 42%;
  height: 1px;
  top: 12%;
  right: -6%;
  background: rgba(197, 144, 50, 0.28);
  transform: rotate(-12deg);
}
.home-convergence .home-convergence__plan-stop {
  position: absolute;
  width: 9px;
  height: 9px;
  border: 2px solid rgba(197, 144, 50, 0.7);
  border-radius: 50%;
  background: #081827;
}
.home-convergence .home-convergence__plan-stop--one { top: 18%; right: 30%; }
.home-convergence .home-convergence__plan-stop--two { top: 12%; right: 14%; }
.home-convergence .home-convergence__plan-stop--three { top: 6%; right: 2%; }

.home-convergence .home-convergence__quote {
  position: relative;
  padding: clamp(88px, 10vw, 140px) 0;
  scroll-margin-top: 88px;
}
.home-convergence .home-convergence__quote::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 42%;
  height: 1px;
  background: var(--gold);
}
.home-convergence .home-convergence__quote-heading {
  max-width: 720px;
  margin: 0 auto 48px;
  text-align: center;
}
.home-convergence .home-convergence__quote-heading h2 {
  margin-bottom: 16px;
  font-size: clamp(2.25rem, 4.5vw, 4.2rem);
  letter-spacing: -0.04em;
  line-height: 1.04;
  text-wrap: balance;
}
.home-convergence .home-convergence__quote-heading p {
  max-width: 610px;
  margin: 0 auto 18px;
}
.home-convergence .home-convergence__quote-call {
  display: inline-block;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(197, 144, 50, 0.75);
  color: var(--white);
  font-family: var(--font-heading);
  font-size: 0.86rem;
  font-weight: 800;
}

/* Phones retain the resolved composition. Short desktop windows use the
   same unpinned layout, but scrub while the compact route is on screen. */
@media (max-width: 900px) {
  .home-convergence.is-flow { --home-convergence-p: 1 !important; }
}

/* Resolved fallbacks need no dash animation. Keep their original constant
   line weight, including the narrow phone exit, with a solid full path. */
@media (max-width: 900px), (prefers-reduced-motion: reduce) {
  .home-convergence .home-convergence__thread :is(
    .home-convergence__thread-trace,
    .home-convergence__thread-body,
    .home-convergence__thread-tail
  ) {
    vector-effect: non-scaling-stroke;
    stroke-dasharray: none;
    stroke-dashoffset: 0;
  }
}

@media (max-width: 900px), (max-height: 719px) {
  .home-convergence .home-convergence__hero,
  .home-convergence .home-convergence__hero-layout {
    min-height: auto;
  }
  .home-convergence .home-convergence__hero-layout {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    padding-top: 112px;
    padding-bottom: 62px;
  }
  .home-convergence .home-convergence__hero-copy {
    flex-basis: auto;
  }
  .home-convergence .home-convergence__hero-note {
    align-self: auto;
    flex-basis: auto;
    max-width: 480px;
    margin-top: 28px;
  }
  .home-convergence .home-convergence__hero-atmosphere {
    inset: 0 0 0 34%;
    opacity: 0.56;
  }
  /* Tablets and short windows stack the note under the buttons, so the
     lowest tag would sit behind its text; hide it and lift the first tag
     clear of the headline's cap height. */
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(1) { top: 2%; left: 12%; }
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(4) { display: none; }
  .home-convergence .home-convergence__stage {
    min-height: auto;
    overflow: visible;
  }
  .home-convergence.is-pinned .home-convergence__sequence {
    min-height: auto;
  }
  .home-convergence.is-pinned .home-convergence__stage {
    position: relative;
  }
  .home-convergence .home-convergence__stage-layout {
    flex-direction: column;
    align-items: stretch;
    padding-top: 88px;
    padding-bottom: 88px;
  }
  .home-convergence .home-convergence__sequence-copy {
    flex-basis: auto;
    max-width: 650px;
  }
  .home-convergence .home-convergence__sequence-copy h2,
  .home-convergence .home-convergence__sequence-copy > p:not(.home-convergence__resolution) {
    max-width: 620px;
  }
  .home-convergence .home-convergence__resolution {
    max-width: 430px;
    margin-top: 30px;
  }
  .home-convergence .home-convergence__field {
    flex-basis: auto;
    width: 100%;
    min-height: 560px;
  }
  .home-convergence .home-convergence__service-body {
    flex-direction: column;
    gap: 4px;
  }
  .home-convergence .home-convergence__service-title {
    flex-basis: auto;
  }
  .home-convergence .home-convergence__service-description {
    flex-basis: auto;
  }
  .home-convergence .home-convergence__plan {
    min-height: auto;
  }
  .home-convergence .home-convergence__plan-layout {
    flex-direction: column;
    padding-top: 94px;
    padding-bottom: 94px;
  }
  .home-convergence .home-convergence__plan-copy,
  .home-convergence .home-convergence__steps {
    flex-basis: auto;
    width: 100%;
    max-width: 650px;
  }
}

@media (min-width: 901px) and (max-height: 719px) {
  .home-convergence .home-convergence__field {
    min-height: clamp(300px, 50svh, 360px);
  }
  /* Keep the scattered slips inside the shorter field before they gather. */
  .home-convergence .home-convergence__fragment--pickup { --slip-w: 120px; --scatter-x: -24px; --scatter-y: 16px; }
  .home-convergence .home-convergence__fragment--timing { --scatter-y: -70px; }
  .home-convergence .home-convergence__fragment--travelers { --scatter-y: 60px; }
  .home-convergence .home-convergence__fragment--destination { right: 24.5%; --scatter-x: -40px; --scatter-y: -30px; }
  .home-convergence .home-convergence__fragment--details { top: 1%; --scatter-x: 0px; --scatter-y: 110px; }
  /* The copy has already been read before this unpinned field enters. */
  .home-convergence.is-flow .home-convergence__resolution { opacity: 1; transform: none; }
}

@media (max-width: 640px) {
  .home-convergence .home-convergence__hero-layout {
    padding-top: 68px;
    padding-bottom: 50px;
  }
  .home-convergence .home-convergence__hero h1 {
    font-size: clamp(2.25rem, 12vw, 3.65rem);
    line-height: 1;
  }
  .home-convergence .home-convergence__hero-copy > p {
    font-size: 1rem;
    margin-bottom: 24px;
  }
  .home-convergence .home-convergence__actions {
    flex-direction: column;
    width: 100%;
  }
  .home-convergence .home-convergence__actions .btn {
    width: 100%;
    padding-top: 14px;
    padding-bottom: 14px;
  }
  .home-convergence .home-convergence__hero-atmosphere {
    inset: 8% -32% 0 35%;
    opacity: 0.38;
  }
  /* Phones: two pressure tags sit in the short-line pockets to the right of
     the headline ("Miami", "& Group"); none sits behind body copy, the Call
     button or the note. The two lower tags are hidden so the planes alone
     carry the lower field. */
  .home-convergence .home-convergence__media-slot--pressure {
    inset: 0 0 0 0;
  }
  .home-convergence .home-convergence__media-slot--pressure span {
    min-width: 84px;
    padding: 8px 10px;
    font-size: 0.56rem;
  }
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(1) { top: 7%; left: 8%; transform: rotate(-6deg); }
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(2) { top: 22%; left: 20%; right: auto; transform: rotate(5deg); }
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(3),
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(4) { display: none; }
  .home-convergence .home-convergence__stage-layout {
    padding-top: 72px;
    padding-bottom: 72px;
  }
  .home-convergence .home-convergence__field {
    min-height: 510px;
  }
  .home-convergence .home-convergence__fragment {
    --slip-w: 104px;
    min-width: 104px;
    padding: 7px 10px 7px 20px;
  }
  /* Phones show the resolved story only, so every fragment must sit on the
     thread. Positions follow the path (viewBox 800x430 inset 8%/4%/7%):
     pickup at the origin, timing and travelers on the first rise,
     destination on the second, details hanging above the line's end, and
     the destination ring left at the true end of the path. */
  .home-convergence .home-convergence__fragment--pickup { left: 4%; bottom: auto; top: 72%; }
  .home-convergence .home-convergence__fragment--timing { left: 21%; top: 49%; }
  .home-convergence .home-convergence__fragment--travelers { left: 56%; right: auto; top: 44%; }
  .home-convergence .home-convergence__fragment--destination { left: 36%; right: auto; top: 30%; }
  .home-convergence .home-convergence__fragment--details { right: 4%; top: 12%; }
  .home-convergence .home-convergence__services {
    padding: 78px 0;
  }
  .home-convergence .home-convergence__section-intro {
    margin-bottom: 38px;
  }
  .home-convergence .home-convergence__service-row {
    align-items: flex-start;
    gap: 12px;
    min-height: 0;
    padding: 24px 0;
  }
  .home-convergence .home-convergence__service-number {
    flex-basis: 28px;
    padding-top: 5px;
  }
  .home-convergence .home-convergence__service-arrow {
    padding-top: 5px;
  }
  .home-convergence .home-convergence__plan-layout {
    padding-top: 76px;
    padding-bottom: 76px;
  }
  .home-convergence .home-convergence__plan-copy h2 {
    font-size: clamp(2.2rem, 11vw, 3.45rem);
  }
  .home-convergence .home-convergence__plan-links {
    flex-direction: column;
    align-items: flex-start;
  }
  .home-convergence .home-convergence__steps li {
    gap: 14px;
  }
  .home-convergence .home-convergence__quote {
    scroll-margin-top: 70px;
  }
}

/* Narrow phones (320x720): keep both actions above the conversion bar in the
   opening viewport by trimming the hero's top padding and lead spacing. */
@media (max-width: 360px) {
  .home-convergence .home-convergence__hero-layout {
    padding-top: 52px;
  }
  /* The headline wraps to four lines here; keep both tags past the ends of
     "Miami" and "& Group". */
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(1) { left: 24%; top: 6%; }
  .home-convergence .home-convergence__media-slot--pressure span:nth-child(2) { left: 30%; top: 24%; }
  .home-convergence .home-convergence__hero h1 {
    margin-bottom: 18px;
  }
  .home-convergence .home-convergence__hero-copy > p {
    margin-bottom: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-convergence {
    --home-convergence-p: 1 !important;
  }
  .home-convergence .home-convergence__fragment,
  .home-convergence .home-convergence__thread path,
  .home-convergence .home-convergence__resolution,
  .home-convergence .home-convergence__field::after,
  .home-convergence .home-convergence__destination::after,
  .home-convergence .home-convergence__service-row,
  .home-convergence .home-convergence__service-arrow {
    transition: none !important;
  }
}

/* ---------- Convergence polish: seams, depth, and a resolved arrival ---------- */
/* The homepage keeps its existing route story. These are material layers and
   handoffs, not additional claims, screens, or media. */
.site-header {
  position: sticky;
  isolation: isolate;
  background: rgba(255, 255, 255, 0.94);
  border-bottom-color: rgba(11, 31, 58, 0.1);
  box-shadow: 0 8px 28px rgba(8, 24, 39, 0.045);
}
@supports (backdrop-filter: blur(12px)) {
  .site-header {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px) saturate(125%);
  }
}
.site-header::after {
  content: "";
  position: absolute;
  z-index: -1;
  right: 0;
  bottom: -1px;
  left: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0 7%, rgba(197, 144, 50, 0.7) 25%, rgba(197, 144, 50, 0.18) 58%, transparent 88%);
  opacity: 0.72;
}
.main-nav a:not(.btn) {
  border-radius: 999px;
}
.header-actions .btn-gold {
  box-shadow: 0 8px 18px rgba(197, 144, 50, 0.18);
}

.home-convergence .home-convergence__hero {
  background:
    radial-gradient(90% 105% at -9% 116%, transparent 0 59%, rgba(197, 144, 50, 0.15) 59.3%, transparent 60.1%),
    radial-gradient(62% 82% at 14% 98%, rgba(27, 66, 99, 0.3), transparent 72%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 55%, #102a43 100%);
}
.home-convergence .home-convergence__hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(104deg, transparent 0 46%, rgba(248, 247, 243, 0.045) 46.1% 46.25%, transparent 46.35%),
    linear-gradient(104deg, transparent 0 58%, rgba(197, 144, 50, 0.11) 58.1% 58.25%, transparent 58.35%),
    linear-gradient(0deg, rgba(239, 237, 230, 0.92), transparent 22%);
}
.home-convergence .home-convergence__hero-atmosphere {
  inset: 0 0 0 34%;
}
.home-convergence .home-convergence__plane--back {
  width: 74%;
  height: 77%;
  top: -7%;
  right: -10%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.64), rgba(13, 38, 61, 0.25));
}
.home-convergence .home-convergence__plane--middle {
  width: 72%;
  height: 68%;
  top: 22%;
  right: 6%;
  background: linear-gradient(160deg, rgba(9, 27, 48, 0.92), rgba(25, 57, 87, 0.47));
}
.home-convergence .home-convergence__plane--front {
  width: 62%;
  height: 57%;
  right: -7%;
  bottom: -12%;
  background: linear-gradient(140deg, rgba(39, 43, 48, 0.7), rgba(11, 31, 58, 0.3));
}
.home-convergence .home-convergence__hero-note {
  position: relative;
  padding-bottom: 14px;
}
.home-convergence .home-convergence__hero-note::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  left: 20px;
  height: 1px;
  background: linear-gradient(90deg, rgba(197, 144, 50, 0.78), transparent);
}

.home-convergence .home-convergence__sequence {
  background:
    linear-gradient(180deg, #efede6 0%, #f7f6f1 30%, #ffffff 100%);
}
.home-convergence .home-convergence__services {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-top: clamp(96px, 10vw, 142px);
  background:
    linear-gradient(180deg, #efede6 0, #ffffff clamp(130px, 15vw, 210px), #ffffff 100%);
}
.home-convergence .home-convergence__services::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  right: -7%;
  left: -7%;
  height: clamp(92px, 11vw, 158px);
  border-bottom: 1px solid rgba(197, 144, 50, 0.16);
  background:
    linear-gradient(166deg, transparent 0 61%, rgba(197, 144, 50, 0.11) 61.1% 61.4%, transparent 61.5%),
    radial-gradient(56% 100% at 18% 0%, rgba(197, 144, 50, 0.1), transparent 72%);
}
.home-convergence .home-convergence__services > .container {
  position: relative;
}
.home-convergence .home-convergence__service-row {
  position: relative;
}
.home-convergence .home-convergence__service-row::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--gold);
  transition: width var(--ease-base);
}
.home-convergence .home-convergence__service-row:hover::before,
.home-convergence .home-convergence__service-row:focus-visible::before {
  width: min(180px, 35%);
}

.home-convergence .home-convergence__plan {
  background:
    radial-gradient(70% 130% at 106% -22%, rgba(32, 73, 106, 0.75), transparent 65%),
    linear-gradient(165deg, #173852 0%, #0b2139 26%, #081827 62%);
}
.home-convergence .home-convergence__plan::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  right: 0;
  left: 0;
  height: clamp(88px, 12vw, 170px);
  pointer-events: none;
  background:
    linear-gradient(168deg, rgba(197, 144, 50, 0.15) 0 1px, transparent 1px),
    linear-gradient(180deg, rgba(255, 255, 255, 0.12), transparent 78%);
  clip-path: polygon(0 0, 100% 0, 100% 38%, 52% 100%, 0 48%);
}
.home-convergence .home-convergence__plan-media {
  z-index: 1;
}
.home-convergence .home-convergence__plan-layout {
  z-index: 2;
}

.home-convergence .home-convergence__quote {
  z-index: 0;
  padding-bottom: clamp(58px, 7vw, 96px);
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(29, 66, 95, 0.7), transparent 68%),
    linear-gradient(180deg, #0b2139, #0b1f3a 68%, #081827 100%);
}
.home-convergence .home-convergence__quote::before {
  z-index: -1;
  width: min(58%, 760px);
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold) 18%, rgba(197, 144, 50, 0.22));
}
.home-convergence .home-convergence__quote::after {
  content: "";
  position: absolute;
  z-index: -1;
  right: 0;
  bottom: 0;
  left: 0;
  height: clamp(58px, 9vw, 120px);
  pointer-events: none;
  background:
    linear-gradient(90deg, transparent 0 8%, rgba(197, 144, 50, 0.34) 8.1% 8.22%, transparent 8.35%),
    linear-gradient(110deg, transparent 0 58%, rgba(248, 247, 243, 0.08) 58.1% 58.22%, transparent 58.35%);
  mask-image: linear-gradient(to bottom, transparent, #000 58%);
}

.site-footer--home {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(76% 100% at 80% -28%, rgba(27, 64, 94, 0.58), transparent 62%),
    linear-gradient(145deg, #081827, #06111e);
}
.site-footer--home::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(197, 144, 50, 0.72), transparent);
}
.site-footer .footer-top {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 32px 28px;
  padding: 48px 0 28px;
}
.site-footer .footer-brand {
  grid-column: span 4;
  min-width: 0;
}
.site-footer .footer-col {
  grid-column: span 2;
  min-width: 0;
}
.site-footer .footer-bottom {
  gap: 14px 24px;
}

/* Make the material seams paint above their own ground, but below content. */
.home-convergence .home-convergence__services::before {
  z-index: 0;
}
.home-convergence .home-convergence__services > .container {
  z-index: 1;
}
.home-convergence .home-convergence__quote {
  isolation: isolate;
}
.home-convergence .home-convergence__quote > .container {
  position: relative;
  z-index: 2;
}
.home-convergence .home-convergence__quote::before,
.home-convergence .home-convergence__quote::after {
  z-index: 1;
}

@media (max-width: 1080px) {
  .site-footer .footer-top {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 28px 20px;
  }
  .site-footer .footer-brand { grid-column: 1 / -1; }
  .site-footer .footer-col { grid-column: span 1; }
}
@media (max-width: 860px) {
  .site-footer .footer-top {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    padding: 32px 0 24px;
  }
  .site-footer .footer-brand,
  .site-footer .footer-col { grid-column: 1 / -1; }
  .site-footer .footer-brand { padding-bottom: 20px; }
  .footer-nav-desktop { display: none; }
  .footer-nav-mobile { display: block; border-top: 1px solid rgba(248,247,243,0.16); }
  .footer-nav-mobile summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 48px;
    gap: 16px;
    color: var(--white);
    font-weight: 600;
    cursor: pointer;
    list-style: none;
  }
  .footer-nav-mobile summary::-webkit-details-marker { display: none; }
  .footer-nav-mobile summary::after {
    content: '';
    width: 7px;
    height: 7px;
    flex: 0 0 auto;
    margin-right: 4px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
  }
  .footer-nav-mobile[open] summary::after { transform: rotate(225deg); }
  .footer-nav-mobile summary:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
  .footer-nav-mobile ul { gap: 0; padding: 0 0 12px; }
  .footer-nav-mobile a { display: flex; align-items: center; min-height: 44px; }
  .site-footer .footer-contact { padding-top: 16px; border-top: 1px solid rgba(248,247,243,0.16); }
  .footer-contact h4 { margin-bottom: 4px; }
  .footer-contact ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 12px; }
  .footer-contact li:last-child { grid-column: 1 / -1; }
  .footer-contact a { display: inline-flex; align-items: center; min-height: 44px; overflow-wrap: anywhere; }
  .site-footer .footer-bottom { display: grid; justify-content: start; gap: 4px; padding: 16px 0 24px; }
  .footer-credit { font-size: 0.75rem; }
  .footer-credit a { display: inline-flex; align-items: center; min-height: 44px; }
}
@media (max-width: 359px) {
  .footer-contact ul { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .site-header {
    box-shadow: 0 6px 18px rgba(8, 24, 39, 0.06);
  }
  .home-convergence .home-convergence__hero::before {
    background:
      linear-gradient(104deg, transparent 0 48%, rgba(248, 247, 243, 0.045) 48.1% 48.25%, transparent 48.35%),
      linear-gradient(0deg, rgba(239, 237, 230, 0.9), transparent 17%);
  }
  .home-convergence .home-convergence__hero-atmosphere {
    inset: 8% -32% 0 28%;
  }
  .home-convergence .home-convergence__services {
    padding-top: 102px;
    background: linear-gradient(180deg, #efede6 0, #ffffff 150px, #ffffff 100%);
  }
  .home-convergence .home-convergence__plan::before {
    height: 100px;
  }
  .home-convergence .home-convergence__quote {
    padding-bottom: 62px;
  }

  .consent-banner {
    right: 12px;
    bottom: calc(70px + env(safe-area-inset-bottom));
    left: 12px;
    padding: 0;
    border: 1px solid rgba(248, 247, 243, 0.14);
    border-radius: 18px;
    background: rgba(8, 24, 39, 0.98);
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.3);
  }
  .consent-banner-inner {
    display: block;
    padding: 16px;
  }
  .consent-banner-inner p {
    max-width: none;
    font-size: 0.82rem;
    line-height: 1.45;
  }
  .consent-banner-actions {
    display: grid;
    grid-template-columns: 1fr 1.25fr;
    gap: 9px;
    margin-top: 13px;
  }
  .consent-banner-actions .btn {
    min-height: 44px;
    padding: 10px 12px;
    font-size: 0.82rem;
    white-space: nowrap;
  }
}
@media (max-width: 360px) {
  .consent-banner {
    right: 8px;
    bottom: calc(66px + env(safe-area-inset-bottom));
    left: 8px;
    border-radius: 15px;
  }
  .consent-banner-inner { padding: 13px; }
  .consent-banner-inner p { font-size: 0.78rem; }
  .consent-banner-actions { gap: 7px; margin-top: 10px; }
  .consent-banner-actions .btn { padding-right: 8px; padding-left: 8px; font-size: 0.75rem; }
}
@media (prefers-reduced-motion: reduce) {
  .home-convergence .home-convergence__service-row::before {
    transition: none;
  }
}

/* ---------- Night Terminal world + Route Aperture handoffs (owner direction C + A) ---------- */
/* One continuous world: deep navy ground, smoky-blue architectural planes,
   warm mineral ivory light, one burnished-gold route. Chapters never fade
   into each other. The route leaves each scene along a physical edge, drops
   through the seam, and opens the next chapter as a slanted aperture. Copy
   never moves; three depth planes per scene at most. Additive overrides of
   the earlier polish block; same selectors, same specificity, later wins. */
.home-convergence {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-smoke: #1b3a57;
  --nt-ivory: #f4f1e9;
  --nt-ivory-ground: #ebe7dc;
  --nt-gold: #c59032;
  /* Seam geometry: every route edge starts at the container right edge
     (where the hero note, the field and the service rows end) and lands on
     the viewport left edge, beside each chapter label. */
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  --seam-h: clamp(64px, 8.5vw, 124px);
  --seam-w: calc(100vw - var(--seam-m));
  background: var(--nt-ivory);
}

/* --- Route edge primitive: a slanted 2px gold line from (container right,
   seam top) to (viewport left, seam bottom), and a matching aperture wedge
   above it in the previous scene ground colour. --- */
.home-convergence .home-convergence__sequence::before,
.home-convergence .home-convergence__services::before,
.home-convergence .home-convergence__plan::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--seam-h);
  pointer-events: none;
  clip-path: polygon(0 0, 100% 0, 100% 0, calc(100% - var(--seam-m)) 0, 0 100%);
  border: 0;
  border-radius: 0;
  background: var(--nt-navy);
  mask-image: none;
}
.home-convergence .home-convergence__sequence::after,
.home-convergence .home-convergence__services::after,
.home-convergence .home-convergence__plan::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: var(--seam-h);
  left: 0;
  width: 100vw;
  height: 2px;
  pointer-events: none;
  background: var(--nt-gold);
  transform-origin: 0 50%;
  mask-image: none;
}
@supports (transform: rotate(atan2(1px, 1px))) {
  .home-convergence .home-convergence__sequence::after,
  .home-convergence .home-convergence__services::after,
  .home-convergence .home-convergence__plan::after {
    width: hypot(var(--seam-w), var(--seam-h));
    transform: rotate(calc(-1 * atan2(var(--seam-h), var(--seam-w))));
  }
}

/* --- Scene 1, hero: night terminal. Smoky planes, warm light pooled low
   left, no bottom fade. The note gold underline drops to the hero bottom
   edge, where the first seam picks it up. --- */
.home-convergence .home-convergence__hero {
  background:
    radial-gradient(58% 70% at 12% 100%, rgba(197, 144, 50, 0.13), transparent 70%),
    radial-gradient(54% 60% at 84% 8%, rgba(27, 58, 87, 0.55), transparent 70%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 58%, #0f2740 100%);
}
.home-convergence .home-convergence__hero::before {
  background:
    linear-gradient(104deg, transparent 0 46%, rgba(248, 247, 243, 0.05) 46.1% 46.25%, transparent 46.35%),
    linear-gradient(104deg, transparent 0 58%, rgba(197, 144, 50, 0.12) 58.1% 58.25%, transparent 58.35%);
}
.home-convergence .home-convergence__plane {
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}
.home-convergence .home-convergence__plane--back {
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.58), rgba(13, 38, 61, 0.22));
}
.home-convergence .home-convergence__plane--middle {
  background: linear-gradient(160deg, rgba(9, 27, 48, 0.94), rgba(25, 57, 87, 0.5));
}
.home-convergence .home-convergence__plane--front {
  border-color: rgba(197, 144, 50, 0.32);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.72), rgba(11, 31, 58, 0.34));
}
.home-convergence .home-convergence__hero-note::before {
  content: "";
  position: absolute;
  right: 0;
  top: 100%;
  width: 2px;
  height: 14px;
  margin-top: -1px;
  margin-right: -1px;
  background: var(--nt-gold);
}
.home-convergence .home-convergence__hero-note::after {
  height: 2px;
  background: linear-gradient(90deg, rgba(197, 144, 50, 0.35), var(--nt-gold));
}

/* --- Seam 1 (hero to convergence): navy aperture into the ivory stage. --- */
.home-convergence .home-convergence__sequence {
  background: linear-gradient(180deg, #ebe7dc 0%, #f1eee6 42%, var(--nt-ivory) 100%);
}
.home-convergence .home-convergence__sequence::before { background: var(--nt-navy); }
/* Scene 2 depth: a distant smoky plane behind the field, the field, the copy. */
.home-convergence .home-convergence__stage { position: relative; }
.home-convergence .home-convergence__stage::before {
  content: "";
  position: absolute;
  z-index: 0;
  right: -6%;
  top: 9%;
  width: 46%;
  height: 74%;
  border: 1px solid rgba(11, 31, 58, 0.08);
  background: linear-gradient(160deg, rgba(27, 58, 87, 0.1), rgba(11, 31, 58, 0.03));
  transform: rotate(-6deg) translateX(calc((1 - var(--home-gather)) * 24px));
  pointer-events: none;
}
.home-convergence .home-convergence__stage-layout { position: relative; z-index: 1; }
.home-convergence .home-convergence__field {
  border-color: rgba(197, 144, 50, 0.3);
  box-shadow: 0 44px 96px rgba(8, 24, 39, 0.22);
}
/* The resolution line arrives once as the route locks, then stays. It is
   fully visible by default (no JS, reduced motion) and never loops. */
.home-convergence .home-convergence__resolution {
  opacity: calc(0.3 + var(--home-resolve) * 0.7);
}
/* The route exit: after the field, a vertical drop to the section edge
   where seam 2 continues it. Draws with the release phase. */
.home-convergence .home-convergence__sequence-exit {
  position: absolute;
  z-index: 1;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: max(78px, calc((100svh - clamp(480px, 60vw, 650px)) / 2));
  background: var(--nt-gold);
  transform-origin: 50% 0;
  transform: scaleY(clamp(0, calc((var(--home-release) - 0.35) * 1.6), 1));
  pointer-events: none;
}

/* --- Seam 2 (convergence to services): the stage ground opens into the
   warm ivory service list. --- */
.home-convergence .home-convergence__services {
  padding-top: clamp(112px, 12vw, 168px);
  background: var(--nt-ivory);
}
.home-convergence .home-convergence__services::before { background: var(--nt-ivory-ground); }
.home-convergence .home-convergence__services > .container { z-index: 2; }
.home-convergence .home-convergence__service-index { border-bottom-color: rgba(11, 31, 58, 0.16); }
.home-convergence .home-convergence__service-row { border-top-color: rgba(11, 31, 58, 0.14); }
/* One active gold line per row, always the top route line, on every row
   including the last. The index closing border stays quiet. */
.home-convergence .home-convergence__service-row::before {
  top: -1px;
  height: 2px;
  background: var(--nt-gold);
}
.home-convergence .home-convergence__service-row:hover::before,
.home-convergence .home-convergence__service-row:focus-visible::before {
  width: min(180px, 35%);
}
/* The route leaves the list from the last row right end and drops to the
   next seam. */
.home-convergence .home-convergence__services-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: clamp(80px, 8vw, 112px);
  background: var(--nt-gold);
  pointer-events: none;
}

/* --- Seam 3 (services to plan): ivory aperture into the navy plan. --- */
.home-convergence .home-convergence__plan {
  background:
    radial-gradient(64% 120% at 104% -20%, rgba(27, 58, 87, 0.7), transparent 66%),
    linear-gradient(165deg, #143149 0%, var(--nt-navy-2) 30%, var(--nt-navy) 64%);
}
.home-convergence .home-convergence__plan::before {
  background: var(--nt-ivory);
  height: var(--seam-h);
}
.home-convergence .home-convergence__plan-layout { padding-top: clamp(150px, 15vw, 196px); }
/* Scene 4 depth: the orbit (distant), a low route line with three stops
   (mid), the copy and steps (front). The route runs along the bottom edge
   toward the quote chapter. */
.home-convergence .home-convergence__plan-line {
  top: auto;
  right: var(--seam-m);
  bottom: 12%;
  width: 34%;
  transform: none;
  background: var(--nt-gold);
  opacity: 0.85;
}
.home-convergence .home-convergence__plan-stop { bottom: calc(12% - 4px); top: auto; }
.home-convergence .home-convergence__plan-stop--one { right: calc(var(--seam-m) + 30%); }
.home-convergence .home-convergence__plan-stop--two { right: calc(var(--seam-m) + 17%); }
.home-convergence .home-convergence__plan-stop--three { right: calc(var(--seam-m) + 4%); }
.home-convergence .home-convergence__plan-media::after {
  content: "";
  position: absolute;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: 12%;
  background: var(--nt-gold);
  opacity: 0.85;
}

/* --- Seam 4 (plan to quote to footer): the route enters the quote chapter
   from the right, runs along its top edge, and the footer hairline
   receives it. --- */
.home-convergence .home-convergence__quote::before {
  left: auto;
  right: var(--seam-m);
  width: min(42%, 620px);
  height: 2px;
  background: linear-gradient(90deg, rgba(197, 144, 50, 0.18), var(--nt-gold));
}
.home-convergence .home-convergence__quote {
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(27, 58, 87, 0.66), transparent 68%),
    linear-gradient(180deg, var(--nt-navy-2), #0b1f3a 68%, var(--nt-navy) 100%);
}

/* --- Shared dark gate: opaque enough to stay dark above a white body. --- */
.site-header {
  background: #0c1e2d;
  border-bottom-color: rgba(222, 209, 181, 0.15);
  box-shadow: 0 6px 24px rgba(3, 12, 20, 0.12);
}
@supports (backdrop-filter: blur(12px)) {
  .site-header { background: rgba(9, 26, 40, 0.96); backdrop-filter: blur(16px); }
}
.site-header::after { height: 1px; opacity: 0.45; }
.site-header .logo-word,
.site-header .header-call,
.site-header .nav-toggle,
.site-header .main-nav a:not(.btn) { color: #f8f7f3; }
.site-header .logo-tagline,
.site-header .main-nav a.is-active { color: #d9b46a; }
.site-header .nav-toggle { border-color: rgba(248, 247, 243, 0.2); min-width: 44px; min-height: 44px; }
.site-header .main-nav a:not(.btn):hover {
  background: rgba(248, 247, 243, 0.08);
  color: #f8f7f3;
}
/* Keep the approved navy mark legible on its small ivory backing. */
.site-header img.logo-mark-icon {
  background: #f8f7f3;
  box-shadow: 0 0 0 3px #f8f7f3;
  border-radius: 3px;
}
@media (min-width: 861px) and (max-width: 1180px) {
  .site-header .container { gap: 12px; }
  .site-header .logo-tagline, .site-header .header-call .call-text { display: none; }
  .site-header .logo-word { font-size: 1rem; }
  .site-header .main-nav a:not(.btn) { padding: 10px 8px; font-size: 0.85rem; }
  .site-header .header-actions .btn { padding: 12px 16px; }
}
@media (max-width: 860px) {
  body { padding-bottom: var(--mobile-actions-height); }
  .site-header .container {
    min-height: 68px;
    padding: 10px max(18px, env(safe-area-inset-right)) 10px max(18px, env(safe-area-inset-left));
    gap: 12px;
  }
  .site-header .logo-lockup { gap: 9px; min-width: 0; min-height: 44px; }
  .site-header img.logo-mark-icon { height: 25px; width: auto; }
  .site-header .logo-word { font-size: 0.94rem; white-space: nowrap; }
  .site-header .logo-tagline, .site-header .header-call { display: none; }
  .site-header .header-actions { gap: 8px; flex-shrink: 0; }
  .site-header .header-actions .btn {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 10px 13px;
    border: 1px solid rgba(217, 180, 106, 0.45);
    border-radius: 8px;
    background: rgba(217, 180, 106, 0.06);
    color: #e2c590;
    box-shadow: none;
    font-size: 0.78rem;
    white-space: nowrap;
  }
  .site-header .nav-toggle { width: 44px; height: 44px; padding: 10px; border-radius: 8px; }
  .site-header.is-open .main-nav {
    background: #0c1e2d;
    padding: 12px 18px 20px;
    border-bottom: 1px solid rgba(217, 180, 106, 0.25);
    max-height: calc(100dvh - 68px - var(--mobile-actions-height));
    overflow-y: auto;
  }
  .site-header.is-open .main-nav a:not(.btn) { display: block; border-radius: 6px; }
  .site-header a:focus-visible, .site-header button:focus-visible {
    outline: 2px solid #f4d38c;
    outline-offset: 3px;
  }
}
@media (max-width: 360px) {
  .site-header .container { gap: 8px; padding-inline: 12px; }
  .site-header .logo-word { font-size: 0.8rem; }
  .site-header img.logo-mark-icon { height: 21px; }
  .site-header .logo-lockup { gap: 7px; }
  .site-header .header-actions { gap: 6px; }
  .site-header .header-actions .btn { padding-inline: 9px; font-size: 0.74rem; }
}

/* --- Responsive seams --- */
@media (max-width: 900px), (max-height: 719px) {
  .home-convergence .home-convergence__hero-note::before { height: 62px; }
  .home-convergence .home-convergence__sequence-exit { height: 88px; transform: none; }
  .home-convergence .home-convergence__stage::before { display: none; }
  .home-convergence .home-convergence__plan-layout { padding-top: clamp(140px, 22vw, 170px); }
}
@media (max-width: 640px) {
  .home-convergence { --seam-h: 56px; }
  .home-convergence .home-convergence__hero::before {
    background: linear-gradient(104deg, transparent 0 48%, rgba(248, 247, 243, 0.05) 48.1% 48.25%, transparent 48.35%);
  }
  .home-convergence .home-convergence__hero-note::before { height: 50px; }
  .home-convergence .home-convergence__sequence-exit { height: 72px; }
  .home-convergence .home-convergence__services { padding-top: 118px; background: var(--nt-ivory); }
  .home-convergence .home-convergence__services-exit { height: 78px; }
  .home-convergence .home-convergence__plan-layout { padding-top: 132px; }
  .home-convergence .home-convergence__plan-line { width: 44%; bottom: 9%; }
  .home-convergence .home-convergence__plan-stop { bottom: calc(9% - 4px); }
  .home-convergence .home-convergence__plan-media::after { height: 9%; }
}
@media (max-width: 360px) {
  .home-convergence { --seam-h: 48px; }
  .home-convergence .home-convergence__hero-note::before { height: 50px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-convergence .home-convergence__sequence-exit,
  .home-convergence .home-convergence__stage::before { transition: none; }
}

/* ---------- Approved hero photo (night terminal far plane) ---------- */
/* The photo is the far plane: darkened, masked toward the copy column, with
   the architectural planes and pressure tags still layered over it. Copy
   never sits on the photo. */
.home-convergence .home-convergence__hero-photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 34% 62%;
  opacity: 0.72;
  mask-image: linear-gradient(90deg, transparent 0, #000 26%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 26%);
}
.home-convergence .home-convergence__plane { opacity: 0.68; }
.home-convergence .home-convergence__plane--middle { opacity: 0.58; }
@media (max-width: 640px) {
  /* Phones: diagonal mask keeps the headline column clean; the coach shows low-right. */
  .home-convergence .home-convergence__hero-photo {
    object-position: 46% 62%;
    opacity: 0.95;
    mask-image: linear-gradient(205deg, transparent 18%, #000 58%);
    -webkit-mask-image: linear-gradient(205deg, transparent 18%, #000 58%);
  }
  .home-convergence .home-convergence__hero-atmosphere { opacity: 0.5; }
  /* The plane accents are sized for the wide desktop atmosphere box; inside
     the tight mobile frame they render as a hard rectangle over the coach
     and headline instead of a subtle depth cue. The photo, gradient and
     pressure tags already carry depth on phones, so the planes step out. */
  .home-convergence .home-convergence__plane { display: none; }
}

/* ---------- Coordination chapter anchor + resolved Quote -> footer arrival ---------- */
/* Far plane of the plan chapter: the hotel-arrival photo, darkened and
   masked so the copy and steps keep full contrast. Orbit and route line stay
   above it; copy and steps above those. Three planes. */
.home-convergence .home-convergence__plan-photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 62% 55%;
  opacity: 0.3;
  mask-image: linear-gradient(180deg, transparent 0, #000 22%, #000 78%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 22%, #000 78%, transparent 100%);
}
.home-convergence .home-convergence__plan-orbit,
.home-convergence .home-convergence__plan-line,
.home-convergence .home-convergence__plan-stop { z-index: 1; }
/* The route's last drop: from the quote chapter's bottom edge, one gold line
   at the container's right edge falls into the footer, whose top hairline
   receives it and runs left. Replaces the earlier decorative band. */
.home-convergence .home-convergence__quote::after {
  right: 0;
  left: 0;
  height: clamp(64px, 9vw, 120px);
  background: linear-gradient(90deg,
    transparent calc(100% - var(--seam-m) - 1px),
    var(--nt-gold) calc(100% - var(--seam-m) - 1px),
    var(--nt-gold) calc(100% - var(--seam-m) + 1px),
    transparent calc(100% - var(--seam-m) + 1px));
  mask-image: linear-gradient(to bottom, transparent, #000 45%);
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 45%);
  opacity: 0.9;
}
.site-footer--home::before {
  height: 2px;
  background: linear-gradient(90deg,
    transparent 0,
    rgba(197, 144, 50, 0.28) 30%,
    var(--nt-gold, #c59032) calc(100% - max(24px, calc((100vw - 1220px) / 2 + 24px))),
    transparent calc(100% - max(24px, calc((100vw - 1220px) / 2 + 24px)) + 2px));
}
@media (max-width: 640px) {
  .home-convergence .home-convergence__plan-photo { object-position: 60% 60%; opacity: 0.26; }
}
@media (prefers-reduced-motion: reduce) {
  .home-convergence .home-convergence__plan-photo { transition: none; }
}

/* ---------- Convergence restored: one dark layered world (Home + About) ---------- */
/* Owner revision 2026-09-04. No ivory chapters on the homepage: scenes 2 and 3
   return to the night world and the service index becomes the single warm
   relief moment, a plan sheet floating inside the dark with the route running
   down its margin. Every seam is now dark-to-dark, so the aperture wedge reads
   as one plane cutting into the next. About joins the same world with one
   route rail and a framed family scene. Additive overrides; later wins. */
.home-convergence { background: var(--nt-navy); }

/* Far-plane drift: scroll-driven, CSS only, no JS. The rest state is the
   composed state, so reduced motion (below) simply shows it. */
@supports (animation-timeline: scroll()) {
  @keyframes home-hero-drift {
    from { transform: translate3d(0, 0, 0) scale(1.04); }
    to { transform: translate3d(0, -5%, 0) scale(1.04); }
  }
  @keyframes home-far-drift {
    from { transform: translate3d(0, 4%, 0) scale(1.07); }
    to { transform: translate3d(0, -4%, 0) scale(1.07); }
  }
  .home-convergence .home-convergence__hero-photo,
  .about-world .about-world__hero-photo {
    animation: home-hero-drift linear both;
    animation-timeline: scroll(root);
    animation-range: 0 100vh;
  }
  .home-convergence .home-convergence__plan-photo {
    animation: home-far-drift linear both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
  }
}

/* --- Scene 2, the stage, back in the dark. Far: a smoky field with a faint
   terminal grid. Middle: the distant plane and the field itself, lifted off
   the ground by its border and shadow. Near: copy in ivory. --- */
.home-convergence .home-convergence__sequence {
  background:
    repeating-linear-gradient(90deg, rgba(248, 247, 243, 0.028) 0 1px, transparent 1px 112px),
    radial-gradient(60% 52% at 88% 10%, rgba(27, 58, 87, 0.55), transparent 70%),
    radial-gradient(48% 40% at 6% 92%, rgba(197, 144, 50, 0.07), transparent 70%),
    linear-gradient(180deg, #0d2742 0%, #0b2139 48%, var(--nt-navy) 100%);
}
.home-convergence .home-convergence__sequence::before { background: var(--nt-navy); }
.home-convergence .home-convergence__stage::before {
  border-color: rgba(248, 247, 243, 0.06);
  background: linear-gradient(160deg, rgba(27, 58, 87, 0.5), rgba(8, 24, 39, 0.1));
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.25);
}
.home-convergence .home-convergence__sequence-copy h2 { color: var(--white); }
.home-convergence .home-convergence__sequence-copy > p:not(.home-convergence__resolution) { color: rgba(248, 247, 243, 0.72); }
.home-convergence .home-convergence__resolution { color: var(--nt-ivory); }
.home-convergence .home-convergence__field {
  border-color: rgba(197, 144, 50, 0.42);
  background: linear-gradient(160deg, #10294a 0%, #0b1f3a 55%, #0a1a30 100%);
  box-shadow: 0 50px 110px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(248, 247, 243, 0.04);
}

/* --- Scene 3, one clear plan. The chapter ground stays dark; the service
   index is an ivory plan sheet lifted off it: an offset smoke plate behind
   (far), the sheet with the gold route rail down its left margin (middle),
   the rows (near). Intro copy sits on the dark ground above the sheet. --- */
.home-convergence .home-convergence__services {
  padding-top: clamp(112px, 12vw, 168px);
  padding-bottom: clamp(96px, 10vw, 140px);
  background:
    radial-gradient(56% 60% at 6% 100%, rgba(197, 144, 50, 0.08), transparent 70%),
    radial-gradient(50% 50% at 92% 30%, rgba(27, 58, 87, 0.5), transparent 70%),
    linear-gradient(180deg, #0b2139 0%, var(--nt-navy) 100%);
}
.home-convergence .home-convergence__services::before { background: var(--nt-navy); }
.home-convergence .home-convergence__section-intro .home-convergence__signal { color: var(--nt-gold); }
.home-convergence .home-convergence__section-intro h2 { color: var(--white); }
.home-convergence .home-convergence__section-intro p { color: rgba(248, 247, 243, 0.72); }
.home-convergence .home-convergence__service-index {
  /* No stacking context of its own: the offset plate (::before, z -1) must
     paint in the container's context, beneath this sheet's background. */
  position: relative;
  padding: 6px clamp(18px, 3vw, 40px);
  border: 1px solid rgba(197, 144, 50, 0.4);
  background: linear-gradient(180deg, #f7f4ed 0%, var(--nt-ivory) 40%, #eeeade 100%);
  box-shadow: 0 46px 100px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.5);
}
.home-convergence .home-convergence__service-index::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border: 1px solid rgba(248, 247, 243, 0.08);
  background: rgba(27, 58, 87, 0.42);
  transform: translate(18px, 20px);
  pointer-events: none;
}
.home-convergence .home-convergence__service-index::after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  width: 2px;
  background: var(--nt-gold);
  pointer-events: none;
}
.home-convergence .home-convergence__service-index { border-bottom-color: rgba(197, 144, 50, 0.4); }
.home-convergence .home-convergence__service-row:first-child { border-top-color: transparent; }

/* --- Seam 3: the dark services ground opens into the plan chapter. --- */
.home-convergence .home-convergence__plan::before { background: var(--nt-navy); }

/* --- The header gate is now a single unconditional rule above; only the
   footer's route hairline still varies per page. --- */
@supports selector(:has(*)) {
  /* The footer receives the About route: a hairline that starts at the rail
     side and fades to the right. */
  body:has(.about-world) .site-footer { position: relative; }
  body:has(.about-world) .site-footer::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 2px;
    background: linear-gradient(90deg,
      transparent 0,
      transparent max(24px, calc((100vw - 1220px) / 2 + 22px)),
      #c59032 max(24px, calc((100vw - 1220px) / 2 + 24px)),
      rgba(197, 144, 50, 0.28) 55%,
      transparent 100%);
  }
}

/* ---------- About: the same world, one route rail, a framed family scene ---------- */
.about-world {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-smoke: #1b3a57;
  --nt-ivory: #f4f1e9;
  --nt-gold: #c59032;
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  --seam-h: clamp(56px, 7vw, 104px);
  --seam-w: calc(100vw - var(--seam-m));
  position: relative;
  overflow: clip;
  background: var(--nt-navy);
  color: var(--nt-ivory);
}
.about-world section { position: relative; }
.about-world .eyebrow { color: var(--nt-gold); }
.about-world h1,
.about-world h2,
.about-world h3 { color: var(--white); }
.about-world p { color: rgba(248, 247, 243, 0.74); }

/* The route rail: 2px gold at the container left edge, section by section. */
.about-world .about-world__rail {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  left: var(--seam-m);
  width: 2px;
  background: var(--nt-gold);
  opacity: 0.82;
  pointer-events: none;
}

/* --- Scene 1: hero. Far: the daylight coach, masked toward the copy column.
   Middle: two smoky planes. Near: breadcrumbs, heading, lead. --- */
.about-world .about-world__hero {
  min-height: min(680px, 74svh);
  display: flex;
  align-items: center;
  padding: 0;
  /* clip, not hidden: the media plane overhangs the right edge and a hidden
     box can still be scrolled by script (scrollIntoView, focus), which would
     drag the copy off screen. A clipped box cannot. */
  overflow: clip;
  background:
    radial-gradient(58% 70% at 10% 100%, rgba(197, 144, 50, 0.12), transparent 70%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 58%, #0f2740 100%);
}
.about-world .about-world__hero-layout {
  position: relative;
  z-index: 2;
  padding-top: 128px;
  padding-bottom: 104px;
}
.about-world .about-world__hero-layout h1 { max-width: 700px; }
.about-world .about-world__hero-layout > p:last-child { max-width: 620px; }
.about-world .about-world__hero-media {
  position: absolute;
  inset: 0 0 0 40%;
  z-index: 0;
  overflow: clip;
  pointer-events: none;
}
.about-world .about-world__hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 58% 50%;
  opacity: 0.8;
  mask-image: linear-gradient(90deg, transparent 0, #000 32%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 32%);
}
.about-world .about-world__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.08);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}
.about-world .about-world__plane--back {
  width: 62%;
  height: 72%;
  top: -10%;
  right: -14%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.5), rgba(13, 38, 61, 0.14));
  transform: rotate(10deg);
}
.about-world .about-world__plane--front {
  width: 48%;
  height: 50%;
  right: -8%;
  bottom: -16%;
  border-color: rgba(197, 144, 50, 0.3);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.62), rgba(11, 31, 58, 0.3));
  transform: rotate(-7deg);
}
.about-world .about-world__hero-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: clamp(72px, 9vw, 120px);
  background: linear-gradient(180deg, rgba(197, 144, 50, 0.1), var(--nt-gold));
  pointer-events: none;
}

/* --- Seam: the hero ground cuts into the approach chapter as a wedge, with
   the slanted gold line from the hero exit to the rail side. --- */
.about-world .about-world__approach::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--seam-h);
  clip-path: polygon(0 0, 100% 0, 100% 0, calc(100% - var(--seam-m)) 0, 0 100%);
  background: #0c2136;
  pointer-events: none;
}
.about-world .about-world__approach::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: var(--seam-h);
  left: 0;
  width: 100vw;
  height: 2px;
  background: var(--nt-gold);
  transform-origin: 0 50%;
  pointer-events: none;
}
@supports (transform: rotate(atan2(1px, 1px))) {
  .about-world .about-world__approach::after {
    width: hypot(var(--seam-w), var(--seam-h));
    transform: rotate(calc(-1 * atan2(var(--seam-h), var(--seam-w))));
  }
}
.about-world .about-world__approach .about-world__rail { top: var(--seam-h); }

/* --- Scene 2: approach. Far: ground. Middle: the route panel, a lifted
   plate carrying the coordination motif. Near: copy. --- */
.about-world .about-world__approach {
  padding: calc(var(--seam-h) + 56px) 0 104px;
  background:
    radial-gradient(50% 50% at 90% 20%, rgba(27, 58, 87, 0.45), transparent 70%),
    linear-gradient(180deg, #0b2139 0%, var(--nt-navy) 100%);
}
.about-world .about-world__approach-layout,
.about-world .about-world__family-layout,
.about-world .about-world__ledger-layout {
  position: relative;
  z-index: 2;
  padding-left: calc(24px + 40px);
}
.about-world .about-world__approach-layout {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: clamp(40px, 6vw, 88px);
}
.about-world .about-world__approach-copy { flex: 1 1 440px; min-width: 280px; }
.about-world .about-world__approach-copy h2,
.about-world .about-world__family-copy h2,
.about-world .about-world__ledger-head h2 {
  max-width: 560px;
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.035em;
  line-height: 1.05;
  text-wrap: balance;
}
.about-world .about-world__panel {
  position: relative;
  flex: 0 1 440px;
  min-width: 280px;
  aspect-ratio: 4 / 3;
  border: 1px solid rgba(197, 144, 50, 0.32);
  background: linear-gradient(160deg, #10294a 0%, #0b1f3a 60%, #0a1a30 100%);
  box-shadow: 0 46px 100px rgba(0, 0, 0, 0.42);
}
.about-world .about-world__panel::before {
  content: "";
  position: absolute;
  inset: 8%;
  border: 1px solid rgba(248, 247, 243, 0.07);
  pointer-events: none;
}
.about-world .about-world__panel-plate {
  position: absolute;
  right: -10%;
  bottom: -12%;
  width: 44%;
  height: 46%;
  border: 1px solid rgba(197, 144, 50, 0.18);
  background: rgba(21, 52, 82, 0.6);
  transform: rotate(8deg);
}
.about-world .about-world__panel-line {
  position: absolute;
  left: 13%;
  top: 60%;
  width: 78%;
  height: 2px;
  background: var(--nt-gold);
  transform: rotate(-16deg);
  transform-origin: 0 50%;
}
.about-world .about-world__panel-stop {
  position: absolute;
  width: 12px;
  height: 12px;
  border: 2px solid var(--nt-gold);
  border-radius: 50%;
  background: #0b1f3a;
}
.about-world .about-world__panel-stop--one { left: calc(13% - 6px); top: calc(60% - 6px); background: var(--nt-gold); }
.about-world .about-world__panel-stop--two { left: calc(13% + 36% - 6px); top: calc(60% - 12% - 6px); }
.about-world .about-world__panel-stop--three { left: calc(13% + 72% - 6px); top: calc(60% - 24% - 6px); background: var(--nt-gold); }

/* --- Scene 3: the family scene. A dossier frame on the route: an offset smoke
   plate (far), a thin gold frame with the portrait (middle), copy (near).
   The rail passes behind the frame and shows above and below it. --- */
.about-world .about-world__family {
  padding: 104px 0;
  background:
    radial-gradient(48% 60% at 76% 42%, rgba(27, 58, 87, 0.5), transparent 70%),
    radial-gradient(40% 40% at 8% 100%, rgba(197, 144, 50, 0.07), transparent 70%),
    linear-gradient(180deg, var(--nt-navy) 0%, #0b2139 55%, var(--nt-navy-2) 100%);
}
.about-world .about-world__family-layout {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: clamp(40px, 6vw, 96px);
}
.about-world .about-world__frame {
  position: relative;
  isolation: isolate;
  z-index: 2;
  flex: 0 0 auto;
  width: min(360px, 100%);
  /* Pulled 64px left so the route rail (at the container edge) runs under
     the portrait and shows above and below the frame. */
  margin: 0 0 0 -64px;
  padding: 14px;
  border: 1px solid rgba(197, 144, 50, 0.6);
  background: rgba(8, 24, 39, 0.72);
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.45);
}
.about-world .about-world__frame::after {
  content: "";
  position: absolute;
  inset: 14px;
  border: 1px solid rgba(248, 247, 243, 0.08);
  pointer-events: none;
}
.about-world .about-world__frame img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 0;
  box-shadow: none;
}
.about-world .about-world__frame-plate {
  position: absolute;
  z-index: -1;
  inset: 0;
  border: 1px solid rgba(248, 247, 243, 0.08);
  background: rgba(27, 58, 87, 0.42);
  transform: translate(16px, 16px);
}
.about-world .about-world__family-copy { flex: 1 1 400px; min-width: 280px; }

/* --- Scenes 4 and 5: ledgers. Dark ground, hairline rows, the rail as the
   left margin rule, ending at one stop under Capacity. --- */
.about-world .about-world__ledger {
  padding: 96px 0;
  background: linear-gradient(180deg, var(--nt-navy-2) 0%, #0a1d33 100%);
}
.about-world .about-world__ledger--capacity {
  background: linear-gradient(180deg, #0a1d33 0%, var(--nt-navy) 100%);
}
.about-world .about-world__ledger-layout { max-width: calc(var(--container-w) - 200px); margin-right: auto; }
.about-world .about-world__ledger-head { margin-bottom: 30px; }
.about-world .about-world__ledger-head p { max-width: 620px; margin-bottom: 0; }
.about-world .about-world__roster {
  display: flex;
  flex-direction: column;
  border-bottom: 1px solid rgba(248, 247, 243, 0.14);
}
.about-world .about-world__roster li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 32px;
  padding: 22px 0;
  border-top: 1px solid rgba(248, 247, 243, 0.14);
}
.about-world .about-world__roster h3 { flex: 0 1 380px; margin: 0; font-size: 1.05rem; }
.about-world .about-world__roster p { flex: 1 1 260px; margin: 0; font-size: 0.94rem; }
.about-world .about-world__ledger--capacity .about-world__rail {
  bottom: auto;
  height: 58%;
}
.about-world .about-world__ledger--capacity .about-world__rail::after {
  content: "";
  position: absolute;
  left: -6px;
  bottom: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--nt-gold);
  box-shadow: 0 0 0 5px rgba(197, 144, 50, 0.16);
}
.about-world .about-world__cta {
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(27, 58, 87, 0.5), transparent 68%),
    linear-gradient(180deg, var(--nt-navy) 0%, #06111e 100%);
}
.about-world .about-world__cta p { color: rgba(248, 247, 243, 0.74); }

/* --- Responsive: About --- */
@media (max-width: 900px) {
  .about-world .about-world__hero { min-height: auto; }
  .about-world .about-world__hero-layout { padding-top: 112px; padding-bottom: 72px; }
  .about-world .about-world__hero-media { inset: 0 -18% 0 32%; opacity: 0.62; }
  .about-world .about-world__approach-layout,
  .about-world .about-world__family-layout,
  .about-world .about-world__ledger-layout { padding-left: calc(24px + 30px); }
  .about-world .about-world__approach-layout,
  .about-world .about-world__family-layout { flex-direction: column; align-items: stretch; }
  .about-world .about-world__approach-copy,
  .about-world .about-world__family-copy { flex: 0 1 auto; min-width: 0; }
  .about-world .about-world__panel { flex-basis: auto; min-width: 0; width: 100%; max-width: 440px; }
  .about-world .about-world__frame { margin: 0 auto; }
  .about-world .about-world__ledger-layout { max-width: none; }
}
@media (max-width: 640px) {
  .about-world { --seam-h: 48px; }
  .about-world .about-world__hero-layout { padding-top: 84px; padding-bottom: 60px; }
  /* Phones: the coach stays low-right behind the copy column; the diagonal
     mask keeps the headline and lead on dark ground. */
  .about-world .about-world__hero-media { inset: 10% -34% 0 26%; opacity: 0.5; }
  .about-world .about-world__hero-photo {
    object-position: 70% 50%;
    mask-image: linear-gradient(200deg, transparent 30%, #000 70%);
    -webkit-mask-image: linear-gradient(200deg, transparent 30%, #000 70%);
  }
  .about-world .about-world__approach { padding-bottom: 80px; }
  .about-world .about-world__family,
  .about-world .about-world__ledger { padding: 76px 0; }
  .about-world .about-world__frame { width: min(320px, 100%); padding: 10px; }
  .about-world .about-world__frame::after { inset: 10px; }
  .about-world .about-world__frame-plate { transform: translate(10px, 10px); }
  .about-world .about-world__approach-layout,
  .about-world .about-world__family-layout,
  .about-world .about-world__ledger-layout { padding-left: calc(24px + 22px); }
  .home-convergence .home-convergence__service-index { padding: 2px 16px; }
  .home-convergence .home-convergence__service-index::before { transform: translate(10px, 12px); }
}

/* --- Reduced motion: the drift is off and every scene is its resolved
   composition. The global rule shortens durations but does not stop
   scroll-driven timelines, so these are explicit. --- */
@media (prefers-reduced-motion: reduce) {
  .home-convergence .home-convergence__hero-photo,
  .home-convergence .home-convergence__plan-photo,
  .about-world .about-world__hero-photo,
  .fleet-world .fleet-world__hero-photo {
    animation: none !important;
    transform: none !important;
  }
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ---------- Fleet: the same world, one route rail, a layered gallery ---------- */
.fleet-world {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-smoke: #1b3a57;
  --nt-ivory: #f4f1e9;
  --nt-gold: #c59032;
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  --seam-h: clamp(56px, 7vw, 104px);
  --seam-w: calc(100vw - var(--seam-m));
  position: relative;
  overflow: clip;
  background: var(--nt-navy);
  color: var(--nt-ivory);
}
.fleet-world section { position: relative; }
.fleet-world .eyebrow { color: var(--nt-gold); }
.fleet-world h1,
.fleet-world h2,
.fleet-world h3 { color: var(--white); }
.fleet-world p { color: rgba(248, 247, 243, 0.74); }

.fleet-world .fleet-world__rail {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  left: var(--seam-m);
  width: 2px;
  background: var(--nt-gold);
  opacity: 0.82;
  pointer-events: none;
}
.fleet-world .fleet-world__rail--stop { bottom: auto; height: 46%; }
.fleet-world .fleet-world__rail--stop::after {
  content: "";
  position: absolute;
  left: -6px;
  bottom: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--nt-gold);
  box-shadow: 0 0 0 5px rgba(197, 144, 50, 0.16);
}

/* --- Scene 1: hero. Far: the daylight coach, masked toward the copy
   column. Middle: two smoky planes. Near: breadcrumbs, heading, lead. --- */
.fleet-world .fleet-world__hero {
  min-height: min(620px, 68svh);
  display: flex;
  align-items: center;
  padding: 0;
  overflow: clip;
  background:
    radial-gradient(58% 70% at 10% 100%, rgba(197, 144, 50, 0.12), transparent 70%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 58%, #0f2740 100%);
}
.fleet-world .fleet-world__hero-layout {
  position: relative;
  z-index: 2;
  padding-top: 128px;
  padding-bottom: 96px;
}
.fleet-world .fleet-world__hero-layout h1 { max-width: 700px; }
.fleet-world .fleet-world__hero-layout > p:last-child { max-width: 620px; }
.fleet-world .fleet-world__hero-media {
  position: absolute;
  inset: 0 0 0 40%;
  z-index: 0;
  overflow: clip;
  pointer-events: none;
}
.fleet-world .fleet-world__hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 56% 48%;
  opacity: 0.82;
  mask-image: linear-gradient(90deg, transparent 0, #000 32%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 32%);
}
.fleet-world .fleet-world__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.08);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}
.fleet-world .fleet-world__plane--back {
  width: 60%;
  height: 70%;
  top: -8%;
  right: -12%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.5), rgba(13, 38, 61, 0.14));
  transform: rotate(9deg);
}
.fleet-world .fleet-world__plane--front {
  width: 46%;
  height: 48%;
  right: -6%;
  bottom: -14%;
  border-color: rgba(197, 144, 50, 0.28);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.6), rgba(11, 31, 58, 0.28));
  transform: rotate(-6deg);
}
.fleet-world .fleet-world__hero-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: clamp(64px, 8vw, 104px);
  background: linear-gradient(180deg, rgba(197, 144, 50, 0.1), var(--nt-gold));
  pointer-events: none;
}

/* --- Seam: the hero cuts into the overview chapter as a wedge. --- */
.fleet-world .fleet-world__overview::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--seam-h);
  clip-path: polygon(0 0, 100% 0, 100% 0, calc(100% - var(--seam-m)) 0, 0 100%);
  background: #0c2136;
  pointer-events: none;
}
.fleet-world .fleet-world__overview::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: var(--seam-h);
  left: 0;
  width: 100vw;
  height: 2px;
  background: var(--nt-gold);
  transform-origin: 0 50%;
  pointer-events: none;
}
@supports (transform: rotate(atan2(1px, 1px))) {
  .fleet-world .fleet-world__overview::after {
    width: hypot(var(--seam-w), var(--seam-h));
    transform: rotate(calc(-1 * atan2(var(--seam-h), var(--seam-w))));
  }
}
.fleet-world .fleet-world__overview .fleet-world__rail { top: var(--seam-h); }

/* --- Scene 2: overview. Far: ground. Middle: the coach photo in a plated
   frame. Near: copy, stats, checklist. --- */
.fleet-world .fleet-world__overview {
  padding: calc(var(--seam-h) + 56px) 0 104px;
  background:
    radial-gradient(50% 50% at 90% 20%, rgba(27, 58, 87, 0.45), transparent 70%),
    linear-gradient(180deg, #0b2139 0%, var(--nt-navy) 100%);
}
.fleet-world .fleet-world__overview-layout {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: clamp(40px, 6vw, 88px);
  padding-left: calc(24px + 40px);
}
.fleet-world .fleet-world__overview-media {
  position: relative;
  isolation: isolate;
  flex: 1 1 420px;
  min-width: 280px;
}
.fleet-world .fleet-world__overview-media img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid rgba(197, 144, 50, 0.32);
  box-shadow: 0 46px 100px rgba(0, 0, 0, 0.42);
}
.fleet-world .fleet-world__overview-plate {
  position: absolute;
  z-index: -1;
  inset: 0;
  border: 1px solid rgba(248, 247, 243, 0.08);
  background: rgba(27, 58, 87, 0.42);
  transform: translate(18px, 20px);
}
.fleet-world .fleet-world__overview-copy { flex: 1 1 440px; min-width: 280px; }
.fleet-world .fleet-world__overview-copy h2 {
  max-width: 560px;
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.035em;
  line-height: 1.05;
  text-wrap: balance;
}
.fleet-world .fleet-world__stats {
  display: flex;
  flex-wrap: wrap;
  gap: 28px;
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid rgba(248, 247, 243, 0.15);
}
.fleet-world .fleet-world__stat { display: flex; flex-direction: column; gap: 2px; }
.fleet-world .fleet-world__stat .num {
  font-family: var(--font-heading);
  font-size: 1.9rem;
  font-weight: 800;
  color: var(--nt-gold);
  letter-spacing: -0.02em;
}
.fleet-world .fleet-world__stat .lbl {
  font-size: 0.8rem;
  color: rgba(248, 247, 243, 0.6);
}
.fleet-world .fleet-world__checklist {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 24px;
}
.fleet-world .fleet-world__checklist li {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  color: rgba(248, 247, 243, 0.8);
  font-size: 0.95rem;
}
.fleet-world .fleet-world__checklist li svg { flex-shrink: 0; color: var(--nt-gold); margin-top: 3px; }

/* --- Scene 3: photography. A route rail runs through a layered, offset
   grid of the four approved photos, foreground and background depths. --- */
.fleet-world .fleet-world__gallery {
  padding: 104px 0;
  background:
    radial-gradient(56% 60% at 6% 100%, rgba(197, 144, 50, 0.07), transparent 70%),
    radial-gradient(50% 50% at 92% 25%, rgba(27, 58, 87, 0.45), transparent 70%),
    linear-gradient(180deg, var(--nt-navy) 0%, #0b2139 50%, var(--nt-navy) 100%);
}
.fleet-world .fleet-world__gallery-layout { padding-left: calc(24px + 40px); }
.fleet-world .fleet-world__gallery-head { margin-bottom: 44px; max-width: 640px; }
.fleet-world .fleet-world__gallery-head h2 {
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.035em;
}
.fleet-world .fleet-world__grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 24px 28px;
}
.fleet-world .fleet-world__frame {
  margin: 0;
  position: relative;
  border: 1px solid rgba(197, 144, 50, 0.3);
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.4);
  overflow: hidden;
}
.fleet-world .fleet-world__frame img { display: block; width: 100%; height: 100%; object-fit: cover; }
.fleet-world .fleet-world__frame--a { grid-column: span 7; aspect-ratio: 4 / 3; align-self: start; }
.fleet-world .fleet-world__frame--b { grid-column: span 5; aspect-ratio: 4 / 3; align-self: end; margin-bottom: -36px; }
.fleet-world .fleet-world__frame--c { grid-column: span 4; aspect-ratio: 3 / 4; align-self: start; margin-top: 42px; }
.fleet-world .fleet-world__frame--d { grid-column: span 8; aspect-ratio: 16 / 10; align-self: start; }

/* --- Scene 4: ledger. Two dark cards, the rail ends at one stop here. --- */
.fleet-world .fleet-world__ledger {
  padding: 96px 0;
  background: linear-gradient(180deg, var(--nt-navy-2) 0%, #0a1d33 100%);
}
.fleet-world .fleet-world__ledger-layout {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  padding-left: calc(24px + 40px);
}
.fleet-world .fleet-world__ledger-card {
  flex: 1 1 320px;
  min-width: 260px;
  padding: 26px 28px;
  border: 1px solid rgba(248, 247, 243, 0.12);
  background: rgba(8, 24, 39, 0.4);
}
.fleet-world .fleet-world__ledger-card h3 { font-size: 1.1rem; margin-bottom: 8px; }
.fleet-world .fleet-world__ledger-card p { margin: 0; font-size: 0.94rem; }

.fleet-world .fleet-world__cta {
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(27, 58, 87, 0.5), transparent 68%),
    linear-gradient(180deg, var(--nt-navy) 0%, #06111e 100%);
}
.fleet-world .fleet-world__cta p { color: rgba(248, 247, 243, 0.74); }

/* --- Header gate is the single unconditional rule above; only the footer
   hairline still varies per page. --- */
@supports selector(:has(*)) {
  body:has(.fleet-world) .site-footer { position: relative; }
  body:has(.fleet-world) .site-footer::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 2px;
    background: linear-gradient(90deg,
      transparent 0,
      transparent max(24px, calc((100vw - 1220px) / 2 + 22px)),
      #c59032 max(24px, calc((100vw - 1220px) / 2 + 24px)),
      rgba(197, 144, 50, 0.28) 55%,
      transparent 100%);
  }
}

/* --- Responsive: Fleet --- */
@media (max-width: 900px) {
  .fleet-world .fleet-world__hero { min-height: auto; }
  .fleet-world .fleet-world__hero-layout { padding-top: 112px; padding-bottom: 72px; }
  .fleet-world .fleet-world__hero-media { inset: 0 -18% 0 32%; opacity: 0.62; }
  .fleet-world .fleet-world__overview-layout,
  .fleet-world .fleet-world__gallery-layout,
  .fleet-world .fleet-world__ledger-layout { padding-left: calc(24px + 30px); }
  .fleet-world .fleet-world__overview-media,
  .fleet-world .fleet-world__overview-copy { min-width: 0; }
  .fleet-world .fleet-world__frame--a { grid-column: span 12; }
  .fleet-world .fleet-world__frame--b { grid-column: span 7; margin-bottom: 0; }
  .fleet-world .fleet-world__frame--c { grid-column: span 5; margin-top: 0; }
  .fleet-world .fleet-world__frame--d { grid-column: span 12; }
}
@media (max-width: 640px) {
  .fleet-world { --seam-h: 48px; }
  .fleet-world .fleet-world__hero-layout { padding-top: 84px; padding-bottom: 60px; }
  .fleet-world .fleet-world__hero-media {
    inset: 10% -34% 0 26%;
    opacity: 0.5;
  }
  .fleet-world .fleet-world__hero-photo {
    object-position: 62% 46%;
    opacity: 0.6;
    mask-image: linear-gradient(200deg, transparent 30%, #000 70%);
    -webkit-mask-image: linear-gradient(200deg, transparent 30%, #000 70%);
  }
  .fleet-world .fleet-world__plane { display: none; }
  .fleet-world .fleet-world__overview { padding-bottom: 80px; }
  .fleet-world .fleet-world__gallery,
  .fleet-world .fleet-world__ledger { padding: 76px 0; }
  .fleet-world .fleet-world__overview-layout,
  .fleet-world .fleet-world__gallery-layout,
  .fleet-world .fleet-world__ledger-layout { padding-left: calc(24px + 22px); }
  .fleet-world .fleet-world__grid { gap: 18px; }
  .fleet-world .fleet-world__frame--a,
  .fleet-world .fleet-world__frame--b,
  .fleet-world .fleet-world__frame--c,
  .fleet-world .fleet-world__frame--d { grid-column: span 12; margin: 0; }
}

/* ---------- Services: the same world, ivory plan sheet, one route rail ---------- */
.services-world {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-ivory: #f4f1e9;
  --nt-gold: #c59032;
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  --seam-h: clamp(56px, 7vw, 104px);
  --seam-w: calc(100vw - var(--seam-m));
  position: relative;
  overflow: clip;
  background: var(--nt-navy);
  color: var(--nt-ivory);
}
.services-world section { position: relative; }
.services-world .eyebrow { color: var(--nt-gold); }
.services-world h1,
.services-world h2 { color: var(--white); }
.services-world p { color: rgba(248, 247, 243, 0.74); }

.services-world .services-world__rail {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  left: var(--seam-m);
  width: 2px;
  background: var(--nt-gold);
  opacity: 0.82;
  pointer-events: none;
}
.services-world .services-world__rail--stop { bottom: auto; height: 44%; }
.services-world .services-world__rail--stop::after {
  content: "";
  position: absolute;
  left: -6px;
  bottom: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--nt-gold);
  box-shadow: 0 0 0 5px rgba(197, 144, 50, 0.16);
}

/* --- Scene 1: hero. Far: the hotel-arrival photo. Middle: smoky planes. --- */
.services-world .services-world__hero {
  min-height: min(560px, 62svh);
  display: flex;
  align-items: center;
  padding: 0;
  overflow: clip;
  background:
    radial-gradient(58% 70% at 10% 100%, rgba(197, 144, 50, 0.12), transparent 70%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 58%, #0f2740 100%);
}
.services-world .services-world__hero-layout {
  position: relative;
  z-index: 2;
  padding-top: 120px;
  padding-bottom: 88px;
}
.services-world .services-world__hero-layout h1 { max-width: 700px; }
.services-world .services-world__hero-layout > p:last-child { max-width: 620px; }
.services-world .services-world__hero-media {
  position: absolute;
  inset: 0 0 0 42%;
  z-index: 0;
  overflow: clip;
  pointer-events: none;
}
.services-world .services-world__hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 60% 50%;
  opacity: 0.55;
  mask-image: linear-gradient(90deg, transparent 0, #000 34%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 34%);
}
.services-world .services-world__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.08);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}
.services-world .services-world__plane--back {
  width: 56%;
  height: 66%;
  top: -6%;
  right: -10%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.5), rgba(13, 38, 61, 0.14));
  transform: rotate(8deg);
}
.services-world .services-world__plane--front {
  width: 42%;
  height: 44%;
  right: -4%;
  bottom: -12%;
  border-color: rgba(197, 144, 50, 0.26);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.58), rgba(11, 31, 58, 0.26));
  transform: rotate(-5deg);
}
.services-world .services-world__hero-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: clamp(60px, 8vw, 96px);
  background: linear-gradient(180deg, rgba(197, 144, 50, 0.1), var(--nt-gold));
  pointer-events: none;
}

/* --- Seam: hero cuts into the index chapter. --- */
.services-world .services-world__index::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--seam-h);
  clip-path: polygon(0 0, 100% 0, 100% 0, calc(100% - var(--seam-m)) 0, 0 100%);
  background: #0c2136;
  pointer-events: none;
}
.services-world .services-world__index::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: var(--seam-h);
  left: 0;
  width: 100vw;
  height: 2px;
  background: var(--nt-gold);
  transform-origin: 0 50%;
  pointer-events: none;
}
@supports (transform: rotate(atan2(1px, 1px))) {
  .services-world .services-world__index::after {
    width: hypot(var(--seam-w), var(--seam-h));
    transform: rotate(calc(-1 * atan2(var(--seam-h), var(--seam-w))));
  }
}

/* --- Scene 2: the index sheet. An ivory plan sheet lifted on a smoke plate,
   the gold rail down its left edge, matching Home's service index. --- */
.services-world .services-world__index {
  padding: calc(var(--seam-h) + 72px) 0 96px;
  background:
    radial-gradient(56% 60% at 8% 100%, rgba(197, 144, 50, 0.07), transparent 70%),
    linear-gradient(180deg, #0b2139 0%, var(--nt-navy) 100%);
}
.services-world .services-world__sheet {
  position: relative;
  isolation: isolate;
  padding: 6px clamp(18px, 3vw, 40px);
  border: 1px solid rgba(197, 144, 50, 0.4);
  box-shadow: 0 46px 100px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.5);
}
/* The opaque sheet must paint above its offset backing, below the content.
   A negative child z-index alone still paints over its parent's background. */
.services-world .services-world__sheet::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, #f7f4ed 0%, var(--nt-ivory) 40%, #eeeade 100%);
  pointer-events: none;
}
.services-world .services-world__sheet-plate {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 0;
  border: 1px solid rgba(248, 247, 243, 0.08);
  background: rgba(27, 58, 87, 0.42);
  transform: translate(18px, 20px);
  pointer-events: none;
}
.services-world .services-world__sheet::after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  width: 2px;
  background: var(--nt-gold);
  pointer-events: none;
}
.services-world .services-world__list { display: flex; flex-direction: column; }
.services-world .services-world__row {
  position: relative;
  display: flex;
  align-items: center;
  gap: clamp(18px, 4vw, 58px);
  min-height: 112px;
  padding: 26px 4px;
  border-top: 1px solid var(--border);
  color: inherit;
  text-decoration: none;
  transition: padding-left var(--ease-base), color var(--ease-fast);
}
.services-world .services-world__row:first-child { border-top-color: transparent; }
.services-world .services-world__row::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--nt-gold);
  transition: width var(--ease-base);
}
.services-world .services-world__row:hover,
.services-world .services-world__row:focus-visible { padding-left: 16px; }
.services-world .services-world__row:hover::before,
.services-world .services-world__row:focus-visible::before { width: min(180px, 35%); }
.services-world .services-world__row-num {
  flex: 0 0 44px;
  color: #886225;
  font-family: var(--font-heading);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}
.services-world .services-world__row-body {
  flex: 1 1 auto;
  display: flex;
  align-items: baseline;
  gap: 18px 42px;
}
.services-world .services-world__row-title {
  flex: 0 1 390px;
  color: var(--navy);
  font-family: var(--font-heading);
  font-size: clamp(1.1rem, 1.8vw, 1.4rem);
  font-weight: 800;
  letter-spacing: -0.015em;
}
.services-world .services-world__row-desc {
  flex: 1 1 360px;
  max-width: 470px;
  color: #4f5d69;
  font-size: 0.92rem;
}
.services-world .services-world__row-arrow {
  flex: 0 0 auto;
  display: flex;
  color: var(--navy);
  transition: transform var(--ease-base), color var(--ease-fast);
}
.services-world .services-world__row:hover .services-world__row-arrow,
.services-world .services-world__row:focus-visible .services-world__row-arrow {
  color: var(--gold-dark);
  transform: translateX(6px);
}

/* --- Scene 3: multi-coach chapter. Far: the hotel-arrival photo, darkened.
   Near: copy. Rail ends at one stop here. --- */
.services-world .services-world__multi {
  padding: 104px 0;
  overflow: clip;
  background: linear-gradient(180deg, var(--nt-navy) 0%, #0b2139 55%, var(--nt-navy-2) 100%);
}
.services-world .services-world__multi-media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.services-world .services-world__multi-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 60% 45%;
  opacity: 0.24;
  mask-image: linear-gradient(180deg, transparent 0, #000 30%, #000 70%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 30%, #000 70%, transparent 100%);
}
.services-world .services-world__multi-layout {
  position: relative;
  z-index: 1;
  max-width: 640px;
  padding-left: calc(24px + 40px);
}
.services-world .services-world__multi-layout h2 {
  max-width: 560px;
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.035em;
  line-height: 1.05;
  margin: 10px 0 16px;
}
.services-world .services-world__multi-layout .btn { margin-top: 8px; }

.services-world .services-world__cta {
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(27, 58, 87, 0.5), transparent 68%),
    linear-gradient(180deg, var(--nt-navy) 0%, #06111e 100%);
}
.services-world .services-world__cta p { color: rgba(248, 247, 243, 0.74); }

/* --- Header gate is the single unconditional rule above; only the footer
   hairline still varies per page. --- */
@supports selector(:has(*)) {
  body:has(.services-world) .site-footer { position: relative; }
  body:has(.services-world) .site-footer::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 2px;
    background: linear-gradient(90deg,
      transparent 0,
      transparent max(24px, calc((100vw - 1220px) / 2 + 22px)),
      #c59032 max(24px, calc((100vw - 1220px) / 2 + 24px)),
      rgba(197, 144, 50, 0.28) 55%,
      transparent 100%);
  }
}

/* --- Responsive: Services --- */
@media (max-width: 900px) {
  .services-world .services-world__hero { min-height: auto; }
  .services-world .services-world__hero-layout { padding-top: 112px; padding-bottom: 72px; }
  .services-world .services-world__hero-media { inset: 0 -18% 0 34%; opacity: 0.7; }
  .services-world .services-world__multi-layout { padding-left: calc(24px + 30px); }
  /* flex-basis becomes a HEIGHT basis once the row switches to column, so
     the fixed pixel bases from desktop must be cleared here or each row
     inflates to its former width value in blank vertical space. */
  .services-world .services-world__row-body { flex-direction: column; gap: 4px; }
  .services-world .services-world__row-title,
  .services-world .services-world__row-desc { flex: 0 0 auto; max-width: none; }
}
@media (max-width: 640px) {
  .services-world { --seam-h: 48px; }
  .services-world .services-world__hero-layout { padding-top: 84px; padding-bottom: 56px; }
  .services-world .services-world__hero-media { inset: 8% -32% 0 26%; opacity: 0.55; }
  .services-world .services-world__hero-photo {
    object-position: 66% 46%;
    mask-image: linear-gradient(200deg, transparent 28%, #000 68%);
    -webkit-mask-image: linear-gradient(200deg, transparent 28%, #000 68%);
  }
  .services-world .services-world__plane { display: none; }
  .services-world .services-world__index { padding: calc(var(--seam-h) + 56px) 0 72px; }
  .services-world .services-world__sheet { padding: 2px 16px; }
  .services-world .services-world__sheet-plate { transform: translate(10px, 12px); }
  .services-world .services-world__multi { padding: 76px 0; }
  .services-world .services-world__multi-layout { padding-left: calc(24px + 22px); }
  .services-world .services-world__row {
    align-items: flex-start;
    gap: 12px;
    min-height: 0;
    padding: 22px 0;
  }
  .services-world .services-world__row-num { flex-basis: 28px; padding-top: 5px; }
  .services-world .services-world__row-arrow { padding-top: 5px; }
}

/* ---------- Service Areas: the same world, plated cards, one route rail ---------- */
.areas-world {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-gold: #c59032;
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  --seam-h: clamp(56px, 7vw, 104px);
  --seam-w: calc(100vw - var(--seam-m));
  position: relative;
  overflow: clip;
  background: var(--nt-navy);
  color: #f4f1e9;
}
.areas-world section { position: relative; }
.areas-world .eyebrow { color: var(--nt-gold); }
.areas-world h1,
.areas-world h2,
.areas-world h3 { color: var(--white); }
.areas-world p { color: rgba(248, 247, 243, 0.74); }

.areas-world .areas-world__rail {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  left: var(--seam-m);
  width: 2px;
  background: var(--nt-gold);
  opacity: 0.82;
  pointer-events: none;
}
.areas-world .areas-world__rail--stop { bottom: auto; height: 42%; }
.areas-world .areas-world__rail--stop::after {
  content: "";
  position: absolute;
  left: -6px;
  bottom: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--nt-gold);
  box-shadow: 0 0 0 5px rgba(197, 144, 50, 0.16);
}

/* --- Scene 1: hero. Far: the daylight coach. Middle: smoky planes. --- */
.areas-world .areas-world__hero {
  min-height: min(520px, 58svh);
  display: flex;
  align-items: center;
  padding: 0;
  overflow: clip;
  background:
    radial-gradient(58% 70% at 10% 100%, rgba(197, 144, 50, 0.12), transparent 70%),
    linear-gradient(118deg, #081827 0%, #0a1c2d 58%, #0f2740 100%);
}
.areas-world .areas-world__hero-layout {
  position: relative;
  z-index: 2;
  padding-top: 116px;
  padding-bottom: 80px;
}
.areas-world .areas-world__hero-layout h1 { max-width: 700px; }
.areas-world .areas-world__hero-layout > p:last-child { max-width: 620px; }
.areas-world .areas-world__hero-media {
  position: absolute;
  inset: 0 0 0 44%;
  z-index: 0;
  overflow: clip;
  pointer-events: none;
}
.areas-world .areas-world__hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 55% 50%;
  opacity: 0.5;
  mask-image: linear-gradient(90deg, transparent 0, #000 36%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 36%);
}
.areas-world .areas-world__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.08);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}
.areas-world .areas-world__plane--back {
  width: 52%;
  height: 62%;
  top: -6%;
  right: -8%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.5), rgba(13, 38, 61, 0.14));
  transform: rotate(7deg);
}
.areas-world .areas-world__plane--front {
  width: 38%;
  height: 40%;
  right: -3%;
  bottom: -10%;
  border-color: rgba(197, 144, 50, 0.26);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.56), rgba(11, 31, 58, 0.24));
  transform: rotate(-4deg);
}
.areas-world .areas-world__hero-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m);
  bottom: 0;
  width: 2px;
  height: clamp(56px, 8vw, 92px);
  background: linear-gradient(180deg, rgba(197, 144, 50, 0.1), var(--nt-gold));
  pointer-events: none;
}

/* --- Seam: hero cuts into the core-area chapter. --- */
.areas-world .areas-world__core::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--seam-h);
  clip-path: polygon(0 0, 100% 0, 100% 0, calc(100% - var(--seam-m)) 0, 0 100%);
  background: #0c2136;
  pointer-events: none;
}
.areas-world .areas-world__core::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: var(--seam-h);
  left: 0;
  width: 100vw;
  height: 2px;
  background: var(--nt-gold);
  transform-origin: 0 50%;
  pointer-events: none;
}
@supports (transform: rotate(atan2(1px, 1px))) {
  .areas-world .areas-world__core::after {
    width: hypot(var(--seam-w), var(--seam-h));
    transform: rotate(calc(-1 * atan2(var(--seam-h), var(--seam-w))));
  }
}
.areas-world .areas-world__core .areas-world__rail { top: var(--seam-h); }

/* --- Scenes 2 and 4: plated card grids. Grid, not flex, so no basis/axis
   surprise when the layout narrows. --- */
.areas-world .areas-world__core {
  padding: calc(var(--seam-h) + 64px) 0 88px;
  background: linear-gradient(180deg, #0b2139 0%, var(--nt-navy) 100%);
}
.areas-world .areas-world__extended {
  padding: 88px 0;
  background: linear-gradient(180deg, var(--nt-navy) 0%, #0b2139 55%, var(--nt-navy-2) 100%);
}
.areas-world .areas-world__core-layout { padding-left: calc(24px + 40px); }
.areas-world .areas-world__head { max-width: 640px; margin-bottom: 40px; }
.areas-world .areas-world__head h2 {
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.035em;
  margin: 10px 0 12px;
}
.areas-world .areas-world__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
}
.areas-world .areas-world__card {
  padding: 24px 26px;
  border: 1px solid rgba(197, 144, 50, 0.24);
  background: rgba(11, 33, 57, 0.55);
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.3);
}
.areas-world .areas-world__card h3 { font-size: 1.02rem; margin-bottom: 8px; }
.areas-world .areas-world__card p { font-size: 0.9rem; margin-bottom: 16px; }
.areas-world .areas-world__card-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--nt-gold);
  font-family: var(--font-heading);
  font-size: 0.82rem;
  font-weight: 800;
  text-decoration: none;
}
.areas-world .areas-world__card-link:hover { color: #d9b46a; }

/* --- Scene 3: positioning field. The destination scatter over a route
   panel, exact text and per-name sizes preserved. --- */
.areas-world .areas-world__field {
  padding: 96px 0;
  overflow: clip;
  background: linear-gradient(180deg, #0a1d33 0%, var(--nt-navy) 100%);
}
.areas-world .areas-world__field-panel {
  position: absolute;
  z-index: 0;
  right: -8%;
  top: 12%;
  width: 46%;
  height: 74%;
  border: 1px solid rgba(197, 144, 50, 0.16);
  background: linear-gradient(160deg, rgba(27, 58, 87, 0.28), rgba(11, 31, 58, 0.06));
  transform: rotate(-4deg);
  pointer-events: none;
}
.areas-world .areas-world__field-layout {
  position: relative;
  z-index: 1;
  max-width: 760px;
  padding-left: calc(24px + 40px);
}
.areas-world .areas-world__field-title {
  font-size: clamp(2.1rem, 4vw, 3.6rem);
  letter-spacing: -0.035em;
  margin: 10px 0 14px;
}
.areas-world .areas-world__field-copy { max-width: 560px; }
.areas-world .destination-field { margin: 32px 0 0; }

.areas-world .areas-world__cta {
  background:
    radial-gradient(72% 68% at 50% 0%, rgba(27, 58, 87, 0.5), transparent 68%),
    linear-gradient(180deg, var(--nt-navy) 0%, #06111e 100%);
}
.areas-world .areas-world__cta p { color: rgba(248, 247, 243, 0.74); }

/* --- Header gate is the single unconditional rule above; only the footer
   hairline still varies per page. --- */
@supports selector(:has(*)) {
  body:has(.areas-world) .site-footer { position: relative; }
  body:has(.areas-world) .site-footer::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 2px;
    background: linear-gradient(90deg,
      transparent 0,
      transparent max(24px, calc((100vw - 1220px) / 2 + 22px)),
      #c59032 max(24px, calc((100vw - 1220px) / 2 + 24px)),
      rgba(197, 144, 50, 0.28) 55%,
      transparent 100%);
  }
}

/* --- Responsive: Service Areas --- */
@media (max-width: 900px) {
  .areas-world .areas-world__hero { min-height: auto; }
  .areas-world .areas-world__hero-layout { padding-top: 108px; padding-bottom: 68px; }
  .areas-world .areas-world__hero-media { inset: 0 -18% 0 36%; opacity: 0.68; }
  .areas-world .areas-world__core-layout,
  .areas-world .areas-world__field-layout { padding-left: calc(24px + 30px); }
  .areas-world .areas-world__field-panel { display: none; }
}
@media (max-width: 640px) {
  .areas-world { --seam-h: 48px; }
  .areas-world .areas-world__hero-layout { padding-top: 82px; padding-bottom: 54px; }
  .areas-world .areas-world__hero-media { inset: 8% -32% 0 28%; opacity: 0.5; }
  .areas-world .areas-world__hero-photo {
    object-position: 62% 46%;
    mask-image: linear-gradient(200deg, transparent 28%, #000 68%);
    -webkit-mask-image: linear-gradient(200deg, transparent 28%, #000 68%);
  }
  .areas-world .areas-world__plane { display: none; }
  .areas-world .areas-world__core,
  .areas-world .areas-world__extended,
  .areas-world .areas-world__field { padding: 72px 0; }
  .areas-world .areas-world__core-layout,
  .areas-world .areas-world__field-layout { padding-left: calc(24px + 22px); }
  .areas-world .areas-world__grid { grid-template-columns: 1fr; }
}

/* Fade the complete photographic layer, not just its image. Decorative
   planes and scrims must disappear at the crop edge on every screen size. */
.home-convergence .home-convergence__hero-atmosphere,
.about-world .about-world__hero-media,
.fleet-world .fleet-world__hero-media,
.services-world .services-world__hero-media,
.areas-world .areas-world__hero-media,
.contact-world .contact-world__hero-media {
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 32%);
  mask-image: linear-gradient(90deg, transparent, #000 32%);
}
@media (max-width: 640px) {
  .home-convergence .home-convergence__hero-atmosphere,
  .about-world .about-world__hero-media,
  .fleet-world .fleet-world__hero-media,
  .services-world .services-world__hero-media,
  .areas-world .areas-world__hero-media {
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 45%);
    mask-image: linear-gradient(90deg, transparent, #000 45%);
  }
  /* Contact already has a full-width, vertically feathered phone photo. */
  .contact-world .contact-world__hero-media {
    -webkit-mask-image: none;
    mask-image: none;
  }
}

/* ---------- Contact: arrive, request, follow-up ---------- */
.contact-world {
  --nt-navy: #081827;
  --nt-navy-2: #0b2139;
  --nt-smoke: #1b3a57;
  --nt-ivory: #f4f1e9;
  --nt-gold: #c59032;
  --seam-m: max(24px, calc((100vw - var(--container-w)) / 2 + 24px));
  position: relative;
  overflow: clip;
  background: var(--nt-navy);
  color: var(--nt-ivory);
}
.contact-world section { position: relative; }
.contact-world .eyebrow { color: #d9b46a; }
.contact-world h1 { color: var(--nt-ivory); }
.contact-world .contact-world__hero {
  min-height: 480px;
  display: flex;
  align-items: center;
  padding: 0;
  overflow: clip;
  background: #081827;
}
.contact-world .contact-world__hero-layout {
  position: relative;
  z-index: 2;
  padding-top: 72px;
  padding-bottom: 96px;
}
.contact-world .contact-world__hero-layout h1 {
  max-width: 650px;
  text-wrap: balance;
  letter-spacing: -0.035em;
  line-height: 1.1;
}
.contact-world .contact-world__hero-layout > p:last-child {
  max-width: 540px;
  color: #c7d0d4;
  font-size: 1.05rem;
  line-height: 1.65;
  text-wrap: pretty;
  margin-bottom: 0;
}
.contact-world .contact-world__hero-media {
  position: absolute;
  inset: 0 0 0 38%;
  overflow: clip;
  pointer-events: none;
}
.contact-world .contact-world__hero-photo {
  position: absolute;
  inset: -6% 0;
  width: 100%;
  height: 112%;
  object-fit: cover;
  object-position: 56% 44%;
  opacity: 0.9;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 55%);
  mask-image: linear-gradient(90deg, transparent, #000 55%);
}
.contact-world .contact-world__hero-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, #081827, transparent 34%);
}
@supports (animation-timeline: scroll()) {
  @media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
    .contact-world .contact-world__hero-photo {
      animation: contact-far-drift linear both;
      animation-timeline: scroll(root);
      animation-range: 0 640px;
    }
  }
}
@keyframes contact-far-drift {
  from { transform: translateY(0); }
  to { transform: translateY(-24px); }
}
.contact-world .contact-world__plane {
  position: absolute;
  display: block;
  border: 1px solid rgba(248, 247, 243, 0.08);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.24);
}
.contact-world .contact-world__plane--back {
  width: 58%; height: 68%; top: -10%; right: -12%;
  background: linear-gradient(145deg, rgba(31, 76, 112, 0.32), rgba(13, 38, 61, 0.08));
  transform: rotate(9deg);
}
.contact-world .contact-world__plane--front {
  width: 44%; height: 46%; right: -6%; bottom: -14%;
  border-color: rgba(197, 144, 50, 0.22);
  background: linear-gradient(140deg, rgba(36, 44, 54, 0.35), rgba(11, 31, 58, 0.12));
  transform: rotate(-6deg);
}
/* These are atmospheric depth layers, not opaque cards laid over a coach.
   Feather each plane too, so no rotated rectangle cuts across the image.
   Existing placement, opacity, mobile visibility and motion stay intact. */
.home-convergence .home-convergence__plane,
.about-world .about-world__plane,
.fleet-world .fleet-world__plane,
.services-world .services-world__plane,
.areas-world .areas-world__plane,
.contact-world .contact-world__plane {
  border-color: transparent;
  box-shadow: none;
  -webkit-mask-image: radial-gradient(ellipse closest-side, #000 18%, rgba(0, 0, 0, 0.78) 55%, transparent 100%);
  mask-image: radial-gradient(ellipse closest-side, #000 18%, rgba(0, 0, 0, 0.78) 55%, transparent 100%);
}
.contact-world .contact-world__hero-exit {
  position: absolute;
  z-index: 2;
  right: var(--seam-m); bottom: 0;
  width: 1px; height: 64px;
  background: linear-gradient(180deg, transparent, var(--nt-gold));
  pointer-events: none;
}
.contact-world .contact-world__request {
  padding: 56px 0 88px;
  background:
    radial-gradient(65% 48% at 100% 35%, rgba(27, 58, 87, 0.26), transparent),
    linear-gradient(180deg, #081827, #0a1c2c 42%, #071521);
}
.contact-world .contact-world__request::before {
  content: "";
  position: absolute; top: 0; left: var(--seam-m); right: var(--seam-m);
  height: 1px;
  background: linear-gradient(90deg, var(--nt-gold), rgba(197, 144, 50, 0.15) 50%, var(--nt-gold));
}
.contact-world .contact-world__rail {
  position: absolute; z-index: 1;
  top: 0; bottom: 0; left: var(--seam-m); width: 1px;
  background: linear-gradient(180deg, var(--nt-gold), rgba(197, 144, 50, 0.3) 68%, transparent);
  pointer-events: none;
}
.contact-world .contact-world__layout {
  position: relative; z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr);
  align-items: start;
  gap: clamp(32px, 5vw, 64px);
  padding-left: 60px;
}
.contact-world .contact-world__sheet {
  position: relative;
  min-width: 0;
  padding: clamp(24px, 3vw, 40px);
  background: var(--nt-ivory);
  border: 1px solid rgba(221, 207, 174, 0.55);
  border-radius: 12px;
  box-shadow: 0 24px 60px rgba(2, 10, 17, 0.3);
}
.contact-world .contact-world__sheet::before {
  content: "";
  position: absolute; top: -1px; left: 18px;
  width: 72px; height: 2px; background: var(--nt-gold);
}
.contact-world .contact-world__sheet::after {
  content: "";
  position: absolute; left: -42px; bottom: 52px;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--nt-gold);
  box-shadow: 0 0 0 4px #152b39;
}
.contact-world .contact-world__dispatch { display: grid; gap: 0; min-width: 0; }
.contact-world .contact-world__next { padding-bottom: 18px; }
.contact-world .contact-world__signal {
  display: block;
  margin-bottom: 16px;
  color: #d9b46a;
  font-family: var(--font-heading);
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.12em;
  text-transform: uppercase;
}
.contact-world .contact-world__steps { list-style: none; margin: 0; padding: 0; }
.contact-world .contact-world__steps li {
  display: grid; grid-template-columns: 24px minmax(0, 1fr);
  gap: 14px; padding: 18px 0;
  border-top: 1px solid rgba(248, 247, 243, 0.14);
}
.contact-world .contact-world__steps li > span {
  padding-top: 3px; color: #d9b46a;
  font-family: var(--font-heading);
  font-size: 0.72rem; font-weight: 700;
}
.contact-world .contact-world__steps h3 { margin-bottom: 6px; color: var(--nt-ivory); font-size: 1.02rem; }
.contact-world .contact-world__steps p { margin: 0; color: #bac6cd; font-size: 0.94rem; line-height: 1.6; }
.contact-world .contact-world__hint { margin: 12px 0 0; color: #c7d0d4; font-size: 0.92rem; font-weight: 600; }
.contact-world .contact-world__card { padding: 20px 0; border-top: 1px solid rgba(248, 247, 243, 0.14); }
.contact-world .contact-world__card h3 { color: var(--nt-ivory); font-size: 0.94rem; margin-bottom: 8px; }
.contact-world .contact-world__card p { margin: 0; color: #bac6cd; font-size: 0.94rem; overflow-wrap: anywhere; }
.contact-world .contact-world__card a { color: var(--nt-ivory); text-decoration: underline; text-decoration-color: #9b783e; text-underline-offset: 5px; }
.contact-world .contact-world__card a:hover { color: #d9b46a; }
.contact-world .quote-form { background: transparent; border-radius: 0; padding: 0; box-shadow: none; }
.contact-world .form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.contact-world .form-field { min-width: 0; }
.contact-world .form-field.full { grid-column: 1 / -1; }
.contact-world .form-field input,
.contact-world .form-field select,
.contact-world .form-field textarea { width: 100%; min-width: 0; font-size: 16px; background: #fffefa; border-color: #bbbeb9; }
.contact-world .form-field input,
.contact-world .form-field select { min-height: 48px; }
.contact-world .form-field input:focus-visible,
.contact-world .form-field select:focus-visible,
.contact-world .form-field textarea:focus-visible { outline: 2px solid #886225; outline-offset: 2px; }
.contact-world .quote-form > .btn,
.contact-world .quote-form__fields > .btn { border-radius: 7px; min-height: 52px; box-shadow: none; }
.contact-world .form-success { margin: 0; padding: 8px 0; background: transparent; border: 0; color: var(--navy); font-size: 1.12rem; line-height: 1.6; }
.contact-world .contact-world__sheet:has(.form-success) { border-color: #b3873e; }
.contact-world .contact-world__sheet:has(.form-success)::before { width: calc(100% - 36px); }
.contact-world .contact-world__sheet:has(.form-success)::after { bottom: 24px; }
.contact-world #quoteForm { scroll-margin-top: 100px; }
.contact-world #quoteForm:focus-visible { outline: 2px solid #d9b46a; outline-offset: 6px; }
@supports selector(:has(*)) {
  body:has(.contact-world) .site-footer { position: relative; }
  body:has(.contact-world) .site-footer::before {
    content: ""; position: absolute; inset: 0 0 auto;
    height: 1px;
    background: linear-gradient(90deg, transparent, #9f7c3e 24%, rgba(197, 144, 50, 0.15), transparent);
  }
}
@media (max-width: 900px) {
  .contact-world .contact-world__hero { min-height: auto; }
  .contact-world .contact-world__hero-layout { padding-top: 52px; padding-bottom: 80px; }
  .contact-world .contact-world__layout { grid-template-columns: minmax(0, 1fr); padding-left: 48px; }
  .contact-world .contact-world__dispatch { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; }
  .contact-world .contact-world__next { grid-column: 1 / -1; }
  .contact-world .contact-world__sheet::after { display: none; }
}
@media (max-width: 640px) {
  .contact-world { --seam-m: 20px; }
  .contact-world .contact-world__hero-layout { padding: 32px 24px 220px; }
  .contact-world .breadcrumbs { font-size: 0.8rem; line-height: 1.5; margin-bottom: 22px; }
  .contact-world .eyebrow { font-size: 0.68rem; letter-spacing: 0.12em; margin-bottom: 16px; }
  .contact-world .contact-world__hero-layout h1 { max-width: 17ch; font-size: clamp(2rem, 8.8vw, 2.5rem); line-height: 1.12; margin-bottom: 20px; }
  .contact-world .contact-world__hero-layout > p:last-child { max-width: 35ch; font-size: 1rem; line-height: 1.6; }
  .contact-world .contact-world__hero-media { inset: auto 0 0; height: 220px; }
  .contact-world .contact-world__hero-photo {
    inset: 0; width: 100%; height: 100%;
    object-position: 50% 62%; opacity: 0.85;
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 46%, #000 76%, transparent);
    mask-image: linear-gradient(180deg, transparent, #000 46%, #000 76%, transparent);
    animation: none; transform: none;
  }
  .contact-world .contact-world__plane { display: none; }
  .contact-world .contact-world__hero-exit { height: 36px; }
  .contact-world .contact-world__request { padding: 32px 0 56px; }
  .contact-world .contact-world__layout { padding-inline: 20px; gap: 36px; }
  .contact-world .contact-world__rail { opacity: 0.35; }
  .contact-world .contact-world__sheet { padding: 24px 20px; }
  .contact-world .contact-world__dispatch { display: block; padding-inline: 4px; }
  .contact-world .form-row { grid-template-columns: minmax(0, 1fr); gap: 18px; margin-bottom: 18px; }
  .contact-world .form-field label { font-size: 0.82rem; }
  .contact-world #quoteForm { scroll-margin-top: 84px; }
}
@media (max-width: 360px) {
  .contact-world .contact-world__hero-layout { padding-inline: 20px; padding-bottom: 200px; }
  .contact-world .contact-world__hero-media { height: 200px; }
  .contact-world .contact-world__layout { padding-inline: 14px; }
  .contact-world .contact-world__sheet { padding-inline: 16px; }
}
@media (min-width: 641px) and (max-width: 900px) {
  .contact-world .contact-world__hero-photo { opacity: 0.3; }
}
@media (max-width: 860px) {
  .consent-banner { bottom: calc(var(--mobile-actions-height) + 10px); }
  body:has(.quote-form :focus) .mobile-conv-bar { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .contact-world .contact-world__hero-photo { animation: none; transform: none; }
}
