/*
 * SN-DESIGN-SYSTEM-001 Phase F Part B - self-hosted typefaces for the access gateway.
 *
 * These faces were previously fetched from fonts.googleapis.com / fonts.gstatic.com on every page
 * load (index.html:10-12 @ bb8b1fe: two preconnect hints and one css2 stylesheet for Figtree and
 * Public Sans). That was a render-blocking third-party request that also disclosed the visitor's IP
 * address to Google. This is the first page a prospective pharmacy sees, and it now serves its
 * typefaces same-origin.
 *
 * The three .woff2 files are byte-identical to the Zone 2 CDSS copies (sleepnav-cdss @ a5216668,
 * public/fonts/) and to the marketing copies (sleepnav-marketing @ 60197ec, public/fonts/), so all
 * three estates render from the same binaries. The sha256 sums are recorded in the Phase F Part B
 * report; nothing in any of the three repositories holds them in step automatically.
 *
 * Licensing: all three are SIL Open Font License 1.1. The OFL requires the copyright notice to
 * travel with the font, so OFL-AtkinsonHyperlegibleNext.txt, OFL-SourceSerif4.txt and
 * OFL-JetBrainsMono.txt sit beside the .woff2 files in this directory and must not be separated
 * from them.
 *
 * Provenance: upstream is the google/fonts repository, main branch, fetched 5 September 2026, all
 * three the variable roman sources. No italic file is shipped. The Google request this replaces did
 * carry an ital axis on Public Sans (0,400;0,500;0,600;0,700;1,400), but no element on this page is
 * italic, so nothing is synthesised in practice - checked, and recorded in the Part B report.
 *
 * THE src: PATHS DIFFER FROM MARKETING FOR A REASON. On marketing, public/ is the Cloudflare Pages
 * build output directory, so its fonts live at public/fonts/ and resolve at /fonts/... . THIS
 * repository has no public/ directory: index.html sits at the repository root and the root IS the
 * deployed root (verified 7 September 2026 - https://access.sleepnav.com/README.md returns the
 * repository's own README.md as text/markdown). So the files live at fonts/ here, and /fonts/...
 * resolves to the same URL. Moving them under public/ would serve them at /public/fonts/... and
 * every face would silently fail to load.
 *
 * JetBrains Mono is shipped and declared although this page sets no monospace text today. That
 * matches marketing and keeps the three-file set whole; @font-face costs no download until a rule
 * actually asks for the family.
 *
 * The unicode-range below is the union of the Google Fonts 'latin' and 'latin-ext' subsets - the
 * exact coverage this page had before self-hosting. It deliberately reaches past Latin Extended-A
 * into Latin Extended-B: Romanian s-comma (U+0219) and t-comma (U+021B) live at U+0180-024F, so a
 * strict Latin + Latin Extended-A subset would have silently dropped Romanian diacritics.
 */

@font-face {
    font-family: 'Atkinson Hyperlegible Next';
    src: url('/fonts/atkinson-hyperlegible-next-latin.woff2') format('woff2-variations');
    font-weight: 200 800;
    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,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: 'Source Serif 4';
    src: url('/fonts/source-serif-4-latin.woff2') format('woff2-variations');
    font-weight: 200 900;
    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,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: 'JetBrains Mono';
    src: url('/fonts/jetbrains-mono-latin.woff2') format('woff2-variations');
    font-weight: 100 800;
    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,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;
}

/*
 * THE DESIGN TOKENS, carried over from the CDSS (sleepnav-cdss @ a5216668, resources/css/app.css
 * @theme keys) by way of marketing's public/fonts/fonts.css @ 60197ec, which is the same block.
 *
 * Note on the CDSS's own guard, so a later reader does not go looking in the wrong place: the
 * estate's real check is a PHPUnit test at sleepnav-cdss tests/Unit/NoRemoteFontsGuardTest.php:44
 * (`private const FORBIDDEN = '/fonts\.(?:googleapis|gstatic)\.com/i';`), scoped at :48 to the
 * resources/ tree only. Marketing's fonts.css:10 names a scripts/check-fonts.sh that does not
 * exist in that repository - see the Part B report. Nothing of either kind exists here.
 *
 * There they are Tailwind v4 @theme keys; here there is no build step and no Tailwind, so they are
 * plain custom properties on :root. The names and values are identical, so the three estates share
 * one vocabulary.
 *
 * NOTHING IS MIGRATED TO THEM. None of these names is used anywhere in this repository today, so
 * declaring them cannot restyle anything. No colour, size, weight, margin or radius on this page is
 * changed by this block. It is vocabulary for later work to build against.
 *
 * TYPE SCALE, NAMED BY ROLE so a template cannot pick a size for appearance.
 */
:root {
    --text-display: 2.5rem;            /* 40 / 44 - page title, one per page */
    --text-display--line-height: 2.75rem;
    --text-title: 1.75rem;             /* 28 / 34 - section heading */
    --text-title--line-height: 2.125rem;
    --text-subtitle: 1.25rem;          /* 20 / 28 - sub-section, card heading */
    --text-subtitle--line-height: 1.75rem;
    --text-body: 1rem;                 /* 16 / 26 - default */
    --text-body--line-height: 1.625rem;
    --text-support: 0.875rem;          /* 14 / 20 - helper text, metadata, table cells */
    --text-support--line-height: 1.25rem;
    --text-micro: 0.75rem;             /* 12 / 16 - badges, timestamps, legal footnotes */
    --text-micro--line-height: 1rem;

    /* RADIUS. */
    --radius-control: 0.5rem;          /* 8px  - buttons, inputs, anything you click or type in */
    --radius-panel: 0.75rem;           /* 12px - cards, panels, modals */
    --radius-pill: 9999px;             /* badges, chips, avatars */

    /* ELEVATION. One shadow, deliberately. */
    --shadow-panel: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
}

/*
 * The --<name>--line-height double-hyphen suffix is Tailwind v4's convention for attaching a
 * line-height to a --text-* key. With no Tailwind here nothing pairs them automatically: write
 * both, e.g. font-size: var(--text-title); line-height: var(--text-title--line-height);
 *
 * SPACING IS DELIBERATELY NOT DECLARED HERE, matching the CDSS and marketing.
 */
