/* ===========================================================================
   Shantell Sans — the BOARD HANDWRITING face (docs/chalkboard-anim-spec.md v3.2)
   ===========================================================================
   The chalkboard's mental model is that the board carries what the instructor
   would WRITE. Non-math board text therefore renders in a handwriting register:
   words, the line `note`, and the chapter-card headings. KaTeX math stays
   typeset (the spec's "neat teacher" look) — handwritten math layout is an
   engine project of its own.

   Why THIS face: it is a handwriting-informed PRINT face, not a cursive one, so
   it stays legible at the 17–20px the board renders at, and it carries a real
   weight axis (300–800). The board writes at weight 700; a single-weight
   handwriting font would have to be synthetically emboldened there, which muddies
   exactly the sizes we need.

   Vendored, never fetched: the app is a self-contained PWA (CLAUDE.md), so this
   ships next to vendor/katex and its woff2 is precached by the service worker.
   Source:  https://raw.githubusercontent.com/fontsource/font-files/main/fonts/variable/shantell-sans/files/shantell-sans-latin-wght-normal.woff2
            (fontsource's build of github.com/arrowtype/shantell-sans, latin subset)
   Version: 1.011  ·  License: SIL Open Font License 1.1 — see ./LICENSE

   `font-display: swap` is deliberate: a board that has not got its font yet must
   show the fallback text immediately. The write-on animation clips a rendered
   line, so a face arriving late re-flows text that is already legible rather than
   holding a blank board.
   =========================================================================== */
@font-face {
  font-family: 'Shantell Sans';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url('./fonts/ShantellSans-Variable.woff2') format('woff2-variations'),
       url('./fonts/ShantellSans-Variable.woff2') format('woff2');
  /* latin — the board writes English only (a Turkish test has no guided
     animations yet; when it does, add the latin-ext subset beside this one). */
  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+2074, U+20AC, U+2122, U+2191,
    U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* The one token the app reaches for. Board handwriting is applied inline as
   `var(--font-hand, <the app's own body stack>)` (chalkboard.jsx → handFont),
   so there are exactly two degradation steps and both are silent:
     - this stylesheet missing  → the var falls back to the body stack;
     - the woff2 missing        → the family falls back inside the stack.
   `.cb-hand` is the same thing as a class, for anything styled in CSS. */
:root {
  --font-hand: 'Shantell Sans', 'Iowan Old Style', 'Charter', Georgia, serif;
}
.cb-hand { font-family: var(--font-hand); }
