/* ==========================================================================
   CURB VIBES - TYPOGRAPHY FOUNDATION
   Fluid clamp() scale per IMPLEMENTATION-HANDOFF.md section 1:
     H1 38-58 | H2 28-38 | H3 20-26 | body 17-19 / 1.55-1.7 |
     caption/label 12-15 | disclosure >= 13
   Clamp ramps are computed for viewports 390px -> 1200px and expressed in
   rem so they respect user font-size preferences.

   This file is the SOLE source of typography configuration. GeneratePress's
   Typography Manager is intentionally left empty (see
   docs/generatepress-settings-checklist.md) so there is exactly one place
   that controls headings, body text, weights, sizes and responsive
   behaviour - no duplicate configuration to keep in sync.
   ========================================================================== */

:root {
	--cv-text-h1:   clamp(2.375rem, 1.773rem + 2.469vw, 3.625rem); /* 38 -> 58 */
	--cv-text-h2:   clamp(1.75rem, 1.449rem + 1.235vw, 2.375rem);  /* 28 -> 38 */
	--cv-text-h3:   clamp(1.25rem, 1.069rem + 0.741vw, 1.625rem);  /* 20 -> 26 */
	--cv-text-body: clamp(1.0625rem, 1.002rem + 0.247vw, 1.1875rem); /* 17 -> 19 */
	--cv-text-caption: clamp(0.75rem, 0.66rem + 0.37vw, 0.9375rem);  /* 12 -> 15 */
	--cv-text-disclosure: 0.8125rem; /* 13px minimum - do not shrink */
}

body {
	font-family: var(--cv-font-body);
	font-size: var(--cv-text-body);
	line-height: 1.6;
	color: var(--cv-charcoal);
	background-color: var(--cv-plaster);
}

h1,
h2 {
	font-family: var(--cv-font-display);
	font-weight: 600;
	color: var(--cv-spruce);
	line-height: 1.15;
	/* The Curbline Edit display character: optical sizing on, no softness,
	   no wonk. Applies fully once the Fraunces variable font is loaded;
	   harmless on fallback serifs. */
	font-optical-sizing: auto;
	font-variation-settings: "SOFT" 0, "WONK" 0;
}

h1 {
	font-size: var(--cv-text-h1);
}

h2 {
	font-size: var(--cv-text-h2);
	line-height: 1.2;
}

h3,
h4,
h5,
h6 {
	font-family: var(--cv-font-body);
	font-weight: 700;
	color: var(--cv-spruce);
	line-height: 1.3;
}

h3 {
	font-size: var(--cv-text-h3);
}

/* Brand line rendering, when set as live text: Fraunces Italic 400.
   (The wordmark itself is never recreated as live text - Doc 09 s.18.) */
.cv-brandline {
	font-family: var(--cv-font-display);
	font-style: italic;
	font-weight: 400;
	font-variation-settings: "SOFT" 0, "WONK" 0, "opsz" 24;
}

/* Long-form readability guard: never let lines get long even outside the
   reading-column wrapper. Applied in later stages via layout; here only the
   measure token is defined - no global max-width is forced on content. */
