/* IBM Plex — self-hosted. SIL Open Font License 1.1, see LICENSE.txt.
   ---------------------------------------------------------------------------
   Source: npm @ibm/plex-sans 1.1.0, @ibm/plex-sans-thai 1.1.0, @ibm/plex-mono 2.5.0.
   The .woff2 files are copied verbatim out of those packages; to update, bump the
   versions, re-copy, and leave this file's declarations alone.

   Three faces, one system. Plex Sans and Plex Sans Thai were drawn as parts of the
   same superfamily (the Thai by Cadson Demak in Bangkok), which is the point of the
   switch: this site sets Thai and Latin in the same line constantly — "งานพิมพ์ 3 มิติ",
   "PETG-CF", "±0.3 มม.", "09:00-18:00 น." — and the previous Inter/Noto pairing was a
   fallback chain between two unrelated families, not a designed pair.

   Only what the site actually renders is here: weights 400/500/600 per DESIGN.md's
   one-weight-family rule, no italics, and the Latin1 + Pi subsets rather than the
   complete cuts. Pi is not optional — it carries ฿ (U+0E3F), ≤ ≥ ≈ × and the arrows
   used in tolerance and pricing copy.

   The unicode-range on every face is what keeps this cheap: an English visitor never
   downloads the 120 KB of Thai, and a Thai visitor never downloads Cyrillic or Greek
   because those subsets were never shipped. Latin always resolves from Plex Sans and
   Thai always from Plex Sans Thai — the Thai face carries Latin glyphs too, and
   ranging it to the Thai block is what stops the two from being mixed at random. */

/* --- IBM Plex Sans — Latin, the whole interface ------------------------------ */
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexSans-Regular-Latin1.woff2') format('woff2');
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexSans-Regular-Pi.woff2') format('woff2');
    unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('IBMPlexSans-Medium-Latin1.woff2') format('woff2');
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('IBMPlexSans-Medium-Pi.woff2') format('woff2');
    unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('IBMPlexSans-SemiBold-Latin1.woff2') format('woff2');
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('IBMPlexSans-SemiBold-Pi.woff2') format('woff2');
    unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+FEFF, U+FFFD;
}

/* --- IBM Plex Sans Thai — the Thai block only -------------------------------- */
@font-face {
    font-family: 'IBM Plex Sans Thai';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexSansThai-Regular.woff2') format('woff2');
    unicode-range: U+0E01-0E3A, U+0E40-0E5B;
}
@font-face {
    font-family: 'IBM Plex Sans Thai';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('IBMPlexSansThai-Medium.woff2') format('woff2');
    unicode-range: U+0E01-0E3A, U+0E40-0E5B;
}
@font-face {
    font-family: 'IBM Plex Sans Thai';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('IBMPlexSansThai-SemiBold.woff2') format('woff2');
    unicode-range: U+0E01-0E3A, U+0E40-0E5B;
}

/* --- IBM Plex Mono — measurement and material codes only --------------------- */
/* This face sets part dimensions, file sizes, and engineering material designations
   (PETG-CF, PA12) — data, never prose, and never Thai. Two weights, and 600 is not
   optional: typography.css sets `strong { font-weight: 600 !important }` estate-wide,
   and the material codes are <strong>. Without a real SemiBold the browser synthesises
   one and smears the strokes at .84rem. */
@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexMono-Regular-Latin1.woff2') format('woff2');
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('IBMPlexMono-Regular-Pi.woff2') format('woff2');
    unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('IBMPlexMono-SemiBold-Latin1.woff2') format('woff2');
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('IBMPlexMono-SemiBold-Pi.woff2') format('woff2');
    unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+FEFF, U+FFFD;
}

/* The one stack the whole estate uses. Latin resolves from Plex Sans, Thai from Plex
   Sans Thai, and the generic keyword is the last resort before a system face. */
:root {
    --maliev-font-sans: 'IBM Plex Sans', 'IBM Plex Sans Thai', sans-serif;
    --maliev-font-mono: 'IBM Plex Mono', ui-monospace, 'IBM Plex Sans', monospace;
}
