/* 执安里 PWA · 蓝晒只读前端候选 */

/* ---------- design tokens ---------- */
:root {
  --deep: #0a2648;
  --ink: #eaf3fc;
  --ink-2: rgba(226, 238, 250, .78);
  --ink-3: rgba(214, 230, 246, .56);
  --ink-4: rgba(214, 230, 246, .34);
  --rule: rgba(226, 238, 250, .5);
  --glow: rgba(5, 25, 60, .6);
  --halo: rgba(170, 210, 255, .3);

  /* 首轮使用系统 serif，不下载字体 */
  --serif: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", "Noto Serif SC", "SimSun", serif;
  --latin: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  /* 便笺与念头正文：龙藏体（SIL OFL 1.1，见 assets/fonts/OFL.txt），缺字回落宋体 */
  --hand: "LongCang Zhianli", var(--serif);

  --gutter: 8.2cqw;
}

/* ---------- 手写字体（龙藏体） ----------
 * 拆成两个文件：
 *   longcang-common.woff2：ASCII、常用符号、GB2312 一级 3755 个常用字（约 1.5 MB），正文出现即加载
 *   longcang-rest.woff2：字体里其余约 3000 字（约 1.4 MB），只在正文真的用到这些字时才下载
 * 浏览器按“后声明先匹配”：先查 common；common 缺字时才去 rest（其 unicode-range 精确列出所含字符）。
 * 两个文件都没有的字回落到 var(--serif)。 */
