/* fonts.css — webfont faces + metric-matched fallback faces.
 *
 * Moved out of an inline <style> block in index.html so the page can ship a
 * strict Content-Security-Policy with no "unsafe-inline" for styles. The CSS is
 * byte-identical to what the inline block contained; only its delivery changed.
 *
 * URLS are relative to THIS file (dist root), so ./fonts/... resolves the same
 * for the / and /pl/ shells.
 */
      /* Variable webfonts (latin + latin-ext), byte-identical to Google's */
      @font-face {
        font-family: 'Syne';
        font-style: normal;
        font-weight: 400 800;
        font-display: swap;
        src: url(./fonts/syne-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: 'Syne';
        font-style: normal;
        font-weight: 400 800;
        font-display: swap;
        src: url(./fonts/syne-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: 'Space Grotesk';
        font-style: normal;
        font-weight: 300 700;
        font-display: swap;
        src: url(./fonts/space-grotesk-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: 'Space Grotesk';
        font-style: normal;
        font-weight: 300 700;
        font-display: swap;
        src: url(./fonts/space-grotesk-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: 'Share Tech Mono';
        font-style: normal;
        font-weight: 400;
        font-display: swap;
        src: url(./fonts/share-tech-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;
      }
      /* COCKPIT MONO — the SSH terminal face.
         Share Tech Mono (above) drives the HUD labels, but it is a LATIN-ONLY
         face: it has no ą ć ę ł ń ś ź ż and no box-drawing glyphs, so Polish
         shell output and `ls`/`tree`/`htop` frames fell back per-character to
         a different font — which in a character grid means wrong cell widths
         and a visibly desynchronised row. A terminal must resolve EVERY cell
         through ONE face, so this is a single unified subset (no
         unicode-range split) covering Latin + Latin Extended-A + box drawing +
         arrows/math + Powerline, built from JetBrains Mono (SIL OFL 1.1) with
         every multi-glyph GSUB feature removed (liga/calt/frac/…): a ligature
         that renders "->" as one cell desynchronises the whole line. Only the
         1:1 features (ccmp, locl) are kept, and all 836 glyphs share a single
         600/1000 em advance width. Regenerate with the recipe in
         scripts/terminalFont.test.mjs. */
      @font-face {
        font-family: 'Cockpit Mono';
        font-style: normal;
        font-weight: 400;
        font-display: swap;
        src: url(./fonts/cockpit-mono.woff2) format('woff2');
      }
      /* Metric-matched fallback for the terminal: the system monospace is
         reshaped to JetBrains Mono's metrics so a late/slow font swap cannot
         change the measured cell width and reflow the whole grid. */
      @font-face {
        font-family: "Cockpit Mono Fallback";
        src: local("DejaVu Sans Mono"), local("Liberation Mono"), local("Noto Sans Mono"), local("Menlo"), local("Consolas");
        font-weight: 400;
        size-adjust: 100%;
      }
      /* Metric-matched fallback faces (computed with fontaine/capsize):
         they reshape the local system font (Roboto on Android, Arial/Helvetica
         on desktop) to Syne / Space Grotesk metrics, so even a late font
         would land in identically-sized line boxes — zero font-swap shift.
         Descriptors are ignored by old browsers, which then keep the
         previous (unadjusted) fallback behavior. */
      @font-face {
        font-family: "Syne Fallback";
        src: local("Roboto"), local("Arial"), local("Helvetica Neue"), local("Helvetica"), local("Segoe UI");
        font-weight: 100 900;
        size-adjust: 98.6907%;
        ascent-override: 93.7272%;
        descent-override: 27.8648%;
        line-gap-override: 0%;
      }
      @font-face {
        font-family: "Space Grotesk Fallback";
        src: local("Roboto"), local("Arial"), local("Helvetica Neue"), local("Helvetica"), local("Segoe UI");
        font-weight: 100 900;
        size-adjust: 109.9311%;
        ascent-override: 89.5106%;
        descent-override: 26.5621%;
        line-gap-override: 0%;
      }
