/*
 * fonts.css — Manifold self-hosted web fonts
 *
 * All 7 families bundled as latin-subset woff2 (one-time maintainer task;
 * these are committed static assets, NOT generated by manifold build).
 *
 * Four IBM Plex faces are preloaded in index.html with crossorigin to
 * eliminate cold-reload flash for the default theme. All other weights
 * and families load on first use (font-display: swap — shows system
 * fallback instantly, swaps when the font arrives from local disk).
 *
 * Unicode range: latin + common punctuation/symbols/currency (Google Fonts
 * "latin" subset). Hinting stripped (--no-hinting): modern screens don't
 * benefit from it, and it shaves ~10% off file size.
 *
 * License: each family ships its own OFL.txt alongside these woff2 files.
 */

/* ── IBM Plex Sans ──────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/IBM/plex (tag: @ibm/plex-sans@1.1.0)
   Weights loaded: 400 (Regular), 500 (Medium), 600 (SemiBold)
   Role: --m-font-sans on default/cozy-neutral/deep-sea/leafy-green/
         olive-garden/silver-lining/soft-pastel/vintage-romance/sunset themes
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./IBMPlexSans/IBMPlexSans-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./IBMPlexSans/IBMPlexSans-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./IBMPlexSans/IBMPlexSans-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── IBM Plex Sans Condensed ────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/IBM/plex (tag: @ibm/plex-sans-condensed@2.0.0)
   Weights loaded: 500 (Medium), 600 (SemiBold)
   Role: --m-font-display on default and most IBM-family themes
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans Condensed";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./IBMPlexSansCondensed/IBMPlexSansCondensed-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Condensed";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./IBMPlexSansCondensed/IBMPlexSansCondensed-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── IBM Plex Mono ──────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/IBM/plex (tag: @ibm/plex-mono@2.5.0)
   Weights loaded: 400 (Regular), 500 (Medium)
   Role: --m-font-mono on default and most IBM-family themes
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./IBMPlexMono/IBMPlexMono-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./IBMPlexMono/IBMPlexMono-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Orbitron ───────────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/theleagueof/orbitron
   Weights loaded: 500 (Medium), 600 (Bold — no true SemiBold in upstream),
                   700 (Bold)
   Note: Orbitron's upstream ships only Light/Medium/Bold/Black. The Bold
   file is used for both 600 and 700. The browser selects it for both
   font-weight values, matching what Google Fonts served (also no true
   SemiBold in Orbitron).
   Role: --m-font-display on the sunset synthwave theme only
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Orbitron";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./Orbitron/Orbitron-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Orbitron";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./Orbitron/Orbitron-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Orbitron";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('./Orbitron/Orbitron-Bold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Inter ──────────────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/rsms/inter (v4.1)
   Weights loaded: 400 (Regular), 500 (Medium), 600 (SemiBold)
   Role: --m-font-sans and --m-font-display on raycast + voltagent themes.
   Before Phase 123, these themes silently fell back to system sans because
   Inter was never loaded. Now they render their intended typeface.
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./Inter/Inter-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./Inter/Inter-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./Inter/Inter-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Rubik ──────────────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/googlefonts/rubik
   Weights loaded: 400 (Regular), 500 (Medium), 600 (SemiBold)
   Source: variable TTF (wght axis 300–900), instanced to static weights
   via fontTools.varLib.instancer.
   Role: --m-font-sans and --m-font-display on the sentry theme.
   Before Phase 123, sentry silently fell back to system sans.
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./Rubik/Rubik-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./Rubik/Rubik-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./Rubik/Rubik-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── JetBrains Mono ─────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/JetBrains/JetBrainsMono (v2.304)
   Weights loaded: 400 (Regular), 500 (Medium)
   layout-features="*" preserves programming ligatures (fi, fl, ->, =>, etc.)
   Role: --m-font-mono on the raycast theme. Also used wherever the codebase
   previously hardcoded "JetBrains Mono" inline — after the Phase 123 sweep
   those sites route through var(--m-font-mono), so on raycast they get
   JetBrains Mono; on default they get IBM Plex Mono.
   Before Phase 123, raycast silently fell back to system monospace.
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./JetBrainsMono/JetBrainsMono-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./JetBrainsMono/JetBrainsMono-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Source Serif 4 ─────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/adobe-fonts/source-serif
   License confirmed 2026-06-21 from:
     https://raw.githubusercontent.com/adobe-fonts/source-serif/release/LICENSE.md
   Weights loaded: 400 (Regular), 600 (SemiBold)
   Role: --m-font-display for "Editorial" look
   Subsetted: latin range, pyftsubset --no-hinting --layout-features="*"
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./SourceSerif4/SourceSerif4-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./SourceSerif4/SourceSerif4-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Nunito ─────────────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/vernnobile/NunitoFont
   License confirmed 2026-06-21 from:
     https://raw.githubusercontent.com/vernnobile/NunitoFont/master/OFL.txt
   Weights loaded: 400 (Regular), 500 (Medium), 600 (SemiBold)
   Role: --m-font-sans and --m-font-display for "Soft" look
   Subsetted: instanced from variable font at each weight,
              pyftsubset --no-hinting --layout-features="*"
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Nunito";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./Nunito/Nunito-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Nunito";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./Nunito/Nunito-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Nunito";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./Nunito/Nunito-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── DM Mono ─────────────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/google/fonts/tree/main/ofl/dmmono
   License confirmed 2026-06-21 from:
     https://github.com/google/fonts/raw/main/ofl/dmmono/OFL.txt
   Weights loaded: 400 (Regular), 500 (Medium)
   Role: --m-font-mono for "Soft", "Code First", and "Modern" looks
   Subsetted: latin range, pyftsubset --no-hinting --layout-features="*"
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "DM Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./DMMono/DMMono-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "DM Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./DMMono/DMMono-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Barlow Condensed ────────────────────────────────────────────────────────
   SIL OFL 1.1 — github.com/google/fonts/tree/main/ofl/barlowcondensed
   License confirmed 2026-07-28 from:
     https://github.com/google/fonts/raw/main/ofl/barlowcondensed/OFL.txt
   Weights loaded: 400 (Regular), 500 (Medium), 600 (SemiBold)
   Role: --m-font-display for the "Narrow" look (Karl asked for it 2026-07-28
         to try out; assign it to other roles from the font picker's role tabs)
   Subsetted: latin range, pyftsubset --no-hinting --layout-features="*"
   Converted with: .venv/bin/python tools/font_convert.py <download>
   ───────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./BarlowCondensed/BarlowCondensed-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./BarlowCondensed/BarlowCondensed-Medium.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./BarlowCondensed/BarlowCondensed-SemiBold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
