/**
 * fonts.css — self-hosted webfonts (design.md §4.1: "Self-host woff2 with separate
 * Arabic and Latin unicode-range subsets; font-display: swap; preload the Arabic
 * display woff2 on AR pages").
 *
 * Files live in `public/fonts/` (docs/04-architecture.md §6.1: "public/ # static:
 * fonts/ (self-hosted woff2 subsets)") and are vendored from Google Fonts — the
 * canonical open-source (SIL OFL) distribution of every face design.md names (Oswald,
 * Inter, Changa, Readex Pro, IBM Plex Mono). Each `unicode-range` below is the same
 * per-script split Google's own font API computes; only the `latin` cut is kept for the
 * Latin-only faces (Oswald/Inter/IBM Plex Mono never render Arabic text — design.md
 * §4.1's font-stack-* split guarantees that), and BOTH `latin` and `arabic` are kept
 * for Changa/Readex Pro, because `:lang(ar)` scopes the whole document subtree and a
 * short Latin run can still appear inside it unwrapped (e.g. this file's own S1–S10
 * range in the shell-smoke copy) — see design-tokens/arabic-rtl skills.
 *
 * `font-weight` is written as a RANGE ("200 700") for the four faces design.md marks
 * "(variable)" §4.1 — these are the true variable-axis files, not static instances, so
 * `font-weight: 500` etc. resolves through real interpolation exactly as the direction
 * spec requires ("the ink can be matched by eye rather than by number. Keep it.").
 * IBM Plex Mono is NOT variable per §4.1, so its two weights are two static files.
 */

/* ── Oswald (font-display-lat, variable 200–700) ─────────────────────────── */
@font-face {
  font-family: "Oswald";
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url("/public/fonts/oswald-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

/* ── Inter (font-text-lat, variable 400/600) ─────────────────────────────── */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("/public/fonts/inter-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

/* ── IBM Plex Mono (font-mono, static 400/500 — NOT variable per §4.1) ──── */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/public/fonts/ibm-plex-mono-400-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/public/fonts/ibm-plex-mono-500-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

/* ── Changa (font-display-ar, variable 200–800) — Arabic subset first: this is
   the display face for the language it was chosen for (§4.1 "Arabic chosen
   first, Latin matched to it"). ────────────────────────────────────────────── */
@font-face {
  font-family: "Changa";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/public/fonts/changa-arabic.woff2") format("woff2");
  unicode-range:
    U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1,
    U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF,
    U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4,
    U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24,
    U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47,
    U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59,
    U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A,
    U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89,
    U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;
}
@font-face {
  font-family: "Changa";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/public/fonts/changa-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

/* ── Readex Pro (font-text-ar, variable 160–700, covers the 400/500 the ramp
   uses) ─────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Readex Pro";
  font-style: normal;
  font-weight: 160 700;
  font-display: swap;
  src: url("/public/fonts/readex-pro-arabic.woff2") format("woff2");
  unicode-range:
    U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1,
    U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF,
    U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4,
    U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24,
    U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47,
    U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59,
    U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A,
    U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89,
    U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;
}
@font-face {
  font-family: "Readex Pro";
  font-style: normal;
  font-weight: 160 700;
  font-display: swap;
  src: url("/public/fonts/readex-pro-latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

/**
 * RESOLVED 2026-08-19 (was "KNOWN GAP" below, read before adding a font here): the
 * wordmark placeholder used U+27E8/U+27E9 MATHEMATICAL LEFT/RIGHT ANGLE BRACKET, which
 * no shipped face (Oswald, Changa, Inter, Readex Pro, IBM Plex Mono) contains — nor does
 * any redistributable open font, per the `fontTools` inspection of Google's own
 * "Noto Sans Symbols 2" this note originally recorded — so the browser fell through to
 * a system font for just those two characters (Cambria Math on Windows/Chromium),
 * reported by `scripts/visual_qa.mjs` as `font-fallback`/`ar-font-fallback`. Remedy (b)
 * from the original note was taken: design.md §2.4's `wordmark-text-en`/`-ar` now read
 * U+2039/U+203A (‹ ›), the SAME bracket already used for every other pending-marker in
 * design.md (§11.9's own `‹pending›`), which IS covered by the latin subset above with
 * zero rendering compromise — confirmed by a zero-high `visual_qa.mjs` re-run
 * (`docs/ui-evidence/a2-identity/visual-qa`). `src/views/macros/chrome.html` and
 * `office-chrome.html` carry the literal; do not reintroduce U+27E8/U+27E9 there.
 */
