/* ── Locally-hosted Noto fallback fonts for the matrix-rain canvas ──────────
   These cover the exotic Unicode glyphs used in the AESTHETIC / GEMS / KATAKANA
   glyph pools: geometric shapes, musical symbols, Egyptian hieroglyphs, Syriac.
   Files are served from /static/fonts/ so no external CDN request is needed.
   ──────────────────────────────────────────────────────────────────────────── */

/* Noto Sans Symbols 2 ─ math */
@font-face {
  font-family: 'Noto Sans Symbols 2';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols2-math.woff2') format('woff2');
  unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315,
    U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A,
    U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1,
    U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038,
    U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071,
    U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF,
    U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192,
    U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214,
    U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A,
    U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF,
    U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F,
    U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030,
    U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;
}

/* Noto Sans Symbols 2 ─ symbols (main geometric / arrow / misc block) */
@font-face {
  font-family: 'Noto Sans Symbols 2';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols2-symbols.woff2') format('woff2');
  unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0,
    U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF,
    U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F,
    U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922,
    U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB,
    U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB,
    U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF,
    U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C,
    U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382,
    U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6,
    U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7,
    U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444,
    U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3,
    U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6,
    U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB,
    U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513,
    U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687,
    U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA,
    U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3,
    U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847,
    U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB,
    U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996,
    U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6,
    U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
}

/* Noto Sans Symbols 2 ─ latin */
@font-face {
  font-family: 'Noto Sans Symbols 2';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols2-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Symbols ─ symbols */
@font-face {
  font-family: 'Noto Sans Symbols';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols-a.woff2') format('woff2');
  unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0,
    U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF,
    U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F,
    U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922,
    U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB,
    U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB,
    U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF,
    U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C,
    U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382,
    U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6,
    U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7,
    U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444,
    U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3,
    U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6,
    U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB,
    U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513,
    U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687,
    U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA,
    U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3,
    U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847,
    U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB,
    U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996,
    U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6,
    U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
}

/* Noto Sans Symbols ─ latin-ext */
@font-face {
  font-family: 'Noto Sans Symbols';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols-b.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* Noto Sans Symbols ─ latin */
@font-face {
  font-family: 'Noto Sans Symbols';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSymbols-c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Music ─ music */
@font-face {
  font-family: 'Noto Music';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoMusic-a.woff2') format('woff2');
  unicode-range: U+25CC, U+2669-266F, U+1D000-1D0F5, U+1D100-1D126,
    U+1D129-1D1EA, U+1D200-1D245;
}

/* Noto Music ─ latin-ext */
@font-face {
  font-family: 'Noto Music';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoMusic-b.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* Noto Music ─ latin */
@font-face {
  font-family: 'Noto Music';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoMusic-c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Egyptian Hieroglyphs ─ egyptian */
@font-face {
  font-family: 'Noto Sans Egyptian Hieroglyphs';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansEgyptianHieroglyphs-a.woff2') format('woff2');
  unicode-range: U+13000-13455, U+13460-143FA;
}

/* Noto Sans Egyptian Hieroglyphs ─ latin-ext */
@font-face {
  font-family: 'Noto Sans Egyptian Hieroglyphs';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansEgyptianHieroglyphs-b.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* Noto Sans Egyptian Hieroglyphs ─ latin */
@font-face {
  font-family: 'Noto Sans Egyptian Hieroglyphs';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansEgyptianHieroglyphs-c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Syriac ─ syriac */
@font-face {
  font-family: 'Noto Sans Syriac';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSyriac-a.woff2') format('woff2');
  unicode-range: U+0303-0304, U+0307-0308, U+030A, U+0320, U+0323-0325,
    U+032D-032E, U+0330-0331, U+060C, U+061B-061C, U+061F, U+0621, U+0640,
    U+064B-0655, U+0660-066C, U+0670, U+0700-074F, U+0860-086A, U+1DF8,
    U+1DFA, U+200C-200F, U+25CC, U+2670-2671;
}

/* Noto Sans Syriac ─ latin-ext */
@font-face {
  font-family: 'Noto Sans Syriac';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSyriac-b.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* Noto Sans Syriac ─ latin */
@font-face {
  font-family: 'Noto Sans Syriac';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansSyriac-c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Mende Kikakui ─ mende-kikakui */
@font-face {
  font-family: 'Noto Sans Mende Kikakui';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansMendeKikakui-a.woff2') format('woff2');
  unicode-range: U+25CC, U+1E800-1E8DF;
}

/* Noto Sans Mende Kikakui ─ latin-ext */
@font-face {
  font-family: 'Noto Sans Mende Kikakui';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansMendeKikakui-b.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
    U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
    U+A720-A7FF;
}

/* Noto Sans Mende Kikakui ─ latin */
@font-face {
  font-family: 'Noto Sans Mende Kikakui';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/NotoSansMendeKikakui-c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
