/**
 * @file        fonts.css
 * @description Self-hosted brand faces — Source Serif 4 and Source Sans 3 (DESIGN.md §3)
 *
 * @author      Thomas Dobler - SYNTHETIXMIND LTD
 * @email       tom@synthetixmind.com
 * @company     SYNTHETIXMIND LTD, Paphos, Cyprus
 * @url         https://synthetixmind.com
 *
 * @uid         c17b4e90-6a25-4d83-b0f6-92e5147c8a3b
 * @version     0.0.0.1
 * @created     2026-09-14
 * @updated     2026-09-14
 *
 * @copyright   (c) 2026 by SYNTHETIXMIND LTD
 * @license     Proprietary — All rights reserved
 */

/*
 * THE BRAND FACES WERE NAMED IN tokens.css FROM THE FIRST COMMIT AND NEVER
 * SHIPPED. `--font-heading` has always read "Source Serif 4", Georgia, … and
 * `--font-body` "Source Sans 3", -apple-system, … with no @font-face anywhere
 * in the project, so every page since Sprint 0 has rendered in Georgia and
 * Segoe UI. The fallbacks are good ones, which is exactly why nothing looked
 * broken — and why the guideline's claim that the banded layout's character is
 * carried "typographically, not structurally" was not true of the built site.
 *
 * SELF-HOSTED, per DESIGN.md §3 and §13. No Google Fonts stylesheet link: that
 * is a third-party request on every page, it leaks the visitor's address to
 * another operator before any consent is collected (Story 6.1), and it puts a
 * render-blocking round trip in front of first paint.
 *
 * NOTHING HERE BLOCKS FIRST PAINT (NFR4). `font-display: swap` renders the
 * fallback immediately and repaints when the face arrives, and there is
 * deliberately no <link rel="preload">: preloading would make these four files
 * compete with the stylesheet for the first connection, which is the opposite
 * of what swap is for.
 *
 * SUBSETS. `latin` and `latin-ext` only — DESIGN.md §3 asks for Latin plus
 * Latin-Extended-A. The `unicode-range` on each face is what makes the split
 * worth having: German umlauts and ß all live in U+0000-00FF, so a page of this
 * site's own content fetches only the `latin` files (28 KB + 120 KB) and the
 * browser never requests latin-ext at all.
 *
 * WEIGHT IS A RANGE, NOT A NUMBER, because both files are variable fonts.
 * Google's API serves ONE file for weight 400 and weight 600 — the same URL for
 * both — so declaring `font-weight: 600` here would name a static instance that
 * does not exist and every browser would render the variable default instead.
 * `200 900` is the wght axis each family actually carries, and the
 * `font-weight` on a heading or a button then selects within it.
 *
 * Licence: SIL Open Font License 1.1 — assets/fonts/OFL.txt, shipped alongside
 * the files as the licence requires. Source: Adobe, via Google Fonts v19/v14.
 */

@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-sans-3-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;
}

@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-sans-3-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: "Source Serif 4";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-serif-4-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;
}

@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-serif-4-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;
}
