/* Self-hosted webfonts. No network requests — the files live in assets/fonts/.
   All three families are licensed under the SIL Open Font License 1.1; the licence
   texts sit alongside the font files and must travel with them if you redistribute.

   Bodoni Moda and Archivo are variable fonts: one file covers every weight in the
   range, so there is nothing to add if you start using a weight the page doesn't
   currently use. IBM Plex Mono ships as static instances, so 400 and 500 are the
   only weights available unless you add more files.

   These are latin subsets. They cover English, Western European accents and common
   punctuation, but NOT Cyrillic, Greek, Vietnamese or CJK. If the copy ever needs
   those, pull the matching subset from the same @fontsource packages. */

@font-face {
  font-family: 'Bodoni Moda';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url(../fonts/bodoni-moda-var.woff2) format('woff2-variations');
}
@font-face {
  font-family: 'Bodoni Moda';
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url(../fonts/bodoni-moda-var-italic.woff2) format('woff2-variations');
}

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/archivo-var.woff2) format('woff2-variations');
}
@font-face {
  font-family: 'Archivo';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/archivo-var-italic.woff2) format('woff2-variations');
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400.woff2) format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500.woff2) format('woff2');
}

/* Bodoni Moda carries an optical-size axis. Left on 'auto', the browser maps opsz to
   the font size, so a 90px headline gets opsz ~67 — a display cut with hairline thins
   that break up against a dark background. We pin opsz low instead: the letterforms
   keep the sturdier text-size proportions and the strokes stay solid in light-on-dark.
   Raise this value for a more fragile, high-contrast look on a light background. */
h1, h2, h3, h4, .sig, .quote p, .brand span, .mark, .stat b, .call .yr, .tl-panel h3 {
  font-optical-sizing: none;
  font-variation-settings: 'opsz' 12;
}
