/* ============================================================================
   Orbexa Precision Bearings — self-hosted typefaces
   ----------------------------------------------------------------------------
   Three families, self-hosted, FULL character set. This file is the only
   place @font-face is declared; pages link it once (design-tokens.css
   @imports it, so linking design-tokens.css alone is enough).

   WHY FULL CHARACTER SET AND NOT THE `-latin-` SUBSET
   ---------------------------------------------------
   The Google-Fonts latin / latin-ext subsets carry U+2070 and U+2074-2079 but
   NOT U+207A/207B/207D/207E, and fontsource ships no `symbols` or `math`
   subset for any of these three families (checked against the CDN listing —
   the subset files simply do not exist). A page writing 10^-6 as 10⁻⁶ would
   therefore paint a tofu box on every platform. So:

     · all three site families ship as the UNSUBSETTED upstream builds
       (glyph counts: Libre Bodoni 644, Public Sans 648, IBM Plex Mono 1207),
       which carry µm (U+00B5), ° (U+00B0), ± (U+00B1), ² ³ (U+00B2/B3),
       ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ (U+2070, U+2074-2079), ₀-₉ (U+2080-2089);
     · U+207B SUPERSCRIPT MINUS (and U+2300 DIAMETER SIGN, which matters for
       bearing callouts) is absent from EVERY build of all three families, so
       a 25-glyph companion is subset out of DejaVu Sans and declared with
       `unicode-range`. The browser downloads those 5.9 KB only when one of
       those codepoints actually appears on the page.

   Provenance (recorded so the set is reproducible):
     Libre Bodoni 700  <- google/fonts ofl/librebodoni/LibreBodoni[wght].ttf  (instanced at wght=700)
     Public Sans 400/600 <- google/fonts ofl/publicsans/PublicSans[wght].ttf (instanced at wght=400/600)
     IBM Plex Mono 400/500 <- IBM/plex packages/plex-mono/fonts/complete/ttf (static)
     Orbexa Symbols    <- dejavu-fonts-ttf 2.37.3 ttf/DejaVuSans.ttf (subset)
   Converted to woff2 with fontTools. No Google Fonts <link> anywhere on the
   site — `script-src 'self'` / `style-src 'self'` cover fonts too, and a
   third-party font host is a silent single point of failure.

   Total payload: 180,896 bytes across six files, all `font-display: swap`.
   ========================================================================== */

/* --- Display · Libre Bodoni 700 ------------------------------------------ */
@font-face {
  font-family: "Libre Bodoni";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/fonts/libre-bodoni-700.woff2") format("woff2");
}

/* --- Body · Public Sans 400 / 600 ---------------------------------------- */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/public-sans-400.woff2") format("woff2");
}
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/public-sans-600.woff2") format("woff2");
}

/* --- Utility · IBM Plex Mono 400 / 500 ----------------------------------- */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/ibm-plex-mono-400.woff2") format("woff2");
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/ibm-plex-mono-500.woff2") format("woff2");
}

/* --- Companion · the glyphs no site family can draw ----------------------- */
/* Scoped by unicode-range so it is fetched only for these characters.       */
@font-face {
  font-family: "Orbexa Symbols";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/orbexa-symbols.woff2") format("woff2");
  unicode-range: U+207A-207B, U+207D-207F, U+2032-2033, U+2190, U+2192,
    U+2264-2265, U+2248, U+221E, U+2212, U+221A, U+2300, U+03A9, U+03BC,
    U+2116, U+2030, U+2020;
}
