/* ============================================================================
   hq-fonts.css — self-hosted typefaces. Loaded before app.css.

   Served from this app rather than fetched from Google. Three reasons, in order of
   how much they matter here:

     1. The mobile app renders these same pages in a WebView. A font fetched from a
        third-party CDN means a network round-trip before text paints in the right
        face, and on a slow or absent connection either a long swap or none at all.
        Bundled, the first paint is always correct.
     2. A request to fonts.gstatic.com on every page load is a third party told which
        of your pages a person visited. On a mental-health platform that is worth
        removing, and it is one of the easier privacy wins available.
     3. No CDN outage can take the site's typography with it.

   TTF is what was supplied. WOFF2 is roughly 40% smaller and every browser this app
   supports reads it — converting these once (fonttools, or any online converter) is a
   real download saving and the one improvement worth making to this file.
   ========================================================================== */

/* ---- Marcellus: display. One weight, used only for headings.
   A serif at heading sizes gives the product a voice; the same serif at 13px in a
   dense admin table would be a legibility cost for no gain, which is why the UI
   stack below is a sans. */
@font-face{
  font-family:'Marcellus';
  src:url('/fonts/Marcellus-Regular.ttf') format('truetype');
  font-weight:400;
  font-style:normal;
  /* swap: text appears immediately in the fallback and re-renders when the face
     arrives. The alternative — invisible text while a font loads — is a blank screen
     someone might be reading on a train. */
  font-display:swap;
}

/* ---- Montserrat: the interface. Body, labels, buttons, tables, everything that is
   not a heading.

   Five weights, not seven. Thin (100) and ExtraBold (800) are both supplied but
   neither is usable here: 100 is unreadable below about 24px and this interface has
   almost nothing that large, and 800 is indistinguishable from 700 at UI sizes while
   costing another 200KB. Every weight shipped is a real file a browser fetches. */
@font-face{
  font-family:'Montserrat';
  src:url('/fonts/Montserrat-Light.ttf') format('truetype');
  font-weight:300; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Montserrat';
  src:url('/fonts/Montserrat-Regular.ttf') format('truetype');
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Montserrat';
  src:url('/fonts/Montserrat-Medium.ttf') format('truetype');
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Montserrat';
  src:url('/fonts/Montserrat-SemiBold.ttf') format('truetype');
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Montserrat';
  src:url('/fonts/Montserrat-Bold.ttf') format('truetype');
  font-weight:700; font-style:normal; font-display:swap;
}
