/* Self-hosted web fonts (2026-09-11). These used to load from Google Fonts,
   which told Google the IP address of every visitor on every page. Each .woff2
   here is byte-identical to the file in its npm package, latin and latin-ext
   subsets only, with the version in its name. License (SIL Open Font License)
   beside each family. To upgrade: npm pack the new version, copy the files
   under their new names, update this file, delete the old ones, and bump
   CACHE_VERSION in sw.js.
     @fontsource-variable/dm-sans 5.3.0
     @fontsource-variable/cormorant-garamond 5.3.0
     @fontsource-variable/jost 5.3.0
     @fontsource/dm-mono 5.3.0 (300, 400, 500)
     @fontsource-variable/caveat 5.3.0 (marketing only) */
@font-face { font-family: 'DM Sans'; font-style: normal; font-display: swap; font-weight: 100 1000; src: url('/fonts/dm-sans-5.3.0-latin-ext-wght-normal.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: 'DM Sans'; font-style: normal; font-display: swap; font-weight: 100 1000; src: url('/fonts/dm-sans-5.3.0-latin-wght-normal.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: 'Jost'; font-style: normal; font-display: swap; font-weight: 100 900; src: url('/fonts/jost-5.3.0-latin-ext-wght-normal.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: 'Jost'; font-style: normal; font-display: swap; font-weight: 100 900; src: url('/fonts/jost-5.3.0-latin-wght-normal.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: 'Caveat'; font-style: normal; font-display: swap; font-weight: 400 700; src: url('/fonts/caveat-5.3.0-latin-ext-wght-normal.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: 'Caveat'; font-style: normal; font-display: swap; font-weight: 400 700; src: url('/fonts/caveat-5.3.0-latin-wght-normal.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; }

/* Lovelace (Zetafonts), web license order #104419. Headings and the menu.
   The italic is only downloaded on pages that show slanted Lovelace. */
@font-face { font-family: 'Lovelace'; src: url('/fonts/lovelace-regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lovelace'; src: url('/fonts/lovelace-italic.woff2') format('woff2'); font-weight: 400; font-style: italic; font-display: swap; }

/* THE FALLBACK LOVELACE BORROWS ITS SHAPE FROM (2026-09-30).

   The hero on the home page is Lovelace at 64px with line-height 0.95 and
   letter-spacing -0.02em. Those numbers are tuned FOR LOVELACE. Lovelace is
   font-display: swap, so the first paint drew Georgia at Lovelace's spacing,
   which is far too tight for Georgia's wider letters: the headline landed
   scrunched, then jumped when the real font arrived.

   This face is Georgia with Lovelace's measurements written over the top, so
   the first paint takes up the same room the real font will. Nothing moves
   when the swap happens; at most the letter shapes change.

   HOW 92.5% WAS ARRIVED AT, because the obvious way is wrong. Adding up the
   two fonts' advance widths out of their tables says Georgia should be scaled
   UP, to about 113%. Setting it there made the headline wider than Lovelace,
   not narrower: the tables leave out kerning, and Lovelace kerns tightly.
   The number below was measured instead, by setting "confidence." in both at
   64px, one on top of the other, and walking the scale until the full stops
   landed on each other. 92% was a shade short and 93% a shade long.

   The vertical overrides are shares of the ADJUSTED em, so each is Lovelace's
   own share of its em divided by 0.925. Lovelace is 1000 units to the em with
   an hhea ascent of 739, a descent of 250 and no line gap:
     739/1000 / 0.925 = 79.9%      250/1000 / 0.925 = 27.0%
   Re-measure all four if the licensed Lovelace files are ever replaced.

   local() only, so this downloads nothing. On a machine with no Georgia it
   falls through to Times New Roman, and on one with neither the face simply
   does not apply and the plain Georgia in the stack behind it is used. */
@font-face {
  font-family: 'Lovelace Fallback';
  src: local('Georgia'), local('Times New Roman'), local('Times');
  size-adjust: 92.5%;
  ascent-override: 79.9%;
  descent-override: 27.0%;
  line-gap-override: 0%;
}
