/* Generated by scripts/fonts.mjs — DO NOT EDIT (byte-locked in fonts.lock.json).
 * App: idea-weaver
 * Manifest: apps/idea-weaver/fonts.manifest.json (sha256 7601c83b00f41347febea4fd0ea813be3e2444419372f8746f30cd57ca18c4e9)
 * Pipeline: node scripts/fonts.mjs build idea-weaver
 * Toolchain: venv /home/johannes/.local/share/jreb-fonts/venv/bin/python
 *   fontTools 4.68.0 · brotli 1.2.1 · uharfbuzz 0.57.0 (python 3.14.8)
 *   pinned by reports/impeccable-fix-wave-2026-10/ops/requirements.lock (#3630 fix floor ≥4.66)
 * SOURCE_DATE_EPOCH: 1761000000 (manifest-pinned — reproducible, not commit time)
 * unicode-range: derived from each built font's own cmap (never copied Google strings).
 * Subsets of OFL fonts are Modified Versions: name IDs kept, licence shipped,
 * no --obfuscate-names. Per-family provenance:
 *   - IBM Plex Sans 400 normal (ibm-plex-sans-400) source=fonts-src/IBMPlexSans-Regular.ttf sha256=6dbe082463cf749cfa057d45c3048c90f4df031496498e5b5bdfd0b6babb9d16 out=ibm-plex-sans-400-5fc06224dbaf.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Sans", RFN note: IBM Corp. Reserved Font Name "Plex" — subsetting is a Modified Version; unmodified OFL 1.1 permits distribution of the Modified Version under the same licence provided the RFN is not used in the modified name (the emitted family name keeps "IBM Plex" per the CSS contract; see lane report))
 *   - IBM Plex Sans 500 normal (ibm-plex-sans-500) source=fonts-src/IBMPlexSans-Medium.ttf sha256=6f7a8c4219e021ff7c9131bc5f1f7af97bcd1436a59578d444a8cb92e9791742 out=ibm-plex-sans-500-acbfdec24c14.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Sans", RFN note: IBM Corp. Reserved Font Name "Plex" — see ibm-plex-sans-400)
 *   - IBM Plex Sans 600 normal (ibm-plex-sans-600) source=fonts-src/IBMPlexSans-SemiBold.ttf sha256=5311c66fd6d04ae45671236f7eae667b671c06c1dc7e88d52c206e5fadd0fb21 out=ibm-plex-sans-600-e0aaebaef7f6.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Sans", RFN note: IBM Corp. Reserved Font Name "Plex" — see ibm-plex-sans-400)
 *   - IBM Plex Sans 700 normal (ibm-plex-sans-700) source=fonts-src/IBMPlexSans-Bold.ttf sha256=e129a20e8ff7c907ffd07124b573e88c323b7b18afc934d4aa539a3e0f2fe100 out=ibm-plex-sans-700-f80c18b2d706.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Sans", RFN note: IBM Corp. Reserved Font Name "Plex" — see ibm-plex-sans-400)
 *   - IBM Plex Mono 400 normal (ibm-plex-mono-400) source=fonts-src/IBMPlexMono-Regular.ttf sha256=a7fdc993f9f0387caedba4e42521136fa97e4c0837ae6239bf0413ccf8af00c2 out=ibm-plex-mono-400-c5eb3086482a.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Mono", RFN note: IBM Corp. Reserved Font Name "Plex" — see ibm-plex-sans-400)
 *   - IBM Plex Mono 500 normal (ibm-plex-mono-500) source=fonts-src/IBMPlexMono-Medium.ttf sha256=4fc14a73ca53ba9d32fd759ae1ca1a3133326035d0dd337862b3ee1633cc156e out=ibm-plex-mono-500-adc8ded87464.woff2
 *       licence: fonts-src/OFL.txt (family "IBM Plex Mono", RFN note: IBM Corp. Reserved Font Name "Plex" — see ibm-plex-sans-400)
 */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./ibm-plex-sans-400-5fc06224dbaf.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./ibm-plex-sans-500-acbfdec24c14.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./ibm-plex-sans-600-e0aaebaef7f6.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("./ibm-plex-sans-700-f80c18b2d706.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./ibm-plex-mono-400-c5eb3086482a.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./ibm-plex-mono-500-adc8ded87464.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02BB-02BC, U+02C6-02C7, U+02D8-02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212;
}
