/* ===========================================================================
 * Blutcher webfonts — Inter, served locally
 *
 * Loaded site-wide from inc/webfonts.php. It carries @font-face declarations
 * only: no selectors, nothing that can affect layout. Every page can rely on
 * "InterLocal" resolving, which the checkout stylesheet used to guarantee for
 * the checkout alone.
 *
 * WHY THE FAMILY IS CALLED "InterLocal" AND NOT "Inter"
 *
 * WordPress injects a broken @font-face for family "Inter", and it does so on
 * every page. Blutcher/style.css declares `Template: twentytwentyfour`, so WP
 * resolves that as the parent theme and reads its theme.json, which registers
 * four families with `file:./assets/fonts/...` sources. WP emits those URLs
 * against the STYLESHEET (child) directory rather than the parent's:
 *
 *   .../themes/Blutcher/assets/fonts/inter/Inter-VariableFont_slnt,wght.woff2  404
 *   .../themes/Blutcher/assets/fonts/cardo/cardo_normal_400.woff2              404
 *   .../themes/Blutcher/assets/fonts/cardo/cardo_italic_400.woff2              404
 *   .../themes/Blutcher/assets/fonts/cardo/cardo_normal_700.woff2              404
 *
 * The files exist — in twentytwentyfour/assets/fonts/, where the parent's
 * theme.json means them to be read from. Blutcher has no inter/ or cardo/
 * directory at all.
 *
 * That declaration is inline and lands AFTER this stylesheet, and its weight
 * range (300 900) fully contains ours (400 700), so it wins font matching and
 * then fails. The failure does NOT fall through to our faces: with both named
 * "Inter", document.fonts.load("400 14px Inter") threw "A network error
 * occurred" and our faces stayed permanently "unloaded".
 *
 * Naming ours "InterLocal" takes it out of that collision. Keep "Inter" next in
 * every font stack, so if the inherited declaration is ever fixed it still works
 * as a second source.
 *
 * ⚠ Files live in assets/webfonts/, NOT assets/fonts/. The latter is gitignored
 *   (CLAUDE.md RULE 6), so anything dropped there works on the redesign
 *   environment and silently never reaches staging or live.
 *
 * Two subsets, split on unicode-range exactly as Google serves them, so the
 * ext file is only fetched for text that needs it. Weight axis 400-700 is the
 * range actually used: 400 body, 600 labels, 700 buttons.
 *
 * font-display: swap — text paints in the fallback rather than staying
 * invisible while the font loads.
 * ========================================================================= */
@font-face {
	font-family: "InterLocal";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../webfonts/Inter-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;
}

@font-face {
	font-family: "InterLocal";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../webfonts/Inter-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;
}

/* ---------------------------------------------------------------------------
 * Special Elite — the design's `Fonts/Decoration`
 *
 * Permitted by RULE 6 as of 2026-08-28 (Mitz): Northwest, Inter and Special
 * Elite. Barlow is still substituted for Inter without asking.
 *
 * ⚠ THE FILE IS NOT IN THIS REPO, AND THAT IS FINE.
 *   `theme/Blutcher/freezer-champaign-assets/` is gitignored (binary assets), so
 *   this points at a file the theme already ships. It was verified present and
 *   byte-identical — 151068 bytes — on redesign, staging AND live before being
 *   relied on here, so the reference resolves after a replay without shipping a
 *   new binary. `docs/asset-inventory.sha256` is what tracks its integrity.
 *
 * ⚠ NAMED "SpecialEliteLocal", NOT "Special Elite" — the same trap InterLocal
 *   exists to avoid. `freezer-champaign-assets/css/style.css` already declares a
 *   family called `Specialelite` from the same .ttf, but that stylesheet is only
 *   enqueued on the campaign landing pages, so on a PDP the name resolves to
 *   nothing and falls through to a default with no error anywhere. Declaring our
 *   own name here means the PDP never depends on which other stylesheet loaded.
 *   `Specialelite` stays next in the stack so the campaign pages' copy is reused
 *   when it IS present.
 *
 * TTF, not woff2: it is what the theme already has. Roughly 3× the transfer of an
 * equivalent woff2, and it carries `font-display: swap`, so the cost is a late
 * swap on decorative copy rather than blocked text.
 * ------------------------------------------------------------------------- */
@font-face {
	font-family: "SpecialEliteLocal";
	src: url("../../freezer-champaign-assets/fonts/SpecialElite-Regular.ttf") format("truetype");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
