/* PROSE — self-hosted type. GENERATED, do not hand-edit.
 *
 * Every face the app can render is served from this origin: no request ever leaves for
 * a font CDN, at build time or at runtime. That is a hard requirement for the desktop
 * build, which must render identically with no network at all.
 *
 * Sources: the Fontsource packages (npm) for the Google originals, and the author's own
 * files for the Fontshare ones. Either way the vendored copy under public/fonts/<family>/
 * IS the source of record now — the design folder those arrived in is no longer in the
 * repo, and every licence sits beside the files it covers.
 * Only the `latin` and `latin-ext` cuts are vendored, and only the styles a layout can
 * actually reach — an italic cut is not vendored for a face that only ever sets titles. Each family's SIL Open Font
 * License sits beside its files in public/fonts/<family>/OFL.txt.
 *
 * The family names here are the PLAIN ones the app's stacks already reference
 * ('Nunito', not Fontsource's 'Nunito Variable'), so themes.ts is unaffected.
 *
 * A declared @font-face costs nothing until something renders in it — the browser
 * fetches a face only when it is actually used. That is what let the runtime
 * Google-Fonts <link> loader go away entirely.
 */

/* KEEP THROUGH THE NEXT AUDIT. Caveat's only consumer today is ExplorePanel, and that
   panel is being rebuilt around Becky's UI — when it goes, an audit will read Caveat as
   dead and it is not. The author is holding it for Becky's NOTES, a hand for the margin
   where the rest of the book is set. If it is still unused once Becky's surface lands,
   that is the moment to ask again, not before. */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-400-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-500-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-600-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-ext-400-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-ext-500-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/caveat/caveat-latin-ext-600-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Anton';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/anton/anton-latin-400-normal.woff2') format('woff2');
}

@font-face {
  font-family: 'Anton';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/anton/anton-latin-ext-400-normal.woff2') format('woff2');
}



@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fonts/source-serif-4/source-serif-4-latin-ext-wght-normal.woff2') format('woff2-variations');
  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('/fonts/source-serif-4/source-serif-4-latin-wght-normal.woff2') format('woff2-variations');
  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: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fonts/source-serif-4/source-serif-4-latin-ext-wght-italic.woff2') format('woff2-variations');
  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: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fonts/source-serif-4/source-serif-4-latin-wght-italic.woff2') format('woff2-variations');
  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: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/fonts/playfair-display/playfair-display-latin-ext-wght-normal.woff2') format('woff2-variations');
  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: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/fonts/playfair-display/playfair-display-latin-wght-normal.woff2') format('woff2-variations');
  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: 'Playfair Display';
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url('/fonts/playfair-display/playfair-display-latin-ext-wght-italic.woff2') format('woff2-variations');
  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: 'Playfair Display';
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url('/fonts/playfair-display/playfair-display-latin-wght-italic.woff2') format('woff2-variations');
  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: 'Nunito';
  font-style: normal;
  font-weight: 200 1000;
  font-display: swap;
  src: url('/fonts/nunito/nunito-latin-ext-wght-normal.woff2') format('woff2-variations');
  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: 'Nunito';
  font-style: normal;
  font-weight: 200 1000;
  font-display: swap;
  src: url('/fonts/nunito/nunito-latin-wght-normal.woff2') format('woff2-variations');
  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: 'Nunito';
  font-style: italic;
  font-weight: 200 1000;
  font-display: swap;
  src: url('/fonts/nunito/nunito-latin-ext-wght-italic.woff2') format('woff2-variations');
  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: 'Nunito';
  font-style: italic;
  font-weight: 200 1000;
  font-display: swap;
  src: url('/fonts/nunito/nunito-latin-wght-italic.woff2') format('woff2-variations');
  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: 'Open Sans';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url('/fonts/open-sans/open-sans-latin-ext-wght-normal.woff2') format('woff2-variations');
  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: 'Open Sans';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url('/fonts/open-sans/open-sans-latin-wght-normal.woff2') format('woff2-variations');
  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: 'Open Sans';
  font-style: italic;
  font-weight: 300 800;
  font-display: swap;
  src: url('/fonts/open-sans/open-sans-latin-ext-wght-italic.woff2') format('woff2-variations');
  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: 'Open Sans';
  font-style: italic;
  font-weight: 300 800;
  font-display: swap;
  src: url('/fonts/open-sans/open-sans-latin-wght-italic.woff2') format('woff2-variations');
  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;
}

