/* Self-hosted fonts — vendored from Google Fonts so the app renders on
   restrictive networks that block fonts.googleapis.com / fonts.gstatic.com.
   Noto Serif SC is subset to the exact CJK glyphs used by the app. */

/* ===== jakarta ===== */
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/jakarta-1.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/jakarta-2.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/jakarta-3.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;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/jakarta-4.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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/jakarta-1.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/jakarta-2.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/jakarta-3.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;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/jakarta-4.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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./fonts/jakarta-1.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./fonts/jakarta-2.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./fonts/jakarta-3.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;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./fonts/jakarta-4.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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/jakarta-1.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/jakarta-2.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/jakarta-3.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;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/jakarta-4.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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(./fonts/jakarta-1.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(./fonts/jakarta-2.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(./fonts/jakarta-3.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;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(./fonts/jakarta-4.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;
}

/* ===== bricolage ===== */
/* vietnamese */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-1.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-2.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;
}
/* latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-3.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;
}
/* vietnamese */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-1.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-2.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;
}
/* latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-3.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;
}
/* vietnamese */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-1.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-2.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;
}
/* latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-3.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;
}
/* vietnamese */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-1.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-2.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;
}
/* latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(./fonts/bricolage-3.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;
}

/* ===== notoserifsc ===== */
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/notoserifsc-1.woff2) format('woff2');
  unicode-range: U+3001-3002, U+300a-300b, U+4e00, U+4e09-4e0b, U+4e0d-4e0e, U+4e13, U+4e1a, U+4e24, U+4e2a, U+4e2d, U+4e3a-4e3b, U+4e45, U+4e49, U+4e4b, U+4e4f-4e50, U+4e5f-4e60, U+4e70, U+4e86, U+4e89, U+4e8b-4e8c, U+4e8e, U+4e94, U+4e9b, U+4ea4, U+4eba, U+4ec5, U+4ecd-4ece, U+4ed6, U+4ed8, U+4ee3, U+4ee5, U+4ef6, U+4efb, U+4efd, U+4f0f-4f11, U+4f18, U+4f1a, U+4f20, U+4f46, U+4f4d, U+4f53, U+4f55, U+4f59, U+4f5c, U+4f73, U+4f7f, U+4f8b, U+4fdd, U+4fe1, U+4fee, U+500d, U+503c, U+504f, U+505a, U+505c, U+5065, U+5085, U+50a8, U+50cf, U+5145, U+5148-5149, U+5165, U+5168, U+516b-516d, U+5171, U+5173, U+5176-5177, U+517b, U+5185, U+518d, U+5192, U+5199, U+51b2-51b3, U+51cf, U+51f6, U+51fa-51fb, U+5206-5207, U+5212, U+521b, U+5220, U+5224, U+5229, U+522b, U+5230, U+5236-5237, U+524d, U+5269, U+529b, U+529e-52a1, U+52a8-52a9, U+52b2-52b3, U+52bf, U+52c9, U+52e4, U+5305, U+5316, U+5319, U+533b, U+5347, U+534e, U+535a, U+5373, U+538b, U+53bb, U+53c2, U+53ca-53cb, U+53d1, U+53d6-53d8, U+53e3, U+53ea, U+53ef-53f0, U+53f3, U+53f7-53f8, U+5403, U+5408-5409, U+540c-540e, U+5411, U+542b-542c, U+542f, U+5435, U+5438, U+544a, U+5458, U+547d, U+548c, U+5524, U+552e, U+5546, U+5584, U+559c, U+5634, U+56db, U+56de, U+56e0, U+56e2, U+56fe, U+5728, U+5730, U+573a, U+5747, U+574f, U+575a, U+578b, U+57ce, U+57f9-57fa, U+586b, U+589e, U+58f0, U+590d, U+5916, U+591a, U+591c, U+5927, U+5929-592a, U+5931, U+5934, U+5973, U+597d, U+5982, U+5987, U+59cb, U+59d3, U+59fb, U+5a5a, U+5b50, U+5b57-5b58, U+5b66, U+5b87, U+5b89, U+5b8c, U+5b97-5b9a, U+5bb3, U+5bb6, U+5bb9, U+5bc6, U+5bcc, U+5bf9, U+5bfb-5bfc, U+5bff, U+5c06, U+5c0f, U+5c11, U+5c1a, U+5c1d, U+5c31, U+5c40, U+5c4b, U+5c4f, U+5c55, U+5c5e, U+5dde, U+5de5-5de7, U+5df1-5df2, U+5df4, U+5e02, U+5e08, U+5e26, U+5e2e, U+5e38, U+5e73-5e74, U+5e76, U+5e7f, U+5e94, U+5e97, U+5e9c, U+5ea6, U+5eb7, U+5ef6, U+5efa, U+5f00, U+5f02, U+5f15, U+5f1f, U+5f31, U+5f3a, U+5f53, U+5f55, U+5f97, U+5fc3, U+5fc5, U+5fd7, U+5fe0, U+5feb, U+5ff5, U+6012, U+6027-6028, U+603b, U+604b, U+6062, U+606f, U+60a8, U+60c5, U+60eb, U+60f3, U+6108, U+610f, U+611f, U+613f, U+614e, U+6167, U+61d2, U+6210, U+6216, U+6218, U+6237, U+623f-6240, U+624b, U+624d, U+6253, U+6267, U+6269, U+626c, U+627e-6280, U+6291, U+6295, U+629a, U+62a4-62a5, U+62b1, U+62e9, U+6301, U+6307, U+6309, U+6311, U+6362, U+6377, U+638c, U+6392, U+63a7-63a8, U+63d0, U+63e1, U+641c, U+64a4, U+64ad, U+64c5, U+64cd-64ce, U+652f, U+6536, U+6539, U+653e-653f, U+6548, U+654f, U+6559, U+655b, U+6562-6563, U+6570, U+6574, U+6587, U+6599, U+65ad, U+65b0, U+65b9, U+65c5, U+65e0, U+65e5, U+65f6, U+65fa, U+660e, U+6613, U+661f, U+662f, U+663e, U+664d, U+667a, U+6682, U+66dc, U+66f4, U+6700, U+6708-6709, U+670b, U+671f, U+672a, U+672f, U+673a, U+6743, U+675f, U+6765, U+677f, U+6790, U+679c, U+67b6, U+67e5, U+6807, U+6821, U+683c, U+6843, U+68c0, U+6b21-6b22, U+6b32, U+6b63-6b65, U+6b8a, U+6bb5, U+6bc5, U+6bcd, U+6bcf, U+6c14, U+6c34, U+6c38, U+6c89, U+6ca1, U+6cd5, U+6ce8, U+6d3b, U+6d41, U+6d4b, U+6d88, U+6df1, U+6df7, U+6e38, U+6ed1, U+6f5c, U+6fc0, U+7075, U+70b9, U+7136, U+715e, U+7231, U+7247, U+724c, U+7279, U+72af, U+72b9, U+72ec, U+73af-73b0, U+73ed, U+7403, U+7406, U+751c, U+751f, U+7528, U+7531, U+7535, U+7537, U+7559, U+7565, U+7591, U+7597, U+75b2, U+75be, U+75c5, U+75c7, U+764c, U+767b, U+7684, U+76c8, U+76f8, U+770b, U+773c, U+7740, U+77ac, U+77ed, U+7801, U+7834, U+7840, U+786e, U+78c1, U+793a, U+793e, U+7978, U+79bb, U+79d1, U+79d8, U+79fb, U+7a0b, U+7a33, U+7a74, U+7a81, U+7acb, U+7ae0, U+7b26, U+7b49, U+7b4b, U+7b56, U+7b97, U+7ba1, U+7bb1, U+7c7b, U+7cbe, U+7cfb, U+7d22, U+7ea2, U+7ea7, U+7ebf, U+7ec4, U+7ec8, U+7ed3, U+7ed9, U+7edd, U+7edf, U+7ee7, U+7eea, U+7eed, U+7eff, U+7f18, U+7f20, U+7f3a, U+7f6e, U+7f8e, U+8001, U+8003, U+800c, U+8010, U+804c, U+8054, U+806a, U+80c3, U+80d6, U+80fd, U+8109, U+8111, U+813e, U+819d, U+81ea, U+81f3-81f4, U+820d, U+826f, U+827a, U+8282, U+82b1, U+83b7, U+84c4, U+85cf, U+8840, U+884c, U+8861, U+8868, U+88ab, U+8981, U+89c2, U+89c4, U+89c6, U+89c9, U+89e3, U+8a00, U+8ba1, U+8ba4, U+8ba9, U+8bae, U+8bb0, U+8bb2, U+8bbe-8bc1, U+8bd5, U+8bda, U+8bdd, U+8be5, U+8bed, U+8bef, U+8bf4, U+8bf7, U+8bfb, U+8bfe, U+8c03, U+8c08, U+8c0b, U+8c28, U+8c37, U+8c61, U+8c6b, U+8d1f, U+8d22-8d23, U+8d25-8d26, U+8d28, U+8d35, U+8d44, U+8d4c, U+8d5a, U+8d62, U+8d70, U+8d77, U+8d8a, U+8db3, U+8ddf, U+8df3, U+8e2a, U+8eab, U+8f66, U+8f6c, U+8f6f, U+8f7b, U+8f7d, U+8f93, U+8fb0, U+8fc1, U+8fc7, U+8fce, U+8fd0, U+8fd4, U+8fd8-8fd9, U+8fdb, U+8fde, U+8ffd, U+9000-9002, U+9009, U+9010, U+9012, U+901a, U+9038, U+9053, U+90ae, U+90bb, U+90c1, U+90e8, U+914d, U+9192, U+91cc-91cd, U+91cf, U+91d1, U+94a5, U+94b1, U+9500-9501, U+9510, U+9519, U+957f, U+95e8, U+95ee, U+95f4, U+961f, U+9632, U+9636, U+9645, U+964d, U+9650, U+9664, U+9669, U+968f-9690, U+96be, U+96c6, U+9700, U+975e, U+9760, U+9762, U+9875, U+987e, U+9884, U+9886, U+9891, U+9898, U+98ce, U+9910, U+996d-996e, U+9996, U+9a97, U+9ad8, U+9b3c, U+9b45, U+9ec4, U+9ed8, U+ff01, U+ff08-ff09, U+ff0c, U+ff0f, U+ff1a-ff1b, U+ff1f;
}
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(./fonts/notoserifsc-1.woff2) format('woff2');
  unicode-range: U+3001-3002, U+300a-300b, U+4e00, U+4e09-4e0b, U+4e0d-4e0e, U+4e13, U+4e1a, U+4e24, U+4e2a, U+4e2d, U+4e3a-4e3b, U+4e45, U+4e49, U+4e4b, U+4e4f-4e50, U+4e5f-4e60, U+4e70, U+4e86, U+4e89, U+4e8b-4e8c, U+4e8e, U+4e94, U+4e9b, U+4ea4, U+4eba, U+4ec5, U+4ecd-4ece, U+4ed6, U+4ed8, U+4ee3, U+4ee5, U+4ef6, U+4efb, U+4efd, U+4f0f-4f11, U+4f18, U+4f1a, U+4f20, U+4f46, U+4f4d, U+4f53, U+4f55, U+4f59, U+4f5c, U+4f73, U+4f7f, U+4f8b, U+4fdd, U+4fe1, U+4fee, U+500d, U+503c, U+504f, U+505a, U+505c, U+5065, U+5085, U+50a8, U+50cf, U+5145, U+5148-5149, U+5165, U+5168, U+516b-516d, U+5171, U+5173, U+5176-5177, U+517b, U+5185, U+518d, U+5192, U+5199, U+51b2-51b3, U+51cf, U+51f6, U+51fa-51fb, U+5206-5207, U+5212, U+521b, U+5220, U+5224, U+5229, U+522b, U+5230, U+5236-5237, U+524d, U+5269, U+529b, U+529e-52a1, U+52a8-52a9, U+52b2-52b3, U+52bf, U+52c9, U+52e4, U+5305, U+5316, U+5319, U+533b, U+5347, U+534e, U+535a, U+5373, U+538b, U+53bb, U+53c2, U+53ca-53cb, U+53d1, U+53d6-53d8, U+53e3, U+53ea, U+53ef-53f0, U+53f3, U+53f7-53f8, U+5403, U+5408-5409, U+540c-540e, U+5411, U+542b-542c, U+542f, U+5435, U+5438, U+544a, U+5458, U+547d, U+548c, U+5524, U+552e, U+5546, U+5584, U+559c, U+5634, U+56db, U+56de, U+56e0, U+56e2, U+56fe, U+5728, U+5730, U+573a, U+5747, U+574f, U+575a, U+578b, U+57ce, U+57f9-57fa, U+586b, U+589e, U+58f0, U+590d, U+5916, U+591a, U+591c, U+5927, U+5929-592a, U+5931, U+5934, U+5973, U+597d, U+5982, U+5987, U+59cb, U+59d3, U+59fb, U+5a5a, U+5b50, U+5b57-5b58, U+5b66, U+5b87, U+5b89, U+5b8c, U+5b97-5b9a, U+5bb3, U+5bb6, U+5bb9, U+5bc6, U+5bcc, U+5bf9, U+5bfb-5bfc, U+5bff, U+5c06, U+5c0f, U+5c11, U+5c1a, U+5c1d, U+5c31, U+5c40, U+5c4b, U+5c4f, U+5c55, U+5c5e, U+5dde, U+5de5-5de7, U+5df1-5df2, U+5df4, U+5e02, U+5e08, U+5e26, U+5e2e, U+5e38, U+5e73-5e74, U+5e76, U+5e7f, U+5e94, U+5e97, U+5e9c, U+5ea6, U+5eb7, U+5ef6, U+5efa, U+5f00, U+5f02, U+5f15, U+5f1f, U+5f31, U+5f3a, U+5f53, U+5f55, U+5f97, U+5fc3, U+5fc5, U+5fd7, U+5fe0, U+5feb, U+5ff5, U+6012, U+6027-6028, U+603b, U+604b, U+6062, U+606f, U+60a8, U+60c5, U+60eb, U+60f3, U+6108, U+610f, U+611f, U+613f, U+614e, U+6167, U+61d2, U+6210, U+6216, U+6218, U+6237, U+623f-6240, U+624b, U+624d, U+6253, U+6267, U+6269, U+626c, U+627e-6280, U+6291, U+6295, U+629a, U+62a4-62a5, U+62b1, U+62e9, U+6301, U+6307, U+6309, U+6311, U+6362, U+6377, U+638c, U+6392, U+63a7-63a8, U+63d0, U+63e1, U+641c, U+64a4, U+64ad, U+64c5, U+64cd-64ce, U+652f, U+6536, U+6539, U+653e-653f, U+6548, U+654f, U+6559, U+655b, U+6562-6563, U+6570, U+6574, U+6587, U+6599, U+65ad, U+65b0, U+65b9, U+65c5, U+65e0, U+65e5, U+65f6, U+65fa, U+660e, U+6613, U+661f, U+662f, U+663e, U+664d, U+667a, U+6682, U+66dc, U+66f4, U+6700, U+6708-6709, U+670b, U+671f, U+672a, U+672f, U+673a, U+6743, U+675f, U+6765, U+677f, U+6790, U+679c, U+67b6, U+67e5, U+6807, U+6821, U+683c, U+6843, U+68c0, U+6b21-6b22, U+6b32, U+6b63-6b65, U+6b8a, U+6bb5, U+6bc5, U+6bcd, U+6bcf, U+6c14, U+6c34, U+6c38, U+6c89, U+6ca1, U+6cd5, U+6ce8, U+6d3b, U+6d41, U+6d4b, U+6d88, U+6df1, U+6df7, U+6e38, U+6ed1, U+6f5c, U+6fc0, U+7075, U+70b9, U+7136, U+715e, U+7231, U+7247, U+724c, U+7279, U+72af, U+72b9, U+72ec, U+73af-73b0, U+73ed, U+7403, U+7406, U+751c, U+751f, U+7528, U+7531, U+7535, U+7537, U+7559, U+7565, U+7591, U+7597, U+75b2, U+75be, U+75c5, U+75c7, U+764c, U+767b, U+7684, U+76c8, U+76f8, U+770b, U+773c, U+7740, U+77ac, U+77ed, U+7801, U+7834, U+7840, U+786e, U+78c1, U+793a, U+793e, U+7978, U+79bb, U+79d1, U+79d8, U+79fb, U+7a0b, U+7a33, U+7a74, U+7a81, U+7acb, U+7ae0, U+7b26, U+7b49, U+7b4b, U+7b56, U+7b97, U+7ba1, U+7bb1, U+7c7b, U+7cbe, U+7cfb, U+7d22, U+7ea2, U+7ea7, U+7ebf, U+7ec4, U+7ec8, U+7ed3, U+7ed9, U+7edd, U+7edf, U+7ee7, U+7eea, U+7eed, U+7eff, U+7f18, U+7f20, U+7f3a, U+7f6e, U+7f8e, U+8001, U+8003, U+800c, U+8010, U+804c, U+8054, U+806a, U+80c3, U+80d6, U+80fd, U+8109, U+8111, U+813e, U+819d, U+81ea, U+81f3-81f4, U+820d, U+826f, U+827a, U+8282, U+82b1, U+83b7, U+84c4, U+85cf, U+8840, U+884c, U+8861, U+8868, U+88ab, U+8981, U+89c2, U+89c4, U+89c6, U+89c9, U+89e3, U+8a00, U+8ba1, U+8ba4, U+8ba9, U+8bae, U+8bb0, U+8bb2, U+8bbe-8bc1, U+8bd5, U+8bda, U+8bdd, U+8be5, U+8bed, U+8bef, U+8bf4, U+8bf7, U+8bfb, U+8bfe, U+8c03, U+8c08, U+8c0b, U+8c28, U+8c37, U+8c61, U+8c6b, U+8d1f, U+8d22-8d23, U+8d25-8d26, U+8d28, U+8d35, U+8d44, U+8d4c, U+8d5a, U+8d62, U+8d70, U+8d77, U+8d8a, U+8db3, U+8ddf, U+8df3, U+8e2a, U+8eab, U+8f66, U+8f6c, U+8f6f, U+8f7b, U+8f7d, U+8f93, U+8fb0, U+8fc1, U+8fc7, U+8fce, U+8fd0, U+8fd4, U+8fd8-8fd9, U+8fdb, U+8fde, U+8ffd, U+9000-9002, U+9009, U+9010, U+9012, U+901a, U+9038, U+9053, U+90ae, U+90bb, U+90c1, U+90e8, U+914d, U+9192, U+91cc-91cd, U+91cf, U+91d1, U+94a5, U+94b1, U+9500-9501, U+9510, U+9519, U+957f, U+95e8, U+95ee, U+95f4, U+961f, U+9632, U+9636, U+9645, U+964d, U+9650, U+9664, U+9669, U+968f-9690, U+96be, U+96c6, U+9700, U+975e, U+9760, U+9762, U+9875, U+987e, U+9884, U+9886, U+9891, U+9898, U+98ce, U+9910, U+996d-996e, U+9996, U+9a97, U+9ad8, U+9b3c, U+9b45, U+9ec4, U+9ed8, U+ff01, U+ff08-ff09, U+ff0c, U+ff0f, U+ff1a-ff1b, U+ff1f;
}

