/**
 * Base typography — generic element-level type rules only. Component-
 * specific text styling (e.g. an article card's title size) belongs in
 * that component's own CSS file (assets/css/components/), not here.
 *
 * Font families + h1/h2/body sizing below are now confirmed from
 * Design Refrance/TSI Style Guide.html §02 "Typography" (an authoritative
 * developer handoff doc), not guessed — see variables.css for the full
 * token breakdown and what's still unconfirmed (h3–h6 below are NOT in
 * the style guide, which only defines Display/H1/H2/Lead/Body/Kicker/
 * Category-tag — h3–h6 are a reasonable extrapolated step-down, flagged
 * so nobody mistakes them for confirmed values later).
 */

body {
	font-family: var(--font-primary);
	font-size: var(--font-size-base);
	font-weight: var(--font-body-weight);
	line-height: var(--font-body-line-height);
	color: var(--color-ink);
	background-color: var(--color-wash);
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-secondary);
	color: var(--color-ink);
}

/* H1 — confirmed: Playfair Display 900, 40px (base; use --font-h1-size-hero
   for large hero contexts), line-height 1, -1px tracking */
h1 {
	font-size: var(--font-h1-size);
	font-weight: var(--font-h1-weight);
	line-height: var(--font-h1-line-height);
	letter-spacing: var(--font-h1-tracking);
}

/* H2 — confirmed: Playfair Display 700, 27px, -0.4px tracking */
h2 {
	font-size: var(--font-h2-size);
	font-weight: var(--font-h2-weight);
	letter-spacing: var(--font-h2-tracking);
	line-height: 1.2;
}

/* H3–H6 — NOT in the style guide (which stops at H2); extrapolated as a
   reasonable step-down from H2 pending a real spec for these levels. */
h3 { font-size: 22px; font-weight: 700; line-height: 1.25; }
h4 { font-size: 19px; font-weight: 700; line-height: 1.3; }
h5 { font-size: 17px; font-weight: 700; line-height: 1.3; }
h6 { font-size: var(--font-size-base); font-weight: 700; line-height: 1.3; }

/* Lead / Dek — confirmed: Playfair Display italic, 21px, line-height 1.45 */
.lead {
	font-family: var(--font-secondary);
	font-style: italic;
	font-size: var(--font-lead-size);
	line-height: var(--font-lead-line-height);
	color: var(--color-ink-mid);
}

/* Kicker / Label — confirmed: Archivo 700, caps, 11px, +2.5px tracking */
.kicker {
	font-family: var(--font-primary);
	font-weight: var(--font-label-weight);
	font-size: var(--font-label-size);
	letter-spacing: var(--font-label-tracking);
	text-transform: uppercase;
	color: var(--color-ink-soft);
}

/* Category tag — confirmed: Archivo 700, caps, 11px, +1.5px tracking, green */
.category-tag {
	font-family: var(--font-primary);
	font-weight: var(--font-tag-weight);
	font-size: var(--font-tag-size);
	letter-spacing: var(--font-tag-tracking);
	text-transform: uppercase;
	color: var(--color-primary);
}

p {
	color: var(--color-ink-mid);
}

a {
	color: var(--color-primary);
	transition: color 0.15s ease;
}

a:hover,
a:focus-visible {
	color: var(--color-primary-deep);
}

small,
.text-sm {
	font-size: 12px;
	color: var(--color-ink-soft);
}
