/* Self-hosted copies of Google Fonts files (SIL Open Font License, licences alongside): IBM Plex Sans
   for headlines, labels and navigation, STIX Two Text for reading, IBM Plex Mono for code and figure
   labels. Served from this site so visitors' browsers never contact Google. Each face keeps Google's
   unicode-range, so a page only downloads the subsets it uses. */

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

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-italic-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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-italic-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;
}

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

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

/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-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;
}

/* greek */
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-italic-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* latin-ext */
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-italic-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;
}

/* latin */
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-italic-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;
}

/* greek */
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* latin-ext */
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-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;
}

/* latin */
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-cyrillic-ext.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 Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-vietnamese.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 Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-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;
}

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

/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-cyrillic-ext.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 Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-vietnamese.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 Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-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;
}

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

/* Sub- and superscripts, maths symbols, ħ and ⅓ are missing from Google's standard subsets, so they come
   as extra files. What a font lacks altogether is borrowed under its name, so browsers treat it as part of
   that font: for IBM Plex Sans from Noto Sans (signs and letters in sub- and superscript, ℏ) and Noto Sans
   Math (operators); for STIX Two Text from its companion STIX Two Math (operators, arrows) and Noto Serif
   (letters in subscript, as in Ti₃C₂Tₓ). */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-extra.woff2) format('woff2');
  unicode-range: U+0127, U+2070, U+2074-2079, U+2080-2089, U+2153, U+2192, U+221A, U+2248, U+2260, U+2264-2265;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/noto-sans-extra.woff2) format('woff2');
  unicode-range: U+207A-207F, U+208A-208E, U+2090-209C, U+210F;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/noto-sans-math-extra.woff2) format('woff2');
  unicode-range: U+21CC, U+221D, U+2225, U+223C, U+2261, U+226A, U+2297, U+2299, U+22A5, U+25CB, U+25CF, U+27E8-27E9;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-extra.woff2) format('woff2');
  unicode-range: U+0127, U+2070, U+2074-207F, U+2080-208E, U+210F, U+2153;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-math-extra.woff2) format('woff2');
  unicode-range: U+2192, U+21CC, U+221A, U+221D, U+2225, U+223C, U+2248, U+2260-2261, U+2264-2265, U+226A, U+2297, U+2299, U+22A5, U+25CB, U+25CF, U+27E8-27E9;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/noto-serif-extra.woff2) format('woff2');
  unicode-range: U+2090-209C;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-italic-extra.woff2) format('woff2');
  unicode-range: U+0127, U+2070, U+2074-2079, U+2080-2089, U+2153, U+2192, U+221A, U+2248, U+2260, U+2264-2265;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/noto-sans-extra.woff2) format('woff2');
  unicode-range: U+207A-207F, U+208A-208E, U+2090-209C, U+210F;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: italic;
  font-weight: 100 700;
  font-display: swap;
  src: url(../fonts/noto-sans-math-extra.woff2) format('woff2');
  unicode-range: U+21CC, U+221D, U+2225, U+223C, U+2261, U+226A, U+2297, U+2299, U+22A5, U+25CB, U+25CF, U+27E8-27E9;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-text-italic-extra.woff2) format('woff2');
  unicode-range: U+0127, U+2070, U+2074-207F, U+2080-208E, U+210F, U+2153;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/stix-two-math-extra.woff2) format('woff2');
  unicode-range: U+2192, U+21CC, U+221A, U+221D, U+2225, U+223C, U+2248, U+2260-2261, U+2264-2265, U+226A, U+2297, U+2299, U+22A5, U+25CB, U+25CF, U+27E8-27E9;
}
@font-face {
  font-family: 'STIX Two Text';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/noto-serif-extra.woff2) format('woff2');
  unicode-range: U+2090-209C;
}
