/* Unlayered, zero-specificity defaults supersede legacy typography while
   leaving explicit component classes in control. No spacing or layout reset. */
:where(body) {
  font: var(--font-type-body);
}

:where(h1) { font: var(--font-type-heading-large); }
:where(h2) { font: var(--font-type-heading); }
:where(h3) { font: var(--font-type-heading-small); }
:where(h4, h5, h6) { font: var(--font-type-title); }
:where(h1, h2, h3, h4, h5, h6) { letter-spacing: normal; }

/* Paragraphs, spans, links, lists, quotes, and generic containers inherit.
   Do not give them a fixed body font that overrides their surrounding role. */
:where(table) { font: inherit; }
:where(th, strong, b) { font-weight: bolder; }
:where(em, i, cite, dfn) { font-style: italic; }
:where(small, figcaption, caption) { font: var(--font-type-caption); }
:where(pre, code, kbd, samp) { font: var(--font-type-code); }

:where(label, legend) { font: var(--font-type-label-strong); }
:where(input, textarea) { font: var(--font-type-body); }
/* Action inputs select the label role rather than the generic input default. */
:where(summary, button, select, input[type="button"], input[type="submit"], input[type="reset"]) {
  font: var(--font-type-label);
}

/* Retain native sub/sup sizing, emphasis, quotation marks, underlines, and
   other semantic treatments not represented by the font shorthand. */
