/*
 * IBM Plex Mono
 * License: SIL Open Font License 1.1
 * Source: https://fonts.google.com/specimen/IBM+Plex+Mono
 *
 * Available weights: 400 (Regular), 500 (Medium), 700 (Bold)
 * Missing weights: 600 (SemiBold) — not included in this preset
 */

@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexMono-Regular.woff2') format('woff2');
}

@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('IBMPlexMono-Medium.woff2') format('woff2');
}

@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('IBMPlexMono-Bold.woff2') format('woff2');
}

/* --- WireKit fallback face — generated, do not edit by hand --- */
/*
 * Registers the local system font under its own name with IBM Plex Mono's
 * metrics, so the text painted before the swap occupies the same box as
 * the text painted after it. Measured against Courier New; regenerate with
 * `python3 scripts/generate-font-fallbacks.py`.
 */
@font-face {
    font-family: 'IBM Plex Mono Fallback';
    src: local('Courier New'), local('Courier'), local('Liberation Mono');
    size-adjust: 99.98%;
    ascent-override: 102.52%;
    descent-override: 27.5%;
    line-gap-override: 0.0%;
}

/*
 * The advance of the digit zero in IBM Plex Mono, in em. `ch` is defined as exactly
 * this, so a box measured in `ch` changes width when the swap happens -- and
 * size-adjust above does NOT prevent it, because it corrects a different ratio:
 * a frequency-weighted mean over 27 characters, which is what keeps a paragraph
 * the same length. A token that wants a stable `ch` measure multiplies by this
 * rather than using `ch` directly.
 */
:root {
    --ch-wk-mono: 0.6em;
}
/* --- end WireKit fallback face --- */
