/* --------------------------------------------------------------------------
   Web fonts.

   Rewritten 2026-09-06. The previous file declared four Archivo faces (400,
   500, 600, 700) and three Fraunces faces (400, 500, 600), each pointing at a
   separate file. Those files were byte-identical within each family - verified
   by SHA-256: all four Archivo files hash the same, and so do all three
   Fraunces files - so every page downloaded the same 34,928 bytes four times
   and the same 67,304 bytes three times. Rendering confirmed it: text set at
   400 and at 700 measured identically on the live site, because there was only
   ever one weight behind all of them.

   Collapsed to one face per family, declared across 100-900 so the browser
   still finds a face at every weight the stylesheet asks for and does not fall
   back to synthesising one. Rendering is unchanged; 239,392 bytes per
   uncached page load are not.

   IBM Plex Mono is left as two faces: its 400 and 500 files differ (14,708 and
   14,888 bytes, different hashes), so they are genuinely two weights.

   If a real weighted or variable Archivo or Fraunces is installed later, split
   these back out - or give the variable file a wght axis and keep one face.
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(../fonts/Archivo-400-normal-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: 'Fraunces';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(../fonts/Fraunces-400-normal-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/IBMPlexMono-400-normal-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/IBMPlexMono-500-normal-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;
}

/*
 * Source Serif 4, self-hosted.
 *
 * Replaces Fraunces for headings. Fraunces is a soft, high-contrast display
 * serif designed to be characterful; on a notarial and legal practice it reads
 * as editorial rather than authoritative. Source Serif was drawn for long-form
 * legal and academic reading, which is the register this site wants.
 *
 * Self-hosted deliberately: a Google Fonts request would be a third-party call
 * on every page load, which is exactly what the consent banner exists to
 * control. Variable weight 200-900, so every heading weight is a real cut.
 */
@font-face {
	font-family: 'Source Serif 4';
	src: url('../fonts/SourceSerif4-variable-latin.woff2') format('woff2-variations');
	font-weight: 200 900;
	font-style: normal;
	font-display: swap;
}
