/* =====================================================================
   Instrument Sans — self-hosted variable webfont
   Single source of truth for @font-face across the whole app.

   Lives in its own file because `welcome.blade.php` (the root landing
   page) is deliberately self-contained and does not load app.css, while
   layouts/app, layouts/guest and layouts/public do. Defining the faces
   once here and linking this file from all four avoids the duplicated-
   token drift that this codebase already has elsewhere.

   Why variable + self-hosted:
   - One file covers the entire 400-700 range (30 KB latin), replacing
     four static weight files and three extra round trips.
   - No fonts.bunny.net DNS/TLS handshake on a high-latency connection,
     and the site keeps rendering correctly if that CDN is unreachable.
   - latin-ext is a separate face with its own unicode-range, so the
     extra 11 KB is only fetched when a page actually renders one of the
     characters it supplies.
   - font-display: swap paints text immediately in the fallback and
     reflows once the font arrives — the right trade-off on slow links.

   On format(): these are plain woff2 containers that happen to hold a
   variable font, so the descriptor is format('woff2'). The older
   'woff2-variations' string that font generators still emit never
   shipped in the spec, and a UA that does not recognise a format()
   string must skip that src entry entirely — silently, with no console
   error. That would drop every browser back to the system stack and
   quietly undo the whole point of self-hosting.

   On unicode-range: these are NOT the boilerplate Google/Fontsource
   ranges. Those over-declare badly — the stock latin-ext range claims
   1163 codepoints for a file holding 123, and it claims U+0131, U+0152
   and U+0153 (ı, Œ, œ) which live in the *latin* file. Because
   latin-ext is the later rule it wins those three, so typing "œuvre"
   used to pull the whole 11 KB latin-ext file and then still miss the
   glyph, rendering that one letter in the system fallback mid-word.
   The ranges below are generated from each file's actual cmap, with
   anything latin already serves removed from latin-ext, so coverage is
   exact and the two faces do not overlap at all. Regenerate with
   fontTools if the font files are ever replaced.
   ===================================================================== */

/* 208 glyphs — ASCII, Latin-1, curly quotes, dashes, currency. Every
   page hits this, so it is the one preloaded in the layouts. */
@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-display: swap;
    font-weight: 400 700;
    src: url('../fonts/instrument-sans-latin-wght-normal.woff2') format('woff2');
    unicode-range: U+0020-007E, U+00A0-00A3, U+00A5, U+00A7-00AB, U+00AE-00B0, U+00B4, U+00B6-00B8, U+00BA-00BB, U+00BF-00FF, U+0102, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+20AC, U+2122, U+2191, U+2193, U+2212;
}

/* 113 glyphs — Central/Eastern European and Welsh accents. Fetched only
   when a page actually renders one of them. */
@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-display: swap;
    font-weight: 400 700;
    src: url('../fonts/instrument-sans-latin-ext-wght-normal.woff2') format('woff2');
    unicode-range: U+0100-0101, U+0103-0107, U+010A-0113, U+0116-011B, U+011E-0123, U+0126-0127, U+012A-012B, U+012E-0130, U+0132-0133, U+0136-0137, U+0139-013E, U+0141-0148, U+014A-014D, U+0150-0151, U+0154-015B, U+015E-0161, U+0164-0165, U+016A-017E, U+01CD-01CE, U+0218-021B, U+0237, U+02C7, U+02DD, U+1E80-1E85, U+1E9E, U+1EF2-1EF3;
}
