/* fonts.css — GENERATED by scripts/fetch-fonts.mjs. Do not edit.
   Self-hosted Fraunces / Outfit / JetBrains Mono for the whole site and the
   KDP print pipeline: the web pages avoid a third-party request to Google
   Fonts (perf + GDPR), and the print PDFs embed the fonts without a network
   round-trip at render time. The trailing symbol faces carry the formula
   glyphs the brand fonts lack, under the same family names. Every
   unicode-range here is what the font file really has, not what Google
   claims — print-fonts.test.ts checks the content against it. */

/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjdfeQ_5Y.woff2) format('woff2');
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjdPeQ_5Y.woff2) format('woff2');
  unicode-range: U+100-148, U+14A-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, U+1C4-1CC, U+1D9-1DA, U+1E6-1E7, U+1EA-1EB, U+1FA-21B, U+22A-22D, U+230-233, U+237, U+259, U+2B9-2BA, U+2C7, U+2DD, U+304, U+308, U+1E08-1E09, U+1E0C-1E0F, U+1E14-1E17, U+1E1C-1E1D, U+1E20-1E21, U+1E24-1E25, U+1E2A-1E2B, U+1E2E-1E2F, U+1E36-1E37, U+1E3A-1E3B, U+1E42-1E43, U+1E46-1E49, U+1E4C-1E53, U+1E5A-1E5B, U+1E5E-1E5F, U+1E62-1E65, U+1E6C-1E6F, U+1E78-1E7B, U+1E80-1E85, U+1E92-1E93, U+1E97, U+1E9E, U+1EF2-1EF9, U+2020, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD, U+20B1-20B2, U+20B5, U+20B9-20BA, U+20BC-20BD;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjeveQ.woff2) format('woff2');
  unicode-range: U+0-FF, U+131, U+152-153, U+2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+200B-2010, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2028-202E, U+2030, U+2032-2033, U+2039-203A, U+2044, U+2052, U+2060-2064, U+20AC, U+2122, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCBTeO-U.woff2) format('woff2');
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCFTeO-U.woff2) format('woff2');
  unicode-range: U+100-148, U+14A-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, U+1C4-1CC, U+1D9-1DA, U+1E6-1E7, U+1EA-1EB, U+1FA-21B, U+22A-22D, U+230-233, U+237, U+259, U+2B9-2BA, U+2C7, U+2DD, U+304, U+308, U+1E08-1E09, U+1E0C-1E0F, U+1E14-1E17, U+1E1C-1E1D, U+1E20-1E21, U+1E24-1E25, U+1E2A-1E2B, U+1E2E-1E2F, U+1E36-1E37, U+1E3A-1E3B, U+1E42-1E43, U+1E46-1E49, U+1E4C-1E53, U+1E5A-1E5B, U+1E5E-1E5F, U+1E62-1E65, U+1E6C-1E6F, U+1E78-1E7B, U+1E80-1E85, U+1E92-1E93, U+1E97, U+1E9E, U+1EF2-1EF9, U+2020, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD, U+20B1-20B2, U+20B5, U+20B9-20BA, U+20BC-20BD;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxC9TeA.woff2) format('woff2');
  unicode-range: U+0-FF, U+131, U+152-153, U+2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+200B-2010, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2028-202E, U+2030, U+2032-2033, U+2039-203A, U+2044, U+2052, U+2060-2064, U+20AC, U+2122, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');
  unicode-range: U+490-491, U+4AE-4AF, U+4E8-4E9;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');
  unicode-range: U+301, U+401-40C, U+40E-44F, U+451-45C, U+45E-45F, U+490-491, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');
  unicode-range: U+374-375, U+37E, U+384-38A, U+38C, U+38E-3A1, U+3A3-3CF, U+3D7;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');
  unicode-range: U+100-131, U+134-17F, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, U+1CD-1CE, U+1E6-1E7, U+1EA-1EB, U+1F4-1F5, U+1FC-1FF, U+218-21B, U+232-233, U+237, U+259, U+2B9-2BA, U+2C7, U+2C9, U+2DD, U+2F3, U+2F7, U+304, U+308, U+1E80-1E85, U+1E9E, U+1EF2-1EF9, U+2020, U+20AB, U+20AE, U+20BD, U+20BF, U+2113;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');
  unicode-range: U+0-FF, U+131, U+152-153, U+2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+200B-2010, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2024, U+2026, U+2028-202E, U+2030, U+2032-2033, U+2039-203A, U+2044, U+2060-2064, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/outfit-QGYvz_MVcBeNP4NJuktqQ4E.woff2) format('woff2');
  unicode-range: U+100-107, U+10A-113, U+116-11B, U+11E-123, U+126-127, U+12A-12B, U+12E-133, U+136-137, U+139-13E, U+141-148, U+14A-14D, U+150-15B, U+15E-161, U+164-165, U+16A-17E, U+1CD-1CE, U+218-21B, U+237, U+2C7, U+2DD, U+304, U+308, U+1E80-1E85, U+1E9E, U+1EF2-1EF3;
}
/* latin */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/outfit-QGYvz_MVcBeNP4NJtEtq.woff2) format('woff2');
  unicode-range: U+0-AC, U+AE-FF, U+131, U+152-153, U+2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+200B-200F, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2028-202E, U+2039-203A, U+2044, U+2060-2064, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Symbol fallbacks — see scripts/fetch-fonts.mjs. Same family names and the
   same style/weight descriptors as the brand faces, disjoint unicode-range,
   so every font-family chain in the codebase picks them up untouched. */
