/* Generated by font-src/css.py - do not edit by hand.
   Run `uv run font-src/subset.py && uv run font-src/css.py` to regenerate.

   Sources are pinned in fonts.lock.json. Each family comes from a DIFFERENT
   upstream; see docs/plan.md.

   Fira Code's own family name is "Fira Code Light" and its wght axis defaults
   to 300 internally - that is upstream's naming, not a packaging mistake here.
   It does NOT mean an unset font-weight renders Light: the @font-face block
   below declares font-weight as a 300..700 RANGE, so the CSS initial value
   (400, "normal") falls inside it and an unset weight resolves to 400, not
   the font's internal default. Measured in all three engines, bit-identical
   to an explicit font-weight: 400 - src/lib/fonts/fira-code.browser.test.ts.
   The risk would only be real if this range descriptor were dropped. */



/* --- cairo --- */

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-latin.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: normal;
	font-display: swap;
	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;
}

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-latin-ext.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-symbols.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: normal;
	font-display: swap;
	unicode-range: U+2190-21FF, U+2200-22FF, U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF;
}

/* Cairo italic. The font has no italic masters - "italic" IS slnt -11 - so these
   reuse the upright files with an oblique style descriptor.

   The bare `oblique` keyword is deliberate and load-bearing. Verified in
   Chromium, WebKit and Firefox by src/lib/fonts/slant.browser.test.ts, which
   measures the actual rendered shear; results in docs/compat.md. Adding an angle
   range breaks it in two of three engines: Chromium stacks a synthetic skew on
   top of the real axis, WebKit drops the axis and synthesises instead.

   DO NOT rely on `font-style: italic` alone for correct rendering. Confirmed on
   a real iPhone XR (Safari 18.7): that engine does not perform the automatic
   font-style -> slnt mapping this descriptor enables AT ALL, pin or no pin -
   Playwright's WebKit is a different, newer build that does, which is why this
   didn't show up in the automated test suite. Set the axis directly instead:

       font-variation-settings: 'slnt' -11;

   at the use site, alongside font-style: italic if you like (harmless, purely
   semantic once the explicit value is present - it wins over any automatic
   mapping). See docs/compat.md, "The second real-device finding".

   The previous hand-written font.css used a `font-variation-settings: 'slnt' -11`
   @font-face DESCRIPTOR, which silently does nothing at all in WebKit/Safari. */

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-latin.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: oblique;
	font-display: swap;
	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;
}

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-latin-ext.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: oblique;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

@font-face {
	font-family: 'Cairo';
	src: url('/fonts/v1/Cairo-Variable-symbols.woff2') format('woff2');
	font-weight: 200 1000;
	font-style: oblique;
	font-display: swap;
	unicode-range: U+2190-21FF, U+2200-22FF, U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF;
}


/* --- ibm-plex-sans --- */

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-latin.woff2') format('woff2');
	font-weight: 100 700;
	font-style: normal;
	font-display: swap;
	font-stretch: 75% 100%;
	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;
}

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-latin-ext.woff2') format('woff2');
	font-weight: 100 700;
	font-style: normal;
	font-display: swap;
	font-stretch: 75% 100%;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-symbols.woff2') format('woff2');
	font-weight: 100 700;
	font-style: normal;
	font-display: swap;
	font-stretch: 75% 100%;
	unicode-range: U+2190-21FF, U+2200-22FF, U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF;
}

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-Italic-latin.woff2') format('woff2');
	font-weight: 100 700;
	font-style: italic;
	font-display: swap;
	font-stretch: 75% 100%;
	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;
}

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-Italic-latin-ext.woff2') format('woff2');
	font-weight: 100 700;
	font-style: italic;
	font-display: swap;
	font-stretch: 75% 100%;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

@font-face {
	font-family: 'IBM Plex Sans';
	src: url('/fonts/v1/IBMPlexSans-Variable-Italic-symbols.woff2') format('woff2');
	font-weight: 100 700;
	font-style: italic;
	font-display: swap;
	font-stretch: 75% 100%;
	unicode-range: U+2190-21FF, U+2200-22FF, U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF;
}


/* --- fira-code --- */

@font-face {
	font-family: 'Fira Code';
	src: url('/fonts/v1/FiraCode-Variable-latin.woff2') format('woff2');
	font-weight: 300 700;
	font-style: normal;
	font-display: swap;
	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;
}

@font-face {
	font-family: 'Fira Code';
	src: url('/fonts/v1/FiraCode-Variable-latin-ext.woff2') format('woff2');
	font-weight: 300 700;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

@font-face {
	font-family: 'Fira Code';
	src: url('/fonts/v1/FiraCode-Variable-symbols.woff2') format('woff2');
	font-weight: 300 700;
	font-style: normal;
	font-display: swap;
	unicode-range: U+2190-21FF, U+2200-22FF, U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF;
}
