@font-face {
  font-family: "Resource Han Rounded CN";
  src: url("assets/fonts/resource-han-rounded-cn-regular-other.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+2002-2003, U+2010-2012, U+2014-2016, U+2018, U+201A, U+201E, U+2020-2022, U+2025-2027, U+2030, U+2032-2033, U+2035, U+2039-203C, U+2042, U+2047-2049, U+2051, U+2074, U+20A9, U+20AB-20AC, U+20DD-20DE, U+2100, U+2103, U+2105, U+2109-210A, U+210F, U+2113, U+2116, U+2121-2122, U+2126-2127, U+212B, U+212E, U+2135, U+213B, U+2160-216B, U+2170-217B, U+2190-2199, U+21B8-21B9, U+21C4-21C6, U+21CB-21CC, U+21D0, U+21D2, U+21D4, U+21E6-21E9, U+21F5, U+2200, U+2202-2203, U+2205-220B, U+220F, U+2211-2213, U+2215, U+221A, U+221D-2220, U+2223, U+2225-222E, U+2234-2237, U+223D, U+2243, U+2245, U+2248, U+224C, U+2252, U+2260-2262, U+2264-2267, U+226A-226B, U+226E-226F, U+2272-2273, U+2276-2277, U+2282-2287, U+228A-228B, U+2295-2299, U+22A0, U+22A5, U+22BF, U+22DA-22DB, U+22EF, U+2305-2307, U+2312, U+2318, U+2329-232A, U+23B0-23B1, U+23BE-23CC, U+23CE, U+23DA-23DB, U+2423, U+2460-25AB, U+25B1-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25CC, U+25CE-25D3, U+25E2-25E6, U+25EF, U+2600-2603, U+2605-2606, U+2609, U+260E-260F, U+2616-2617, U+261C-261F, U+262F, U+2640-2642, U+2660-266F, U+2672-267D, U+26A0, U+26BD-26BE, U+2702, U+2713, U+271A, U+273D, U+273F-2740, U+2756, U+2776-2793, U+27A1, U+2934-2935, U+29BF, U+29FA-29FB, U+2B05-2B07, U+2B1A, U+2B95, U+2E3A-2E3B, U+2E80-2E99, U+2E9B-2EF3, U+2F00-2FD5, U+2FF0-2FFB, U+3000, U+3003-300B, U+300E-303F, U+3041-3096, U+3099-30FF, U+3105-312F, U+3131-3163, U+3165-318E, U+3190-31BB, U+31C0-31E3, U+31F0-321E, U+3220-332B, U+332D-4DB5, U+4E01-4E08, U+4E0C, U+4E0F-4E12, U+4E14-4E19, U+4E1B-4E23, U+4E25-4E29, U+4E2B-4E2C, U+4E2E-4E39, U+4E3C-4E44, U+4E46-4E5F, U+4E61-4E65, U+4E67-4E8A, U+4E8C-4E8D, U+4E8F-4EA3, U+4EA5-4EA6, U+4EA8-4EAA, U+4EAC-4EB9, U+4EBB-4ECA, U+4ECC-4ECD, U+4ECF-4ED2, U+4ED4-4ED5, U+4ED7-4EE2, U+4EE4, U+4EE6-4EF5, U+4EF7-4EFA, U+4EFC, U+4EFE-4F00, U+4F02-4F17, U+4F19-4F1F, U+4F21-4F2F, U+4F31-4F52, U+4F54, U+4F56-4F5B, U+4F5D-4FDC, U+4FDE-4FE0, U+4FE2-5147, U+5149-514C, U+514E-5164, U+5166-5167, U+5169-516B, U+516D-5172, U+5175, U+5178-517A, U+517C-5184, U+5186-518B, U+518D-51C5, U+51C7-5205, U+5208-5216, U+5218-521A, U+521C-5228, U+522A-522F, U+5231-5235, U+5237-524C, U+524E-5269, U+526B-529A, U+529C-529D, U+529F-52A0, U+52A2-5315, U+5317-5339, U+533B-5346, U+5348-534E, U+5350-5354, U+5356-538A, U+538C-539E, U+53A0-53C1, U+53C3-53C9, U+53CB-53CC, U+53CE-53D0, U+53D2-53E2, U+53E4-53EE, U+53F1-5407, U+5409-540B, U+540D, U+540F-5410, U+5412-542E, U+5430-548B, U+548D-54C0, U+54C2-5667, U+5669-56DD, U+56DF-56EC, U+56EE-5727, U+5729-5765, U+5767-578A, U+578C-57F8, U+57FB-5882, U+5884-58EF, U+58F1-5903, U+5905-590C, U+590E-5915, U+5917-5919, U+591B, U+591D-591E, U+5920-5926, U+5928-5930, U+5932-5956, U+5958-5981, U+5983-59CA, U+59CC-5B4F, U+5B51-5B57, U+5B59-5B62, U+5B64-5B65, U+5B67-5B88, U+5B8A-5B8B, U+5B8D-5B9D, U+5B9F-5BB8, U+5BBA-5BC5, U+5BC7-5BDE, U+5BE0-5BF8, U+5BFA-5BFB, U+5BFD-5C0E, U+5C10-5C3F, U+5C41-5DE4, U+5DE6, U+5DE8-5DF1, U+5DF3-5E02, U+5E04-5E07, U+5E09-5E41, U+5E43-5E72, U+5E75, U+5E77-5E8E, U+5E90-5E92, U+5E95-5EA5, U+5EA7-5EF5, U+5EF7-5EF9, U+5EFB-5EFF, U+5F01-5F0E, U+5F10-5F52, U+5F54, U+5F56-5F84, U+5F86-5FA9, U+5FAB-5FAD, U+5FAF-5FC5, U+5FC7-5FD6, U+5FD8-6000, U+6002-6026, U+6028-6061, U+6063-606E, U+6070-620E, U+6211-6215, U+6217, U+6219-624A, U+624C-6252, U+6254-6266, U+6268-627F, U+6281-62C5, U+62C7-62E8, U+62EA-6300, U+6302-6308, U+630A-6361, U+6363-636D, U+636F-6391, U+6393-63A4, U+63A6, U+63A9-64AC, U+64AE-64CC, U+64CE-6535, U+6537-653D, U+6540-6544, U+6546-6558, U+655A-656F, U+6571-6573, U+6575-6586, U+6588-6598, U+659A-65AE, U+65B1-65B8, U+65BA-65BC, U+65BE-65E4, U+65E6, U+65E8-65F5, U+65F7-660D, U+660F-6624, U+6626-662E, U+6630-6679, U+667B-66FF, U+6701-671E, U+6720-672B, U+672D-6739, U+673B-6741, U+6744-674F, U+6751-6783, U+6785-679B, U+679D-67B5, U+67B7-6806, U+6808-6820, U+6822-6836, U+6838-6845, U+6847-6A20, U+6A22-6B63, U+6B66-6BD4, U+6BD6-6C98, U+6C9A-6CD4, U+6CD6-6D3A, U+6D3C-6D4A, U+6D4C-6D76, U+6D78-6E04, U+6E06-6E37, U+6E39-6E8F, U+6E91-7247, U+7249-72B5, U+72B7-7386, U+7388-73AE, U+73B1-7405, U+7407-751E, U+7520-7527, U+7529-7530, U+7532-7534, U+7536-7558, U+755A-7683, U+7685-76D5, U+76D7-76ED, U+76EF-76F7, U+76F9-770A, U+770C-77EC, U+77EE-7800, U+7802-7813, U+7815-783F, U+7841-795D, U+795F-798E, U+7990-79BA, U+79BC-79D0, U+79D2-7A0A, U+7A0C-7A75, U+7A77-7ACA, U+7ACC-7AD8, U+7ADA-7ADF, U+7AE1-7B13, U+7B15-7B2B, U+7B2D-7B48, U+7B4A-7B53, U+7B55, U+7B57-7B7F, U+7B81-7B96, U+7B98-7BA0, U+7BA2-7BB0, U+7BB2-7BC6, U+7BC8-7C7A, U+7C7C-7CBD, U+7CBF-7CFA, U+7CFC-7D1F, U+7D21-7EA6, U+7EA8-7EBE, U+7EC0-7EC2, U+7EC5-7EC6, U+7EC8-7ECC, U+7ECE, U+7ED0-7ED2, U+7ED4-7EDB, U+7EDD-7EDE, U+7EE0-7EE8, U+7EEA-7EEC, U+7EEE-7F15, U+7F17-7F28, U+7F2A-7F50, U+7F52-7F6D, U+7F6F-8002, U+8004, U+8006-80B1, U+80B3-80FC, U+80FE-81E9, U+81EB-81F2, U+81F5-8229, U+822B-8271, U+8273-8279, U+827B-8281, U+8283-82F0, U+82F2-834F, U+8351-8424, U+8426-85CE, U+85D0-884B, U+884D-88C0, U+88C2-8985, U+8987-89C0, U+89C3-89C5, U+89C7-89D1, U+89D3-89E2, U+89E4-89FF, U+8A01-8BA1, U+8BA3-8BAC, U+8BAE-8BAF, U+8BB1-8BBD, U+8BC0-8BC3, U+8BC5-8BCC, U+8BCE-8BD4, U+8BD6-8BDC, U+8BDE-8BEC, U+8BEE-8BF3, U+8BF5-8BF6, U+8BF8-8BFA, U+8BFC-8BFD, U+8BFF-8C02, U+8C04-8C07, U+8C09-8C1B, U+8C1D-8D24, U+8D26, U+8D28-8D43, U+8D45-8D84, U+8D86-8DA2, U+8DA4-8DF4, U+8DF6-8F6B, U+8F6D-8F7C, U+8F7E-8FC6, U+8FC8-8FCF, U+8FD1-8FD3, U+8FD5-8FD8, U+8FDA, U+8FDC-8FDE, U+8FE0-9000, U+9002-9008, U+900A-900F, U+9011-9019, U+901B-907E, U+9080-90AD, U+90AF-914C, U+914E-91CC, U+91CE-94A4, U+94A6-94FD, U+94FF-957E, U+9580-95E7, U+95E9-95ED, U+95EF-95F3, U+95F5-9604, U+9606-961E, U+9620-9635, U+9637-9643, U+9645-964F, U+9651-968E, U+9690-9693, U+9695-969B, U+969D-96C5, U+96C7-96F5, U+96F7-975D, U+975F, U+9761, U+9763-9874, U+9876-9878, U+987A-9883, U+9885-9890, U+9892-9897, U+9899-9A8B, U+9A8D-9FEF, U+F900-F903, U+F905-F906, U+F90B-F90C, U+F915, U+F917-F91A, U+F921, U+F92C-F92D, U+F92F, U+F931-F935, U+F937-F93A, U+F943, U+F947-F94A, U+F94E, U+F952-F953, U+F95E, U+F962-F967, U+F96E, U+F972, U+F974, U+F976, U+F979-F97B, U+F97E-F980, U+F984-F985, U+F98A-F98C, U+F98E, U+F993, U+F995, U+F998, U+F9AE, U+F9B3, U+F9B7, U+F9BB, U+F9BD-F9BE, U+F9C0, U+F9C5-F9C6, U+F9D0, U+F9D8-F9D9, U+F9DC-F9E0, U+F9E2-F9E4, U+F9E7, U+F9E9, U+F9F1, U+F9F4-F9F5, U+F9FA, U+F9FD, U+F9FF, U+FA02, U+FA05-FA08, U+FA0A, U+FA0C-FA0F, U+FA11, U+FA13-FA14, U+FA18, U+FA1F-FA21, U+FA23-FA24, U+FA27-FA29, U+FA2F, U+FA33-FA35, U+FA37-FA38, U+FA3A, U+FA47, U+FA49, U+FA4B, U+FA5D-FA5E, U+FB00-FB04, U+FE10-FE19, U+FE30-FE52, U+FE54-FE66, U+FE68-FE6B, U+FF01-FF0B, U+FF0D-FF19, U+FF1C-FF9F, U+FFA1-FFBE, U+FFC2-FFC7, U+FFCA-FFCF, U+FFD2-FFD7, U+FFDA-FFDC, U+FFE0-FFE6, U+FFE8-FFEE, U+1F100-1F10C, U+1F110-1F16B, U+1F170-1F1AC, U+1F200-1F202, U+1F210-1F23B, U+1F240-1F248, U+1F250-1F251, U+20087, U+20089, U+200CC, U+20164, U+20628, U+20676, U+20CD0, U+2139A, U+21413, U+215D7, U+2298F, U+235CB, U+23C97-23C98, U+23E23, U+241FE, U+2420E, U+248E9, U+249DB, U+24A7D, U+24AC9, U+25532, U+25562, U+255A8, U+25AD7, U+25ED7, U+26221, U+2648D, U+26676, U+2677C, U+26951, U+26B5C, U+26C21, U+278B2, U+27EAF, U+27FB7, U+27FF9, U+28408, U+28678, U+28695, U+287E0, U+28B49, U+28C47, U+28C4F, U+28C51, U+28C54, U+28E0F, U+28E99, U+2967F, U+29810, U+29F7E, U+29F83, U+29F8C, U+2A7DD, U+2A8FB, U+2A917, U+2AA30, U+2AA36, U+2AA58, U+2AFA2, U+2B127-2B128, U+2B137-2B138, U+2B1ED, U+2B300, U+2B363, U+2B36F, U+2B372, U+2B37D, U+2B404, U+2B410, U+2B413, U+2B461, U+2B4E7, U+2B4EF, U+2B4F6, U+2B4F9, U+2B50D-2B50E, U+2B536, U+2B5AE-2B5AF, U+2B5B3, U+2B5E7, U+2B5F4, U+2B61C-2B61D, U+2B626-2B628, U+2B62A, U+2B62C, U+2B695-2B696, U+2B6AD, U+2B6ED, U+2B7A9, U+2B7C5, U+2B7E6, U+2B7F9, U+2B7FC, U+2B806, U+2B80A, U+2B81C, U+2B8B8, U+2BAC7, U+2BB5F, U+2BB62, U+2BB7C, U+2BB83, U+2BC1B, U+2BD77, U+2BD87, U+2BDF7, U+2BE29, U+2C029-2C02A, U+2C0A9, U+2C0CA, U+2C1D5, U+2C1D9, U+2C1F9, U+2C27C, U+2C288, U+2C2A4, U+2C317, U+2C35B, U+2C361, U+2C364, U+2C488, U+2C494, U+2C497, U+2C542, U+2C613, U+2C618, U+2C621, U+2C629, U+2C62B-2C62D, U+2C62F, U+2C642, U+2C64A-2C64B, U+2C72C, U+2C72F, U+2C79F, U+2C7C1, U+2C7FD, U+2C8D9, U+2C8DE, U+2C8E1, U+2C8F3, U+2C907, U+2C90A, U+2C91D, U+2CA02, U+2CA0E, U+2CA7D, U+2CAA9, U+2CB29, U+2CB2D-2CB2E, U+2CB31, U+2CB38-2CB39, U+2CB3B, U+2CB3F, U+2CB41, U+2CB4A, U+2CB4E, U+2CB5A-2CB5B, U+2CB64, U+2CB69, U+2CB6C, U+2CB6F, U+2CB73, U+2CB76, U+2CB78, U+2CB7C, U+2CBB1, U+2CBBF-2CBC0, U+2CBCE, U+2CC56, U+2CC5F, U+2CCF5-2CCF6, U+2CCFD, U+2CCFF, U+2CD02-2CD03, U+2CD0A, U+2CD8B, U+2CD8D, U+2CD8F-2CD90, U+2CD9F-2CDA0, U+2CDA8, U+2CDAD-2CDAE, U+2CDD5, U+2CE18, U+2CE1A, U+2CE23, U+2CE26, U+2CE2A, U+2CE7C, U+2CE88, U+2CE93, U+2D544, U+2F884, U+2F8B6;
}

@font-face {
  font-family: "Resource Han Rounded CN";
  src: url("assets/fonts/resource-han-rounded-cn-regular-site.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+2013, U+2019, U+201C-201D, U+3001-3002, U+300C-300D, U+4E00, U+4E09-4E0B, U+4E0D-4E0E, U+4E13, U+4E1A, U+4E24, U+4E2A, U+4E2D, U+4E3A-4E3B, U+4E45, U+4E60, U+4E66, U+4E8B, U+4E8E, U+4EA4, U+4EA7, U+4EAB, U+4EBA, U+4ECB, U+4ECE, U+4ED3, U+4ED6, U+4EE3, U+4EE5, U+4EF6, U+4EFB, U+4EFD, U+4F01, U+4F18, U+4F20, U+4F30, U+4F53, U+4F55, U+4F5C, U+4FDD, U+4FE1, U+5148, U+514D, U+5165, U+5168, U+516C, U+5173-5174, U+5176-5177, U+517B, U+5185, U+518C, U+51C6, U+5206-5207, U+5217, U+521B, U+5229, U+5230, U+5236, U+524D, U+526A, U+529B, U+529E, U+52A1, U+5316, U+533A, U+5347, U+534F, U+5355, U+538B, U+539F, U+53C2, U+53CA, U+53CD, U+53D1, U+53E3, U+53EF-53F0, U+5408, U+540C, U+540E, U+5411, U+542F, U+548C, U+54C1, U+5668, U+56DE, U+56ED, U+5728, U+5766, U+578B, U+57F9-57FA, U+5883, U+58F0, U+5904, U+590D, U+5916, U+591A, U+591C, U+591F, U+5927, U+5931, U+5957, U+5982, U+59CB, U+5B50, U+5B58, U+5B63, U+5B66, U+5B89, U+5B8C, U+5B9E, U+5BB9, U+5BC6, U+5BDF, U+5BF9, U+5BFC, U+5C0F, U+5C40, U+5DE5, U+5DE7, U+5DF2, U+5E03, U+5E08, U+5E42, U+5E73-5E74, U+5E76, U+5E8F, U+5E93-5E94, U+5EA6, U+5EF6, U+5EFA, U+5F00, U+5F0F, U+5F53, U+5F55, U+5F85, U+5FAA, U+5FAE, U+5FC6, U+5FD7, U+6001, U+6027, U+6062, U+606F, U+620F-6210, U+6216, U+6218, U+624B, U+6253, U+6267, U+6280, U+62C6, U+62E9, U+6301, U+6309, U+6362, U+636E, U+6392, U+63A5, U+63A7-63A8, U+64AD, U+64CD, U+6536, U+653E-653F, U+6545, U+6559, U+6570, U+6574, U+6587, U+6599, U+65AF-65B0, U+65B9, U+65BD, U+65E5, U+65E7, U+65F6, U+660E, U+6625, U+662F, U+667A, U+6700, U+671F, U+672C, U+673A, U+6742-6743, U+6750, U+6784, U+679C, U+67B6, U+6807, U+6821, U+6837, U+6846, U+6A21, U+6B64-6B65, U+6BD5, U+6C99, U+6CD5, U+6D3B, U+6D4B, U+6D77, U+6E05, U+6E38, U+6E90, U+7248, U+72B6, U+7387, U+73AF-73B0, U+7406, U+751F, U+7528, U+7531, U+7535, U+7559, U+7684, U+76D6, U+76EE, U+76F8, U+770B, U+77ED, U+7801, U+7814, U+7840, U+795E, U+798F, U+79BB, U+79D1, U+7A0B, U+7A76, U+7ACB, U+7AD9, U+7AE0, U+7B14, U+7B2C, U+7B49, U+7B54, U+7B56, U+7B80, U+7B97, U+7BA1, U+7BB1, U+7BC7, U+7C7B, U+7CBE, U+7CFB, U+7D20, U+7EA7, U+7EBF, U+7EC3-7EC4, U+7EC7, U+7ECD, U+7ECF, U+7ED3, U+7EDC, U+7EDF, U+7EE9, U+7EED, U+7F16, U+7F29, U+7F51, U+7F6E, U+8003, U+8005, U+80B2, U+80FD, U+81EA, U+81F3-81F4, U+822A, U+8272, U+827A, U+8282, U+82F1, U+8350, U+8425, U+85CF, U+884C, U+88C1, U+8986, U+89C1-89C2, U+89C6, U+89D2, U+89E3, U+8A00, U+8BA2, U+8BAD, U+8BB0, U+8BBE-8BBF, U+8BC4, U+8BCD, U+8BD5, U+8BDD, U+8BED, U+8BF4, U+8BF7, U+8BFB, U+8BFE, U+8C03, U+8C08, U+8C1C, U+8D25, U+8D27, U+8D44, U+8D85, U+8DA3, U+8DF5, U+8F6C, U+8F7D, U+8FC7, U+8FD0, U+8FD4, U+8FD9, U+8FDB, U+8FDF, U+9001, U+9009, U+9010, U+901A, U+907F, U+90AE, U+914D, U+91CD, U+94A5, U+94FE, U+957F, U+95E8, U+95EE, U+95F4, U+9605, U+961F, U+9636, U+9644, U+9650, U+968F, U+9694, U+969C, U+96C6, U+96F6, U+975E, U+9760, U+9762, U+9875, U+9879, U+9884, U+9891, U+9898, U+9A8C, U+FF0C, U+FF1A-FF1B;
}

@font-face {
  font-family: Jost;
  src: url("assets/fonts/jost-latin-400.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:root {
  --background: #000;
  --foreground: #fff;
  --muted: #b8b8b8;
  color-scheme: dark;
  background: var(--background);
  color: var(--foreground);
  font-family: Jost, "Resource Han Rounded CN", "Century Gothic", Futura, sans-serif;
  font-size: 16px;
  letter-spacing: 0;
}

:root[data-theme="light"] {
  --background: #fff;
  --foreground: #000;
  --muted: #595959;
  color-scheme: light;
}

:root, body, .intro, .resource-list p, .muted {
  transition:
    background-color 420ms cubic-bezier(0.22, 1, 0.36, 1),
    color 420ms cubic-bezier(0.22, 1, 0.36, 1);
}

:root[data-language="en"] [data-language-content="zh"],
:root[data-language="zh"] [data-language-content="en"] { display: none; }

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  min-height: 100svh;
  display: grid;
  place-items: center;
  padding: 24px;
  background: var(--background);
}

.page { width: min(100%, 480px); }

h1 {
  margin: 0 0 44px;
  font-size: 32px;
  font-weight: 400;
  line-height: 1.3;
  overflow-wrap: break-word;
}

a { color: inherit; text-decoration: none; }
a:focus-visible { outline: 1px solid var(--foreground); outline-offset: 5px; }

.page-list {
  display: grid;
  gap: 8px;
  margin: 0 -12px;
  padding: 0;
  list-style: none;
}

.page-list a {
  display: flex;
  align-items: center;
  gap: 20px;
  width: 100%;
  min-height: 48px;
  padding: 8px 12px;
  background-color: var(--background);
  font-size: 22px;
  line-height: 1.4;
  transition:
    background-color 420ms cubic-bezier(0.22, 1, 0.36, 1),
    color 420ms cubic-bezier(0.22, 1, 0.36, 1);
}

@media (hover: hover) {
  .page-list a:hover {
    background-color: var(--foreground);
    color: var(--background);
  }
}

.page-list a:focus-visible,
.page-list a:active {
  background-color: var(--foreground);
  color: var(--background);
}

.page-list a:focus-visible {
  outline: 2px solid var(--foreground);
  outline-offset: 4px;
}

.marker {
  display: grid;
  place-items: center;
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
}

.marker::before { content: ""; display: block; background: currentColor; }
.circle::before { width: 16px; height: 16px; border-radius: 50%; }
.triangle::before {
  width: 20px;
  height: 17.320508px;
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
}
.square::before { width: 16px; height: 16px; }
/* These bounds preserve equal sides for a regular pentagon. */
.pentagon::before {
  width: 20px;
  height: 19.021130px;
  clip-path: polygon(50% 0, 100% 38.196601%, 80.901699% 100%, 19.098301% 100%, 0 38.196601%);
}

/* Width = twice the side; height = sqrt(3) times the side. */
.hexagon::before {
  width: 20px;
  height: 17.320508px;
  clip-path: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%);
}

.placeholder h1 { margin-bottom: 24px; }
.placeholder-message { margin: 0 0 32px; line-height: 1.5; }
.back-link { display: inline-flex; align-items: center; min-height: 44px; }

/* A turning half-circle and a short language underline are the only control marks. */
.site-controls {
  position: absolute;
  inset-block-start: 20px;
  inset-inline-end: max(24px, calc((100% - 480px) / 2));
  display: flex;
  align-items: center;
  gap: 12px;
}
.site-controls[hidden] { display: none; }
.site-control {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  min-width: 44px;
  padding: 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--foreground);
  font: inherit;
  font-size: 14px;
  line-height: 1.4;
  cursor: pointer;
  transition:
    background-color 420ms cubic-bezier(0.22, 1, 0.36, 1),
    color 420ms cubic-bezier(0.22, 1, 0.36, 1);
}
.site-control:focus-visible { outline: 1px solid var(--foreground); outline-offset: 3px; }
.language-toggle:active { background: var(--foreground); color: var(--background); }
.theme-mark {
  position: relative;
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 1px solid currentColor;
  border-radius: 50%;
  flex: 0 0 15px;
  transform: rotate(0deg);
  transition: transform 260ms cubic-bezier(0.22, 1, 0.36, 1);
}
.theme-mark::before {
  content: "";
  position: absolute;
  inset: -1px auto -1px -1px;
  width: 7.5px;
  background: currentColor;
  border-radius: 15px 0 0 15px;
}
:root[data-theme="light"] .theme-mark { transform: rotate(180deg); }
.theme-name { min-width: 38px; text-align: start; }
.control-divider {
  width: 1px;
  height: 12px;
  background: var(--muted);
  transition: background-color 420ms cubic-bezier(0.22, 1, 0.36, 1);
}
.locale-track {
  position: relative;
  display: grid;
  /* Fixed text slots keep the indicator still while the web fonts load. */
  grid-template-columns: 14px 8px 20px;
  align-items: center;
  gap: 6px;
  text-align: center;
}
.locale-option { padding-block: 2px; border-bottom: 1px solid transparent; color: var(--muted); }
.locale-slash { color: var(--muted); }
.locale-option, .locale-slash { transition: color 420ms cubic-bezier(0.22, 1, 0.36, 1); }
.locale-track::after {
  content: "";
  position: absolute;
  inset-inline-start: 0;
  inset-block-end: 0;
  width: 14px;
  height: 1px;
  background: currentColor;
  transform: translateX(0);
  pointer-events: none;
}
:root[data-language="en"] .locale-track::after {
  width: 18px;
  transform: translateX(35px);
}
.language-toggle[data-locale-animate] .locale-track::after {
  transition:
    transform 280ms cubic-bezier(0.22, 1, 0.36, 1),
    width 280ms cubic-bezier(0.22, 1, 0.36, 1);
}
:root[data-language="en"] [data-locale-option="en"],
:root[data-language="zh"] [data-locale-option="zh"] { color: inherit; }
:root[data-enhanced] .home,
:root[data-enhanced] .placeholder { margin-block: 56px; }