/* Fraunces italic 400 700 <- Noto Serif */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-serif.woff) format('woff');
  unicode-range: U+149, U+17F-18E, U+190-191, U+193-19F, U+1A2-1AE, U+1B1-1C3, U+1CD-1D8, U+1DB-1E5, U+1E8-1E9, U+1EC-1F9, U+21C-229, U+22E-22F, U+234-236, U+238-258, U+25A-2B8, U+2BB, U+2BD-2C5, U+2C8-2D9, U+2DB, U+2DE-2FF, U+391-3A1, U+3A3-3CE, U+1D2C-1D6A, U+2000-200A, U+2011-2012, U+2015-2017, U+201B, U+201F, U+2023-2025, U+2027, U+202F, U+2031, U+2034-2038, U+203B-2043, U+2045-2051, U+2053-205F, U+2066-2071, U+2074-208E, U+2090-209C, U+25CC, U+2C60-2C7F;
}
/* Fraunces italic 400 700 <- Noto Sans Math */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-math.woff) format('woff');
  unicode-range: U+2190-2211, U+2213-2214, U+2216-22FF, U+2500, U+2506, U+250C, U+2510, U+2514, U+2518, U+2550, U+2571-2572, U+2577, U+25A0-25CB, U+25CD-25FF, U+2605-2606, U+2713;
}
/* Fraunces italic 400 700 <- Noto Sans Symbols 2 */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols-2.woff) format('woff');
  unicode-range: U+2714-2718;
}
/* Fraunces italic 400 700 <- Noto Sans Symbols */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols.woff) format('woff');
  unicode-range: U+2460-2473;
}
/* Fraunces normal 400 800 <- Noto Serif */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/symbols-noto-serif.woff) format('woff');
  unicode-range: U+149, U+17F-18E, U+190-191, U+193-19F, U+1A2-1AE, U+1B1-1C3, U+1CD-1D8, U+1DB-1E5, U+1E8-1E9, U+1EC-1F9, U+21C-229, U+22E-22F, U+234-236, U+238-258, U+25A-2B8, U+2BB, U+2BD-2C5, U+2C8-2D9, U+2DB, U+2DE-2FF, U+391-3A1, U+3A3-3CE, U+1D2C-1D6A, U+2000-200A, U+2011-2012, U+2015-2017, U+201B, U+201F, U+2023-2025, U+2027, U+202F, U+2031, U+2034-2038, U+203B-2043, U+2045-2051, U+2053-205F, U+2066-2071, U+2074-208E, U+2090-209C, U+25CC, U+2C60-2C7F;
}
/* Fraunces normal 400 800 <- Noto Sans Math */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-math.woff) format('woff');
  unicode-range: U+2190-2211, U+2213-2214, U+2216-22FF, U+2500, U+2506, U+250C, U+2510, U+2514, U+2518, U+2550, U+2571-2572, U+2577, U+25A0-25CB, U+25CD-25FF, U+2605-2606, U+2713;
}
/* Fraunces normal 400 800 <- Noto Sans Symbols 2 */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols-2.woff) format('woff');
  unicode-range: U+2714-2718;
}
/* Fraunces normal 400 800 <- Noto Sans Symbols */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols.woff) format('woff');
  unicode-range: U+2460-2473;
}
/* Outfit normal 300 700 <- Noto Sans */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans.woff) format('woff');
  unicode-range: U+108-109, U+114-115, U+11C-11D, U+124-125, U+128-129, U+12C-12D, U+134-135, U+138, U+13F-140, U+149, U+14E-14F, U+15C-15D, U+162-163, U+166-169, U+17F-1CC, U+1CF-217, U+21C-236, U+238-2BB, U+2BD-2C5, U+2C8-2D9, U+2DB, U+2DE-2FF, U+391-3A1, U+3A3-3CE, U+1D2C-1D6A, U+2000-200A, U+2010-2012, U+2015-2017, U+201B, U+201F-2021, U+2023-2025, U+2027, U+202F-2038, U+203B-2043, U+2045-205F, U+2066-2071, U+2074-208E, U+2090-209C, U+25CC, U+2C60-2C7F;
}
/* Outfit normal 300 700 <- Noto Sans Math */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-math.woff) format('woff');
  unicode-range: U+2190, U+2192, U+2194-2211, U+2213-2214, U+2216-22FF, U+2500, U+2506, U+250C, U+2510, U+2514, U+2518, U+2550, U+2571-2572, U+2577, U+25A0-25CB, U+25CD-25FF, U+2605-2606, U+2713;
}
/* Outfit normal 300 700 <- Noto Sans Symbols 2 */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols-2.woff) format('woff');
  unicode-range: U+2714-2718;
}
/* Outfit normal 300 700 <- Noto Sans Symbols */
@font-face {
  font-family: 'Outfit';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols.woff) format('woff');
  unicode-range: U+2460-2473;
}
/* JetBrains Mono normal 400 600 <- Noto Sans */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans.woff) format('woff');
  unicode-range: U+132-133, U+180-18E, U+190-191, U+193-19F, U+1A2-1AE, U+1B1-1CC, U+1CF-1E5, U+1E8-1E9, U+1EC-1F3, U+1F6-1FB, U+200-217, U+21C-231, U+234-236, U+238-258, U+25A-2B8, U+2BB, U+2BD-2C5, U+2C8, U+2CA-2D9, U+2DB, U+2DE-2F2, U+2F4-2F6, U+2F8-2FF, U+1D2C-1D6A, U+2000-200A, U+2011-2012, U+2015-2017, U+201B, U+201F, U+2023, U+2025, U+2027, U+202F, U+2031, U+2034-2038, U+203B-2043, U+2045-205F, U+2066-2071, U+2074-208E, U+2090-209C, U+25CC, U+2C60-2C7F;
}
/* JetBrains Mono normal 400 600 <- Noto Sans Math */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-math.woff) format('woff');
  unicode-range: U+2190, U+2192, U+2194-2211, U+2213-2214, U+2216-22FF, U+2500, U+2506, U+250C, U+2510, U+2514, U+2518, U+2550, U+2571-2572, U+2577, U+25A0-25CB, U+25CD-25FF, U+2605-2606, U+2713;
}
/* JetBrains Mono normal 400 600 <- Noto Sans Symbols 2 */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols-2.woff) format('woff');
  unicode-range: U+2714-2718;
}
/* JetBrains Mono normal 400 600 <- Noto Sans Symbols */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/symbols-noto-sans-symbols.woff) format('woff');
  unicode-range: U+2460-2473;
}