/* ── Classic-theme faces ───────────────────────────────────────────────────
   The title and text choices the Classic layout offers. Fontshare families under
   the Free Font EULA (LICENSE-Fontshare.txt beside each), self-hosted like the rest —
   nothing here is fetched.

   Coverage is what each family actually ships, not what would be tidy: Boska, Erode and
   Recia have variable upright AND italic; Gambarino is a single Regular. A missing italic
   is synthesised by the browser rather than faked here with a wrong file.

   Melodrama was vendored here and removed: its hairlines would not hold at title size at
   any weight. Recoverable from git if it ever suits a lighter-contrast use. */

@font-face {
  font-family: 'Gambarino';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/gambarino/Gambarino-Regular.woff2') format('woff2');
  size-adjust: 88.2%;
}

@font-face {
  font-family: 'Erode';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/erode/Erode-Variable.woff2') format('woff2');
  size-adjust: 90.4%;
}

@font-face {
  font-family: 'Erode';
  font-style: italic;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/erode/Erode-VariableItalic.woff2') format('woff2');
  size-adjust: 90.4%;
}

@font-face {
  font-family: 'Recia';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/recia/Recia-Variable.woff2') format('woff2');
  size-adjust: 77.4%;
}

@font-face {
  font-family: 'Recia';
  font-style: italic;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/recia/Recia-VariableItalic.woff2') format('woff2');
  size-adjust: 77.4%;
}

/* Inter as a READING face. Same file the interface uses, aliased under its own family so
   the size-adjust below touches only running prose — putting it on the shared Inter would
   have shrunk every panel, dock and label in the app.

   The size-adjusts here answer one measurement, but NOT the same one for every face —
   because a page of prose and a chapter title are read by different metrics.

   READING faces (Erode, Recia, Inter Text) match EB Garamond's X-HEIGHT: 0.405 em against
   their own 0.448–0.516. Set at the same px they would read up to 29% larger and carry the
   pagination with them.

   TITLE faces (Boska, Gambarino, Melodrama) match its CAP-HEIGHT instead. Normalised on
   x-height they came out 8.6% to 15.1% short in the capitals — and a title is capitals and
   ascenders, so it simply looked undersized beside Garamond. Measured in-page, not
   estimated. */
@font-face {
  font-family: 'Inter Text';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/inter/Inter-Variable.woff2') format('woff2');
  size-adjust: 78.5%;
}

@font-face {
  font-family: 'Inter Text';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/inter/Inter-VariableItalic.woff2') format('woff2');
  size-adjust: 78.5%;
}

/* Recia as a TITLE face. Same files as the reading Recia, aliased so the two can carry
   different parities: a column of prose matches EB Garamond's x-height, a title matches
   its CAP-height. One @font-face cannot be both, and sharing one would have left the
   title 11% short in the capitals — the exact fault this pair of aliases exists to avoid.
   0.653 / 0.750 = 87.1%. */
@font-face {
  font-family: 'Recia Title';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/recia/Recia-Variable.woff2') format('woff2');
  size-adjust: 87.1%;
}

@font-face {
  font-family: 'Recia Title';
  font-style: italic;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/recia/Recia-VariableItalic.woff2') format('woff2');
  size-adjust: 87.1%;
}

/* Literata as a TITLE face. Vendored here since the pre-EB-Garamond era (its OFL sits
   beside the files) but declared nowhere until now. Aliased like the other title faces so
   it can match EB Garamond's CAP-height: 0.654 / 0.730 = 89.6%, measured in-page. Note
   that is NOT the 0.529 x-height recorded in app/fonts.ts — a title is capitals, and the
   two metrics give different answers. */
@font-face {
  font-family: 'Literata Title';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fonts/literata/Literata-Variable.woff2') format('woff2');
  size-adjust: 89.6%;
}


