/* =============================================================================
 * Self-hosted webfonts for execguard.dev
 * -----------------------------------------------------------------------------
 * These families used to be pulled from fonts.googleapis.com / fonts.gstatic.com.
 * That is a privacy problem, not a performance one: every visitor's IP address
 * was transmitted to Google before a single pixel rendered. LG Munchen I ruled
 * that unlawful without prior consent (3 O 17493/20), and the operator of this
 * site is established in the EU. The files are now served same-origin, so the
 * site makes zero third-party requests on page load.
 *
 * Licence
 *   Both families are licensed under the SIL Open Font License 1.1, which
 *   permits self-hosting but requires the licence and copyright notices to
 *   travel with the fonts. The full text of both is in the sibling file
 *       /assets/fonts/OFL.txt
 *   Keep that file deployed. Do not strip it from the build output.
 *
 * Provenance
 *   Downloaded from fonts.gstatic.com (family version v20 for both) using the
 *   css2 API with a modern desktop Chrome User-Agent, which is what makes
 *   Google hand back woff2 rather than legacy ttf. Every file was verified to
 *   start with the WOFF2 magic number wOF2 (0x774F4632).
 *
 * Subsetting
 *   latin and latin-ext only. Everything the site actually renders today lives
 *   in the latin subset: the copy is ASCII apart from U+2014 EM DASH and
 *   U+2212 MINUS SIGN, both of which the latin range covers. latin-ext is kept
 *   as a second face purely so European names and accented words degrade to
 *   the real typeface instead of a fallback. Because each face declares a
 *   unicode-range, the browser only downloads a subset it actually needs, so
 *   latin-ext costs nothing until a glyph in that range is painted. The
 *   cyrillic, cyrillic-ext, greek and vietnamese subsets Google served were
 *   deliberately dropped.
 *
 * Manrope is a variable font: one file per subset covers the whole 200-800
 * weight axis, so weights 400/500/600/700/800 all resolve out of a single
 * download. That is why there is one face per subset here rather than five.
 * IBM Plex Mono is not variable, so it ships as static instances at the three
 * weights the pages ask for (400, 500, 600).
 *
 * font-display: swap matches the behaviour the Google stylesheet requested, so
 * text stays visible during the font load rather than blocking on it.
 * ============================================================================= */

/* -------------------------------------------------------------------------
 * Manrope - variable, weight axis 200..800, upright
 * ------------------------------------------------------------------------- */

/* latin */
@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url("/assets/fonts/manrope-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;
}

/* latin-ext */
@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url("/assets/fonts/manrope-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;
}

/* -------------------------------------------------------------------------
 * IBM Plex Mono - static instances, upright
 * ------------------------------------------------------------------------- */

/* 400 latin */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("/assets/fonts/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;
}

/* 400 latin-ext */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("/assets/fonts/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;
}

/* 500 latin */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("/assets/fonts/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;
}

/* 500 latin-ext */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("/assets/fonts/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;
}

/* 600 latin */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("/assets/fonts/ibm-plex-mono-600-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;
}

/* 600 latin-ext */
@font-face {
    font-family: "IBM Plex Mono";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("/assets/fonts/ibm-plex-mono-600-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;
}
