/* Generated by scripts/sync-brand-fonts.ts from @karmanflow/design-tokens 0.15.1: fonts.css, then the
 * type variables from tokens.css. Do not edit; bun run sync-brand-fonts. */
/* KarmanFlow self-hosted fonts.
 *
 * Import once, before tokens.css:
 *   @import "@karmanflow/design-tokens/fonts.css";
 *
 * Every file is in ./fonts next to this stylesheet (sources, sha256 and
 * licences in fonts/FONTS.md). Nothing here loads from another origin.
 * Bundlers resolve the relative urls to the host app's own origin.
 *
 * KarmanFlow Soft: headlines, page titles and empty-state headings, upright,
 * 18px or larger. Radio Canada: text, interface and numbers. KarmanFlow Mono:
 * ids, SKUs, receipts and small labels; our renamed build of the IBM Corp.
 * monospace design (fonts/MODIFICATIONS-KarmanFlowMono.md).
 *
 * Every face declares exactly the code points its file maps, with one named
 * exception: the KarmanFlow Soft Latin Extended face also declares U+0309,
 * U+030A and U+0323, which its file lacks, so the browser tries it for
 * decomposed letters with those marks. The faces of one family whose weights
 * intersect never declare the same code point. Besides its Latin face, each
 * family has a Latin Extended face (Latin Extended-A and -B, Latin Extended
 * Additional with Vietnamese, combining marks, and the punctuation its Latin
 * file lacks). Radio Canada and KarmanFlow Mono also have a currency face
 * (U+20A0-20C0, the rupee among them); KarmanFlow Soft's Latin face already
 * holds its currency signs. The browser downloads a Latin Extended or
 * currency file only when a page shows a character its face declares. Because
 * of the one exception, a page whose display text holds U+0309, U+030A or
 * U+0323 downloads the KarmanFlow Soft Latin Extended file (49,368 bytes) even
 * when no letter forms, and the mark itself still falls back.
 */

/* KarmanFlow Soft */

@font-face {
  font-family: "KarmanFlow Soft";
  src: url("./fonts/KarmanFlowSoft-Roman.var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+0160-0161, U+0178, U+017D-017E, U+0192, U+02BC, U+02C6-02C7, U+02D8-02DD, U+0304, U+0308, U+2010, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2044, U+2052, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB-20AD, U+20B1-20B2, U+20B5, U+20B9-20BA, U+20BC-20BD, U+2116, U+2122, U+2212, U+2215;
}

@font-face {
  font-family: "KarmanFlow Soft";
  src: url("./fonts/KarmanFlowSoft-Roman-latin-ext.var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-0130, U+0132-0148, U+014A-0151, U+0154-015F, U+0162-0177, U+0179-017C, U+018F, U+01A0-01A1, U+01AF-01B0, U+01C4-01CC, U+01D9-01DA, U+01E6-01E7, U+01EA-01EB, U+01FA-021B, U+022A-022D, U+0230-0233, U+0237, U+0259, U+02B9-02BA, U+0300-0303, U+0306-0307, U+0309-030C, U+030F, U+0311-0312, U+0315, U+031B, U+0323-0324, U+0326-0328, U+032E, U+0331, 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+1EA0-1EF9;
}

/* Radio Canada */

@font-face {
  font-family: "Radio Canada";
  src: url("./fonts/radio-canada-latin-var.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+0102, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, 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+2215;
}

@font-face {
  font-family: "Radio Canada";
  src: url("./fonts/radio-canada-currency-var.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range: 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;
}

@font-face {
  font-family: "Radio Canada";
  src: url("./fonts/radio-canada-latin-ext-var.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-0101, U+0103-0130, U+0132-0151, U+0154-017E, U+0186, U+018E-0190, U+0192, U+0194, U+0196, U+019A-019B, U+019D, U+019F-01A1, U+01AF-01B1, U+01C4-01CE, U+01DD, U+01E4-01E7, U+01EA-01EB, U+01F0, U+01FA-021B, U+022A-022D, U+0230-0233, U+0237, U+023A-023E, U+0251, U+0254, U+0259, U+025B, U+0261-0263, U+0269-026C, U+0272, U+0275, U+028A, U+0294-0295, U+029F, U+02B0, U+02B7-02BA, U+02C0, U+02C7, U+02D0-02D1, U+02DD, U+0302, U+0306-0307, U+030A-030C, U+030F, U+0311-0313, U+0315, U+031B, U+0324-0328, U+032E, U+0331-0332, U+0335, U+0338, U+1D00, U+1DBB, U+1DBF, U+1E0E-1E0F, U+1E24-1E25, U+1E30-1E37, U+1E3A-1E3B, U+1E48-1E49, U+1E5A-1E5B, U+1E62-1E63, U+1E6E-1E6F, U+1E80-1E85, U+1E9E, U+1EA0-1EF9, U+2010, U+2020-2021, U+2030, U+203F, U+2052, U+2113, U+2C62, U+2C65-2C66, U+2C6D, U+A7AC-A7AE, U+A7B3;
}

/* KarmanFlow Mono */

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, 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+2191, U+2193, U+2212, U+2215;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-currency-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+20A1, U+20A4, U+20A6, U+20A8-20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-ext-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02C7, U+02DD, U+0302, U+0306-0307, U+030A-030C, U+0312, U+0315, U+031B, U+0326-0328, U+1E80-1E85, U+1E9E, U+1EA0-1EF9, U+2020-2021, U+2030, U+2113;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, 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+2191, U+2193, U+2212, U+2215;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-currency-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+20A1, U+20A4, U+20A6, U+20A8-20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-ext-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02C7, U+02DD, U+0302, U+0306-0307, U+030A-030C, U+0312, U+0315, U+031B, U+0326-0328, U+1E80-1E85, U+1E9E, U+1EA0-1EF9, U+2020-2021, U+2030, U+2113;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, 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+2191, U+2193, U+2212, U+2215;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-currency-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+20A1, U+20A4, U+20A6, U+20A8-20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}

@font-face {
  font-family: "KarmanFlow Mono";
  src: url("./fonts/karmanflow-mono-latin-ext-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01CD-01DC, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+02C7, U+02DD, U+0302, U+0306-0307, U+030A-030C, U+0312, U+0315, U+031B, U+0326-0328, U+1E80-1E85, U+1E9E, U+1EA0-1EF9, U+2020-2021, U+2030, U+2113;
}

:root {
  --font-family-display: "KarmanFlow Soft", Georgia, serif;
  --font-family-sans: "Radio Canada", system-ui, sans-serif;
  --font-family-mono: "KarmanFlow Mono", ui-monospace, monospace;
  --kf-serif: var(--font-family-display);
  --kf-sans: var(--font-family-sans);
  --kf-mono: var(--font-family-mono);
  /* No italic face ships, so no browser fakes one. */
  font-synthesis-style: none;
}
