/* Self-hosted DM Serif Display / DM Mono / DM Sans — previously loaded from
   fonts.googleapis.com on every page load, which sends the visitor's IP to
   Google before any consent (the exact pattern German courts have found to
   violate GDPR, e.g. LG München I, 2022). Same files Google itself serves
   (fetched from fonts.gstatic.com, latin subset only — this app is
   German/English only, and German umlauts/ß live in the base Latin range,
   not latin-ext), just hosted here instead. Paths are relative to this
   file, so it works unchanged regardless of which page depth links it. */

@font-face {
  font-family: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('dm-serif-display-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Serif Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('dm-serif-display-400-italic.woff2') format('woff2');
}

@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('dm-mono-300-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('dm-mono-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('dm-mono-500-normal.woff2') format('woff2');
}

/* Variable font — Google served the identical file for every weight from
   300 to 600 requested, so one @font-face with a weight range replaces
   what would otherwise be four duplicate downloads. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url('dm-sans-variable.woff2') format('woff2');
}
