/* OutletIQ: self-hosted IBM Plex + metric-matched fallbacks (B13, 5 Oct 2026).

   Fonts: IBM Plex Sans (Copyright 2019 IBM Corp.) and IBM Plex Mono (Copyright 2017 IBM Corp.),
   SIL Open Font License 1.1 (https://openfontlicense.org). Copyright and licence URL are embedded in each file.
   Source: Google Fonts css2 API, fetched 2026-10-05 with a desktop Chrome 154 user agent, same files the live
   site loads today. IBM Plex Sans = Google v23 ("Version 3.201"), a VARIABLE font (wght 100-700): one file per
   subset covers 400/500/600/700. IBM Plex Mono = Google v20 ("Version 2.3"), static, one file per weight.
   "v1" in the filenames is our cache version. /assets/(.*) is served "immutable" (vercel.json), so if a file
   ever changes, ship it under v2 and update this file; never overwrite a published name.

   Subsets: latin everywhere; latin-ext only downloads where a page uses one of its characters (today only the
   e-macron in "Mondelez" on /outletiq-vs-bizom). U+2192, U+2197 and U+2713 (arrows, tick) are not in any Plex
   subset Google serves: they render from the system font now and will keep doing so. */


/* IBM Plex Sans: variable, one face per subset */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-sans-v1-latin-var.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: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-sans-v1-latin-ext-var.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;
}

/* IBM Plex Mono: static 400 / 500 / 600 */

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-400.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-500.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-600.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-ext-400.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-ext-500.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-v1-latin-ext-600.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;
}

/* Metric-matched fallbacks: shown only until Plex arrives, sized so text wraps the same way and the swap
   moves nothing. Vertical metrics are IBM Plex's own (UPM 1000, ascender 1025, descender -275, line gap 0;
   hhea = OS/2 typo, USE_TYPO_METRICS set), read from these woff2 files. size-adjust = width of the site's own
   rendered text in Plex / width in the fallback (canvas measureText, kerning on, 113,540 characters from 12 pages,
   per weight). Overrides are divided by size-adjust because size-adjust scales them too.
   unicode-range = Plex latin + latin-ext coverage, so characters Plex lacks (arrows, tick) skip these faces and
   render from the system font before and after the swap.
   Arial metrics: Arial (Windows, macOS, iOS), Liberation Sans and Arimo (Linux, ChromeOS) share advance widths.
   Roboto is the Android system font; that family is only reached where Arial is missing. */

@font-face {
  font-family: "IBM Plex Sans Fallback";
  font-style: normal;
  font-weight: 400;
  src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans"), local("Arimo"), local("Arimo-Regular");
  size-adjust: 100.90%;
  ascent-override: 101.59%;
  descent-override: 27.26%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback";
  font-style: normal;
  font-weight: 500;
  src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans"), local("Arimo"), local("Arimo-Regular");
  size-adjust: 103.24%;
  ascent-override: 99.29%;
  descent-override: 26.64%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback";
  font-style: normal;
  font-weight: 600;
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("LiberationSans-Bold"), local("Arimo Bold"), local("Arimo-Bold");
  size-adjust: 97.00%;
  ascent-override: 105.67%;
  descent-override: 28.35%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback";
  font-style: normal;
  font-weight: 700;
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("LiberationSans-Bold"), local("Arimo Bold"), local("Arimo-Bold");
  size-adjust: 98.34%;
  ascent-override: 104.23%;
  descent-override: 27.96%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

/* Android: untested on a device; matched against Roboto variable (Android 12+) widths */

@font-face {
  font-family: "IBM Plex Sans Fallback Roboto";
  font-style: normal;
  font-weight: 400;
  src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
  size-adjust: 101.27%;
  ascent-override: 101.22%;
  descent-override: 27.16%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback Roboto";
  font-style: normal;
  font-weight: 500;
  src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
  size-adjust: 102.41%;
  ascent-override: 100.09%;
  descent-override: 26.85%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback Roboto";
  font-style: normal;
  font-weight: 600;
  src: local("Roboto Bold"), local("Roboto-Bold"), local("Roboto");
  size-adjust: 103.67%;
  ascent-override: 98.87%;
  descent-override: 26.53%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans Fallback Roboto";
  font-style: normal;
  font-weight: 700;
  src: local("Roboto Bold"), local("Roboto-Bold"), local("Roboto");
  size-adjust: 104.59%;
  ascent-override: 98.00%;
  descent-override: 26.29%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

/* Plex Mono advance is 600/1000 at every weight. Menlo/DejaVu Sans Mono = 0.6021, Courier New and its clones = 0.6001:
   one size-adjust between them (99.82%) is within 0.2% of either. */

@font-face {
  font-family: "IBM Plex Mono Fallback";
  font-style: normal;
  font-weight: 400 500;
  src: local("Menlo"), local("Menlo-Regular"), local("Courier New"), local("CourierNewPSMT"), local("Liberation Mono"), local("LiberationMono"), local("Cousine"), local("Cousine-Regular"), local("DejaVu Sans Mono"), local("DejaVuSansMono"), local("Droid Sans Mono"), local("DroidSansMono"), local("Roboto Mono"), local("RobotoMono-Regular");
  size-adjust: 99.82%;
  ascent-override: 102.68%;
  descent-override: 27.55%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Mono Fallback";
  font-style: normal;
  font-weight: 600 700;
  src: local("Menlo Bold"), local("Menlo-Bold"), local("Courier New Bold"), local("CourierNewPS-BoldMT"), local("Liberation Mono Bold"), local("LiberationMono-Bold"), local("Cousine Bold"), local("Cousine-Bold"), local("DejaVu Sans Mono Bold"), local("DejaVuSansMono-Bold"), local("Roboto Mono Bold"), local("RobotoMono-Bold");
  size-adjust: 99.82%;
  ascent-override: 102.68%;
  descent-override: 27.55%;
  line-gap-override: 0%;
  unicode-range: U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
}