@font-face {
  font-family: "LongCang Zhianli";
  src: url("assets/fonts/longcang-rest.woff2") format("woff2");
  font-display: swap;
  unicode-range: U+A0, U+A2-A3, U+A5-A6, U+A9, U+AC, U+AF, U+2C6, U+2DA, U+2DC, U+2013-2014, U+201A, U+201E, U+2022, U+2025, U+20AC, U+2122, U+2212, U+4E0C, U+4E10, U+4E15, U+4E1E, U+4E28, U+4E2C, U+4E36, U+4E3F, U+4E47, U+4E5C, U+4E69, U+4E8D, U+4E93, U+4E98, U+4E9F-4EA0, U+4EB3, U+4EB5, U+4EBB, U+4EC2-4EC4, U+4EC9, U+4EDD-4EDE, U+4EE1, U+4EE8, U+4EEB, U+4EF3, U+4EF5, U+4F09, U+4F1B, U+4F22, U+4F25, U+4F27, U+4F2B, U+4F32, U+4F3D, U+4F57-4F58, U+4F5A, U+4F5D-4F5F, U+4F64-4F65, U+4F67, U+4F74, U+4F76, U+4F7B-4F7C, U+4F7E, U+4F83, U+4F89, U+4F8F, U+4F91, U+4F94, U+4FAA, U+4FAC, U+4FC5, U+4FCE, U+4FD1, U+4FDA, U+4FDC, U+4FDF, U+4FE3, U+4FE6, U+4FE8, U+4FEA, U+4FF3, U+4FF8, U+4FFE, U+500C, U+500F, U+501C, U+5025, U+5028-5029, U+502C-502E, U+5043, U+5048, U+504C, U+504E, U+5055, U+506C, U+507B, U+507E, U+50A5, U+50A7, U+50A9, U+50BA, U+50D6, U+50E6, U+50EC-50EE, U+5106-5107, U+510B, U+5140, U+5155-5156, U+516E, U+5181-5182, U+5196, U+51A2, U+51A5, U+51AB, U+51B1, U+51BC-51BD, U+51C7, U+51EB, U+51F5, U+51FC, U+5202, U+5208, U+520D-520E, U+5216, U+522D, U+5233, U+523F-5240, U+524C, U+525C, U+525E, U+5261, U+527D, U+5281-5282, U+5290, U+5293, U+52A2, U+52AC-52AD, U+52BE, U+52D0, U+52D6, U+52F0, U+52F9, U+530D, U+530F-5310, U+5315, U+531A, U+5326, U+532E, U+533E, U+5345, U+535F, U+5363, U+5366, U+5369, U+536E, U+537A, U+538D, U+539D, U+53A3, U+53A5, U+53AE, U+53B6, U+53DF, U+53E8-53E9, U+53F1, U+53F5, U+53FB, U+53FD, U+5406, U+5412, U+5416, U+5421, U+5423, U+5432, U+5443, U+544B, U+5452-5454, U+5456-5457, U+5459, U+5464, U+5466, U+5471-5472, U+5476-5477, U+5482, U+5484, U+5494, U+549A-549B, U+549D, U+54A3-54A4, U+54A6-54A7, U+54A9-54AB, U+54AD, U+54B4, U+54BB, U+54BF, U+54C2, U+54CC, U+54CF-54D0, U+54D2-54D5, U+54D9-54DA, U+54DC-54DE, U+54E7, U+54F3, U+54FD, U+54FF, U+550F, U+5511, U+5514, U+551B, U+5520, U+5522-5523, U+5527, U+552A, U+5530, U+5533, U+5537, U+553C, U+553F, U+5541, U+5549, U+5550, U+5555-5556, U+555C, U+5567, U+556C-556D, U+5575-5577, U+557B, U+557E, U+5581, U+5583, U+5588, U+558B, U+558F, U+5591, U+5594, U+5599, U+559F, U+55B1, U+55B5, U+55B9, U+55BD-55BE, U+55C4, U+55C9, U+55CC-55CD, U+55D1-55D2, U+55D4, U+55D6, U+55DD, U+55DF, U+55E4-55E6, U+55E8, U+55EA-55EC, U+55EF, U+55F2-55F3, U+55F5, U+55F7, U+55FE, U+5600-5601, U+5608, U+560C, U+560F, U+561E-561F, U+5623-5624, U+5627, U+562C-562D, U+5639, U+564C-564D, U+5654, U+5657-5659, U+565C, U+5662, U+5664, U+5669, U+566B, U+5671, U+567B-567C, U+5685-5686, U+5693, U+56AF, U+56D4, U+56D7, U+56DD, U+56DF, U+56E1, U+56EB, U+56F5, U+56F9, U+56FF, U+5704, U+5709-570A, U+571C, U+5729-572A, U+572C, U+572E-572F, U+5733, U+5739, U+573B, U+5742, U+574C, U+575C, U+5768-5769, U+576B, U+576D, U+5773, U+5776, U+577B-577C, U+5785-5786, U+578C, U+5793, U+57A0-57A1, U+57A4, U+57A7, U+57A9, U+57AD, U+57B2, U+57B4, U+57B8, U+57CF, U+57D2, U+57D5, U+57D8-57DA, U+57DD, U+57E4, U+57ED, U+57EF, U+57F4, U+57F8, U+57FD, U+5800, U+5807, U+580B, U+580D, U+5819, U+581E, U+5820, U+5844, U+584D, U+5865, U+586C, U+587E, U+5880-5881, U+5889, U+589A, U+58BC, U+58C5, U+58D1, U+5902, U+5914, U+5919, U+5924-5925, U+592D, U+593C, U+5941-5942, U+5955, U+5958, U+595A, U+5981, U+5983, U+598D, U+5997, U+599E, U+59A3-59A4, U+59A9-59AB, U+59AF, U+59B2, U+59BE, U+59CA, U+59D2, U+59D7-59D8, U+59DD, U+59E3, U+59F9, U+5A05-5A06, U+5A08-5A09, U+5A0C, U+5A11, U+5A13, U+5A23, U+5A32, U+5A34, U+5A3C, U+5A40, U+5A4A, U+5A55, U+5A62, U+5A67, U+5A75, U+5A77, U+5A7A, U+5A9B, U+5AAA, U+5AB2, U+5AB5, U+5AB8, U+5ABE, U+5AD2, U+5AD4, U+5AD6, U+5AD8, U+5ADC, U+5AE0, U+5AE3, U+5AE6, U+5AEB, U+5AF1, U+5B09, U+5B16-5B17, U+5B32, U+5B34, U+5B37, U+5B40, U+5B51, U+5B53, U+5B5A-5B5B, U+5B62, U+5B65, U+5B6C, U+5B71, U+5B73, U+5B80, U+5B84, U+5B93, U+5B95, U+5BA5, U+5BB8, U+5BE4, U+5BEE, U+5BF0, U+5C15, U+5C1C, U+5C22, U+5C25, U+5C2C, U+5C34, U+5C3B, U+5C50, U+5C59, U+5C63, U+5C66, U+5C6E, U+5C7A, U+5C88, U+5C8C-5C8D, U+5C90-5C91, U+5C96, U+5C98-5C9A, U+5C9C, U+5CA2-5CA3, U+5CAB-5CAC, U+5CB1, U+5CB5, U+5CB7, U+5CBD, U+5CC1, U+5CC4, U+5CCB, U+5CD2, U+5CE4-5CE5, U+5D02-5D03, U+5D06, U+5D1B, U+5D1E, U+5D24, U+5D26-5D27, U+5D2E, U+5D34, U+5D3D-5D3E, U+5D47, U+5D4A-5D4B, U+5D58, U+5D5B, U+5D5D, U+5D69, U+5D6B-5D6C, U+5D6F, U+5D74, U+5D82, U+5D99, U+5D9D, U+5DB7, U+5DC5, U+5DDB, U+5DEF, U+5DFD, U+5E0F, U+5E11, U+5E14, U+5E19, U+5E31, U+5E37, U+5E3B-5E3C, U+5E44, U+5E54, U+5E5B, U+5E5E, U+5E61, U+5E7A, U+5E80, U+5E8B, U+5E91, U+5E96, U+5EA0, U+5EA5, U+5EB3, U+5EB5, U+5EB9, U+5EBE, U+5ED1-5ED2, U+5EDB, U+5EE8, U+5EEA, U+5EF4, U+5EFE-5EFF, U+5F01, U+5F08, U+5F0B, U+5F11, U+5F29-5F2A, U+5F2D, U+5F3C, U+5F40, U+5F50, U+5F56-5F58, U+5F61, U+5F73, U+5F77, U+5F82, U+5F87, U+5F89, U+5F8C, U+5F95, U+5F99, U+5F9C, U+5FA8, U+5FAD, U+5FB5, U+5FBC, U+5FC4, U+5FC9, U+5FCF-5FD2, U+5FD6, U+5FDD, U+5FE1, U+5FE4, U+5FEA, U+5FED-5FEE, U+5FF8, U+5FFE, U+6003-6006, U+600A, U+600D, U+600F, U+6019, U+601B, U+6021, U+6026, U+6029, U+602B, U+6035, U+603C, U+603F, U+6041-6042, U+6059-605A, U+605D, U+6063, U+6067, U+606A, U+6078-607B, U+607D, U+6083, U+608C, U+6092, U+6096, U+609A-609B, U+609D, U+60AB, U+60AD, U+60B1, U+60B4, U+60BB, U+60C6, U+60D8, U+60DA, U+60DD, U+60EC, U+60F4, U+6100, U+6106, U+610D-610E, U+6115, U+6120, U+6123, U+6126, U+612B, U+614A, U+615D, U+6175, U+6194, U+619D, U+61A7, U+61A9, U+61AC, U+61B7, U+61CB, U+61D1, U+61D4, U+61F5, U+61FF, U+6206, U+620B, U+6215, U+6217, U+621B, U+621F, U+6221-6222, U+6224-6225, U+622C, U+623D-623E, U+6243, U+6248-6249, U+624C, U+626A, U+629F, U+62BB, U+62CA, U+62D7, U+62DA, U+62EE, U+62F6, U+6308, U+6322, U+6332, U+6339, U+6343, U+634B, U+6369, U+636D, U+6371, U+637A, U+638A, U+638E, U+63AC-63AE, U+63B0, U+63B4, U+63BC, U+63BE, U+63C4, U+63C6, U+63CE, U+63DE, U+63E0, U+63F2, U+63F6, U+63F8, U+63FF, U+640B-640C, U+641B, U+6420-6421, U+6426, U+6434, U+643F, U+6441, U+6445, U+6452, U+645E, U+646D, U+647A, U+6484, U+6496, U+6499, U+64B7-64B8, U+64BA, U+64C0, U+64D0, U+64D7-64D8, U+64E2, U+64E4, U+6509, U+6525, U+652E, U+6534-6535, U+6538, U+6549, U+6555, U+656B, U+6590, U+6593, U+659B, U+65AB, U+65BC, U+65C3-65C4, U+65C6, U+65CC, U+65CE, U+65D2, U+65D6, U+65EE-65F0, U+6600, U+6603, U+660A, U+6615, U+6619, U+661D, U+6631, U+6634-6636, U+6641, U+664F, U+6654, U+6656-6657, U+665F, U+6661, U+6677, U+6684, U+668C, U+669D, U+66A7-66A8, U+66B9, U+66BE, U+66DB-66DC, U+66E6, U+66E9, U+66F7, U+670A, U+6710, U+6715, U+6726, U+6748, U+674C, U+6753, U+675E, U+6769-676A, U+6772-6773, U+6775, U+6777, U+677C, U+6787, U+678B, U+6798, U+679E, U+67A5, U+67A7-67A8, U+67AD, U+67B0, U+67B3, U+67B5, U+67B8, U+67C1, U+67C3, U+67D8-67DA, U+67DD, U+67E2, U+67E9, U+67F0, U+67FD, U+6800, U+6809-680A, U+680C, U+680E, U+681D, U+6829, U+6832-6833, U+683E, U+6840-6841, U+6844, U+6849-684A, U+684E, U+6855, U+6860-6862, U+6864, U+6866-6867, U+686B, U+6874, U+6877, U+6883, U+688F, U+6893, U+68B5, U+68C2, U+68E3, U+68F0, U+68F9, U+68FC, U+6901, U+690B, U+6910, U+691F-6920, U+6924, U+6934, U+6939, U+6942, U+6957, U+695D, U+6960, U+6963, U+6966, U+696B, U+696E, U+6971, U+6978-6979, U+6980, U+6984, U+6987-6989, U+698D, U+6995, U+6998, U+699B, U+69A7, U+69AB, U+69AD, U+69B1, U+69BB, U+69C1, U+69CA, U+69CC, U+69CE, U+69D4, U+69DF-69E0, U+69ED, U+69F2, U+69FF, U+6A17-6A18, U+6A28, U+6A2F, U+6A35, U+6A3D-6A3E, U+6A44, U+6A50, U+6A58, U+6A5B, U+6A65, U+6A79, U+6A7C, U+6A8E, U+6A90-6A91, U+6A97, U+6AA0, U+6AA9, U+6AAB, U+6B24, U+6B37, U+6B39, U+6B43, U+6B46, U+6B59, U+6B81-6B82, U+6B84, U+6B87, U+6B8D, U+6B92-6B93, U+6B9A-6B9B, U+6BA1, U+6BAA, U+6BB3, U+6BC2, U+6BD3, U+6BEA, U+6BF3, U+6BF5, U+6BF9, U+6BFD, U+6C05-6C07, U+6C0D, U+6C10, U+6C15, U+6C18-6C1A, U+6C21, U+6C24, U+6C29-6C2A, U+6C32, U+6C35, U+6C3D, U+6C46, U+6C4A, U+6C54, U+6C5C, U+6C68-6C69, U+6C74, U+6C76, U+6C85-6C86, U+6C8C, U+6C90, U+6C93-6C94, U+6CA3, U+6CA9, U+6CAD, U+6CB1-6CB2, U+6CD0, U+6CD3-6CD4, U+6CD6-6CD7, U+6CE0, U+6CEB, U+6CEE-6CEF, U+6CF1, U+6CF6-6CF8, U+6CFA, U+6CFE, U+6D04, U+6D07, U+6D0C, U+6D0E, U+6D19-6D1A, U+6D27, U+6D2B, U+6D2E, U+6D33, U+6D35, U+6D39, U+6D43, U+6D48, U+6D4D, U+6D4F, U+6D52, U+6D54, U+6D5C, U+6D5E, U+6D60, U+6D63, U+6D6F, U+6D7C, U+6D91, U+6D93-6D94, U+6D9E, U+6DA0, U+6DAB, U+6DAE, U+6DBF, U+6DC5, U+6DC7, U+6DD9, U+6DDD-6DDE, U+6DE0, U+6DE6, U+6DFC, U+6E0C, U+6E0E, U+6E11, U+6E16, U+6E1A, U+6E25, U+6E2B, U+6E32, U+6E44, U+6E4E, U+6E53-6E54, U+6E5F, U+6E6B, U+6E6E, U+6E86, U+6E8F, U+6E98, U+6E9F, U+6EA5, U+6EA7, U+6EB1-6EB2, U+6EB4, U+6EB7, U+6EBB, U+6EBD, U+6EC2, U+6ECF, U+6ED5, U+6ED7, U+6EDF-6EE0, U+6EE2, U+6EF9, U+6F09, U+6F15, U+6F24, U+6F29-6F2A, U+6F2D, U+6F2F, U+6F36, U+6F46-6F47, U+6F4B, U+6F62, U+6F72, U+6F74, U+6F78, U+6F7A, U+6F7C, U+6F89, U+6F8C-6F8D, U+6FA7, U+6FB6, U+6FB9, U+6FC2, U+6FC9, U+6FD1, U+6FDE, U+6FE0-6FE1, U+6FEE-6FEF, U+701A-701B, U+7023, U+7035, U+7039, U+704F, U+705E, U+706C, U+7080, U+7085, U+7096, U+709C-709D, U+70AB, U+70B1, U+70B7, U+70BB, U+70C0, U+70CA, U+70E8, U+7110, U+7113, U+7116, U+7118, U+712F, U+7131, U+7145, U+714A, U+715C, U+7166, U+7168, U+7172-7173, U+7178, U+717A, U+7198, U+71A0, U+71A8, U+71B3, U+71B5, U+71B9, U+71D4, U+71E0, U+71E7, U+71EE, U+71F9, U+721D, U+7228, U+7230, U+723B, U+723F, U+724D, U+7252, U+7256, U+725D, U+7266, U+726E-726F, U+727E-727F, U+7284, U+728B, U+728D, U+728F, U+7292, U+729F, U+72AD, U+72B0, U+72B4, U+72B7-72B8, U+72C1, U+72C3, U+72CD-72CE, U+72D2, U+72E8-72E9, U+72EF, U+72F2-72F4, U+72F7, U+72FA-72FB, U+7301, U+7303, U+730A, U+7313, U+7315, U+7317, U+731D-731E, U+7321-7322, U+7325, U+732C, U+7331, U+7337-7339, U+734D, U+7350, U+7352, U+7357, U+7360, U+736C, U+736F, U+737E, U+738E, U+7391, U+739F, U+73A2, U+73AE, U+73B3, U+73B7, U+73BA, U+73C0, U+73C2, U+73C8-73C9, U+73CF, U+73D1, U+73D9, U+73DE, U+73E5, U+73E7, U+73E9, U+73F2, U+740A, U+740F, U+741A-741B, U+7425-7426, U+7428, U+742A, U+742C, U+742E, U+7430, U+7441, U+7455, U+7457, U+7459, U+745B-745C, U+746D, U+7477, U+747E, U+7480-7481, U+7487, U+748B, U+748E, U+7490, U+749C, U+749E, U+74A7-74A9, U+74BA, U+74D2, U+74DE, U+74E0, U+74EF, U+74F4, U+74FF, U+750D, U+750F, U+7511, U+7513, U+7519, U+752C, U+752F, U+753A, U+753E, U+7540, U+7548, U+754B, U+754E, U+755A-755B, U+7572, U+7579, U+757F, U+7583, U+758B, U+7592, U+7594, U+7596, U+759D, U+75A0, U+75A3, U+75AC, U+75B0-75B1, U+75B3-75B4, U+75B8, U+75C2-75C4, U+75CD, U+75D6, U+75E3-75E4, U+75E6-75E8, U+75EB, U+75F1, U+75FC, U+75FF-7600, U+7603, U+7605, U+760A, U+760C, U+7610, U+7615, U+7617-7619, U+761B, U+7620, U+7622, U+7625, U+762D, U+7630, U+7633, U+7635, U+763C, U+763E-7640, U+7643, U+764D, U+7654, U+7656, U+765C, U+765E, U+766B, U+766F, U+7688, U+768E, U+7693, U+7699, U+76A4, U+76B2, U+76B4, U+76CD, U+76E5, U+76F1, U+76F9, U+7704, U+7707-7708, U+770D, U+7719-771A, U+7722, U+7726, U+772D, U+7735, U+7738, U+7743, U+7747, U+7750-7751, U+775A, U+7762, U+7765, U+7768, U+777D-7780, U+778C-778D, U+7791, U+779F-77A0, U+77A2, U+77B0, U+77B5, U+77BD, U+77BF, U+77CD, U+77DC, U+77E7, U+77EC, U+77F6, U+77F8, U+7800, U+7809, U+7811, U+7817-7818, U+781C-781D, U+781F, U+7823, U+7825-7826, U+7829, U+782C-782D, U+7839-783C, U+7847, U+784C, U+784E, U+7850, U+7856-7857, U+786A, U+786D, U+7887, U+7893, U+789A-789C, U+78A1, U+78A3, U+78A5, U+78B2, U+78B9, U+78C9, U+78D4, U+78D9, U+78EC, U+78F2, U+78F4, U+7905, U+7913, U+791E, U+7924, U+7934, U+793B, U+7940, U+7946, U+7949, U+7953, U+7957, U+795A-795C, U+7960, U+7962, U+7967, U+796F, U+797A, U+7980, U+7985, U+798A, U+799A, U+79A7, U+79B3, U+79BA, U+79D5, U+79E3, U+79EB, U+79ED, U+7A02-7A03, U+7A06, U+7A14, U+7A1E, U+7A23, U+7A37, U+7A39, U+7A51, U+7A70, U+7A78-7A79, U+7A80, U+7A86, U+7A88, U+7A95, U+7AA0, U+7AA6, U+7AA8, U+7AAC-7AAD, U+7AB3, U+7AE6, U+7AFA, U+7AFD, U+7B03-7B04, U+7B08, U+7B0A, U+7B0F, U+7B15, U+7B19, U+7B1E, U+7B20, U+7B24-7B25, U+7B2A-7B2B, U+7B2E, U+7B31, U+7B33, U+7B38, U+7B3E, U+7B45, U+7B47, U+7B4C, U+7B58, U+7B5A, U+7B5D, U+7B60, U+7B62, U+7B6E, U+7B71-7B72, U+7B75, U+7B7B, U+7B85, U+7B90, U+7B9C-7B9D, U+7BA2, U+7BA6-7BA8, U+7BAA-7BAC, U+7BB4, U+7BB8, U+7BC1, U+7BCC, U+7BD1, U+7BDA, U+7BDD, U+7BE5-7BE6, U+7BEA, U+7BFC, U+7BFE, U+7C0B-7C0C, U+7C0F, U+7C16, U+7C1F, U+7C26, U+7C2A, U+7C38, U+7C40-7C41, U+7C74, U+7C7C, U+7C91, U+7C9C-7C9E, U+7CA2, U+7CB2, U+7CBC-7CBD, U+7CC1, U+7CC5, U+7CC7-7CC8, U+7CCC-7CCD, U+7CD7, U+7CE8, U+7CF8, U+7D77, U+7DA6, U+7DAE, U+7E3B, U+7E47, U+7E9B, U+7E9F, U+7EA1, U+7EA3, U+7EA5, U+7EA8-7EA9, U+7EAD, U+7EB0, U+7EBE, U+7EC0-7EC2, U+7EC9, U+7ECB-7ECC, U+7ED0, U+7ED4, U+7ED7, U+7EDB, U+7EE0-7EE1, U+7EE8, U+7EEB, U+7EEE-7EEF, U+7EF1-7EF2, U+7EF6, U+7EFA-7EFB, U+7EFE, U+7F01-7F03, U+7F07-7F08, U+7F0B-7F0D, U+7F0F, U+7F11-7F12, U+7F17, U+7F19, U+7F1B-7F1C, U+7F1F, U+7F21-7F27, U+7F2A-7F2D, U+7F2F-7F33, U+7F35-7F36, U+7F42, U+7F44-7F45, U+7F54, U+7F58, U+7F5F, U+7F61, U+7F68, U+7F71, U+7F74, U+7F79, U+7F7E, U+7F81, U+7F9D, U+7F9F, U+7FA7, U+7FAF-7FB0, U+7FB2, U+7FB8, U+7FBC, U+7FBF, U+7FCA, U+7FCE, U+7FD5, U+7FE1, U+7FE5-7FE6, U+7FE9, U+7FEE, U+7FF3, U+8004, U+8006, U+800B, U+8012, U+8014, U+8016, U+801C, U+8020, U+8022, U+8025-8029, U+8031, U+8035, U+8037, U+8043, U+8046, U+804D, U+8052, U+8069, U+8071, U+807F-8080, U+8093, U+809C, U+809F, U+80AB, U+80AD, U+80B1, U+80B4, U+80B7, U+80BC-80BD, U+80C2, U+80C4, U+80CD, U+80D7, U+80D9, U+80DB, U+80DD, U+80E4-80E5, U+80E7-80ED, U+80F1-80F2, U+80F4, U+80FC, U+810D-810E, U+8112, U+8114, U+8118, U+811E, U+812C, U+8132, U+8136, U+8148, U+814C, U+8153, U+8159-815A, U+8160, U+8167, U+8169, U+816D, U+8171, U+8174, U+817C-817D, U+8182, U+8188, U+8191, U+81A3, U+81A6, U+81AA, U+81BA-81BB, U+81C1, U+81CA, U+81CC, U+81E7, U+81EC, U+81FE, U+8201-8202, U+8204, U+8210, U+821B, U+8221-8223, U+8228, U+822B, U+822D, U+822F, U+8233-8234, U+8238, U+823B, U+823E, U+8244, U+8249, U+824B, U+824F, U+825A, U+825F, U+8268, U+826E, U+8274, U+8279, U+827D, U+827F, U+8284, U+8288, U+828A, U+828E-828F, U+8291, U+8297-8299, U+829F, U+82A1, U+82A4, U+82A8-82AB, U+82AE, U+82B0, U+82B4, U+82B7-82B8, U+82BE, U+82C1, U+82C4, U+82C8, U+82CA-82CC, U+82CE, U+82D2-82D3, U+82D5, U+82D8, U+82DC, U+82E0-82E1, U+82E3-82E4, U+82F4, U+82F7, U+82FB, U+8306-8309, U+830C, U+830F, U+8311, U+8314-8315, U+8317, U+831A-831C, U+832D, U+832F, U+8331, U+8333-8334, U+833A, U+833C, U+8340, U+8343, U+8347, U+834F, U+8351, U+835B-835C, U+835E-8360, U+8365-8366, U+8368-836A, U+836C-836E, U+8378, U+837B-837D, U+8385, U+8392-8393, U+8398, U+839B-839C, U+839E, U+83A0, U+83A8-83AA, U+83B0, U+83B3-83B4, U+83B6, U+83B8, U+83BA, U+83BC, U+83C0-83C1, U+83C5, U+83D4, U+83D6, U+83D8, U+83DD, U+83DF, U+83E1, U+83E5, U+83EA, U+83F0, U+83F8-83F9, U+83FD, U+8401, U+8403, U+8406, U+840B, U+840F, U+8411, U+8418, U+841C, U+8426, U+8431, U+8438, U+843C, U+8446, U+8451, U+8459-845A, U+845C, U+8469, U+846D, U+8473, U+8476, U+8478, U+847A, U+8487-8489, U+848C, U+848E, U+8497, U+84A1, U+84AF, U+84B4, U+84B9-84BA, U+84BD, U+84BF, U+84C1, U+84CA, U+84CD, U+84D0, U+84D3, U+84E0, U+84E3, U+84E5-84E6, U+84F0, U+84FC, U+84FF, U+850C, U+851F, U+8538-853B, U+8543, U+8548, U+8556, U+8559, U+855E, U+8564, U+8568, U+8572, U+8579-857B, U+8585, U+8587, U+858F, U+859C, U+85A4, U+85A8, U+85AE, U+85B0, U+85B7, U+85B9, U+85C1, U+85D3, U+85DC, U+85FF, U+8605, U+8616, U+8627, U+8629, U+863C, U+864D, U+8654, U+8662, U+866C, U+866E, U+867A-867C, U+867F, U+868B, U+868D, U+8693, U+869D, U+86A3, U+86A7-86AA, U+86AC, U+86AF-86B1, U+86B4-86B6, U+86BA, U+86C4, U+86C9, U+86CE-86D1, U+86D8, U+86DE-86DF, U+86E9, U+86ED, U+86F1-86F4, U+86F8, U+8703, U+8707-870A, U+870D, U+8713, U+871A, U+871E, U+8722-8723, U+8725, U+8729, U+872E, U+8731, U+8734, U+8737, U+873B, U+873E-873F, U+8748, U+874C, U+8753, U+8759, U+8760, U+8763-8765, U+876E, U+8770, U+877B-877E, U+8782-8783, U+8785, U+8788, U+878B, U+8793, U+8797, U+87A8, U+87AB-87AD, U+87AF, U+87B3, U+87B5, U+87BD, U+87C0, U+87C6, U+87CA-87CB, U+87D1-87D3, U+87DB, U+87E0, U+87E5, U+87EA, U+87EE, U+87FE, U+8803, U+880A, U+8813, U+8816, U+881B, U+8821, U+8832, U+8839, U+883C, U+8844, U+8862, U+8864, U+8869, U+886E, U+8872, U+887D-887F, U+8882, U+8885, U+8888, U+88A2, U+88A4, U+88B7, U+88BC, U+88C6, U+88C9, U+88CE, U+88D2, U+88D8, U+88DF, U+88E2-88E3, U+88E5, U+88E8, U+88F0-88F1, U+88FC, U+88FE, U+890A, U+8913, U+8919-891B, U+8921, U+892B, U+8930, U+8934, U+8936, U+8941, U+895E, U+8966, U+897B, U+8983, U+89C7, U+89CA-89CC, U+89CE-89D1, U+89D6, U+89DA, U+89DC, U+89DE, U+89E5, U+89EB, U+89EF, U+89F3, U+8A07, U+8A3E, U+8A48, U+8B07, U+8B26, U+8BA0, U+8BA6-8BA7, U+8BAA, U+8BB4-8BB5, U+8BB7, U+8BC2-8BC3, U+8BCB, U+8BCE-8BCF, U+8BD2-8BD4, U+8BD6, U+8BD8-8BD9, U+8BDC, U+8BDF-8BE0, U+8BE4, U+8BE8-8BE9, U+8BEE, U+8BF0, U+8BF3, U+8BF6, U+8BF9, U+8BFC, U+8BFF-8C00, U+8C02, U+8C04, U+8C07, U+8C0C, U+8C0F, U+8C11-8C12, U+8C14-8C16, U+8C18-8C19, U+8C1B, U+8C1D, U+8C1F-8C21, U+8C25, U+8C27, U+8C2A-8C2B, U+8C2E-8C2F, U+8C32-8C33, U+8C35-8C36, U+8C47, U+8C49, U+8C55, U+8C5A, U+8C73, U+8C78, U+8C82, U+8C85, U+8C8A, U+8C94, U+8C98, U+8D32-8D33, U+8D36, U+8D3B, U+8D3D, U+8D40, U+8D45-8D49, U+8D4D, U+8D53, U+8D55, U+8D59, U+8D5C-8D5D, U+8D67, U+8D6D, U+8D73, U+8D84, U+8D91, U+8D94, U+8DB1, U+8DB5, U+8DB8, U+8DBA, U+8DBC, U+8DBF, U+8DC4, U+8DC6, U+8DCE-8DCF, U+8DD6-8DD7, U+8DDA-8DDB, U+8DDE, U+8DE3-8DE4, U+8DEB-8DEC, U+8DF7-8DF9, U+8DFB, U+8DFD, U+8E05, U+8E09, U+8E14, U+8E1D, U+8E1F, U+8E23, U+8E2C, U+8E2E-8E2F, U+8E31, U+8E35, U+8E39-8E3A, U+8E3D, U+8E40-8E42, U+8E47, U+8E49-8E4A, U+8E51-8E52, U+8E59, U+8E69, U+8E6F-8E70, U+8E74, U+8E76, U+8E7C, U+8E85, U+8E8F-8E90, U+8E94, U+8E9C, U+8E9E, U+8ECE, U+8F6B, U+8F6D, U+8F71-8F73, U+8F75-8F7A, U+8F7C, U+8F7E, U+8F81-8F82, U+8F84, U+8F87, U+8F8B, U+8F8D-8F8F, U+8F94, U+8F98, U+8F9A, U+8FB6, U+8FD3, U+8FD5, U+8FE4-8FE6, U+8FE8-8FE9, U+8FEE, U+8FF3, U+9004-9005, U+900B, U+900D, U+9011, U+9016, U+9021, U+9026, U+902D, U+902F, U+9035-9036, U+9044, U+9050-9052, U+9058, U+905B, U+9062, U+9068, U+9074, U+907D, U+9082-9083, U+9088, U+908B, U+9095, U+9097, U+9099, U+909B, U+909D, U+90A1, U+90AC, U+90B0, U+90B3-90B4, U+90B6, U+90B8, U+90BA, U+90BE, U+90C4-90C5, U+90C7, U+90CF-90D0, U+90D3, U+90D7, U+90DB-90DC, U+90E2, U+90E6, U+90EB, U+90EF, U+90FE, U+9104, U+911E, U+9122-9123, U+912F, U+9131, U+9139, U+9143, U+9146, U+914A, U+914E-9150, U+9161-9162, U+9164, U+9169, U+916F-9170, U+9172, U+9174, U+9179, U+917D-917E, U+9185, U+918C-918D, U+9190-9191, U+91A2-91A3, U+91AA, U+91AD-91AF, U+91B4-91B5, U+91BA, U+928E, U+92AE, U+92C8, U+933E, U+936A, U+938F, U+93CA, U+93D6, U+943E, U+946B, U+9485-9487, U+948A-948D, U+948F-9490, U+9494-9495, U+9497, U+949A-949C, U+94A3-94A4, U+94AA-94AD, U+94AF-94B0, U+94B2, U+94B4, U+94B6-94BA, U+94BC-94BD, U+94BF, U+94C4, U+94C8-94CE, U+94D0-94D2, U+94D5-94D9, U+94DB, U+94DE-94E0, U+94E2, U+94E4-94E5, U+94E7-94EB, U+94EE-94EF, U+94F3-94F5, U+94F7, U+94F9, U+94FC-94FD, U+94FF, U+9502-9503, U+9506-9507, U+9509-950A, U+950D-950F, U+9512-9516, U+9518, U+951B, U+951D-951F, U+9522, U+9529-952C, U+9531-9532, U+9534-9538, U+953A, U+953C, U+953E-953F, U+9542, U+9544-9546, U+9549, U+954C, U+954E-954F, U+9552-9554, U+9556-9559, U+955B, U+955D-955F, U+9561-9562, U+9564-956C, U+956F, U+9571-9573, U+95E9, U+95EB, U+95F1, U+95F3, U+95F5-95F6, U+95FC, U+95FE, U+9603-9604, U+9606, U+9608, U+960A-960D, U+960F, U+9612, U+9615-9617, U+9619-961A, U+961D, U+9621-9622, U+962A, U+9631, U+963C-963D, U+9642, U+9649, U+9654, U+965F, U+9667, U+966C, U+9672, U+9674, U+9688, U+968D, U+9697, U+96B0, U+96B3, U+96B9, U+96BC-96BD, U+96C9, U+96CE, U+96D2, U+96E0, U+96E9, U+96EF, U+96F3, U+9701, U+9706, U+9708, U+970E-970F, U+972A, U+972D, U+9730, U+973E, U+9753, U+9765, U+977C, U+9785, U+9791-9792, U+9794, U+97A3, U+97AB, U+97AF, U+97B2, U+97B4, U+97EA-97EC, U+9878, U+987C, U+9880, U+9883, U+9889, U+988C-988D, U+988F, U+9894, U+989A-989B, U+989E-989F, U+98A1-98A2, U+98A5-98A6, U+98D1-98D3, U+98D5, U+98D9-98DA, U+98E7-98E8, U+990D, U+992E, U+9954-9955, U+9963, U+9967-996C, U+9974, U+9977, U+997D, U+9980, U+9984, U+9987, U+998A, U+998D, U+9990-9991, U+9993-9995, U+9997-9998, U+99A5, U+99A8, U+9A75, U+9A77-9A78, U+9A7A, U+9A7D, U+9A7F-9A81, U+9A85, U+9A88, U+9A8A, U+9A90, U+9A92-9A93, U+9A96, U+9A98, U+9A9B-9AA0, U+9AA2-9AA3, U+9AA5, U+9AA7, U+9AB0-9AB1, U+9AB6-9AB7, U+9ABA, U+9ABC, U+9AC0-9AC2, U+9AC5, U+9ACB-9ACC, U+9AD1, U+9ADF, U+9AE1, U+9AE6, U+9AEB, U+9AED, U+9AEF, U+9AF9, U+9AFB, U+9B08, U+9B0F, U+9B13, U+9B1F, U+9B23, U+9B2F, U+9B32, U+9B3B, U+9B43, U+9B45, U+9B47-9B49, U+9B4D, U+9B51, U+9C7F, U+9C82, U+9C85-9C88, U+9C8B, U+9C8E, U+9C90-9C92, U+9C94-9C95, U+9C9A-9C9B, U+9C9E-9CA3, U+9CA5-9CA9, U+9CAB, U+9CAD-9CAE, U+9CB0-9CB7, U+9CBA-9CBD, U+9CC4-9CC7, U+9CCA-9CD0, U+9CD3-9CD5, U+9CD7-9CD9, U+9CDC-9CDD, U+9CDF, U+9CE2, U+9E20, U+9E22, U+9E28-9E2C, U+9E31-9E32, U+9E36-9E3A, U+9E3E, U+9E41-9E42, U+9E44, U+9E46-9E49, U+9E4B-9E4C, U+9E4E, U+9E51, U+9E55, U+9E57-9E58, U+9E5A-9E5C, U+9E5E, U+9E63, U+9E66-9E6D, U+9E71, U+9E73, U+9E7E, U+9E82, U+9E87-9E88, U+9E8B, U+9E92, U+9E9D, U+9E9F, U+9EB4, U+9EB8, U+9EBD-9EBE, U+9EC9, U+9ECF, U+9EDB-9EDD, U+9EDF-9EE0, U+9EE2, U+9EE5, U+9EE7, U+9EE9-9EEA, U+9EEF, U+9EF9, U+9EFB-9EFC, U+9EFE, U+9F0B, U+9F0D, U+9F10, U+9F17, U+9F19, U+9F22, U+9F2C, U+9F2F, U+9F37, U+9F39, U+9F3D-9F3E, U+9F44, U+9F51, U+9F80, U+9F83, U+9F85-9F8A, U+9F8C, U+9F9B, U+9FA0, U+FE49-FE4F, U+FFE2;
}
@font-face {
  font-family: "LongCang Zhianli";
  src: url("assets/fonts/longcang-common.woff2") format("woff2");
  font-display: swap;
}

* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body {
  background: var(--deep);
  color: var(--ink);
  font-family: var(--serif);
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  overflow: hidden;
}
a { color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }
button { font: inherit; color: inherit; -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 1px solid rgba(220, 235, 250, .75); outline-offset: 3px; border-radius: 6px; }
[hidden] { display: none !important; }

/* ---------- phone ---------- */
.app {
  position: fixed;
  inset: 0;
  overflow: hidden;
  background: var(--deep);
  container-type: inline-size;
}
@media (min-width: 520px) {
  body { background: radial-gradient(120% 90% at 50% 40%, #12335f 0%, #06172f 70%); }
  .app {
    inset: auto; left: 50%; top: 50%;
    width: min(430px, 100vw);
    height: min(calc(100dvh - 40px), 932px);
    transform: translate(-50%, -50%);
    border-radius: 38px;
    box-shadow: 0 30px 80px rgba(0, 8, 24, .55), 0 0 0 1px rgba(200, 225, 250, .12);
  }
}

/* ---------- background ---------- */
.bg { position: absolute; inset: 0; }
.bg-img, #bg-canvas {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  display: block;
}
.bg-img { object-fit: cover; opacity: 0; transition: opacity .35s ease; }
.bg-img.on { opacity: 1; }
/* object-position 要与 app.js 里的 BG_POS 一致 */
.bg-img[data-view="home"] { object-position: 80% 85%; }
.bg-img[data-view="traces"] { object-position: 75% 0%; }
.bg-img[data-view="pool"] { object-position: 60% 0%; }
#bg-canvas { opacity: 0; transition: opacity .45s ease; }
#bg-canvas.ready { opacity: 1; }

.bg-shade { position: absolute; inset: 0; pointer-events: none; transition: background .4s ease; }
.app[data-view="home"] .bg-shade {
  background:
    linear-gradient(to top, rgba(5, 20, 48, .55) 0%, rgba(5, 20, 48, 0) 18%),
    linear-gradient(to bottom, rgba(5, 20, 48, .35) 0%, rgba(5, 20, 48, 0) 14%);
}
.app[data-view="traces"] .bg-shade {
  background:
    linear-gradient(to top, rgba(5, 20, 48, .6) 0%, rgba(5, 20, 48, 0) 20%),
    linear-gradient(to bottom, rgba(5, 20, 48, .3) 0%, rgba(5, 20, 48, 0) 14%);
}
/* 紫藤背景偏亮，整体压一层，保证白字可读 */
.app[data-view="pool"] .bg-shade {
  background:
    linear-gradient(to bottom, rgba(6, 26, 58, .55) 0%, rgba(6, 26, 58, .3) 22%, rgba(6, 26, 58, .34) 70%, rgba(6, 26, 58, .7) 100%);
}

/* ---------- top bar ---------- */
.topbar {
  position: absolute; left: 0; right: 0; top: 0; z-index: 3;
  padding: calc(env(safe-area-inset-top, 0px) + 3.2cqw) 4.4cqw 0;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  pointer-events: none;
}
.topbar > * { pointer-events: auto; }
.brand {
  font-size: 3.3cqw; letter-spacing: .42em; text-indent: .42em;
  color: var(--ink-2);
  text-shadow: 0 0 10px var(--glow);
}
.topbar-right { justify-self: end; }
.back {
  display: inline-flex; align-items: center; gap: 2.4cqw;
  padding: 2cqw 3.8cqw 2cqw 3.8cqw;
  font-size: 4.6cqw; letter-spacing: .14em;
  color: var(--ink);
  text-shadow: 0 0 10px var(--glow);
}
.back span { font-size: 1.3em; line-height: 1; letter-spacing: 0; transform: translateY(-.06em); }
.refresh {
  appearance: none; background: none; border: 0; margin: 0;
  width: 11cqw; height: 11cqw; min-width: 40px; min-height: 40px;
  display: grid; place-items: center;
  color: var(--ink-3); cursor: pointer; border-radius: 50%;
  transition: color .2s ease;
}
.refresh:active { color: var(--ink); }
.refresh.busy svg { animation: spin 1.1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* 不同页面顶栏显示的东西不同 */
.app:not([data-view="pool"]) .back { visibility: hidden; }
.app[data-view="pool"] .brand { visibility: hidden; }

/* ---------- views ---------- */
.view {
  position: absolute; inset: 0; z-index: 1;
  overflow-y: auto; overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  scrollbar-width: none;
  padding: 0 var(--gutter) calc(env(safe-area-inset-bottom, 0px) + 30cqw);
  text-shadow: 0 0 14px var(--glow);
}
.view::-webkit-scrollbar { display: none; }
/* 滚动内容在顶栏和底栏处淡出，不和导航叠在一起 */
.view-home, .view-traces {
  --ft: calc(env(safe-area-inset-top, 0px) + 14cqw);
  --fb: calc(env(safe-area-inset-bottom, 0px) + 27cqw);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, transparent calc(var(--ft) - 5cqw), #000 var(--ft),
    #000 calc(100% - var(--fb)), transparent calc(100% - var(--fb) + 9cqw), transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, transparent calc(var(--ft) - 5cqw), #000 var(--ft),
    #000 calc(100% - var(--fb)), transparent calc(100% - var(--fb) + 9cqw), transparent 100%);
}
.view hr {
  width: 11.5cqw; height: 0; margin: 0;
  border: 0; border-top: 1px solid var(--rule);
}

/* ---------- 归处 ---------- */
.home-hero { padding-top: calc(env(safe-area-inset-top, 0px) + 27cqw); max-width: 78cqw; }
.names { margin: 0; font-weight: 400; font-size: 6.4cqw; line-height: 1.25; letter-spacing: .14em; }
.lat { font-family: var(--latin); font-weight: 400; font-size: 1.08em; letter-spacing: .08em; }
.days {
  margin: 2.6cqw 0 0;
  font-size: 4cqw; letter-spacing: .16em; color: var(--ink-2);
  display: flex; align-items: baseline;
}
.days .num {
  font-family: var(--latin); font-weight: 400;
  font-size: 2.3em; line-height: 1; letter-spacing: .03em;
  margin: 0 .2em 0 .34em; color: var(--ink);
  font-variant-numeric: lining-nums tabular-nums;
}
.date { margin: 2.6cqw 0 0; font-size: 3.1cqw; letter-spacing: .16em; color: var(--ink-3); }
.date .lat { font-size: 1.12em; letter-spacing: .1em; }
.home-hero hr { margin: 9cqw 0 12cqw; }

.note-from { margin: 0; font-size: 2.9cqw; letter-spacing: .22em; color: var(--ink-3); }
.note-body {
  margin: 5cqw 0 0;
  font-family: var(--hand);
  font-size: 6cqw; line-height: 1.6; letter-spacing: .08em;
  white-space: pre-wrap; overflow-wrap: anywhere;
}

/* ---------- 留痕 ---------- */
.page-head { padding-top: calc(env(safe-area-inset-top, 0px) + 22cqw); max-width: 50cqw; }
.page-title { margin: 0; font-weight: 400; font-size: 7.6cqw; letter-spacing: .24em; line-height: 1.2; }
.page-sub { margin: 3.4cqw 0 0; font-size: 3.2cqw; line-height: 1.8; letter-spacing: .14em; color: var(--ink-2); }
.page-head hr { margin: 5.6cqw 0 0; }

.section-head {
  margin-top: 13cqw;
  display: flex; justify-content: space-between; align-items: baseline;
}
.section-head h2 { margin: 0; font-weight: 400; font-size: 4.1cqw; letter-spacing: .18em; }
.more {
  font-size: 3.2cqw; letter-spacing: .14em; color: var(--ink-2);
  padding: 2.4cqw 0 2.4cqw 4cqw;
}
.recent { margin-top: 3cqw; }
.recent-item { padding: 3.6cqw 0 3.6cqw 3.4cqw; }
.recent-item + .recent-item { border-top: 1px solid rgba(226, 238, 250, .12); }
.t-body {
  margin: 0;
  font-family: var(--hand);
  font-size: 4.35cqw; line-height: 1.7; letter-spacing: .06em;
  white-space: pre-wrap; overflow-wrap: anywhere;
}
.recent-item .t-body {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;
}
.t-meta { margin: 1.8cqw 0 0; font-size: 2.7cqw; letter-spacing: .12em; color: var(--ink-3); }
.t-meta .lat { font-size: 1.1em; letter-spacing: .06em; }

/* ---------- 念头池 ---------- */
.view-pool {
  /* 筛选固定在顶部，只有下面的时间线滚动 */
  padding-top: calc(env(safe-area-inset-top, 0px) + 17cqw); padding-bottom: 0;
  overflow: hidden; display: flex; flex-direction: column;
}
.view-pool .filters { flex: none; }
.pool-scroll {
  --fb: calc(env(safe-area-inset-bottom, 0px) + 27cqw);
  flex: 1; min-height: 0;
  overflow-y: auto; overflow-x: hidden;
  -webkit-overflow-scrolling: touch; overscroll-behavior: contain; scrollbar-width: none;
  margin: 0 calc(-1 * var(--gutter));
  padding: 0 var(--gutter) calc(env(safe-area-inset-bottom, 0px) + 30cqw);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 6cqw,
    #000 calc(100% - var(--fb)), transparent calc(100% - var(--fb) + 9cqw), transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, #000 6cqw,
    #000 calc(100% - var(--fb)), transparent calc(100% - var(--fb) + 9cqw), transparent 100%);
}
.pool-scroll::-webkit-scrollbar { display: none; }
.filters { display: flex; gap: 5.6cqw; padding-left: .6cqw; }
.filters button {
  appearance: none; background: none; border: 0; margin: 0;
  padding: 2.4cqw 0 2cqw;
  font-size: 3.4cqw; letter-spacing: .14em;
  color: var(--ink-3); cursor: pointer;
  border-bottom: 1px solid transparent;
  transition: color .2s ease, border-color .2s ease;
}
.filters button[aria-selected="true"] { color: var(--ink); border-bottom-color: rgba(234, 243, 252, .8); }

.timeline { position: relative; margin-top: 7cqw; padding-left: 21cqw; }
.pool-scroll .timeline { margin-top: 0; padding-top: 7cqw; }
/* 一根细线串起所有日期，随列表一起滚动 */
.timeline.has-items::before {
  content: ""; position: absolute; left: 14cqw; top: 8.6cqw; bottom: 0; width: 1px;
  background: linear-gradient(to bottom, rgba(226, 238, 250, .55), rgba(226, 238, 250, .35) 85%, rgba(226, 238, 250, 0));
}
.day { position: relative; padding-bottom: 5cqw; }
.day-head {
  position: absolute; left: -21cqw; top: 0; width: 12cqw;
  text-align: right; line-height: 1.3;
}
.day-md { display: block; font-family: var(--latin); font-size: 3.6cqw; letter-spacing: .04em; color: var(--ink); }
.day-wd { display: block; margin-top: .6cqw; font-size: 2.6cqw; letter-spacing: .14em; color: var(--ink-3); }
.day::before {             /* 日期上的小圆点 */
  content: ""; position: absolute; left: calc(-7cqw - 1.1cqw); top: 1.4cqw;
  width: 2.2cqw; height: 2.2cqw; border-radius: 50%;
  background: #eef6ff;
  box-shadow: 0 0 0 1px rgba(10, 38, 72, .5), 0 0 10px rgba(180, 215, 255, .55);
}
.thought { padding-bottom: 4.4cqw; min-height: 10cqw; }
.thought + .thought { padding-top: .4cqw; }

/* ---------- states ---------- */
.state { margin: 0; color: var(--ink-3); font-size: 3.4cqw; letter-spacing: .14em; line-height: 1.8; }
.note .state { font-size: 3.8cqw; }
.state.loading { animation: breathe 2.4s ease-in-out infinite; }
@keyframes breathe { 50% { opacity: .45; } }
.retry {
  appearance: none; margin: 3.6cqw 0 0; padding: 1.6cqw 4.6cqw;
  background: rgba(10, 38, 72, .35);
  border: 1px solid rgba(226, 238, 250, .45); border-radius: 999px;
  font-size: 3.2cqw; letter-spacing: .2em; color: var(--ink);
  cursor: pointer; display: block;
}
.retry:active { background: rgba(226, 238, 250, .12); }
.timeline .state { margin-left: -21cqw; }

/* ---------- nav ---------- */
.nav {
  position: absolute; left: 0; right: 0; z-index: 3;
  bottom: calc(env(safe-area-inset-bottom, 0px) + 6.5cqw);
  display: flex; justify-content: space-between; align-items: center;
  padding: 0 6.6cqw;
  user-select: none; -webkit-user-select: none;
}
.tab {
  position: relative;
  padding: 4cqw 1.6cqw;
  font-size: 4.1cqw; line-height: 1; letter-spacing: .22em;
  color: var(--ink-3);
  text-shadow: 0 0 10px var(--glow);
  transition: color .3s ease;
}
a.tab[aria-current="page"] { color: var(--ink); text-shadow: 0 0 12px var(--halo), 0 0 10px var(--glow); }
.tab-off { color: var(--ink-4); cursor: default; }
.tab-off small {
  position: absolute; left: 50%; top: calc(100% - 2.6cqw);
  transform: translateX(-50%);
  font-size: 2.1cqw; letter-spacing: .12em; white-space: nowrap;
  color: var(--ink-4);
}

@media (prefers-reduced-motion: reduce) {
  .state.loading, .refresh.busy svg { animation: none; }
  .bg-img, #bg-canvas, .bg-shade { transition: none; }
}

/* Card B-READ: only the login seam, authenticated views keep the accepted layout. */
.pwa-auth { position: absolute; inset: 0; z-index: 20; display: grid; place-items: center; background: rgba(10,38,72,.94); }
.pwa-auth[hidden], .pwa-logout[hidden] { display: none; }
.pwa-auth form { width: min(75%, 20rem); text-align: center; }
.pwa-auth label { display: block; margin: 1rem 0 .5rem; }
.pwa-auth input { width: 100%; box-sizing: border-box; padding: .6rem; color: inherit; background: transparent; border: 1px solid currentColor; border-radius: .3rem; }
.pwa-auth button { margin-top: 1rem; }
.pwa-logout { position: absolute; top: calc(env(safe-area-inset-top, 0px) + 3.2cqw); right: 17.4cqw; z-index: 12; margin: 0; height: 11cqw; min-height: 40px; padding: 0 2.4cqw; display: grid; place-items: center; font-size: 2.8cqw; }
