/* ==========================================================================
   The Office — the two webfonts. Vendored, never a CDN.

   ⚠ SEPARATE FROM tokens.css ON PURPOSE. This is the only stylesheet in the
   office that references a binary asset. Keeping it apart means the SPA can
   `import "…/tokens.css"` through Vite without the bundler having to resolve,
   copy and re-hash two woff2 files that Django is already serving.

   How each surface loads it:
     Django rooms  <link rel="stylesheet" href="{% static 'fonts.css' %}">
     The SPA       <link rel="stylesheet" href="/static/fonts.css">
   Either way the woff2 is fetched once and cached for both.

   ⚠ The url() below is RELATIVE, and it has to stay relative. Whitenoise's
   CompressedManifestStaticFilesStorage rewrites relative urls inside a CSS file
   to the hashed filename at collectstatic time; an absolute /static/… url is
   left alone and would serve the unhashed copy with no long-lived caching.
   It also means collectstatic FAILS THE DEPLOY if a file named here is not
   committed — which is the behaviour we want.

   Built by `tools/tko_portal_fonts.py`. Licences: both SIL OFL 1.1, $0, with
   the full texts in `fonts/OFL-Asap.txt` and `fonts/OFL-Archivo.txt` —
   the subsetter prunes the licence string out of the font itself, so those
   files are what keeps the OFL's notice requirement met. Do not delete them.

   The UI face changed on 2026-09-02. Manny: "I like the fonts, but if it is the
   same font as linear lets use a similar but different one" — and he was right,
   Inter IS Linear's UI typeface. It is now Asap, and tools/tko_portal_fonts.py
   was repointed in the same commit, so the tool and these files agree. The
   design system's §4.1 carries the reasoning.
   ========================================================================== */

/* The UI face — Asap, every word of chrome and body copy.
   One variable file covering 300-800, so weight is a free knob and there is no
   second request for bold. 38 KB, down from Inter's 41 KB.

   ⚠ ASAP IS UNIWIDTH, AND THAT IS THE REASON IT WON. Every glyph has the SAME
   advance at every weight — verified in the binary, not read off a spec sheet:
   n H o a e s d I l 1 0 are byte-identical at wght 400 and wght 700, where
   Inter drifts about 3% and Archivo 7%. So a row that goes bold on hover,
   selection or unread does not reflow, and a list virtualised on a fixed
   --tko-row-h cannot be knocked out of measure by a font weight. Nothing else
   on the shortlist does this.

   ⚠ THE wdth AXIS IS PINNED AT 100. Asap ships wdth 75-125; the identity layer
   already owns condensed through Archivo, so a live width axis on the UI face
   is bytes with no caller — the same reasoning that pinned Inter's opsz. It
   also removes any need to carry `rvrn`.

   ⚠ ss01 is deliberately NOT in the subset: in Asap it swaps in a single-storey
   `g`, and the default is the shape that was reviewed. `tnum` and `zero` ARE
   in, and matter — dates, counts, money and the roadmap all need figures that
   do not shift width, and Asap's digits are already tabular by default (535
   units, all ten). */
@font-face{
  font-family:"Asap";
  src:url("fonts/tko-ui.woff2") format("woff2-variations"),
      url("fonts/tko-ui.woff2") format("woff2");
  font-weight:300 800;
  font-style:normal;
  font-display:swap;
  /* Latin only. Spanish accents and the inverted marks are all inside
     U+0000-00FF, so nothing bilingual is missing. */
  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+2190-2193,
    U+2212,U+2215,U+2713,U+FEFF,U+FFFD;
}

/* The display face — Archivo, the identity layer ONLY.
   ⚠ font-stretch is DECLARED as a range, which is what makes `font-stretch:75%`
   work in a rule. Omit it and the browser pins wdth at its default 100 and the
   condensed setting silently does nothing — the whole reason this face was
   chosen over a fixed-width condensed one. */
@font-face{
  font-family:"Archivo";
  src:url("fonts/tko-display.woff2") format("woff2-variations"),
      url("fonts/tko-display.woff2") format("woff2");
  font-weight:500 900;
  font-stretch:62% 100%;
  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+20AC,U+2122,U+2190-2193,
    U+2212,U+2215,U+2713,U+FEFF,U+FFFD;
}
