/*
 * Roboto, self-hosted. Same files and subsets that fonts.googleapis.com
 * served for
 * css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap
 * (variable weight 100-900, normal + italic), downloaded 2026-11-08.
 *
 * Served from Google, the eight subsets a page needs arrived one by one, and
 * each arrival re-laid out the whole page (~2,000 boxes) — four full layouts
 * on the home page under Lighthouse's network. From our own origin, with the
 * two first-paint files preloaded in header.php, they land before the first
 * layout. The browser still fetches only the subsets a page actually uses.
 *
 * Two departures from Google's CSS, both measured on the mobile PageSpeed run:
 *
 * - Each unicode-range lists only the code points its file has a glyph for.
 *   Google's ranges are wider: U+2192 (→) is claimed by both `symbols` and
 *   `math` and neither file contains it, so every arrow in the mega menu cost
 *   53KB of downloads that found nothing and fell back to the system font
 *   anyway. Trimmed, the arrow goes straight to the fallback it always ended
 *   up in. If these files are ever replaced, regenerate the ranges from each
 *   file's cmap — a range wider than the file only buys a wasted download.
 * - `vietnamese` comes after `latin-ext`. They overlap on ă đ ĩ ũ ơ ư ỳ–ỹ and
 *   the face declared last wins, so in Google's order every Vietnamese page
 *   also pulled latin-ext (24KB, 27KB italic) just for those letters. The 31
 *   shared glyphs are identical in both files, outlines and weight axis alike.
 *
 * Licence: SIL Open Font License 1.1.
 */
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-0486, U+0488-048F, U+0492-04AF, U+04B2-0513;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-greek-ext.woff2) format('woff2');
  unicode-range: U+1F4D;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-greek.woff2) format('woff2');
  unicode-range: U+0384-038A, U+038C, U+038E-03A1, U+03A3-03CE, U+03D1-03D2, U+03D6;
}
/* math */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-math.woff2) format('woff2');
  unicode-range: U+0303, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D6, U+2017, U+203C, U+2070, U+2074-208E, U+2105, U+2126, U+212E, U+2202, U+2206, U+220F, U+2211, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA;
}
/* symbols */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-symbols.woff2) format('woff2');
  unicode-range: U+0002, U+215B-215E, U+25A0, U+25CA-25CB, U+25CF;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01F0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02C7, U+02C9, U+02DD, U+02F3, U+1E00-1E01, U+1E3E-1E3F, U+1E80-1E85, U+1E9E, U+1EF2-1EF9, U+2020, U+20A3-20A4, U+20A6-20AB, U+20B1, U+20B9-20BA, U+20BC-20BD, U+2113;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-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, U+0309, U+0323, U+1EA0-1EF9, U+20AB;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-italic-latin.woff2) format('woff2');
  unicode-range: U+0000, U+0002, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-0486, U+0488-048F, U+0492-04AF, U+04B2-0513;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-greek-ext.woff2) format('woff2');
  unicode-range: U+1F4D;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-greek.woff2) format('woff2');
  unicode-range: U+0384-038A, U+038C, U+038E-03A1, U+03A3-03CE, U+03D1-03D2, U+03D6;
}
/* math */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-math.woff2) format('woff2');
  unicode-range: U+0303, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D6, U+2017, U+203C, U+2070, U+2074-208E, U+2105, U+2126, U+212E, U+2202, U+2206, U+220F, U+2211, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA;
}
/* symbols */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-symbols.woff2) format('woff2');
  unicode-range: U+0002, U+215B-215E, U+25A0, U+25CA-25CB, U+25CF;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01F0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02C7, U+02C9, U+02DD, U+02F3, U+1E00-1E01, U+1E3E-1E3F, U+1E80-1E85, U+1E9E, U+1EF2-1EF9, U+2020, U+20A3-20A4, U+20A6-20AB, U+20B1, U+20B9-20BA, U+20BC-20BD, U+2113;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-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, U+0309, U+0323, U+1EA0-1EF9, U+20AB;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url(roboto-normal-latin.woff2) format('woff2');
  unicode-range: U+0000, U+0002, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD;
}
