/* apps/main/public/fonts/fonts.css — SELF-HOSTED TYPE. NO THIRD-PARTY FONT REQUEST.
 *
 * 🔴 WHY THIS FILE EXISTS. Every page on this origin — home, pricing, help, the atlas pages, the
 * blog, and /terms /privacy /security /accessibility — carried
 *     <link rel="preconnect" href="https://fonts.googleapis.com">
 *     <link href="https://fonts.googleapis.com/css2?family=DM+Sans…" rel="stylesheet">
 * which hands every visitor's IP address and User-Agent to Google before a single word renders.
 * German courts have held that embedding Google Fonts without consent violates the GDPR
 * (LG München I, 20 O 14368/19), and a privacy policy is the worst possible page on which to make
 * an undisclosed third-party request about the reader. Serving the files ourselves removes the
 * request entirely — there is nothing left to disclose or consent to.
 *
 * Same decision, same shape as apps/seafoam/client/public/fonts/ (Adam's answer there was
 * SELF-HOST); this is that answer applied to the marketing and legal surface.
 *
 * SUBSET: `latin` only (U+0000–00FF plus the punctuation Google ships in that subset). The
 * `latin-ext` faces are deliberately dropped — these pages are English and never paint them.
 * Eight files, ~205 kB total, replacing a DNS lookup and two round-trips to a third party.
 *
 * VARIABLE WHERE THE FAMILY IS VARIABLE. DM Sans is one file per style covering weight 100–1000,
 * because the Google Fonts API returns the SAME url for every weight in that range — shipping a
 * file per weight would ship identical bytes five times. DM Serif Display and DM Mono are static.
 *
 * LICENSING: all three families are SIL Open Font License 1.1. The `OFL-*.txt` beside the woff2
 * are the upstream texts, unmodified. OFL permits redistribution and web-serving including
 * subsets; the license must travel with the files, which is why they are committed, not ignored.
 *
 * URLS ARE RELATIVE TO THIS FILE, DELIBERATELY. apps/main serves public/ at the origin root, so
 * these resolve at /fonts/…; apps/steel mounts its client at /research/, so the same file resolves
 * at /research/fonts/… without a second copy of the stylesheet that differs only in a prefix. An
 * absolute /fonts/ path would 404 on steel and fall back to Times with no error anywhere.
 *
 * REFRESHING: fetch `https://fonts.googleapis.com/css2?family=…` with a modern-browser
 * User-Agent (the API serves woff2 only to UAs it believes support it), keep the @font-face
 * blocks whose unicode-range contains U+0000-00FF, download those urls here, update the blocks
 * below. See fonts/README.md.
 */

@font-face {
  font-family: 'DM Sans';
  font-style: italic;
  font-weight: 100 1000;
  font-display: swap;
  src: url('dm-sans-italic-100-1000-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: 'DM Sans';
  font-style: normal;
  font-weight: 100 1000;
  font-display: swap;
  src: url('dm-sans-100-1000-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: 'DM Serif Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('dm-serif-display-italic-400-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: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('dm-serif-display-400-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: 'DM Mono';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('dm-mono-italic-400-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: 'DM Mono';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url('dm-mono-italic-500-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: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('dm-mono-400-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: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('dm-mono-500-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;
}
