/* ---------- Typefaces ----------
   Shared by every shell. Split out of styles.css because /admin and the
   partner dashboards carry their own inline styles and never link styles.css —
   without this they sat on the system stack while the student app had
   Public Sans, so one product spoke in two voices.

   Self-hosted rather than loaded from the Google Fonts CDN: that CDN sees the
   IP of every visitor, which a German court ruled a GDPR violation in 2022 —
   not a good look for a product whose users are EU students. Self-hosting also
   removes a third-party origin from the critical path.

   Both are variable (400–700) so one file covers every weight. Newsreader is
   requested WITHOUT its optical-size axis: keeping opsz cost 213KB against
   92KB, and an axis nothing animates isn't worth 121KB on a phone.

   The unicode-range split matters here. Latin Extended-A carries the diacritics
   the dataset is full of — Universität, Åbo, Autónoma, Ș/Ț — but a page showing
   none of them never downloads that file. */

/* Lives here, not in styles.css, so the standalone shells get it too: form
   controls take a UA font rather than inheriting, which left every input and
   button on /admin and the partner dashboards in Arial. */
button,
input,
select,
textarea {
  font-family: inherit;
}

@font-face {
  font-family: "Public Sans";
  src: url("/fonts/publicsans-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  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: "Public Sans";
  src: url("/fonts/publicsans-latin-ext.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Newsreader";
  src: url("/fonts/newsreader-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  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: "Newsreader";
  src: url("/fonts/newsreader-latin-ext.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