/* ===== notosanssc — 地支关系 (book 3) ONLY =====
   GA renders its 书籍 pages in Noto Sans SC, and GA's column widths are a function of
   that font's metrics. The app's body font is Plus Jakarta Sans, whose CJK falls back to
   a system face — measured on prod, that made every column wider and ragged (十二长生 came
   out 727px against GA's 530). For the 1:1 pass this book therefore ships GA's own face.
   Self-hosted like every other font here: NO runtime CDN call.
   Subset to exactly the 292 glyphs the book renders in ms/en/zh (~50 KB per weight);
   regenerate with scripts/_bri-font-subset.md if the content changes. */
@font-face {
  font-family: 'Noto Sans SC BRI';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/notosanssc-bri-400.woff2) format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC BRI';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/notosanssc-bri-500.woff2) format('woff2');
}
#s-bri { font-family: 'Noto Sans SC BRI', 'Plus Jakarta Sans', sans-serif; }

/* ===== notosanssc — 创富宝典 (book 5) ONLY =====
   Same reason as the 地支关系 block above, and the same measurement: GA renders its 书籍
   pages in Noto Sans SC, and the app's body face (Plus Jakarta Sans) falls back to a
   system CJK face whose metrics differ. Measured in-app before this was added, against
   GA's own render at 390px: 27 of 137 text leaves drifted — the 财富密码 label box 17→15px,
   every 核心行动 number 13→11px wide, and every action line shifted 2px left and 2px wide.
   Nothing else was wrong; it was the typeface.

   ⚠️ NOT reusable from the BRI subset: that one covers exactly 地支关系's 292 glyphs, and
   this book needs 752 (653 CJK) of largely different prose — the missing ones would have
   fallen back silently, per character, which is harder to spot than a whole wrong face.

   Three weights because this screen uses all three: 400 body, 500 labels, 700 titles and
   the index numbers. Self-hosted like every other font here: NO runtime CDN call.
   Subset to exactly the glyphs the book renders in ms/en/zh (~104 KB per weight);
   regenerate with scripts/_wcg-font-subset.md after ANY content change to dict.ts.

   ⚠️ UPDATED 8 Aug 2026, phase 2. The redesign no longer chases GA's geometry, so this
   is no longer a parity artifact — it is now just the screen's CJK face, kept because
   every other book vendors one and a system-CJK fallback renders differently on every
   device. Regenerated at 767 glyphs to cover the redesign's own Chinese chrome
   (元素 names, 第 N 章, 全部, 收起本章, 显示/清除). */
@font-face {
  font-family: 'Noto Sans SC WCG';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./fonts/notosanssc-wcg-400.woff2) format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC WCG';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./fonts/notosanssc-wcg-500.woff2) format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC WCG';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./fonts/notosanssc-wcg-700.woff2) format('woff2');
}
/* ⚠️ ORDER FLIPPED in phase 2. Under the 1:1 clone, Noto Sans SC came FIRST because GA
   renders Latin in it too and the geometry had to match. The redesign is Tong Yi's own
   type: Latin/Malay must come from Plus Jakarta Sans like the rest of the app, with the
   subset serving only the CJK the Latin face has no glyph for. */
#s-wcg { font-family: 'Plus Jakarta Sans', 'Noto Sans SC WCG', sans-serif; }
