/*
 * Self-hosted web font. Generated from the Google Fonts css2 API
 *   https://fonts.googleapis.com/css2?family=Roboto:wght@400..700&display=swap
 * then rewritten to local /lib/fonts/ paths. Replaces the render-blocking <link> to
 * fonts.googleapis.com that every layout used to carry: that cost two extra DNS+TLS
 * handshakes to a third party before first paint, put font delivery outside our
 * availability control, and leaked visitor IPs to Google on every page view.
 *
 * ROBOTO, not a new typeface. This is a HOSTING change only — the rendered face is
 * byte-identical to what the site already shipped, so there is no visual diff to review.
 * (The reference project this pattern came from switched to Inter at the same time;
 * that was deliberately not adopted, so the perf work costs no design decision.)
 *
 * Roboto now ships as a VARIABLE font: one woff2 per subset carries the whole 400-700
 * weight axis, so a single @font-face covers every weight the app uses (400/500/700) —
 * no separate static file per weight. font-stretch: 100% pins the width axis to normal.
 *
 * Latin + latin-ext subsets only. Those fully cover the app's en-US / es / fr cultures.
 * Google serves Roboto's Devanagari as a separate family, so the hi culture falls back to
 * a system font here exactly as it did before — not a regression. Add more subsets by
 * re-running the fetch and copying the extra @font-face blocks across.
 *
 * This file DELIVERS the face; it deliberately does NOT DECIDE the site font. No
 * html/body { font-family } rule belongs here. site.css routes the family through
 * var(--brand-font-family, ...), and BrandThemeCss emits that token from the brand's
 * Theme.FontFamily — so a brand that configures its own font still wins.
 *
 * NOT self-hosted: Material Symbols (admin + menu icons). It is a ~5.3 MB ligature-based
 * variable icon font that unicode-range subsetting cannot trim. _MenuLayout and
 * _AdminLayout keep their Google Fonts <link> for it, which is why fonts.googleapis.com
 * must stay in the CSP style-src.
 *
 * Licence: Roboto is Apache-2.0. Self-hosting is expressly permitted.
 */

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/lib/fonts/roboto-latin-ext.woff2) format('woff2');
  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: 'Roboto';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/lib/fonts/roboto-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;
}

/*
 * Self-hosted Material Symbols (icon font), SUBSET to the icons this app actually uses.
 * Generated from the Google Fonts css2 API with &icon_names=, then rewritten to /lib/fonts/:
 *   https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200
 *     &family=Material+Symbols+Rounded:<same axes>&icon_names=<the 25 below>&display=block
 *
 * Same rationale as Roboto above — this was the LAST cross-origin request on a customer page, so
 * removing it ends the per-visit call to fonts.googleapis.com (and the visitor-IP leak that comes
 * with it) and takes icon rendering off a third party's availability.
 *
 * SUBSET, and that is load-bearing. The unsubsetted variable faces are 3.8 MB + 5.1 MB = 8.9 MB;
 * self-hosting those would have been far worse than the remote fetch this replaces. Restricted to
 * the icons in use they are 34 KB + 44 KB. THE COST OF THAT: an icon name that is not in the list
 * below renders as its literal ligature TEXT (you would see the word "store"), not a blank or an
 * error. So when you add a new icon to a view, add its name here and regenerate — there is no
 * runtime fallback to catch it.
 *
 * Icons included (25): add_circle, brunch_dining, card_giftcard, check_circle, content_copy,
 * dashboard, delivery_dining, directions_car, download, group, group_add, hail, history, info,
 * loyalty, person_remove, redeem, savings, schedule, search, share, shopping_bag, stars, store,
 * volunteer_activism
 *
 * VARIABLE, not static: the weight range is kept because menu.css toggles the FILL axis
 * (.pt-mi--filled sets 'FILL' 1). A static cut would silently flatten every filled icon.
 *
 * font-display: block matches what the site requested remotely — an icon that swaps in late reads
 * as a layout glitch, so it is better to show nothing for a moment than the wrong thing.
 * The .material-symbols-* classes (ligatures, sizing, antialiasing) live in menu.css and are
 * unchanged; only the @font-face source moved.
 */
@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 100 700;
  font-display: block;
  src: url(/lib/fonts/material-symbols-outlined.woff2) format('woff2');
}
@font-face {
  font-family: 'Material Symbols Rounded';
  font-style: normal;
  font-weight: 100 700;
  font-display: block;
  src: url(/lib/fonts/material-symbols-rounded.woff2) format('woff2');
}
