/* ============================================================================
   fonts.css — self-hosted IBM Plex Sans + IBM Plex Mono.

   WHY SELF-HOSTED, not the Google CDN: TotaLand is an internal line-of-business
   app that must work on restricted corporate networks and behind proxies that
   may not reach fonts.googleapis.com, where a CDN font that fails to load
   silently downgrades every page to the fallback. It also removes a third-party
   request from every authenticated page load.

   WHY IBM PLEX, and why NOT Fira Sans, which shipped first and was replaced:
   Fira is narrow. MEASURED on real app content at 13px, against the
   "Helvetica Neue" stack this app used before any of this work:

       Work Sans      +3.9%
       Public Sans    -1.3%
       IBM Plex Sans  -2.5%   <- chosen
       Open Sans      -2.6%
       Noto Sans      -2.7%
       Fira Sans      -9.7%   <- replaced; reported as "too narrow", correctly
       Source Sans 3 -14.0%

   Plex lands within 2.5% of the original width, so the cramped feeling goes
   away, and it is the only candidate with a matched monospace sibling: the
   contract numbers, counts and currency columns now come from the same family
   as the interface rather than a borrowed one. Source Sans 3 is worth noting as
   the trap here -- it is the obvious "humanist UI face" pick and is in fact far
   NARROWER than the thing being replaced.

   PLEX SANS IS A VARIABLE FONT. Google serves one file per subset covering the
   whole 100-700 range -- the four static weight URLs were byte-identical (same
   md5), so shipping them separately would have meant four copies of one file.
   One @font-face per subset with a weight RANGE instead: 12 files/355 KB
   reduced to 6 files/133 KB. Plex Mono is static and does need a file per weight.

   SUBSETS: latin and latin-ext only. Cyrillic, Greek and Vietnamese omitted.
   unicode-range is preserved from the Google CSS, so a browser downloads only
   the subset a page needs.

   font-display: swap -- text paints immediately in the fallback and reflows
   when Plex arrives, rather than blocking on an invisible-text period. The
   fallback stack in --tl-font is metrically close on purpose.

   LICENCE: SIL Open Font License 1.1, see OFL.txt alongside the .woff2 files.
   Copyright (c) 2017 IBM Corp.

   Consumed via --tl-font / --tl-font-mono in tokens.css. Nothing should name
   these families directly.
   ========================================================================= */


@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-sans-var-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-sans-var-latin-ext.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;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-mono-400-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-mono-400-latin-ext.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;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-mono-500-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/css/fonts/plex/ibm-plex-mono-500-latin-ext.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;
}
