/* ══════════════════════════════════════════════════════════════
   Material Symbols — served from our own origin
   ══════════════════════════════════════════════════════════════

   Replaces the fonts.googleapis.com stylesheet the authenticated pages
   used to link.

   An icon font that fails to load does not degrade to a blank space. It
   degrades to the glyph's NAME, as text, in a box sized for an icon: a 30px
   icon button renders "ent_" — the middle of "content_copy" — and a toolbar
   spells out "add" and "sync". It reads as a rendering fault rather than a
   control, so the control goes unused. That is not a hypothetical; it is
   what the Proposal Studio's duplicate button looked like.

   The public marketing pages avoided this in 77dda8d by inlining SVG. The
   admin surface cannot follow: its icons are built in JavaScript — the nav
   rail, every table row, every toolbar — so there is no markup for a build
   step to rewrite. Serving the font ourselves removes the dependency that
   was failing instead.

   The file is subsetted to the 111 glyphs these pages render, pinned to the
   variation settings the stylesheets ask for, which is why it is 16KB
   rather than several megabytes. Both the font and the list of what is in
   it are generated:

       node scripts/build-material-symbols.js           rebuild
       node scripts/build-material-symbols.js --check   verify (CI)

   Adding an icon to a page means adding it to the font. --check fails when
   the two drift, because the symptom of forgetting is the bug above. */

@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 100 700;
  /* block, not swap: there is no sensible fallback face for an icon font —
     swapping in one would show the ligature text this file exists to
     prevent. Same-origin and 16KB, so the block window is not felt. */
  font-display: block;
  /* ?v= is the font's own content hash, written by the build script. Fonts
     are cached for 30 days by vercel.json and the filename never changes, so
     without it a rebuilt subset would not reach a browser that already has
     the old one — and the icon you just added would render as its name for a
     month. --check fails if this drifts from the file on disk. */
  src: url('/assets/fonts/material-symbols-subset.woff2?v=38279ffae3a60171') format('woff2');
}

/* Google shipped this rule alongside the @font-face, and the pages have
   always depended on it — most notably `liga`, without which the ligature
   never forms and the name renders as text no matter which font loaded. */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}
