/*
 * La2etlak — CANONICAL FONT FACES
 * ============================================================================
 * Installed by HOMEPAGE-PILOT-FONT-HARNESS-001.
 *
 * This file is the single source of truth for the four locked design families.
 * The locked Homepage proof (served through tests/Design/serve.php) and the
 * future Laravel Homepage BOTH load this file, so both sides are guaranteed to
 * render from byte-identical binaries. Guarded by
 * tests/Unit/Design/CanonicalFontHarnessTest.php.
 *
 * Families and weights are fixed by the locked design authority:
 *   FINAL_DESIGN_FOUNDATION.md §2  ·  uploads/DESIGN_RULES.md § Typography
 *   Homepage consumption measured in docs/design/IMPLEMENTATION_LEDGER.md §4.
 * Do not add a family, a weight or an italic face here without a design change.
 * IBM Plex Mono is deliberately absent — the Homepage does not consume it; its
 * first real need is the auth shell (4C one-time / backup codes).
 *
 * Licences: SIL OFL 1.1 for all four families. Each binary ships its licence
 * beside it (public/fonts/{ibm-plex,source-serif-4,noto-naskh-arabic}/OFL.txt).
 *
 * NOT WIRED INTO PRODUCTION YET. public/css/la2etlak.css and
 * resources/css/admin.css still carry their own IBM Plex @font-face block
 * pointing at these same eight binaries; the harness test asserts the three
 * copies cannot drift apart. Collapsing them into a single <link> to this file
 * is the Homepage implementation task's decision, not this task's.
 * ============================================================================ */

/* --- UI / body: IBM Plex Sans (Latin) — 400/500/600/700 normal ------------- */
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-400.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-500.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-600.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-700.woff2') format('woff2'); }

/* --- UI / body: IBM Plex Sans Arabic — 400/500/600/700 normal -------------- */
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-arabic-400.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-arabic-500.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-arabic-600.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/ibm-plex/ibm-plex-sans-arabic-700.woff2') format('woff2'); }

/* --- Latin display: Source Serif 4 — VARIABLE, Roman ----------------------- *
 * The binary carries two axes: wght 200..900 and opsz 8..60. The locked proof
 * requests opsz 8..60 from the CDN, so optical sizing is LIVE in the design:
 * Source Serif 4 is consumed from 15px (.stn step numerals) to 46px (hero h1)
 * and the letterforms are expected to change across that range.
 *
 * Two things keep that behaviour intact and must not be "simplified":
 *   1. `font-weight: 200 900` is a RANGE, which is what makes the wght axis
 *      reachable. Replacing it with `font-weight: 600` pins the face and
 *      silently converts a variable font into a static one.
 *   2. `font-optical-sizing` must stay at its `auto` default. Never set it to
 *      `none`, and never pin `font-variation-settings: 'opsz' <n>` globally.
 * The design consumes weight 600 only; the full range is declared because that
 * is how a variable face is declared, not because other weights are approved.
 * -------------------------------------------------------------------------- */
@font-face { font-family: 'Source Serif 4'; font-style: normal; font-weight: 200 900; font-display: swap; src: url('/fonts/source-serif-4/source-serif-4-variable-roman.woff2') format('woff2'); }

/* --- Arabic display: Noto Naskh Arabic — static 600 normal ----------------- *
 * Static instance: the design consumes exactly one weight (600), so no axis
 * needs to stay reachable here. Full upstream glyph coverage is retained.
 * -------------------------------------------------------------------------- */
@font-face { font-family: 'Noto Naskh Arabic'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/noto-naskh-arabic/noto-naskh-arabic-600.woff2') format('woff2'); }
