:root {
  --type-label: clamp(0.72rem, 0.18vw + 0.68rem, 0.82rem);
  --type-body-sm: clamp(0.94rem, 0.16vw + 0.91rem, 1rem);
  --type-body: clamp(1rem, 0.2vw + 0.96rem, 1.08rem);
  --type-body-lg: clamp(1.08rem, 0.42vw + 0.99rem, 1.34rem);
  --type-card: clamp(1.22rem, 0.72vw + 1.05rem, 1.5rem);
  --type-card-strong: clamp(1.45rem, 1.2vw + 1.1rem, 1.95rem);
  --type-section: clamp(2.2rem, 3vw + 1.2rem, 3.45rem);
  --type-display: clamp(3rem, 4.9vw + 1.35rem, 5rem);
  --type-hero: clamp(3.15rem, 6vw + 1.2rem, 5.95rem);
  --lh-tight: 0.92;
  --lh-title: 0.98;
  --lh-card: 1.02;
  --lh-body: 1.65;
  --lh-body-relaxed: 1.72;
  --ls-display: -0.03em;
  --ls-title: 0.01em;
  --ls-label: 0.18em;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  font-family: "Source Sans 3", sans-serif;
  font-size: var(--type-body);
  line-height: var(--lh-body);
}

h1,
h2,
h3,
h4,
h5,
h6,
.font-headline-lg,
.font-headline-lg-mobile,
.font-headline-md,
.font-display,
.font-display-xl {
  font-family: "Oswald", sans-serif !important;
  font-weight: 600 !important;
  text-wrap: balance;
}

.font-body-md,
.font-body-lg,
.font-label-sm {
  font-family: "Source Sans 3", sans-serif !important;
}

.font-accent-italic,
.text-accent-italic {
  font-family: "EB Garamond", serif !important;
}

h1 {
  font-size: var(--type-display) !important;
  line-height: var(--lh-tight) !important;
  letter-spacing: var(--ls-display) !important;
}

h2,
.font-headline-lg,
.font-headline-lg-mobile,
.text-headline-lg,
.text-headline-lg-mobile {
  font-size: var(--type-section) !important;
  line-height: var(--lh-title) !important;
  letter-spacing: var(--ls-title) !important;
}

h3,
h4,
.font-headline-md,
.text-headline-md {
  font-size: var(--type-card-strong) !important;
  line-height: var(--lh-card) !important;
  letter-spacing: var(--ls-title) !important;
}

h5,
h6 {
  font-size: var(--type-card) !important;
  line-height: 1.08 !important;
}

.font-display-xl,
.text-display-xl {
  font-size: var(--type-display) !important;
  line-height: var(--lh-tight) !important;
  letter-spacing: var(--ls-display) !important;
}

.font-body-md,
.text-body-md {
  font-size: var(--type-body) !important;
  line-height: var(--lh-body) !important;
}

.font-body-lg,
.text-body-lg {
  font-size: var(--type-body-lg) !important;
  line-height: 1.58 !important;
}

.font-label-sm,
.text-label-sm,
.section-kicker,
.hero-badge,
.offer-card-heading {
  font-size: var(--type-label) !important;
  line-height: 1.2 !important;
  letter-spacing: var(--ls-label) !important;
  font-weight: 700 !important;
}

.home-hero-title,
.hero-headline {
  font-size: var(--type-hero) !important;
  line-height: 0.88 !important;
  letter-spacing: -0.035em !important;
  text-wrap: balance;
}

.hero-subheadline,
.hero-subcopy {
  font-size: var(--type-body-lg) !important;
  line-height: 1.56 !important;
}

.hero-support {
  font-size: var(--type-body-sm) !important;
  line-height: var(--lh-body-relaxed) !important;
}

.offer-card-value {
  font-size: clamp(2.15rem, 2.4vw + 1.32rem, 3.1rem) !important;
  line-height: 0.92 !important;
  letter-spacing: -0.03em !important;
}

.offer-card-copy,
.testimonial-context,
.trust-chip {
  font-size: var(--type-body-sm) !important;
  line-height: 1.6 !important;
}

.timeline-card h3 {
  font-size: clamp(1.4rem, 0.95vw + 1.08rem, 1.72rem) !important;
  line-height: 1 !important;
}

