/* R6 typefaces — self-hosted, no external CDN calls at runtime (project rule).
   Fetched once from Google Fonts API, thai+latin subsets only (dropped
   cyrillic/vietnamese/latin-ext, same convention as fonts.css/Noto).

   Round 2 (owner feedback: "ดู sport ไป ... เหมือนโฆษณารถยนต์"):
   IBM Plex Sans Thai's squared bowls, sitting on red diagonals, read as
   motorsport rather than business education. Replaced with an editorial
   pairing (Trirong + Sarabun) — see design-r6/DESIGN-R6.md §1.

   Round 5 (owner feedback: "font face panyagraph แอบไม่สวย ... ดูบางไป
   มี serif ตัวไหนหนาๆละทำให้มันสวยได้ไหม" — Trirong's Latin cut read as
   thin/plain for the wordmark; owner then explicitly said it's fine to
   split by script: "แยกกันก็ได้ ใช้ serif เฉพาะ eng ไทยใช้...sans"):
   swapped in Fraunces (display serif) + Sarabun.

   Round 6 (design-hook overused-font flag on Fraunces; owner asked to
   compare alternatives, was shown Fraunces vs Piazzolla/Bitter/Newsreader/
   Playfair Display side by side, then chose Playfair Display 900 over the
   recommendation to keep Fraunces):

     Playfair Display (display serif, wght 700-900) — Latin display only
     Sarabun  (humanist sans, Cadson Demak) — body + UI + Thai display
       (Playfair Display ships zero Thai glyphs, so listing it first in
       --font-display and letting Thai fall through to Sarabun is a plain
       CSS font-stack fallback, not a hack — no separate Thai serif needed)
     IBM Plex Mono — data/status only, unchanged

   Round 7 (2026-08-02, owner: "ไม่ค่อยชอบ font ไทยที่ใช้คู่ playfair" —
   Sarabun as the Thai half of a serif display pairing read as a visible
   sans/serif seam. Compared Pridi/Maitree/Noto Serif Thai live against
   Playfair Display; owner picked Noto Serif Thai, then asked to also
   replace Sarabun as the body/UI font sitewide with Noto Sans Thai —
   the same family already used by axon.html/admin via tokens-legacy.css,
   so this brings the learner-facing system back in line with it):

     Playfair Display (display serif, wght 700-900) — Latin display only
     Noto Serif Thai (serif, wght 400-700) — Thai display, pairs with
       Playfair Display in --font-display (same zero-Thai-glyphs fallback
       pattern as Sarabun before it — not a hack)
     Noto Sans Thai (humanist sans) — body + UI, thai+latin subsets,
       reused verbatim from the admin/legacy font files (identical family,
       no need to re-fetch)
     IBM Plex Mono — data/status only, unchanged

   Sarabun's files are removed (fully unreferenced after this round — the
   admin side never used them, and the learner side no longer does).
   Trirong's and Fraunces's files are kept in the repo unreferenced so
   previous pairings can be compared without a re-download.

   Round 8 (2026-08-11, owner feedback after using Class Debrief live:
   "ปรับ font ไทยให้ใช้ sans serif ตัวเดียวกันได้"): Noto Serif Thai as the
   Thai half of --font-display read as a visible sans/serif seam against
   the Noto Sans Thai body copy right next to it (headings vs paragraphs
   on the same screen) — the exact seam Round 7 was trying to avoid
   between Playfair and its Thai fallback, just one layer down. Retired
   Noto Serif Thai; Thai now falls through --font-display straight to
   Noto Sans Thai (same family as body/UI, zero seam). Playfair Display
   is unchanged — still Latin-display-only, same zero-Thai-glyph fallback
   pattern as before, just landing one font later in the stack:

     Playfair Display (display serif, wght 700-900) — Latin display only
     Noto Sans Thai (humanist sans) — body + UI + Thai display, one family
     IBM Plex Mono — data/status only, unchanged

   noto-serif-thai-var-thai.woff2 removed from disk (fully unreferenced —
   nothing else in the codebase names "Noto Serif Thai"). design.md §10
   Amendment 9 records this. */

/* ---- Display (Latin only — see note above for why Thai has no entry here) ---- */
@font-face {
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 700 900;   /* variable range in one file — hero uses 900, other display text 700 */
  font-display: swap;
  src: url(/assets/vendor/fonts/playfair-display-latin-var.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;
}

/* ---- Body / UI: Noto Sans Thai (humanist sans) — same family/files as
   axon.html's tokens-legacy.css, reused verbatim (single variable-weight
   file per subset, wght 400-700) ---- */
@font-face {
  font-family: "Noto Sans Thai";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/vendor/fonts/noto-sans-thai-var-thai.woff2) format("woff2");
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}
@font-face {
  font-family: "Noto Sans Thai";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/vendor/fonts/noto-sans-thai-var-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;
}

/* ---- Data / status: IBM Plex Mono (unchanged — mono is doing real
   tabular work here, and it is not what read as "sport") ---- */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/vendor/fonts/plex-mono-latin-400.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(/assets/vendor/fonts/plex-mono-latin-500.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: 600;
  font-display: swap;
  src: url(/assets/vendor/fonts/plex-mono-latin-600.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: 700;
  font-display: swap;
  src: url(/assets/vendor/fonts/plex-mono-latin-700.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;
}

/* Thai set in Plex Mono (rare — status codes only) falls back to Noto Sans
   Thai's glyphs since Plex Mono has none. */
