/* Typography contract: edit tokens here; apply utilities in markup, never component overrides. */
:root {
  --font-body: "Manrope", Arial, sans-serif;
  --font-heading: "Manrope", Arial, sans-serif;
  --font-size-12: .75rem;
  --font-size-14: .875rem;
  --font-size-16: 1rem;
  --font-size-18: 1.125rem;
  --font-size-20: 1.25rem;
  --font-size-22: 1.375rem;
  --font-size-28: 1.75rem;
  --font-size-32: 2rem;
  --font-size-body: clamp(1rem, .964rem + .15vw, 1.125rem);
  --font-size-h1: clamp(2rem, 1.3rem + 3vw, 4rem);
  --font-size-h2: clamp(1.625rem, 1.375rem + 1.07vw, 2.5rem);
  --font-size-h3: clamp(1.375rem, 1.232rem + .61vw, 1.875rem);
  --font-size-h4: clamp(1.1875rem, 1.116rem + .3vw, 1.5rem);
  --font-size-display: clamp(2.25rem, 3.5vw, 3.25rem);
  --font-size-year: 24cqw;
  --font-size-jumbo: clamp(3.5rem, 8vw, 7rem);
  --font-weight-light: 400;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;
  --line-height-body: 1.7;
  --line-height-heading: 1.25;
  --line-height-title: 1.15;
  --line-height-control: 1.3;
}

/* Low-specificity semantic defaults also cover new native Gutenberg blocks. */
body { font-family: var(--font-body); font-size: var(--font-size-body); font-weight: var(--font-weight-regular); line-height: var(--line-height-body); }
:where(h1,h2,h3,h4,h5,h6) { font-family: var(--font-heading); font-weight: var(--font-weight-semibold); line-height: var(--line-height-heading); letter-spacing: -.025em; text-wrap: balance; text-transform: none; }
:where(h1) { font-size: var(--font-size-h1); line-height: var(--line-height-title); }
:where(h2) { font-size: var(--font-size-h2); }
:where(h3) { font-size: var(--font-size-h3); }
:where(h4,h5,h6) { font-size: var(--font-size-h4); }
:where(p,li) { line-height: var(--line-height-body); }
:where(button,input,select,textarea) { font: inherit; }
:where(strong,b) { font-weight: var(--font-weight-bold); }
:where(h1,h2,h3,h4,h5,h6) :is(strong,b) { font-size: inherit; font-weight: inherit; }

/* Explicit utilities deliberately outrank plugin resets and inline block typography.
 * Classes own the complete type role, regardless of semantic tag or component. */
.text-body { font-size: var(--font-size-body) !important; line-height: var(--line-height-body) !important; }
.text-12 { font-size: var(--font-size-12) !important; line-height: 1.5 !important; }
.text-14 { font-size: var(--font-size-14) !important; line-height: 1.5 !important; }
.text-16 { font-size: var(--font-size-16) !important; line-height: 1.6 !important; }
.text-18 { font-size: var(--font-size-18) !important; line-height: 1.6 !important; }
.text-20 { font-size: var(--font-size-20) !important; line-height: 1.5 !important; }
.text-22 { font-size: var(--font-size-22) !important; line-height: 1.5 !important; }
.text-32 { font-size: var(--font-size-32) !important; line-height: var(--line-height-control) !important; }
.text-h1 { font-size: var(--font-size-h1) !important; line-height: var(--line-height-title) !important; letter-spacing: -.025em !important; }
.text-h2 { font-size: var(--font-size-h2) !important; line-height: var(--line-height-heading) !important; letter-spacing: -.025em !important; }
.text-h3 { font-size: var(--font-size-h3) !important; line-height: var(--line-height-heading) !important; letter-spacing: -.02em !important; }
.text-h4 { font-size: var(--font-size-h4) !important; line-height: var(--line-height-heading) !important; letter-spacing: -.015em !important; }
.text-display { font-size: var(--font-size-display) !important; line-height: 1.15 !important; font-variant-numeric: tabular-nums; }
.text-year { font-size: var(--font-size-year) !important; line-height: 1 !important; font-variant-numeric: tabular-nums; }
.text-jumbo { font-size: var(--font-size-jumbo) !important; line-height: 1 !important; }
.text-inherit { font-size: inherit !important; line-height: inherit !important; }
.text-sup { font-size: .55em !important; line-height: 1 !important; }
.font-body { font-family: var(--font-body) !important; }
.font-heading { font-family: var(--font-heading) !important; }
.font-light { font-weight: var(--font-weight-light) !important; }
.font-regular { font-weight: var(--font-weight-regular) !important; }
.font-medium { font-weight: var(--font-weight-medium) !important; }
.font-semibold { font-weight: var(--font-weight-semibold) !important; }
.font-bold { font-weight: var(--font-weight-bold) !important; }
.font-extrabold { font-weight: var(--font-weight-extrabold) !important; }
.leading-none { line-height: 1 !important; }
.leading-control { line-height: var(--line-height-control) !important; }

/* Integration adapters for WordPress/GF-owned markup, using the same tokens. */
:where(.btn,.wp-block-button__link,.gform_button) { font-family: var(--font-heading); font-size: var(--font-size-20); font-weight: var(--font-weight-semibold); line-height: var(--line-height-control); text-transform: uppercase; }
:is(.btn,.wp-block-button__link,.gform_button) :is(span,strong,b) { font-size: inherit; font-weight: inherit; line-height: inherit; }
/* GF framework resets must not override the shared uppercase CTA treatment. */
.gform_wrapper .gform_button { text-transform: uppercase !important; }
.gform_wrapper {
  --gf-ctrl-font-size: var(--font-size-16);
  --gf-ctrl-font-weight: var(--font-weight-regular);
  --gf-ctrl-font-family: var(--font-body);
  --gf-ctrl-placeholder-font-size: var(--font-size-16);
  --gf-ctrl-placeholder-font-family: var(--font-body);
  --gf-ctrl-btn-font-size: var(--font-size-20);
  --gf-ctrl-btn-font-weight: var(--font-weight-semibold);
  --gf-ctrl-btn-font-family: var(--font-heading);
  --gf-ctrl-btn-text-transform: uppercase;
}
.gform_wrapper :is(input,textarea)::placeholder { font-family: inherit; font-size: inherit; font-weight: inherit; }
@media (max-width: 47.99rem) {
  .text-14-mobile { font-size: var(--font-size-14) !important; }
  .text-16-mobile { font-size: var(--font-size-16) !important; }
  .text-28-mobile { font-size: var(--font-size-28) !important; }
  .text-22-mobile { font-size: var(--font-size-22) !important; }
}
