/* Font Face Declarations
 *
 * This file contains @font-face declarations for all custom fonts.
 * All fonts are self-hosted in /static/fonts/ (shared across all apps)
 *
 * Most fonts use variable font technology (single file, multiple weights)
 * Supports weights: 400 (normal), 500 (medium), 700 (bold)
 */

/* ========================================
   BODY FONTS
   ======================================== */

/* Inter - Variable font supporting weights 400-700 */
@font-face {
    font-family: 'Inter';
    src: url('../../fonts/Inter.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

/* IBM Plex Sans - Variable font supporting weights 400-700 */
@font-face {
    font-family: 'IBM Plex Sans';
    src: url('../../fonts/IBMPlexSans.woff2') format('woff2');
    font-weight: 100 700;
    font-style: normal;
    font-display: swap;
}

/* Source Sans Pro - Variable font supporting weights 400-700 */
@font-face {
    font-family: 'Source Sans Pro';
    src: url('../../fonts/SourceSansPro.woff2') format('woff2');
    font-weight: 200 900;
    font-style: normal;
    font-display: swap;
}

/* Manrope - Variable font supporting weights 400-700 */
@font-face {
    font-family: 'Manrope';
    src: url('../../fonts/Manrope.woff2') format('woff2');
    font-weight: 200 800;
    font-style: normal;
    font-display: swap;
}

/* ========================================
   HEADING FONTS
   ======================================== */

/* Poppins - Variable font supporting weights 400-700 */
@font-face {
    font-family: 'Poppins';
    src: url('../../fonts/Poppins.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

/* Satoshi - Variable font supporting weights 300-900 */
@font-face {
    font-family: 'Satoshi';
    src: url('../../fonts/Satoshi.woff2') format('woff2');
    font-weight: 300 900;
    font-style: normal;
    font-display: swap;
}

/* Inter for headings - uses same file as body */
/* (no duplicate declaration needed, already defined above) */

/* ========================================
   MONOSPACE FONTS (CODE)
   ======================================== */

/* Fira Code - Variable font with programming ligatures */
@font-face {
    font-family: 'Fira Code';
    src: url('../../fonts/FiraCode.woff2') format('woff2');
    font-weight: 300 700;
    font-style: normal;
    font-display: swap;
}

/* JetBrains Mono - Variable font optimized for developers */
@font-face {
    font-family: 'JetBrains Mono';
    src: url('../../fonts/JetBrainsMono.woff2') format('woff2');
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
}

/* Custom Mono - Hybrid font combining JetBrains Mono + Fira Code numbers
 * JetBrains Mono for all characters except digits
 * Fira Code for digits (0-9) only
 * Variable font supporting weights 300-800
 */

/* Custom Mono - JetBrains Mono base (all characters except digits) */
@font-face {
    font-family: 'Custom Mono';
    src: url('../../fonts/JetBrainsMono.woff2') format('woff2');
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000-002F, U+003A-10FFFF; /* Everything except 0-9 */
}

/* Custom Mono - Fira Code for digits only (optimized subset) */
@font-face {
    font-family: 'Custom Mono';
    src: url('../../fonts/FiraCode-Digits.woff2') format('woff2');
    font-weight: 300 700;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0030-0039; /* 0-9 only */
}

/* IBM Plex Mono - Static fonts with Latin1 + Pi (programming symbols) subsets
 * Uses unicode-range for automatic subset loading
 * Weights: 400 (Regular), 600 (SemiBold), 700 (Bold)
 * Styles: normal, italic
 */

/* Regular (400) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Regular-Latin1.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* Regular (400) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Regular-Pi.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}

/* Italic (400) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Italic-Latin1.woff2') format('woff2');
    font-weight: 400;
    font-style: italic;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* Italic (400) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Italic-Pi.woff2') format('woff2');
    font-weight: 400;
    font-style: italic;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}

/* SemiBold (600) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-SemiBold-Latin1.woff2') format('woff2');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* SemiBold (600) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-SemiBold-Pi.woff2') format('woff2');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}

/* SemiBold Italic (600) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-SemiBoldItalic-Latin1.woff2') format('woff2');
    font-weight: 600;
    font-style: italic;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* SemiBold Italic (600) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-SemiBoldItalic-Pi.woff2') format('woff2');
    font-weight: 600;
    font-style: italic;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}

/* Bold (700) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Bold-Latin1.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* Bold (700) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-Bold-Pi.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}

/* Bold Italic (700) - Latin1 subset */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-BoldItalic-Latin1.woff2') format('woff2');
    font-weight: 700;
    font-style: italic;
    font-display: swap;
    unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00A3, U+00A4-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+2074, U+20AC, U+2122, U+2212, U+FB01-FB02;
}

/* Bold Italic (700) - Pi subset (programming symbols) */
@font-face {
    font-family: 'IBM Plex Mono';
    src: url('../../fonts/IBMPlexMono-BoldItalic-Pi.woff2') format('woff2');
    font-weight: 700;
    font-style: italic;
    font-display: swap;
    unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2028-2029, U+202F, U+2032-2033, U+205F, 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+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD;
}