@media (hover: hover) {
  .site-control:not([data-hover-suppressed]):hover { background: var(--foreground); color: var(--background); }
  .language-toggle:hover .locale-option, .language-toggle:hover .locale-slash { color: inherit; }
}
.theme-toggle:active,
.theme-toggle[data-hover-suppressed] {
  background: transparent;
  color: inherit;
  transition: none;
}
.language-toggle:active .locale-option, .language-toggle:active .locale-slash { color: inherit; }

/* Storage uses the same typography, monochrome palette, and row interaction. */
.reading-page { display: block; padding-block: 96px 64px; }
.reading-page .page { margin-inline: auto; }
.collection h1, .document h1 { margin-bottom: 20px; }
.intro { margin: 0 0 32px; color: var(--muted); line-height: 1.8; }
.collection-list { gap: 16px; }
.collection-list a { display: block; }
.collection-list small {
  display: block;
  margin-top: 4px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--muted);
  transition: color 420ms cubic-bezier(0.22, 1, 0.36, 1);
}
.collection-list a:focus-visible small,
.collection-list a:active small { color: inherit; }
.page-footer { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 40px; }
.document { line-height: 1.8; }
.document section + section { margin-top: 40px; }
.document h2 { margin: 0 0 16px; font-size: 22px; line-height: 1.5; font-weight: 400; }
.document h3 { margin: 28px 0 12px; font-size: 18px; font-weight: 400; }
.document p { margin: 0 0 16px; }
.document ul, .document ol { margin: 0; padding-left: 24px; }
.document li + li { margin-top: 16px; }
.resource-list { padding: 0 !important; list-style: none; }
.resource-list a { display: inline-block; padding-block: 6px; }
.resource-list p, .muted { color: var(--muted); }
.resource-list p { margin: 0; font-size: 15px; }
.document a:not(.back-link), .archive-links a { text-underline-offset: 5px; }
.document a:not(.back-link):hover,
.document a:not(.back-link):focus-visible,
.archive-links a:hover, .archive-links a:focus-visible { text-decoration: underline; }
.archive-links { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 40px; font-size: 15px; }
.document .file-actions { display: flex; flex-wrap: wrap; gap: 8px 24px; margin: 24px 0 32px; }
.document .file-actions a { display: inline-flex; align-items: center; min-height: 44px; }

@media (hover: hover) {
  .collection-list a:hover small { color: inherit; }
}

@media (max-width: 540px) {
  h1 { font-size: 28px; margin-bottom: 32px; }
  .reading-page { padding-block: 88px 40px; }
}

@media (max-height: 420px) {
  body { padding: 16px 24px; }
  h1 { margin-bottom: 20px; }
  .page-list { gap: 4px; }
}

@media (prefers-reduced-motion: reduce) {
  :root, body, .page-list a, .collection-list small, .theme-mark,
  .site-control, .intro, .resource-list p, .muted, .control-divider,
  .locale-option, .locale-slash,
  .language-toggle[data-locale-animate] .locale-track::after { transition: none; }
}
