/* Vyzora Typography Stack — Bricolage Grotesque / Spectral / JuliaMono
 * Locked by ADR-008-E (2026-05-09)
 * License: all OFL, free, redistribution-permitted
 *
 * RETIRED from this contract (kept on disk for rollback only):
 *   IBM Plex Sans / Mono / Serif (IBM Carbon residue)
 *   Recursive Mono / Sans (casual axis reads as coding-bootcamp register)
 *   Source Serif (Sectra-proxy substitution didn't survive scrutiny)
 *   Newsreader (replaced by Bricolage; kept for fallback only)
 *
 * Pages MUST <link rel="preload"> the weights they use to prevent FOUC under
 * the operational chrome. Falling back to system stack on Vyzora pages is a
 * brand failure per ADR-008-A §Lock 3A.
 *
 * Fallback metrics (size-adjust / ascent-override / descent-override) below
 * are conservative starting values — refine with font-style-matcher per face
 * before production.
 * ============================================================================
 */

/* ── Bricolage Grotesque (display + masthead) ──────────────────────────────
 * Variable axes: opsz, wght, width (wdth), GRAD
 * Use: 216pt cover anchors (opsz=96, wght=600), masthead labels (opsz=12,
 * wght=500, wdth=85), Emergency Directive halt heading (opsz=24, wght=700,
 * GRAD=150). Single woff2 file covers all roles via variable axes.
 */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 100 900;
  font-display: block;
  src: url('./bricolage/Bricolage-Variable.woff2') format('woff2');
  size-adjust: 96%;
  ascent-override: 92%;
  descent-override: 22%;
}

/* ── Spectral (body) ────────────────────────────────────────────────────────
 * Static cuts (no variable release). Three weights ship.
 * Use: 14–22pt body, clause text, lede paragraphs.
 * Designed for screen long-form reading; survives Midnight Command at 13pt
 * with line-height 1.55+.
 */
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./spectral/Spectral-400.woff2') format('woff2');
  size-adjust: 100%;
  ascent-override: 90%;
  descent-override: 26%;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('./spectral/Spectral-400-italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./spectral/Spectral-500.woff2') format('woff2');
}

/* ── JuliaMono (mono / data / governance glyphs) ───────────────────────────
 * Single weight (Regular). Subset to Latin + governance glyphs (§ ¶ † ‡ ※ ∴
 * → ← ↔ ∈ ∃ ∀ ∩ ∪) — 36KB subsetted, 1.0MB unsubsetted.
 * Use: 9–13pt timestamps, hashes, run IDs, run ledger, scrubber readout,
 * masthead values, marginalia.
 * Tabular alignment is the default (font-feature-settings: "tnum" not required).
 */
@font-face {
  font-family: 'JuliaMono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./juliamono/JuliaMono-Regular-subset.woff2') format('woff2');
  size-adjust: 96%;
  ascent-override: 92%;
  descent-override: 24%;
}