/* ── PULP-theme title faces ────────────────────────────────────────────────
   Bebas Neue under the SIL OFL, Comico and Tanker under the Fontshare Free Font EULA —
   each licence sits beside its files, and each is a single Regular. Khand was here and
   was replaced by Anton on the author's call; Anton is declared further up, at natural
   scale, because it is this layout's own face and therefore the thing the other three are
   measured against.

   PARITY IS MEASURED AGAINST ANTON HERE, not EB Garamond: Anton is what the PULP layout
   sets its titles in, and a face swap must not move the page it lands on. Anton is a
   compressed poster face with an unusually tall 0.859 cap; these four run 0.672–0.798,
   hence adjustments well ABOVE 100% where Classic's sat below. Measured in-page. */

@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bebas-neue/BebasNeue-Regular.woff2') format('woff2');
  size-adjust: 122.8%;
}

@font-face {
  font-family: 'Comico';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/comico/Comico-Regular.woff2') format('woff2');
  size-adjust: 107.7%;
}


@font-face {
  font-family: 'Tanker';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/tanker/Tanker-Regular.woff2') format('woff2');
  size-adjust: 114.6%;
}

/* ── MODERN-theme title faces ──────────────────────────────────────────────
   General Sans, Quilon, Technor and Trench Slab, all under the Fontshare Free Font
   EULA (FFL.txt beside each family's files). Each ships a variable weight axis, so
   one file covers every weight the layout may ask for.

   PARITY IS MEASURED AGAINST PLAYFAIR DISPLAY HERE, not EB Garamond or Anton: Playfair
   is what the MODERN layout sets its titles in, and swapping the face must not move the
   page the chapter opening lands on. Cap height, not x-height — a title is read by its
   capitals. Measured in-page. */

@font-face {
  font-family: 'General Sans';
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url('/fonts/general-sans/GeneralSans-Variable.woff2') format('woff2');
  size-adjust: 98.0%;
}

@font-face {
  font-family: 'General Sans';
  font-style: italic;
  font-weight: 200 700;
  font-display: swap;
  src: url('/fonts/general-sans/GeneralSans-VariableItalic.woff2') format('woff2');
  size-adjust: 98.0%;
}

@font-face {
  font-family: 'Quilon';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fonts/quilon/Quilon-Variable.woff2') format('woff2');
  size-adjust: 119.8%;
}

@font-face {
  font-family: 'Technor';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fonts/technor/Technor-Variable.woff2') format('woff2');
  size-adjust: 112.4%;
}

@font-face {
  font-family: 'Trench Slab';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/trench-slab/TrenchSlab-Variable.woff2') format('woff2');
  size-adjust: 101.4%;
}

/* Both aliases carry the italic cut, and it is not decoration: PROSE stores no inline
   italic in the prose at all, but the chapter QUOTE zone is set italic by every layout
   that has one, in the reading face. With General Sans chosen there — Modern and Lovely
   both offer it — the quote and its attribution were being obliqued by the browser, a
   mechanical skew of the upright, on every chapter opening. The real italic is 37 KB.
   Each alias keeps its own size-adjust: the parities differ, the file does not. */

/* General Sans a SECOND time, aliased for running prose. Same file, different parity:
   the title alias above answers to Playfair's CAP height, this one to EB Garamond's
   x-height (Modern's body face), because a reading size is judged by lowercase and a
   title by capitals. One family cannot carry both — the same reason 'Inter Text' and
   'Recia Title' exist. General Sans has a large x-height (0.530 against EB Garamond's
   0.465), so this alias sets it SMALLER, not larger. */
@font-face {
  font-family: 'General Sans Text';
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url('/fonts/general-sans/GeneralSans-Variable.woff2') format('woff2');
  size-adjust: 87.7%;
}

@font-face {
  font-family: 'General Sans Text';
  font-style: italic;
  font-weight: 200 700;
  font-display: swap;
  src: url('/fonts/general-sans/GeneralSans-VariableItalic.woff2') format('woff2');
  size-adjust: 87.7%;
}

