/* assets/css/tommy-fonts.css — Heebo, self-hosted   (Build 9.210)
   ══════════════════════════════════════════════════════════════════
   LINKED from index.html, before app.css.

   The earlier version of this file pointed at a single
   `assets/fonts/heebo-variable.woff2` that never arrived, and it was
   deliberately left unlinked so a missing file could not become a 404
   on every page load. The files that did arrive are the fontsource
   subset pair:

       heebo-hebrew-wght-normal.woff2    12 KB
       heebo-latin-wght-normal.woff2     30 KB

   Two files rather than one, and that is the better shape here. Tommy
   is a Hebrew product: the Hebrew subset is 12 KB and carries almost
   every glyph the interface actually draws. Splitting by
   `unicode-range` lets the browser fetch the Latin face only when a
   page really contains Latin text — model numbers, `kW`, `AC/DC`,
   cable designations — instead of paying 30 KB up front on every
   load.

   ── why the variable axis ──
   Tommy asks for six weights: 400, 500, 600, 700, 800, 900. As static
   faces that would be twelve files across two subsets. These are
   `wght`-axis variable fonts spanning 100–900, so two files cover
   every weight and the browser interpolates.

   `font-weight: 100 900` on the @font-face is what declares the axis
   range. Writing a single weight here would make the browser
   synthesise the others by smearing the outlines, which looks
   noticeably wrong at 600 and above.

   ── why swap ──
   `font-display: swap` is deliberate. A blocking webfont on a field
   survey over mobile data is a blank screen at the exact moment
   somebody needs the form. Swapping through Noto Sans Hebrew and
   reflowing once is the better trade for this product.

   ── no external dependency ──
   No Google Fonts, no CDN, no runtime network dependency of any kind.
   `tests/font-selfhost-contract.test.js` enforces that, and enforces
   that both files exist while this sheet is linked.
   ══════════════════════════════════════════════════════════════════ */

/* Hebrew — the subset that carries the product. */
@font-face {
  font-family: 'Heebo';
  src: url('../fonts/heebo-hebrew-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900;   /* the variable axis, not a single face */
  font-style: normal;
  font-display: swap;
  unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
}

/* Latin — technical values, model numbers, units. Fetched only when a
   page actually contains characters in this range. */
@font-face {
  font-family: 'Heebo';
  src: url('../fonts/heebo-latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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;
}
