/* Self-hosted type, shared by the application and the public site.

   Why this file exists at all: the Arabic stack used to be a *request*. The
   stylesheets named "Noto Sans Arabic" and hoped the operating system had it —
   which Android usually does, Windows usually does not, and iOS answers with a
   third face entirely. So the same Arabic screen had three appearances and
   none of them was the one it was designed against. The public site made it
   worse by asking for Tahoma first, so the marketing page and the product were
   set in two different Arabic faces and the brand had no consistent voice in
   its primary language.

   IBM Plex Sans and IBM Plex Sans Arabic are one design across both scripts —
   the Arabic is not a bolted-on companion, it shares the skeleton, weight and
   rhythm — so an Arabic screen and an English screen are finally the same
   product. It also suits the subject: Plex has an engineered, instrument-panel
   character that fits a product full of hectares, NDVI values and timestamps,
   and its figures are properly tabular.

   Served from this origin, not a CDN. `public_base.html` states the rule —
   "No analytics, no third-party fonts" — and that rule is right; self-hosting
   is how the face becomes a guarantee without breaking it.

   `unicode-range` means a reader downloads only their own script: ~76 KB of
   Latin for an English visitor, ~43 KB for an Arabic one, never the 216 KB on
   disk. `font-display: swap` because this is read on a field connection —
   text appears immediately in the fallback and swaps when the face lands,
   which is the right trade when the alternative is invisible text.

   IBM Plex is licensed under the SIL Open Font License 1.1; see OFL.txt in
   this directory. */

/* ---- Latin: one variable file, weights 100-700 on the wght axis ---- */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url("fonts/ibm-plex-sans-latin-wght.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;
}

/* Turkish needs this one: ğ U+011F and ş U+015F live here, not in `latin`
   (ı U+0131 is the exception and is named above). Spanish and Italian are
   covered by `latin` alone, but a Turkish screen without this file falls back
   mid-word. */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url("fonts/ibm-plex-sans-latin-ext-wght.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* ---- Arabic: static weights, because Plex Sans Arabic has no variable build.
   Three of them, matching what the stylesheets actually ask for: 400 body,
   600 for the semibold range (600/650/680 all round here), 700 headings. ---- */
@font-face {
  font-family: "IBM Plex Sans Arabic";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/ibm-plex-sans-arabic-400.woff2") format("woff2");
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891,
    U+0898-08E1, U+08E3-08FF, U+FB50-FDFF, U+FE70-FEFF, U+102E0-102FB,
    U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/ibm-plex-sans-arabic-600.woff2") format("woff2");
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891,
    U+0898-08E1, U+08E3-08FF, U+FB50-FDFF, U+FE70-FEFF, U+102E0-102FB,
    U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/ibm-plex-sans-arabic-700.woff2") format("woff2");
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891,
    U+0898-08E1, U+08E3-08FF, U+FB50-FDFF, U+FE70-FEFF, U+102E0-102FB,
    U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
