/* ═══════════════════════════════════════════════════════════════════
   THE SITE'S FONTS, SERVED FROM THE SITE.

   Robin, 3 Sep 2026: "tbh I hate google fonts- they always end up being
   an open lag nightmare... if you can replace them site-wide and still
   keep my console fonts and simillar look- do it!"

   Not a lag nightmare — a HANG nightmare, and the difference matters. A
   <script> at the end of the body waits on pending stylesheets, so a
   <link> to fonts.googleapis.com that never answers stops the page's own
   script from ever running. What a student sees is an empty bordered box:
   no error, nothing in the console, and only on their network. It reads
   as a broken computer. notebookAP/index.html carries a whole ?lite=fonts
   bisect built to chase a 60-second iOS load, and its own comment names
   this as the prime suspect: "those connections do not fail fast, they
   HANG."

   These are the SAME FILES Google serves — the .woff2 the browser would
   have downloaded — taken from the Fontsource packages on npm and put in
   the repo. So the look does not change at all. The family names below
   are deliberately identical to what every stylesheet already asks for,
   which is why nothing else in the site had to be edited.

   200K for four families in every weight, cached on first visit, served
   from the same origin as the page. Nothing can hang.

   WHY VARIABLE FONTS: one file per family covers every weight from 100
   to 900, so Outfit at 300, 400, 500, 600, 700 and 900 — all six the
   notebook asks for — is a single 32K download instead of six.

   Caveat is the exception: it ships as separate weights, so only the two
   that are used (500 and 700) are here.

   Latin subset only. Everything a student reads on this site is English.
   Adding a subset later means dropping the file in and adding a
   unicode-range block; nothing else changes.

   To add a family: npm's @fontsource-variable/<name>, take
   files/<name>-latin-wght-normal.woff2, add a block below. Do NOT add a
   Google Fonts <link> back.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Outfit — the display and UI face ─────────────────────────────── */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-display: swap;          /* text shows immediately in the fallback */
  font-weight: 100 900;        /* variable: the whole range, one file */
  src: url('/fonts/outfit-latin-wght-normal.woff2') format('woff2-variations');
  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;
}

/* ── JetBrains Mono — the console face. Robin: "keep my console fonts" ── */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 100 800;
  src: url('/fonts/jetbrains-mono-latin-wght-normal.woff2') format('woff2-variations');
  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;
}

/* ── Source Code Pro — the second monospace ───────────────────────── */
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url('/fonts/source-code-pro-latin-wght-normal.woff2') format('woff2-variations');
  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;
}

/* ── Caveat — the handwriting accent. Not variable; two used weights ── */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url('/fonts/caveat-latin-500-normal.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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('/fonts/caveat-latin-700-normal.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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}