p,
li,
input,
textarea,
select,
button {
  font-size: inherit;
}

input,
textarea,
select {
  font-size: var(--type-body) !important;
  line-height: 1.5 !important;
}

a.text-label-sm,
button.text-label-sm,
[type="button"].text-label-sm,
[type="submit"].text-label-sm {
  line-height: 1.2 !important;
}

#top-nav .text-label-sm {
  letter-spacing: 0.075em !important;
}

#top-nav button.text-label-sm,
#top-nav [data-booking-open].text-label-sm {
  letter-spacing: 0.1em !important;
}

/* Compatibility layer for legacy arbitrary Tailwind font sizes. */
.text-\[56px\],
.text-\[52px\],
.text-\[50px\] {
  font-size: var(--type-display) !important;
  line-height: var(--lh-tight) !important;
  letter-spacing: var(--ls-display) !important;
}

.text-\[42px\],
.text-\[40px\] {
  font-size: var(--type-section) !important;
  line-height: var(--lh-title) !important;
}

.text-\[35px\],
.text-\[34px\],
.text-\[32px\],
.text-\[30px\],
.text-\[28px\],
.text-\[26px\],
.text-\[24px\],
.text-\[22px\] {
  font-size: var(--type-card-strong) !important;
  line-height: var(--lh-card) !important;
}

.text-\[20px\],
.text-\[18px\] {
  font-size: var(--type-body-lg) !important;
  line-height: 1.58 !important;
}

.text-\[17px\],
.text-\[16px\],
.text-\[14px\],
.text-\[1\.05rem\] {
  font-size: var(--type-body) !important;
  line-height: var(--lh-body) !important;
}

/* Undo the broad legacy typography hacks without touching margin utilities. */
p.mt-3,
div.mt-3,
span.mt-3 {
  font-size: inherit !important;
  font-weight: inherit !important;
}

.leading-\[1\.02\] {
  font-size: inherit !important;
}

.text-on-primary-container {
  font-size: var(--type-body-lg) !important;
  line-height: 1.56 !important;
}

[data-page-name="homepage"] .home-hero-title {
  max-width: 13.2ch;
}

[data-page-name="homepage"] .hero-subheadline {
  max-width: 34ch;
}

[data-page-name="homepage"] .hero-line {
  white-space: nowrap;
}

[data-page-name="meta_consultation_landing"] .hero-headline {
  max-width: 8.4ch;
}

[data-page-name="meta_consultation_landing"] .hero-subcopy {
  max-width: 34ch;
}

@media (max-width: 1023px) {
  :root {
    --type-section: clamp(2rem, 3.8vw + 1rem, 3rem);
    --type-display: clamp(2.7rem, 5vw + 1.15rem, 4.35rem);
    --type-hero: clamp(2.95rem, 7vw + 0.95rem, 5rem);
  }
}

@media (max-width: 767px) {
  :root {
    --type-label: clamp(0.7rem, 0.22vw + 0.68rem, 0.76rem);
    --type-body-sm: clamp(0.95rem, 0.28vw + 0.9rem, 1rem);
    --type-body: clamp(1rem, 0.34vw + 0.95rem, 1.05rem);
    --type-body-lg: clamp(1.08rem, 0.52vw + 0.98rem, 1.2rem);
    --type-card: clamp(1.15rem, 0.9vw + 1rem, 1.35rem);
    --type-card-strong: clamp(1.3rem, 1.4vw + 1.02rem, 1.7rem);
    --type-section: clamp(1.95rem, 3.6vw + 1rem, 2.65rem);
    --type-display: clamp(2.45rem, 4.5vw + 1rem, 3.45rem);
    --type-hero: clamp(2.85rem, 7.2vw + 0.8rem, 4.2rem);
  }

  .home-hero-title,
  .hero-headline {
    line-height: 0.9 !important;
  }

  [data-page-name="homepage"] .home-hero-title,
  [data-page-name="meta_consultation_landing"] .hero-headline {
    max-width: 13.2ch;
  }

  [data-page-name="homepage"] .hero-subheadline,
  [data-page-name="meta_consultation_landing"] .hero-subcopy {
    max-width: 21ch;
  }
}