/* ── LOVELY-theme title faces ──────────────────────────────────────────────
   Meow Script, Mynerve and Shadows Into Light Two — three hands, all SIL OFL, each a
   single Regular (a hand has no weight axis; the browser would fake anything else).
   Playfair Display is Lovely's fourth title choice and is already declared above.

   PARITY IS NOT MEASURED AGAINST SACRAMENTO, Lovely's outgoing face, on the author's
   instruction: its own size was never resolved, so anchoring to it would have propagated
   15.6px lowercase, against 30.4/20.4 for a chapter title that works — 24% too large on
   one axis and 24% too small on the other, in OPPOSITE directions. No single scale fixes
   that, which is exactly why it stayed broken.

   The anchor is instead an absolute, balanced target: the optical size of Classic's
   chapter title (Sentient at 42.869px) — cap 30.44px, x-height 20.36px. Each face here is
   set to the GEOMETRIC MEAN of the two corrections, the scale that misses cap parity and
   x parity by the same proportion. Cap alone is not enough in a mixed-case script: these
   run cap-to-x ratios from 1.34 to 1.75, so matching capitals alone leaves the lowercase
   anywhere. */

@font-face {
  font-family: 'Meow Script';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/meow-script/meow-script-latin-400-normal.woff2') format('woff2');
  size-adjust: 98.8%;
}

@font-face {
  font-family: 'Mynerve';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/mynerve/mynerve-latin-400-normal.woff2') format('woff2');
  size-adjust: 85.9%;
}

@font-face {
  font-family: 'Shadows Into Light Two';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/shadows-into-light-two/shadows-into-light-two-latin-400-normal.woff2') format('woff2');
  size-adjust: 66.9%;
}

/* Playfair Display a second time, aliased for Lovely's TITLE slot. The plain family keeps
   its natural scale — Modern's titles and Lovely's own chapter label are set in it and must
   not move. This alias exists only so Playfair can stand beside the three hands at the same
   'Inter Text' and 'Recia Title' exist. */
@font-face {
  font-family: 'Playfair Title';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/fonts/playfair-display/playfair-display-latin-wght-normal.woff2') format('woff2');
  size-adjust: 79.7%;
}

/* ── MINIMAL-theme faces ───────────────────────────────────────────────────
   Satoshi and Switzer, Fontshare Free Font EULA, joining Nunito as Minimal's second and
   third faces. One family covers the WHOLE layout there — chapter label, title and
   running prose — so each of these is declared once and does all three jobs.

   THE WEIGHT AXIS IS CLAMPED TO 300-400 on the author's instruction: Light and Regular,
   nothing else. Both files carry far more (Switzer runs 100-900), and a variable font
   offers every weight in its range to anything that asks. Declaring the narrow range is
   what makes a stray `font-weight: 700` land on Regular instead of quietly introducing a
   Bold the layout never sanctioned. Minimal sets its title at 300 and its prose at 400,
   which is the entire range it is allowed.

   Parity is measured against NUNITO, Minimal's own face, ON X-HEIGHT — including for the
   title, which departs from the rule everywhere else. Two reasons, and they point the same
   way. Minimal's title is mixed case, so capitals are a minority of it; and the same file
   sets the running prose, where x-height is what a reader judges size by and what decides
   where lines break. Satoshi makes the choice moot — its ratios match Nunito's to within
   2%. Switzer does not: its x-height runs 10% larger, so cap parity and x parity disagree
   by 14%. Matched on x it lands within 2% of Nunito's ink over a full line of prose, which
   is the confirmation that the right axis was picked; its capitals then sit shorter, and
   that is Switzer's design rather than a size error. */

@font-face {
  font-family: 'Satoshi';
  font-style: normal;
  font-weight: 300 400;
  font-display: swap;
  src: url('/fonts/satoshi/Satoshi-Variable.woff2') format('woff2');
  size-adjust: 100%;
}

@font-face {
  font-family: 'Satoshi';
  font-style: italic;
  font-weight: 300 400;
  font-display: swap;
  src: url('/fonts/satoshi/Satoshi-VariableItalic.woff2') format('woff2');
  size-adjust: 100%;
}

@font-face {
  font-family: 'Switzer';
  font-style: normal;
  font-weight: 300 400;
  font-display: swap;
  src: url('/fonts/switzer/Switzer-Variable.woff2') format('woff2');
  size-adjust: 90.9%;
}

@font-face {
  font-family: 'Switzer';
  font-style: italic;
  font-weight: 300 400;
  font-display: swap;
  src: url('/fonts/switzer/Switzer-VariableItalic.woff2') format('woff2');
  size-adjust: 90.9%;
}
