/* Self-hosted fonts (spec design-tokens Section 1). No Google Fonts request (GDPR:
   EU/UK users in scope). woff2 files are shipped first-party under /fonts/. */

@font-face {
  font-family: 'Sora';
  font-style: normal; font-weight: 400 700;   /* variable */
  font-display: swap;
  src: url('/fonts/sora-variable.woff2') format('woff2');
}
@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');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal; font-weight: 600;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal; font-weight: 400 600;   /* variable, carries opsz axis */
  font-display: swap;
  src: url('/fonts/newsreader-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal; font-weight: 400 700;   /* variable */
  font-display: swap;
  src: url('/fonts/hanken-grotesk-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal; font-weight: 400 600;   /* variable, opsz axis — editorial display */
  font-display: swap;
  src: url('/fonts/fraunces-variable.woff2') format('woff2');
}
