/**
 * Public typography contract.
 *
 * Loaded after page styles so legacy templates share one semantic scale while
 * their spacing, color and component layout remain unchanged.
 */
:root {
  /* Global font families. */
  --font-family-base: var(--font-sans);
  --font-family-serif-accent: Georgia, "Times New Roman", serif;

  /* Semantic font sizes. */
  --font-size-zero: 0;
  --font-size-micro: .625rem;
  --font-size-caption: .75rem;
  --font-size-meta: .8125rem;
  --font-size-small: .875rem;
  --font-size-body: 1rem;
  --font-size-lead: 1.0625rem;
  --font-size-h4: 1.125rem;
  --font-size-h3: 1.25rem;
  --font-size-h2: 1.5rem;
  --font-size-h1: 2rem;
  --font-size-display: 2.5rem;
  --font-size-h5: 1rem;
  --font-size-h6: .875rem;

  /* Component extensions for large editorial and navigation contexts. */
  --font-size-display-xl: clamp(6rem, 12vw, 12.5rem);
  --font-size-header-control: .8125rem;
  --font-size-header-nav-mobile: .9375rem;

  /* Line heights. */
  --line-height-display: 1.05;
  --line-height-heading: 1.2;
  --line-height-tight: 1.25;
  --line-height-copy: 1.5;
  --line-height-base: 1.6;
  --line-height-relaxed: 1.8;
  --line-height-normal: normal;

  /* Font weights. */
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-heading: 800;
}

html body[class] {
  font-family: var(--font-family-base);
  font-size: var(--font-size-body);
  line-height: var(--line-height-base);
  letter-spacing: 0;
}

html body[class] main#main-content :is(h1, h2, h3, h4, h5, h6):not(.sr-only):not(.screen-reader-text) {
  font-family: var(--font-family-base);
  letter-spacing: 0;
}

html body[class] main#main-content h1:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h1);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-display);
}

html body[class] main#main-content h2:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-heading);
}

html body[class] main#main-content h3:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content h4:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h4);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content h5:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h5);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content h6:not(.sr-only):not(.screen-reader-text) {
  font-size: var(--font-size-h6);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content p:not([class*="eyebrow"]):not([class*="kicker"]):not([class*="overline"]):not([class*="meta"]):not([class*="label"]):not(.sr-only):not(.screen-reader-text),
html body[class] main#main-content li:not([class*="meta"]):not([class*="label"]) {
  font-size: var(--font-size-body);
  line-height: var(--line-height-relaxed);
}

html body[class] main#main-content [class*="hero"] p:not([class*="eyebrow"]):not([class*="kicker"]):not([class*="meta"]):not([class*="label"]),
html body[class] main#main-content .archive-description,
html body[class] main#main-content .entry-summary {
  font-size: var(--font-size-lead);
  line-height: var(--line-height-base);
}

html body[class] main#main-content :is([class*="eyebrow"], [class*="kicker"], [class*="overline"]) {
  font-size: var(--font-size-caption);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-copy);
  letter-spacing: .08em;
}

html body[class] main#main-content :is(small, time, figcaption, [class*="meta"], [class*="caption"]) {
  font-size: var(--font-size-caption);
  line-height: var(--line-height-copy);
}

html body[class] main#main-content :is(label, legend) {
  font-size: var(--font-size-small);
  line-height: var(--line-height-copy);
}

html body[class] main#main-content :is(input, select, textarea) {
  font-size: var(--font-size-body);
  line-height: var(--line-height-copy);
}

html body[class] main#main-content :is(th, td) {
  font-size: var(--font-size-small);
  line-height: var(--line-height-copy);
}

html body[class] main#main-content thead th {
  font-size: var(--font-size-caption);
}

html body[class] main#main-content summary {
  font-size: var(--font-size-body);
  line-height: var(--line-height-copy);
}

html body[class] :is(.button, [class*="button"], button[type="submit"], input[type="submit"]) {
  font-size: var(--font-size-small);
  line-height: var(--line-height-heading);
}

html body[class] main#main-content :is([class*="card"], [class*="tile"]) h3:not(.sr-only),
html body[class] main#main-content :is([class*="card"], [class*="tile"]) h2:not(.sr-only),
html body[class] main#main-content .support-capabilities article h2:not(.sr-only) {
  font-size: var(--font-size-h4);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content :is([class~="stat"], [class*="__stat"], [class^="stat-"], [class*=" stat-"], [class$="-stat"], [class~="metric"], [class*="__metric"], [class^="metric-"], [class*=" metric-"], [class$="-metric"]) h2:not(.sr-only),
