/* ============================================================
   KOBA — fonts.css  (self-hosted)
   ============================================================
   Manrope and IBM Plex Mono are served from this origin instead of
   fonts.googleapis.com + fonts.gstatic.com. Three reasons, in order:

   1. CSP. Self-hosting removes two external origins from `style-src` and
      `font-src` entirely — the policy gets to stay `'self'` for both.
   2. Render-blocking. The Google Fonts stylesheet was loaded with the
      `media="print" onload="this.media='all'"` trick, which CSP forbids because
      it is an inline handler. Removing the trick made the stylesheet
      render-blocking on every page; serving the faces from here removes the
      extra stylesheet, the DNS lookup and the TLS handshake instead.
   3. One request fewer and no third party in the critical path.

   Only the cyrillic, cyrillic-ext and latin subsets are kept: the site is
   Ukrainian, and greek / vietnamese / latin-ext were ~40% of the bytes for
   glyphs no page can render. The hryvnia sign ₴ (U+20B4) lives in cyrillic-ext,
   which is why that subset is NOT optional here.

   Both families are SIL Open Font License 1.1 — self-hosting is permitted.
   `font-display: swap` keeps text visible while a face loads.

   Regenerating: fetch the css2 URL with a desktop User-Agent (it serves woff2
   only to browsers that support it), keep these three subsets, download each
   woff2 into assets/fonts/ and rewrite the src to a local path.
   ============================================================ */


/* IBM Plex Mono — cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/ibm-plex-mono-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* IBM Plex Mono — cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/ibm-plex-mono-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

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

/* Manrope — cyrillic-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/manrope-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* Manrope — cyrillic */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/manrope-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* Manrope — latin */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/manrope-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;
}
