/* =====================================================
   LOUVANI — SITEWIDE TYPOGRAPHY LOCK
   Add this AFTER styles.css on every page
   ===================================================== */

:root{
  --type-display: clamp(40px, 5vw, 74px);
  --type-display-tight: clamp(34px, 4.2vw, 60px);
  --type-h2: clamp(28px, 3vw, 46px);
  --type-h3: clamp(22px, 2vw, 32px);
  --type-body-lg: clamp(18px, 1.45vw, 22px);
  --type-body: 17px;
  --type-body-sm: 13px;

  --lh-display: 1.02;
  --lh-heading: 1.06;
  --lh-body: 1.82;

  --ls-eyebrow: .30em;
  --ls-button: .22em;
  --ls-display: .09em;
  --ls-heading: .08em;
  --ls-body: .02em;
}

/* Base text */
html, body,
button, input, select, textarea,
a, p, span, li, label, div{
  font-family: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body{
  font-size: var(--type-body);
  line-height: var(--lh-body);
  letter-spacing: var(--ls-body);
}

body p,
body li,
body .hero-copy,
body .hero-sub,
body .content-hero p,
body .card p,
body .page-card p,
body .event-card p,
body .benefit,
body .legal-block,
body .contact-copy,
body .contact-note{
  font-size: var(--type-body) !important;
  line-height: 1.9 !important;
  letter-spacing: .02em !important;
}

/* Eyebrows / labels */
.section-eyebrow,
.feature-banner-kicker,
.route-kicker,
.journey-kicker,
.card-kicker,
.page-card .mini,
.legal-title,
.contact-panel .heading,
.menu-trigger,
.drawer-nav a,
.btn{
  letter-spacing: var(--ls-eyebrow) !important;
  text-transform: uppercase;
}

/* Primary display headlines */
.hero h1,
.content-hero h1,
.why-title-signature,
.why-title-elite,
.signature-hero h1,
.why-louvani-hero h1,
.hero h1.hero-title-final,
.hero h1.hero-title-balanced.hero-title-final,
.hero-title-final,
.hero h1.hero-title-cinematic,
.hero h1.hero-title-balanced,
.hero-title-luxury,
.contact-intro h2{
  font-size: var(--type-display) !important;
  line-height: var(--lh-display) !important;
  letter-spacing: var(--ls-display) !important;
  font-weight: 400 !important;
  text-transform: uppercase !important;
  text-wrap: balance;
  max-width: 14ch;
  font-family: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}

.hero h1.hero-title-final .hero-line,
.hero h1.hero-title-balanced.hero-title-final .hero-line,
.hero h1.hero-title-cinematic .hero-line,
.hero h1.hero-title-balanced .hero-line{
  font-family: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}

/* Secondary section titles */
.section-title,
.plan-top .section-title,
.feature-banner h2,
.promise-content h2,
.why-copy h2,
.journey-copy-elite h2,
.route-card h3,
.journey-route-box h3,
.journey-route-card-ultra h3,
.why-section-top h2,
.why-cta-card h2,
.why-panel-intro,
.why-standard h3{
  font-size: var(--type-h2) !important;
  line-height: var(--lh-heading) !important;
  letter-spacing: var(--ls-heading) !important;
  font-weight: 400 !important;
  text-wrap: balance;
  font-family: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}

/* Card / tertiary headings */
.card h3,
.page-card h3,
.event-card h3{
  font-size: var(--type-h3) !important;
  line-height: 1.12 !important;
  letter-spacing: .03em !important;
  font-weight: 400 !important;
  text-wrap: balance;
  font-family: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}

/* Hero / page subtitles */
.hero-sub,
.hero-copy,
.content-hero p,
.why-subtitle-signature,
.why-subtitle-elite,
.journeys-intro-elite p,
.signature-journeys-hero p{
  font-size: var(--type-body-lg) !important;
  line-height: 1.78 !important;
  letter-spacing: .02em !important;
  color: #fff !important;
  max-width: 58ch;
}

/* Standard body copy */
.card p,
.page-card p,
.event-card p,
.why-copy p,
.journey-copy-elite p,
.journey-route-box p,
.journey-route-card-ultra p,
.legal-block,
.contact-note,
.contact-copy,
.field input,
.field select,
.field textarea{
  font-size: var(--type-body) !important;
  line-height: var(--lh-body) !important;
  letter-spacing: .02em !important;
}

/* Supporting uppercase subheads */
.why-subheader,
.journey-subheader,
.route-codes,
.journey-route-codes,
.journey-route-codes-ultra,
.date-pill{
  font-size: var(--type-body-sm) !important;
  letter-spacing: .16em !important;
  line-height: 1.6 !important;
  text-transform: uppercase !important;
}

/* Buttons */
.btn{
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: var(--ls-button) !important;
}

/* Route cards on map pages should feel editorial, not oversized */
.route-card h3{
  max-width: 12ch;
}

.journey-route-box h3,
.journey-route-card-ultra h3{
  max-width: 11ch;
}

/* Left-aligned hero consistency for content pages */
.content-hero .container,
.why-louvani-hero-left .container,
.signature-journeys-hero .container{
  text-align: left;
}

/* Consistent spacing rhythm under headings */
.content-hero h1 + p,
.why-title-signature + .why-subtitle-signature,
.why-title-elite + .why-subtitle-elite,
.hero h1 + .hero-sub{
  margin-top: 18px !important;
}

/* Mobile lock */
@media (max-width: 900px){
  :root{
    --type-display: clamp(34px, 9vw, 54px);
    --type-display-tight: clamp(28px, 7vw, 42px);
    --type-h2: clamp(24px, 6vw, 34px);
    --type-h3: clamp(20px, 4.6vw, 26px);
    --type-body-lg: 18px;
    --type-body: 17px;
    --type-body-sm: 12px;
  }

  .hero h1,
  .content-hero h1,
  .why-title-signature,
  .why-title-elite,
  .signature-hero h1,
  .why-louvani-hero h1,
  .hero h1.hero-title-final,
  .hero h1.hero-title-balanced.hero-title-final,
  .hero-title-final,
  .hero h1.hero-title-cinematic,
  .hero h1.hero-title-balanced,
  .hero-title-luxury,
  .contact-intro h2{
    max-width: 11ch;
    letter-spacing: .06em !important;
  }

  .hero-sub,
  .hero-copy,
  .content-hero p,
  .why-subtitle-signature,
  .why-subtitle-elite,
  .journeys-intro-elite p,
  .signature-journeys-hero p{
    max-width: none;
  }
}

@media (max-width: 640px){
  .section-eyebrow,
  .feature-banner-kicker,
  .route-kicker,
  .journey-kicker,
  .card-kicker,
  .page-card .mini,
  .legal-title,
  .contact-panel .heading,
  .menu-trigger,
  .drawer-nav a,
  .btn{
    letter-spacing: .22em !important;
  }
}

/* Universal heading weight */
h1,
h2,
h3,
h4,
h5,
h6,
.section-title,
.why-headline,
.content-hero h1,
.signature-hero h1,
.why-louvani-hero h1,
.feature-banner h2,
.promise-content h2,
.event-collection-card h3,
.events-feature-copy h2{
  font-weight: 600 !important;
  font-size: clamp(20px, 2.7vw, 40px) !important;
  line-height: 1.08 !important;
  max-height: none !important;
  display: block !important;
  -webkit-line-clamp: unset;
  -webkit-box-orient: initial;
  overflow: visible !important;
  overflow-wrap: anywhere;
  text-wrap: balance;
}

.hero h1,
.content-hero h1,
.signature-hero h1,
.why-louvani-hero h1,
.event-hero-copy h1{
  font-size: clamp(26px, 4.2vw, 54px) !important;
}

.event-collection-card h3,
.card h3,
.page-card h3,
.event-card h3{
  font-size: clamp(18px, 1.65vw, 28px) !important;
}
