/* IBM Plex Sans, served from here instead of from Google.
 *
 * WHY THIS FILE EXISTS. Nothing in this repository loads IBM Plex Sans. The only
 * loader anywhere is line 1 of the operator's row -- an @import of
 * fonts.googleapis.com -- which means two things, and the second is the urgent one:
 *
 *   1. Every attendee page makes a third-party request for its typeface during the
 *      show. A bad room-wifi night costs the venue its brand face, on 400 phones.
 *   2. Emptying that row, which is the Phase 3 step after the run, removes the
 *      webfont from the entire attendee surface in the same motion. Every page would
 *      fall through to the stack's next entry. This file has to land BEFORE that
 *      step or the row-emptying takes the typeface with it.
 *
 * INERT WHILE THE GOOGLE LOADER SUCCEEDS -- which is narrower than "inert", and the
 * difference is the whole point of the file.
 *
 * CSS font matching processes identical composite faces in REVERSE declaration order,
 * so while the row's @import resolves and its faces are available, they win and these
 * are never fetched. On a healthy network nothing changes, which is what makes this
 * safe to land before the flip.
 *
 * But when that @import or one of its font resources fails, those faces are not
 * merely outranked, they do not exist -- and then these are selected. So on a bad
 * room-wifi night the page renders IBM Plex Sans where today it would fall through to
 * Helvetica Neue and then Arial. That IS a rendering difference from today, in
 * precisely the scenario this file was written for, and calling the file "inert" full
 * stop would hide the one behaviour it is meant to change.
 *
 * GENERATED FROM THE ROW'S OWN @import, not hand-written and not sourced elsewhere.
 * Every descriptor below is copied from what fonts.googleapis.com returns for that
 * exact URL, and the .woff2 files in app/assets/fonts are the exact bytes it serves.
 * That matters more than it looks: a previous session measured Google's variable
 * build against a locally installed IBM Plex Sans of the same name and found 33
 * differences in real DOM text. "Get IBM Plex Sans from somewhere" would have
 * shifted type across the whole site.
 *
 * Twelve faces: two styles x six unicode ranges. They are all variable fonts
 * (font-weight: 100 700, font-stretch: 75% 100%), which is what the row's axis
 * syntax asks for. Keeping all six ranges costs repo size and nothing at runtime --
 * unicode-range means a browser fetches only the subsets a page actually uses.
 *
 * Regenerate with script/fetch_webfont.rb if the row's @import URL ever changes.
 *
 * NOT linked into admin. Admin has no webfont on purpose -- see the note on
 * --gpa-font-family-base in admin-tokens.css -- and adding one would move every
 * text metric on the operator's screen.
 */

/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-cyrillic-ext-ad80b1eb.woff2") format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-cyrillic-402a5e20.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-greek-7f0a553a.woff2") format("woff2");
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-vietnamese-e44eb020.woff2") format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-latin-ext-a5cb2606.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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-italic-latin-e4f00d74.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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-cyrillic-ext-8086fd6f.woff2") format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-cyrillic-fe3fe9e8.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-greek-5307b113.woff2") format("woff2");
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-vietnamese-a748096f.woff2") format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-latin-ext-c2e28884.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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url("/assets/IBMPlexSans-normal-latin-e9645623.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;
}