html body[class] main#main-content :is([class~="stat"], [class*="__stat"], [class^="stat-"], [class*=" stat-"], [class$="-stat"], [class~="metric"], [class*="__metric"], [class^="metric-"], [class*=" metric-"], [class$="-metric"]) h3:not(.sr-only) {
  font-size: var(--font-size-small);
  line-height: var(--line-height-tight);
}

html body[class] main#main-content :is([class~="stat"], [class*="__stat"], [class^="stat-"], [class*=" stat-"], [class$="-stat"], [class~="metric"], [class*="__metric"], [class^="metric-"], [class*=" metric-"], [class$="-metric"]) > :is(span, p),
html body[class] main#main-content :is([class~="stat"], [class*="__stat"], [class^="stat-"], [class*=" stat-"], [class$="-stat"], [class~="metric"], [class*="__metric"], [class^="metric-"], [class*=" metric-"], [class$="-metric"]) :is(small, time) {
  font-size: var(--font-size-caption);
  line-height: var(--line-height-copy);
}

html body.home[class] main#main-content .home-hero__benefits > li {
  min-width: 0;
  font-size: var(--font-size-small);
  line-height: var(--line-height-copy);
  white-space: normal;
}

html body[class] main#main-content :is([class*="cta"], [class*="consultation"]) h2:not(.sr-only),
html body[class] main#main-content dialog h2:not(.sr-only) {
  font-size: var(--font-size-h2);
  line-height: var(--line-height-heading);
}

html body[class][class] .site-header.site-header .menu a,
html body[class][class] .site-header.site-header .language-switcher summary,
html body[class][class] .site-header.site-header .nav-quote {
  font-size: var(--font-size-header-control);
  line-height: var(--line-height-heading);
}

html body[class] .site-breadcrumbs.site-breadcrumbs li,
html body[class] .site-breadcrumbs.site-breadcrumbs a {
  font-size: var(--font-size-caption);
  line-height: var(--line-height-copy);
}

html body[class] .site-footer.site-footer .footer-brand > p,
html body[class] .site-footer.site-footer .footer-column > a,
html body[class] .site-footer.site-footer .footer-menu a {
  font-size: var(--font-size-small);
  line-height: var(--line-height-copy);
}

html body[class] .site-footer.site-footer .footer-grid h2 {
  font-size: var(--font-size-small);
  line-height: var(--line-height-tight);
}

html body[class] .site-footer.site-footer .footer-bottom,
html body[class] .site-footer.site-footer .footer-legal-menu a {
  font-size: var(--font-size-caption);
  line-height: var(--line-height-copy);
}

html body[class] .tongyi-consent h2,
html body[class] .tongyi-consent-dialog h2 {
  font-size: var(--font-size-h3);
  line-height: var(--line-height-heading);
}

html body[class] .tongyi-consent p,
html body[class] .tongyi-consent-option p,
html body[class] .tongyi-consent-option strong,
html body[class] .tongyi-consent__button,
html body[class] .tongyi-cookie-settings {
  font-size: var(--font-size-small);
}

html body.tax-application_industry main#main-content,
html body.tax-application_industry main#main-content > article,
html body.tax-application_industry .industry-hero {
  overflow-x: clip;
}

@media (min-width: 768px) {
  :root {
    --font-size-lead: 1.125rem;
    --font-size-h4: 1.25rem;
  }

  html body[class] main#main-content :is([class*="cta"], [class*="consultation"]) h2:not(.sr-only),
  html body[class] main#main-content dialog h2:not(.sr-only) {
    font-size: var(--font-size-h2);
  }
}

@media (min-width: 1181px) {
  html body.home[class] main#main-content .home-hero__benefits {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Keep homepage section headings at the page's compact editorial scale. */
html body.home[class] main#main-content .home-heading-row h2,
html body.home[class] main#main-content .home-engineering__copy h2 {
  font-size: var(--font-size-h2);
  line-height: var(--line-height-heading);
}

@media (max-width: 1200px) {
  html body.home[class] main#main-content .home-heading-row h2,
  html body.home[class] main#main-content .home-engineering__copy h2 {
    font-size: var(--font-size-h2);
  }
}

@media (max-width: 768px) {
  html body.home[class] main#main-content .home-heading-row h2,
  html body.home[class] main#main-content .home-engineering__copy h2 {
    font-size: var(--font-size-h2);
  }
}

@media (max-width: 1023px) {
  html body[class][class] .site-header.site-header .menu a {
    font-size: var(--font-size-header-nav-mobile);
  }
}
