/* VN runtime fixed styles. Skeleton coordinates are injected from build/skeleton.js. */
html, body { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
/* 固定書体=Shippori Mincho(しっぽり明朝・OFL・同梱)。調整盤の全数値はこの書体で確定した(仕様§3)。
   本文500/ネーム600/ルビ700。Noto Sans JPは同梱の最終フォールバック。
   ここは完全版(TTF)の形。ビルド(font_subset)が既定で、作品で使う字だけに絞った WOFF2 と unicode-range へ書き換え、
   Noto は Shippori に無い表示字があるときだけ残す(仕様§18) */
@font-face {
  font-family: "Shippori Mincho VN";
  src: url("fonts/ShipporiMincho-Medium.woff2?v=ccce6444") format("woff2");
  unicode-range: U+0020-007E, U+00A0, U+00A7, U+00B0-00B1, U+00B7, U+00D7, U+00F7, U+03B1, U+2010, U+2013-2015, U+2018-2019, U+201C-201D, U+2025-2026, U+203B, U+2190-2193, U+21C4, U+21D4, U+2212, U+2252, U+2266, U+2460-2464, U+2500, U+25BC, U+25CB, U+2605-2606, U+266A, U+3000-303F, U+3041-30FF, U+4E00-4E01, U+4E03, U+4E08-4E0B, U+4E0D-4E0E, U+4E16, U+4E21, U+4E26, U+4E2D, U+4E32, U+4E38-4E39, U+4E3B, U+4E45, U+4E57, U+4E71, U+4E7E, U+4E86, U+4E88-4E89, U+4E8B-4E8C, U+4E92, U+4E94-4E95, U+4EA1, U+4EA4, U+4EBA, U+4ECA, U+4ED5-4ED6, U+4ED8, U+4EE3, U+4EE5, U+4EEE, U+4EF0, U+4EF2, U+4EF6, U+4EFB, U+4F0F, U+4F11, U+4F1A, U+4F1D, U+4F34, U+4F38, U+4F3C, U+4F4D-4F4E, U+4F53, U+4F55, U+4F59, U+4F5C, U+4F75, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FB5, U+4FC2-4FC3, U+4FDD, U+4FE1, U+4FEE-4FEF, U+4FFA, U+500B, U+500D, U+5012, U+5019, U+5024, U+5049, U+505C, U+5065, U+5074, U+5076, U+507D, U+5099, U+50B7, U+50BE, U+50CD, U+50CF, U+50D5, U+512A, U+5143-5145, U+5148-5149, U+514B, U+514D, U+5150, U+5165, U+5168, U+516B-516D, U+5171, U+5175, U+5177, U+517C, U+5185-5186, U+518D, U+5192, U+5199, U+51A0, U+51B7, U+51C4, U+51CD, U+51DB, U+51DD, U+51E6, U+51F8-51FA, U+5203, U+5206-5208, U+5217, U+521D, U+5224-5225, U+5229, U+5230, U+5236, U+523A-523B, U+5247, U+524A, U+524D, U+5263, U+5265, U+526F, U+5272, U+529B, U+529F-52A0, U+52A3, U+52A9-52AA, U+52B1, U+52B4, U+52B9, U+52C7, U+52C9, U+52D5, U+52D8-52D9, U+52DD, U+52E2, U+5302, U+5305, U+5316, U+5320, U+5339-533A, U+533F, U+5341, U+534A, U+5352, U+5354, U+5358, U+5360, U+5370-5371, U+5373-5374, U+539A, U+539F, U+53B3, U+53BB, U+53C2, U+53C8, U+53CA-53CE, U+53D6-53D7, U+53E3-53E5, U+53E9, U+53EB, U+53EF-53F1, U+53F3, U+53F6-53F7, U+5404, U+5408, U+540A, U+540C-540D, U+5410-5411, U+541B, U+541F-5420, U+5426, U+542B, U+5438-5439, U+5446, U+544A, U+545F, U+5468, U+5473, U+547C-547D, U+548C, U+54B2-54B3, U+54C0-54C1, U+54E1, U+54ED, U+5507, U+552F, U+553E, U+554F, U+5584, U+5589, U+558B, U+559C-559D, U+55A7, U+5606, U+5629, U+5642, U+565B, U+5668, U+566A, U+5674, U+5699, U+56DB, U+56DE, U+56E0, U+56E3, U+56EE, U+56F0, U+56F2-56F3, U+56FA, U+5727-5728, U+5730, U+5747, U+5782, U+578B, U+57C3, U+57CB, U+57DF, U+57FA, U+5802, U+5824, U+582A, U+5831, U+5834-5835, U+584A, U+5857, U+585E, U+5875, U+5883, U+5897, U+589C, U+58C1, U+58CA, U+58EB, U+58F0, U+5909, U+590F, U+5915-5916, U+591A, U+591C, U+5922, U+5927, U+5929-592B, U+592E, U+5931, U+5947, U+594F, U+5951, U+5962, U+5965, U+596A, U+596E, U+5973-5974, U+597D, U+5982, U+59A5, U+59A8, U+59CB, U+59D4, U+59EB, U+59FF, U+5A01, U+5A2F, U+5ACC, U+5B09, U+5B50, U+5B54-5B55, U+5B57-5B58, U+5B64, U+5B66, U+5B88-5B89, U+5B8C, U+5B98, U+5B9A, U+5B9F, U+5BA2-5BA5, U+5BB3, U+5BB6, U+5BB9, U+5BC2, U+5BC4, U+5BC6, U+5BD2, U+5BDD, U+5BDF, U+5BE7, U+5BF8, U+5BFE-5BFF, U+5C01-5C02, U+5C04, U+5C0E-5C0F, U+5C11, U+5C16, U+5C3A-5C3B, U+5C3D-5C3E, U+5C40, U+5C45, U+5C48, U+5C4A-5C4B, U+5C55, U+5C5E, U+5C64-5C65, U+5C71, U+5C90, U+5CD9, U+5D29, U+5D4C, U+5D50, U+5DDD, U+5DE1, U+5DE5-5DE6, U+5DE8, U+5DEE, U+5DF1, U+5DFB, U+5E02-5E03, U+5E0C, U+5E2D, U+5E2F-5E30, U+5E33, U+5E38, U+5E45, U+5E47, U+5E55, U+5E73-5E74, U+5E7D-5E7E, U+5E83, U+5E8F, U+5E95, U+5E9C, U+5EA6-5EA7, U+5EC3, U+5EF6, U+5F01, U+5F0F, U+5F15, U+5F1F, U+5F26-5F27, U+5F31, U+5F35, U+5F37, U+5F3E, U+5F53, U+5F59, U+5F62, U+5F69, U+5F71, U+5F79, U+5F7C, U+5F80, U+5F84-5F85, U+5F8B-5F8C, U+5F90, U+5F93, U+5F97, U+5FA1, U+5FA9, U+5FAE, U+5FB9, U+5FC3, U+5FC5, U+5FCC, U+5FD8-5FD9, U+5FDC, U+5FE0, U+5FEB, U+5FF5, U+6012, U+6016, U+601D, U+6025, U+6027, U+602A, U+604B, U+6050, U+6052, U+6065, U+606F, U+6094, U+609F, U+60A3, U+60AA, U+60B2, U+60C5, U+60D1, U+60DA, U+60E8, U+60F3, U+610F, U+611A-611B, U+611F, U+614B, U+615F, U+6162-6163, U+6168, U+616E, U+618E, U+61A4, U+61A7, U+61A9, U+61B6, U+61D0, U+6210-6212, U+6226, U+6238, U+623B, U+6240, U+6247, U+624B, U+624D, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+6297-6298, U+629C, U+629E, U+62B1, U+62B9, U+62BC-62BD, U+62C5, U+62D2, U+62DB, U+62E0-62E1, U+62EC-62EE, U+62F3, U+62FE, U+6301, U+6307, U+6311, U+6319, U+631F, U+632F, U+633F, U+6349, U+634C, U+6355, U+6368, U+637B, U+6383, U+638C, U+6392, U+639B, U+63A0-63A2, U+63A5, U+63A7, U+63B2, U+63B4, U+63C3, U+63CF-63D0, U+63DB, U+63E1, U+63EE, U+63F4, U+63FA, U+640D, U+642D, U+643A, U+6458, U+6483, U+6492, U+64A4, U+64AB, U+64AD-64AE, U+64C1, U+64CD, U+64EC, U+652F, U+6539, U+653B, U+653E-653F, U+6545, U+6551, U+6557, U+6559, U+6562-6563, U+6570, U+6574-6575, U+6577, U+6587, U+6589, U+6599, U+659C, U+65AD, U+65B0, U+65B9, U+65CB, U+65D7, U+65E2, U+65E5, U+65E7-65E9, U+6602, U+6607, U+660E, U+6614, U+661F-6620, U+6625, U+6628, U+662F, U+663C, U+6642, U+6652, U+666E-666F, U+6674, U+6687-6688, U+6691, U+6697, U+66AB, U+66AE, U+66B4, U+66F2, U+66F4, U+66F8, U+66FF-6700, U+6709, U+670D, U+671B, U+671D, U+671F, U+6728, U+672A-672D, U+673A, U+6750, U+675F, U+6761, U+6765, U+676F, U+677F, U+6790, U+679A, U+679C, U+67A0, U+67B7, U+67C4, U+67CF, U+67D3-67D4, U+67FB, U+6804, U+6813, U+6838-6839, U+683C, U+6843, U+6848, U+685C, U+687F, U+68B0-68B1, U+68C4, U+68D2, U+6905, U+690D, U+691C, U+6954, U+696D, U+6975, U+697D, U+6982, U+69CB-69CD, U+69D8, U+69FD, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6ADB, U+6B04, U+6B20-6B21, U+6B32, U+6B3A, U+6B4C, U+6B53, U+6B62-6B63, U+6B66, U+6B69-6B6A, U+6B6F, U+6B74, U+6B7B, U+6B8A-6B8B, U+6BB4-6BB5, U+6BBA, U+6BBF, U+6BCE, U+6BD2, U+6BD4, U+6BDB, U+6C11, U+6C17, U+6C34, U+6C37-6C38, U+6C41-6C42, U+6C4E, U+6C57, U+6C5A, U+6C7A, U+6C88, U+6CA1-6CA2, U+6CAB, U+6CB8-6CB9, U+6CBB, U+6CBF, U+6CC1, U+6CD5, U+6CE2-6CE3, U+6CE8, U+6D17, U+6D29, U+6D3B, U+6D3E, U+6D41, U+6D44-6D45, U+6D6E, U+6D74, U+6D78, U+6D88, U+6D99, U+6DE1, U+6DF1, U+6DF7, U+6DF9, U+6DFB, U+6E08, U+6E0B, U+6E1B, U+6E21, U+6E26, U+6E29, U+6E2C, U+6E6F, U+6E80, U+6E90, U+6E96, U+6E9C-6E9D, U+6EB6, U+6EC5, U+6ED1, U+6ED3, U+6EDE, U+6EF2, U+6EF4, U+6EFE, U+6F02, U+6F0F, U+6F14, U+6F22, U+6F5C, U+6F64, U+6F6E, U+6F70, U+6F84, U+6FC0-6FC1, U+6FC3, U+706B, U+706F-7070, U+708E, U+70B9-70BA, U+70C8, U+7121, U+7126, U+7136, U+713C, U+714C, U+7159, U+7167, U+716E, U+719F, U+71B1, U+71C3, U+71E5-71E6, U+7206, U+722A, U+7247-7248, U+7261, U+7269, U+7279, U+727D, U+72AC, U+72AF, U+72B6, U+72C2, U+72D7, U+72D9, U+72EC-72ED, U+72FC-72FD, U+731B, U+732E, U+7336, U+7344, U+7363, U+7387, U+7389, U+73C8, U+73CD, U+73E0, U+73FE, U+7403, U+7406, U+7432, U+74B0, U+7518, U+751F, U+7523, U+7528, U+7531-7533, U+7537, U+753B, U+754C, U+7559, U+7565, U+756A, U+7570, U+7573, U+75B2, U+75C5, U+75D5, U+75DB, U+75E9, U+75F4, U+767A-767B, U+767D, U+7684, U+7686, U+76AE, U+76BA, U+76D7, U+76DB, U+76E3-76E4, U+76EE, U+76F2, U+76F4, U+76F8, U+7701, U+7708-7709, U+771F-7720, U+7729, U+773A, U+773C, U+7740, U+7766, U+7768, U+779E, U+77A5, U+77AC, U+77B0, U+77B3, U+77E2, U+77E5, U+77E9, U+77ED, U+77EF, U+77F3, U+7802, U+7814-7815, U+7832, U+7834, U+78BA, U+78C1, U+793A, U+793E, U+795E, U+7981, U+79C0-79C1, U+79D1-79D2, U+79D8, U+79E4, U+79F0, U+79FB, U+7A00, U+7A0B, U+7A1C, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A4F, U+7A6B, U+7A74, U+7A76, U+7A7A, U+7A81, U+7A93, U+7AAE, U+7ACB, U+7ADC, U+7AE0, U+7AEF, U+7AF6, U+7B11, U+7B26, U+7B2C, U+7B46, U+7B49, U+7B4B, U+7B52, U+7B54, U+7B56, U+7B97, U+7BA1, U+7BB1, U+7BC0, U+7BC4, U+7BC9, U+7C21, U+7C3F, U+7C89, U+7C92, U+7C97, U+7CF8, U+7CFB, U+7D04, U+7D0B, U+7D0D, U+7D14, U+7D19-7D1B, U+7D20-7D22, U+7D2B, U+7D2F-7D30, U+7D3A, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D66, U+7D71, U+7D75-7D76, U+7D99-7D9A, U+7DAD, U+7DB2, U+7DCA, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7DE8-7DE9, U+7DF4, U+7E01, U+7E1B, U+7E1E, U+7E26, U+7E2B, U+7E2E, U+7E3E, U+7E41, U+7E4B, U+7E54, U+7E70, U+7E8F, U+7F6A, U+7F6E, U+7F79, U+7F8E, U+7FA4, U+7FA9, U+7FBD, U+7FD2, U+7FD4, U+7FE0-7FE1, U+7FF3, U+7FFB-7FFC, U+8003, U+8005, U+8010, U+8033, U+805E, U+8074, U+8077, U+8089, U+808C, U+809D, U+80A9, U+80B2, U+80C3, U+80CC, U+80F4, U+80F8, U+80FD, U+8105, U+8107-8108, U+811A, U+8131, U+8133, U+8155, U+8179, U+819C-819D, U+81A8, U+81D3, U+81EA, U+81ED, U+81F3-81F4, U+8208, U+820C, U+821E, U+822A, U+8235, U+826F, U+8272, U+8276, U+829D, U+82AF, U+82B1, U+82B8, U+82BB, U+82BD, U+82DB, U+82E5-82E6, U+82F1, U+8302, U+8336, U+8339, U+8349, U+8352, U+8377, U+83EF, U+840E, U+843D, U+8449, U+8457, U+84B8, U+8535, U+853D, U+8584, U+8607, U+864E, U+865A, U+8679, U+86C7, U+8702, U+871C, U+87BA, U+8840, U+8846, U+884C, U+8853, U+885B, U+885D, U+8861, U+8868, U+8870, U+8896, U+88AB, U+88C1-88C2, U+88C5, U+88CF, U+88D5, U+88DC, U+88FE, U+8907, U+8912, U+8972, U+8981, U+8986, U+898B, U+898F, U+8996-8997, U+899A, U+89A7, U+89AA, U+89B3, U+89D2, U+89E3, U+89E6, U+8A00, U+8A02, U+8A08, U+8A13, U+8A17-8A18, U+8A2A, U+8A2D, U+8A31, U+8A33, U+8A3A, U+8A3C, U+8A55, U+8A5E, U+8A66, U+8A70-8A73, U+8A87, U+8A8C-8A8D, U+8A93, U+8A95, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8AD6, U+8AE6, U+8AEB, U+8AED, U+8AF8, U+8B00, U+8B1D, U+8B58, U+8B66, U+8B70, U+8B77, U+8C46, U+8C61, U+8C6A, U+8CA0, U+8CA2, U+8CAA-8CAC, U+8CB0, U+8CB4, U+8CB7, U+8CC7, U+8CDB, U+8CDE, U+8CEA, U+8CED, U+8D05, U+8D64, U+8D70, U+8D77, U+8D85, U+8D8A, U+8DA3, U+8DB3, U+8DDD, U+8DE1, U+8DE8, U+8DEF, U+8DF3, U+8E0F, U+8E35, U+8E74, U+8E87, U+8E8A, U+8E8D, U+8EAB, U+8EB1, U+8ECA, U+8ECC-8ECD, U+8EE2, U+8EF8, U+8EFD, U+8F09, U+8F1D, U+8F29-8F2A, U+8F5F, U+8FB1, U+8FBA, U+8FBC, U+8FBF, U+8FCE, U+8FD1, U+8FD4, U+8FEB, U+8FF0, U+8FF7, U+8FFD, U+9000-9001, U+9003, U+9006, U+900F-9010, U+9014, U+9019-901A, U+901F-9020, U+9023, U+9032, U+9038, U+9045, U+904A-904B, U+904E, U+9053-9055, U+905C, U+9060, U+9065, U+9069, U+906E, U+9077-9078, U+907D, U+907F, U+90AA, U+90CE, U+90E8, U+90ED, U+90FD, U+914D, U+9152, U+9154, U+916C, U+9177, U+91C8, U+91CD-91CF, U+91D1, U+91D8, U+91DD, U+91E3, U+920D, U+9244, U+9264, U+9280, U+9283, U+92ED, U+92FC, U+9306, U+9310, U+9320, U+932F, U+9332, U+935B, U+9375, U+938C, U+9396, U+93E1, U+9451, U+9577, U+9583, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+95BE, U+95D8, U+9632, U+963B, U+964D, U+9650, U+9663-9665, U+9670, U+9676, U+967A, U+967D, U+9685, U+968A, U+968E-968F, U+9694, U+969B-969C, U+96A0, U+96A3, U+96C4, U+96C6, U+96D1, U+96DB, U+96E2-96E3, U+96E8, U+96EA, U+96F2, U+96F6-96F7, U+96FB, U+9707, U+970A, U+971E, U+9727, U+9732, U+9752, U+9759, U+975E, U+9761-9762, U+9798, U+97AD, U+97F3, U+97FB, U+97FF, U+9802-9803, U+9805-9806, U+9808, U+9810-9811, U+9818, U+982C-982D, U+9837, U+983B-983C, U+984C-984E, U+9854, U+9858, U+985E, U+9870, U+98A8, U+98DB, U+98DF, U+98F2, U+98FD-98FE, U+990A, U+990C, U+9996, U+9999, U+99AC, U+99B3, U+99C4, U+99C6, U+99D0, U+9A0E, U+9A12-9A13, U+9A30, U+9A5A, U+9AA8, U+9AB8, U+9AD8, U+9AEA, U+9B31, U+9B45, U+9B54, U+9BAE, U+9CF4, U+9E7F, U+9EC4, U+9ED2, U+9ED9, U+9F13, U+9F2C, U+9F3B, U+9F62, U+FF01-FF5E;
  font-weight: 500; font-display: swap;
}
@font-face {
  font-family: "Shippori Mincho VN";
  src: url("fonts/ShipporiMincho-SemiBold.woff2?v=ccce6444") format("woff2");
  unicode-range: U+0020-007E, U+00A0, U+00A7, U+00B0-00B1, U+00B7, U+00D7, U+00F7, U+03B1, U+2010, U+2013-2015, U+2018-2019, U+201C-201D, U+2025-2026, U+203B, U+2190-2193, U+21C4, U+21D4, U+2212, U+2252, U+2266, U+2460-2464, U+2500, U+25BC, U+25CB, U+2605-2606, U+266A, U+3000-303F, U+3041-30FF, U+4E00-4E01, U+4E03, U+4E08-4E0B, U+4E0D-4E0E, U+4E16, U+4E21, U+4E26, U+4E2D, U+4E32, U+4E38-4E39, U+4E3B, U+4E45, U+4E57, U+4E71, U+4E7E, U+4E86, U+4E88-4E89, U+4E8B-4E8C, U+4E92, U+4E94-4E95, U+4EA1, U+4EA4, U+4EBA, U+4ECA, U+4ED5-4ED6, U+4ED8, U+4EE3, U+4EE5, U+4EEE, U+4EF0, U+4EF2, U+4EF6, U+4EFB, U+4F0F, U+4F11, U+4F1A, U+4F1D, U+4F34, U+4F38, U+4F3C, U+4F4D-4F4E, U+4F53, U+4F55, U+4F59, U+4F5C, U+4F75, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FB5, U+4FC2-4FC3, U+4FDD, U+4FE1, U+4FEE-4FEF, U+4FFA, U+500B, U+500D, U+5012, U+5019, U+5024, U+5049, U+505C, U+5065, U+5074, U+5076, U+507D, U+5099, U+50B7, U+50BE, U+50CD, U+50CF, U+50D5, U+512A, U+5143-5145, U+5148-5149, U+514B, U+514D, U+5150, U+5165, U+5168, U+516B-516D, U+5171, U+5175, U+5177, U+517C, U+5185-5186, U+518D, U+5192, U+5199, U+51A0, U+51B7, U+51C4, U+51CD, U+51DB, U+51DD, U+51E6, U+51F8-51FA, U+5203, U+5206-5208, U+5217, U+521D, U+5224-5225, U+5229, U+5230, U+5236, U+523A-523B, U+5247, U+524A, U+524D, U+5263, U+5265, U+526F, U+5272, U+529B, U+529F-52A0, U+52A3, U+52A9-52AA, U+52B1, U+52B4, U+52B9, U+52C7, U+52C9, U+52D5, U+52D8-52D9, U+52DD, U+52E2, U+5302, U+5305, U+5316, U+5320, U+5339-533A, U+533F, U+5341, U+534A, U+5352, U+5354, U+5358, U+5360, U+5370-5371, U+5373-5374, U+539A, U+539F, U+53B3, U+53BB, U+53C2, U+53C8, U+53CA-53CE, U+53D6-53D7, U+53E3-53E5, U+53E9, U+53EB, U+53EF-53F1, U+53F3, U+53F6-53F7, U+5404, U+5408, U+540A, U+540C-540D, U+5410-5411, U+541B, U+541F-5420, U+5426, U+542B, U+5438-5439, U+5446, U+544A, U+545F, U+5468, U+5473, U+547C-547D, U+548C, U+54B2-54B3, U+54C0-54C1, U+54E1, U+54ED, U+5507, U+552F, U+553E, U+554F, U+5584, U+5589, U+558B, U+559C-559D, U+55A7, U+5606, U+5629, U+5642, U+565B, U+5668, U+566A, U+5674, U+5699, U+56DB, U+56DE, U+56E0, U+56E3, U+56EE, U+56F0, U+56F2-56F3, U+56FA, U+5727-5728, U+5730, U+5747, U+5782, U+578B, U+57C3, U+57CB, U+57DF, U+57FA, U+5802, U+5824, U+582A, U+5831, U+5834-5835, U+584A, U+5857, U+585E, U+5875, U+5883, U+5897, U+589C, U+58C1, U+58CA, U+58EB, U+58F0, U+5909, U+590F, U+5915-5916, U+591A, U+591C, U+5922, U+5927, U+5929-592B, U+592E, U+5931, U+5947, U+594F, U+5951, U+5962, U+5965, U+596A, U+596E, U+5973-5974, U+597D, U+5982, U+59A5, U+59A8, U+59CB, U+59D4, U+59EB, U+59FF, U+5A01, U+5A2F, U+5ACC, U+5B09, U+5B50, U+5B54-5B55, U+5B57-5B58, U+5B64, U+5B66, U+5B88-5B89, U+5B8C, U+5B98, U+5B9A, U+5B9F, U+5BA2-5BA5, U+5BB3, U+5BB6, U+5BB9, U+5BC2, U+5BC4, U+5BC6, U+5BD2, U+5BDD, U+5BDF, U+5BE7, U+5BF8, U+5BFE-5BFF, U+5C01-5C02, U+5C04, U+5C0E-5C0F, U+5C11, U+5C16, U+5C3A-5C3B, U+5C3D-5C3E, U+5C40, U+5C45, U+5C48, U+5C4A-5C4B, U+5C55, U+5C5E, U+5C64-5C65, U+5C71, U+5C90, U+5CD9, U+5D29, U+5D4C, U+5D50, U+5DDD, U+5DE1, U+5DE5-5DE6, U+5DE8, U+5DEE, U+5DF1, U+5DFB, U+5E02-5E03, U+5E0C, U+5E2D, U+5E2F-5E30, U+5E33, U+5E38, U+5E45, U+5E47, U+5E55, U+5E73-5E74, U+5E7D-5E7E, U+5E83, U+5E8F, U+5E95, U+5E9C, U+5EA6-5EA7, U+5EC3, U+5EF6, U+5F01, U+5F0F, U+5F15, U+5F1F, U+5F26-5F27, U+5F31, U+5F35, U+5F37, U+5F3E, U+5F53, U+5F59, U+5F62, U+5F69, U+5F71, U+5F79, U+5F7C, U+5F80, U+5F84-5F85, U+5F8B-5F8C, U+5F90, U+5F93, U+5F97, U+5FA1, U+5FA9, U+5FAE, U+5FB9, U+5FC3, U+5FC5, U+5FCC, U+5FD8-5FD9, U+5FDC, U+5FE0, U+5FEB, U+5FF5, U+6012, U+6016, U+601D, U+6025, U+6027, U+602A, U+604B, U+6050, U+6052, U+6065, U+606F, U+6094, U+609F, U+60A3, U+60AA, U+60B2, U+60C5, U+60D1, U+60DA, U+60E8, U+60F3, U+610F, U+611A-611B, U+611F, U+614B, U+615F, U+6162-6163, U+6168, U+616E, U+618E, U+61A4, U+61A7, U+61A9, U+61B6, U+61D0, U+6210-6212, U+6226, U+6238, U+623B, U+6240, U+6247, U+624B, U+624D, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+6297-6298, U+629C, U+629E, U+62B1, U+62B9, U+62BC-62BD, U+62C5, U+62D2, U+62DB, U+62E0-62E1, U+62EC-62EE, U+62F3, U+62FE, U+6301, U+6307, U+6311, U+6319, U+631F, U+632F, U+633F, U+6349, U+634C, U+6355, U+6368, U+637B, U+6383, U+638C, U+6392, U+639B, U+63A0-63A2, U+63A5, U+63A7, U+63B2, U+63B4, U+63C3, U+63CF-63D0, U+63DB, U+63E1, U+63EE, U+63F4, U+63FA, U+640D, U+642D, U+643A, U+6458, U+6483, U+6492, U+64A4, U+64AB, U+64AD-64AE, U+64C1, U+64CD, U+64EC, U+652F, U+6539, U+653B, U+653E-653F, U+6545, U+6551, U+6557, U+6559, U+6562-6563, U+6570, U+6574-6575, U+6577, U+6587, U+6589, U+6599, U+659C, U+65AD, U+65B0, U+65B9, U+65CB, U+65D7, U+65E2, U+65E5, U+65E7-65E9, U+6602, U+6607, U+660E, U+6614, U+661F-6620, U+6625, U+6628, U+662F, U+663C, U+6642, U+6652, U+666E-666F, U+6674, U+6687-6688, U+6691, U+6697, U+66AB, U+66AE, U+66B4, U+66F2, U+66F4, U+66F8, U+66FF-6700, U+6709, U+670D, U+671B, U+671D, U+671F, U+6728, U+672A-672D, U+673A, U+6750, U+675F, U+6761, U+6765, U+676F, U+677F, U+6790, U+679A, U+679C, U+67A0, U+67B7, U+67C4, U+67CF, U+67D3-67D4, U+67FB, U+6804, U+6813, U+6838-6839, U+683C, U+6843, U+6848, U+685C, U+687F, U+68B0-68B1, U+68C4, U+68D2, U+6905, U+690D, U+691C, U+6954, U+696D, U+6975, U+697D, U+6982, U+69CB-69CD, U+69D8, U+69FD, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6ADB, U+6B04, U+6B20-6B21, U+6B32, U+6B3A, U+6B4C, U+6B53, U+6B62-6B63, U+6B66, U+6B69-6B6A, U+6B6F, U+6B74, U+6B7B, U+6B8A-6B8B, U+6BB4-6BB5, U+6BBA, U+6BBF, U+6BCE, U+6BD2, U+6BD4, U+6BDB, U+6C11, U+6C17, U+6C34, U+6C37-6C38, U+6C41-6C42, U+6C4E, U+6C57, U+6C5A, U+6C7A, U+6C88, U+6CA1-6CA2, U+6CAB, U+6CB8-6CB9, U+6CBB, U+6CBF, U+6CC1, U+6CD5, U+6CE2-6CE3, U+6CE8, U+6D17, U+6D29, U+6D3B, U+6D3E, U+6D41, U+6D44-6D45, U+6D6E, U+6D74, U+6D78, U+6D88, U+6D99, U+6DE1, U+6DF1, U+6DF7, U+6DF9, U+6DFB, U+6E08, U+6E0B, U+6E1B, U+6E21, U+6E26, U+6E29, U+6E2C, U+6E6F, U+6E80, U+6E90, U+6E96, U+6E9C-6E9D, U+6EB6, U+6EC5, U+6ED1, U+6ED3, U+6EDE, U+6EF2, U+6EF4, U+6EFE, U+6F02, U+6F0F, U+6F14, U+6F22, U+6F5C, U+6F64, U+6F6E, U+6F70, U+6F84, U+6FC0-6FC1, U+6FC3, U+706B, U+706F-7070, U+708E, U+70B9-70BA, U+70C8, U+7121, U+7126, U+7136, U+713C, U+714C, U+7159, U+7167, U+716E, U+719F, U+71B1, U+71C3, U+71E5-71E6, U+7206, U+722A, U+7247-7248, U+7261, U+7269, U+7279, U+727D, U+72AC, U+72AF, U+72B6, U+72C2, U+72D7, U+72D9, U+72EC-72ED, U+72FC-72FD, U+731B, U+732E, U+7336, U+7344, U+7363, U+7387, U+7389, U+73C8, U+73CD, U+73E0, U+73FE, U+7403, U+7406, U+7432, U+74B0, U+7518, U+751F, U+7523, U+7528, U+7531-7533, U+7537, U+753B, U+754C, U+7559, U+7565, U+756A, U+7570, U+7573, U+75B2, U+75C5, U+75D5, U+75DB, U+75E9, U+75F4, U+767A-767B, U+767D, U+7684, U+7686, U+76AE, U+76BA, U+76D7, U+76DB, U+76E3-76E4, U+76EE, U+76F2, U+76F4, U+76F8, U+7701, U+7708-7709, U+771F-7720, U+7729, U+773A, U+773C, U+7740, U+7766, U+7768, U+779E, U+77A5, U+77AC, U+77B0, U+77B3, U+77E2, U+77E5, U+77E9, U+77ED, U+77EF, U+77F3, U+7802, U+7814-7815, U+7832, U+7834, U+78BA, U+78C1, U+793A, U+793E, U+795E, U+7981, U+79C0-79C1, U+79D1-79D2, U+79D8, U+79E4, U+79F0, U+79FB, U+7A00, U+7A0B, U+7A1C, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A4F, U+7A6B, U+7A74, U+7A76, U+7A7A, U+7A81, U+7A93, U+7AAE, U+7ACB, U+7ADC, U+7AE0, U+7AEF, U+7AF6, U+7B11, U+7B26, U+7B2C, U+7B46, U+7B49, U+7B4B, U+7B52, U+7B54, U+7B56, U+7B97, U+7BA1, U+7BB1, U+7BC0, U+7BC4, U+7BC9, U+7C21, U+7C3F, U+7C89, U+7C92, U+7C97, U+7CF8, U+7CFB, U+7D04, U+7D0B, U+7D0D, U+7D14, U+7D19-7D1B, U+7D20-7D22, U+7D2B, U+7D2F-7D30, U+7D3A, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D66, U+7D71, U+7D75-7D76, U+7D99-7D9A, U+7DAD, U+7DB2, U+7DCA, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7DE8-7DE9, U+7DF4, U+7E01, U+7E1B, U+7E1E, U+7E26, U+7E2B, U+7E2E, U+7E3E, U+7E41, U+7E4B, U+7E54, U+7E70, U+7E8F, U+7F6A, U+7F6E, U+7F79, U+7F8E, U+7FA4, U+7FA9, U+7FBD, U+7FD2, U+7FD4, U+7FE0-7FE1, U+7FF3, U+7FFB-7FFC, U+8003, U+8005, U+8010, U+8033, U+805E, U+8074, U+8077, U+8089, U+808C, U+809D, U+80A9, U+80B2, U+80C3, U+80CC, U+80F4, U+80F8, U+80FD, U+8105, U+8107-8108, U+811A, U+8131, U+8133, U+8155, U+8179, U+819C-819D, U+81A8, U+81D3, U+81EA, U+81ED, U+81F3-81F4, U+8208, U+820C, U+821E, U+822A, U+8235, U+826F, U+8272, U+8276, U+829D, U+82AF, U+82B1, U+82B8, U+82BB, U+82BD, U+82DB, U+82E5-82E6, U+82F1, U+8302, U+8336, U+8339, U+8349, U+8352, U+8377, U+83EF, U+840E, U+843D, U+8449, U+8457, U+84B8, U+8535, U+853D, U+8584, U+8607, U+864E, U+865A, U+8679, U+86C7, U+8702, U+871C, U+87BA, U+8840, U+8846, U+884C, U+8853, U+885B, U+885D, U+8861, U+8868, U+8870, U+8896, U+88AB, U+88C1-88C2, U+88C5, U+88CF, U+88D5, U+88DC, U+88FE, U+8907, U+8912, U+8972, U+8981, U+8986, U+898B, U+898F, U+8996-8997, U+899A, U+89A7, U+89AA, U+89B3, U+89D2, U+89E3, U+89E6, U+8A00, U+8A02, U+8A08, U+8A13, U+8A17-8A18, U+8A2A, U+8A2D, U+8A31, U+8A33, U+8A3A, U+8A3C, U+8A55, U+8A5E, U+8A66, U+8A70-8A73, U+8A87, U+8A8C-8A8D, U+8A93, U+8A95, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8AD6, U+8AE6, U+8AEB, U+8AED, U+8AF8, U+8B00, U+8B1D, U+8B58, U+8B66, U+8B70, U+8B77, U+8C46, U+8C61, U+8C6A, U+8CA0, U+8CA2, U+8CAA-8CAC, U+8CB0, U+8CB4, U+8CB7, U+8CC7, U+8CDB, U+8CDE, U+8CEA, U+8CED, U+8D05, U+8D64, U+8D70, U+8D77, U+8D85, U+8D8A, U+8DA3, U+8DB3, U+8DDD, U+8DE1, U+8DE8, U+8DEF, U+8DF3, U+8E0F, U+8E35, U+8E74, U+8E87, U+8E8A, U+8E8D, U+8EAB, U+8EB1, U+8ECA, U+8ECC-8ECD, U+8EE2, U+8EF8, U+8EFD, U+8F09, U+8F1D, U+8F29-8F2A, U+8F5F, U+8FB1, U+8FBA, U+8FBC, U+8FBF, U+8FCE, U+8FD1, U+8FD4, U+8FEB, U+8FF0, U+8FF7, U+8FFD, U+9000-9001, U+9003, U+9006, U+900F-9010, U+9014, U+9019-901A, U+901F-9020, U+9023, U+9032, U+9038, U+9045, U+904A-904B, U+904E, U+9053-9055, U+905C, U+9060, U+9065, U+9069, U+906E, U+9077-9078, U+907D, U+907F, U+90AA, U+90CE, U+90E8, U+90ED, U+90FD, U+914D, U+9152, U+9154, U+916C, U+9177, U+91C8, U+91CD-91CF, U+91D1, U+91D8, U+91DD, U+91E3, U+920D, U+9244, U+9264, U+9280, U+9283, U+92ED, U+92FC, U+9306, U+9310, U+9320, U+932F, U+9332, U+935B, U+9375, U+938C, U+9396, U+93E1, U+9451, U+9577, U+9583, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+95BE, U+95D8, U+9632, U+963B, U+964D, U+9650, U+9663-9665, U+9670, U+9676, U+967A, U+967D, U+9685, U+968A, U+968E-968F, U+9694, U+969B-969C, U+96A0, U+96A3, U+96C4, U+96C6, U+96D1, U+96DB, U+96E2-96E3, U+96E8, U+96EA, U+96F2, U+96F6-96F7, U+96FB, U+9707, U+970A, U+971E, U+9727, U+9732, U+9752, U+9759, U+975E, U+9761-9762, U+9798, U+97AD, U+97F3, U+97FB, U+97FF, U+9802-9803, U+9805-9806, U+9808, U+9810-9811, U+9818, U+982C-982D, U+9837, U+983B-983C, U+984C-984E, U+9854, U+9858, U+985E, U+9870, U+98A8, U+98DB, U+98DF, U+98F2, U+98FD-98FE, U+990A, U+990C, U+9996, U+9999, U+99AC, U+99B3, U+99C4, U+99C6, U+99D0, U+9A0E, U+9A12-9A13, U+9A30, U+9A5A, U+9AA8, U+9AB8, U+9AD8, U+9AEA, U+9B31, U+9B45, U+9B54, U+9BAE, U+9CF4, U+9E7F, U+9EC4, U+9ED2, U+9ED9, U+9F13, U+9F2C, U+9F3B, U+9F62, U+FF01-FF5E;
  font-weight: 600; font-display: swap;
}
@font-face {
  font-family: "Shippori Mincho VN";
  src: url("fonts/ShipporiMincho-Bold.woff2?v=ccce6444") format("woff2");
  unicode-range: U+0020-007E, U+00A0, U+00A7, U+00B0-00B1, U+00B7, U+00D7, U+00F7, U+03B1, U+2010, U+2013-2015, U+2018-2019, U+201C-201D, U+2025-2026, U+203B, U+2190-2193, U+21C4, U+21D4, U+2212, U+2252, U+2266, U+2460-2464, U+2500, U+25BC, U+25CB, U+2605-2606, U+266A, U+3000-303F, U+3041-30FF, U+4E00-4E01, U+4E03, U+4E08-4E0B, U+4E0D-4E0E, U+4E16, U+4E21, U+4E26, U+4E2D, U+4E32, U+4E38-4E39, U+4E3B, U+4E45, U+4E57, U+4E71, U+4E7E, U+4E86, U+4E88-4E89, U+4E8B-4E8C, U+4E92, U+4E94-4E95, U+4EA1, U+4EA4, U+4EBA, U+4ECA, U+4ED5-4ED6, U+4ED8, U+4EE3, U+4EE5, U+4EEE, U+4EF0, U+4EF2, U+4EF6, U+4EFB, U+4F0F, U+4F11, U+4F1A, U+4F1D, U+4F34, U+4F38, U+4F3C, U+4F4D-4F4E, U+4F53, U+4F55, U+4F59, U+4F5C, U+4F75, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FB5, U+4FC2-4FC3, U+4FDD, U+4FE1, U+4FEE-4FEF, U+4FFA, U+500B, U+500D, U+5012, U+5019, U+5024, U+5049, U+505C, U+5065, U+5074, U+5076, U+507D, U+5099, U+50B7, U+50BE, U+50CD, U+50CF, U+50D5, U+512A, U+5143-5145, U+5148-5149, U+514B, U+514D, U+5150, U+5165, U+5168, U+516B-516D, U+5171, U+5175, U+5177, U+517C, U+5185-5186, U+518D, U+5192, U+5199, U+51A0, U+51B7, U+51C4, U+51CD, U+51DB, U+51DD, U+51E6, U+51F8-51FA, U+5203, U+5206-5208, U+5217, U+521D, U+5224-5225, U+5229, U+5230, U+5236, U+523A-523B, U+5247, U+524A, U+524D, U+5263, U+5265, U+526F, U+5272, U+529B, U+529F-52A0, U+52A3, U+52A9-52AA, U+52B1, U+52B4, U+52B9, U+52C7, U+52C9, U+52D5, U+52D8-52D9, U+52DD, U+52E2, U+5302, U+5305, U+5316, U+5320, U+5339-533A, U+533F, U+5341, U+534A, U+5352, U+5354, U+5358, U+5360, U+5370-5371, U+5373-5374, U+539A, U+539F, U+53B3, U+53BB, U+53C2, U+53C8, U+53CA-53CE, U+53D6-53D7, U+53E3-53E5, U+53E9, U+53EB, U+53EF-53F1, U+53F3, U+53F6-53F7, U+5404, U+5408, U+540A, U+540C-540D, U+5410-5411, U+541B, U+541F-5420, U+5426, U+542B, U+5438-5439, U+5446, U+544A, U+545F, U+5468, U+5473, U+547C-547D, U+548C, U+54B2-54B3, U+54C0-54C1, U+54E1, U+54ED, U+5507, U+552F, U+553E, U+554F, U+5584, U+5589, U+558B, U+559C-559D, U+55A7, U+5606, U+5629, U+5642, U+565B, U+5668, U+566A, U+5674, U+5699, U+56DB, U+56DE, U+56E0, U+56E3, U+56EE, U+56F0, U+56F2-56F3, U+56FA, U+5727-5728, U+5730, U+5747, U+5782, U+578B, U+57C3, U+57CB, U+57DF, U+57FA, U+5802, U+5824, U+582A, U+5831, U+5834-5835, U+584A, U+5857, U+585E, U+5875, U+5883, U+5897, U+589C, U+58C1, U+58CA, U+58EB, U+58F0, U+5909, U+590F, U+5915-5916, U+591A, U+591C, U+5922, U+5927, U+5929-592B, U+592E, U+5931, U+5947, U+594F, U+5951, U+5962, U+5965, U+596A, U+596E, U+5973-5974, U+597D, U+5982, U+59A5, U+59A8, U+59CB, U+59D4, U+59EB, U+59FF, U+5A01, U+5A2F, U+5ACC, U+5B09, U+5B50, U+5B54-5B55, U+5B57-5B58, U+5B64, U+5B66, U+5B88-5B89, U+5B8C, U+5B98, U+5B9A, U+5B9F, U+5BA2-5BA5, U+5BB3, U+5BB6, U+5BB9, U+5BC2, U+5BC4, U+5BC6, U+5BD2, U+5BDD, U+5BDF, U+5BE7, U+5BF8, U+5BFE-5BFF, U+5C01-5C02, U+5C04, U+5C0E-5C0F, U+5C11, U+5C16, U+5C3A-5C3B, U+5C3D-5C3E, U+5C40, U+5C45, U+5C48, U+5C4A-5C4B, U+5C55, U+5C5E, U+5C64-5C65, U+5C71, U+5C90, U+5CD9, U+5D29, U+5D4C, U+5D50, U+5DDD, U+5DE1, U+5DE5-5DE6, U+5DE8, U+5DEE, U+5DF1, U+5DFB, U+5E02-5E03, U+5E0C, U+5E2D, U+5E2F-5E30, U+5E33, U+5E38, U+5E45, U+5E47, U+5E55, U+5E73-5E74, U+5E7D-5E7E, U+5E83, U+5E8F, U+5E95, U+5E9C, U+5EA6-5EA7, U+5EC3, U+5EF6, U+5F01, U+5F0F, U+5F15, U+5F1F, U+5F26-5F27, U+5F31, U+5F35, U+5F37, U+5F3E, U+5F53, U+5F59, U+5F62, U+5F69, U+5F71, U+5F79, U+5F7C, U+5F80, U+5F84-5F85, U+5F8B-5F8C, U+5F90, U+5F93, U+5F97, U+5FA1, U+5FA9, U+5FAE, U+5FB9, U+5FC3, U+5FC5, U+5FCC, U+5FD8-5FD9, U+5FDC, U+5FE0, U+5FEB, U+5FF5, U+6012, U+6016, U+601D, U+6025, U+6027, U+602A, U+604B, U+6050, U+6052, U+6065, U+606F, U+6094, U+609F, U+60A3, U+60AA, U+60B2, U+60C5, U+60D1, U+60DA, U+60E8, U+60F3, U+610F, U+611A-611B, U+611F, U+614B, U+615F, U+6162-6163, U+6168, U+616E, U+618E, U+61A4, U+61A7, U+61A9, U+61B6, U+61D0, U+6210-6212, U+6226, U+6238, U+623B, U+6240, U+6247, U+624B, U+624D, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+6297-6298, U+629C, U+629E, U+62B1, U+62B9, U+62BC-62BD, U+62C5, U+62D2, U+62DB, U+62E0-62E1, U+62EC-62EE, U+62F3, U+62FE, U+6301, U+6307, U+6311, U+6319, U+631F, U+632F, U+633F, U+6349, U+634C, U+6355, U+6368, U+637B, U+6383, U+638C, U+6392, U+639B, U+63A0-63A2, U+63A5, U+63A7, U+63B2, U+63B4, U+63C3, U+63CF-63D0, U+63DB, U+63E1, U+63EE, U+63F4, U+63FA, U+640D, U+642D, U+643A, U+6458, U+6483, U+6492, U+64A4, U+64AB, U+64AD-64AE, U+64C1, U+64CD, U+64EC, U+652F, U+6539, U+653B, U+653E-653F, U+6545, U+6551, U+6557, U+6559, U+6562-6563, U+6570, U+6574-6575, U+6577, U+6587, U+6589, U+6599, U+659C, U+65AD, U+65B0, U+65B9, U+65CB, U+65D7, U+65E2, U+65E5, U+65E7-65E9, U+6602, U+6607, U+660E, U+6614, U+661F-6620, U+6625, U+6628, U+662F, U+663C, U+6642, U+6652, U+666E-666F, U+6674, U+6687-6688, U+6691, U+6697, U+66AB, U+66AE, U+66B4, U+66F2, U+66F4, U+66F8, U+66FF-6700, U+6709, U+670D, U+671B, U+671D, U+671F, U+6728, U+672A-672D, U+673A, U+6750, U+675F, U+6761, U+6765, U+676F, U+677F, U+6790, U+679A, U+679C, U+67A0, U+67B7, U+67C4, U+67CF, U+67D3-67D4, U+67FB, U+6804, U+6813, U+6838-6839, U+683C, U+6843, U+6848, U+685C, U+687F, U+68B0-68B1, U+68C4, U+68D2, U+6905, U+690D, U+691C, U+6954, U+696D, U+6975, U+697D, U+6982, U+69CB-69CD, U+69D8, U+69FD, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6ADB, U+6B04, U+6B20-6B21, U+6B32, U+6B3A, U+6B4C, U+6B53, U+6B62-6B63, U+6B66, U+6B69-6B6A, U+6B6F, U+6B74, U+6B7B, U+6B8A-6B8B, U+6BB4-6BB5, U+6BBA, U+6BBF, U+6BCE, U+6BD2, U+6BD4, U+6BDB, U+6C11, U+6C17, U+6C34, U+6C37-6C38, U+6C41-6C42, U+6C4E, U+6C57, U+6C5A, U+6C7A, U+6C88, U+6CA1-6CA2, U+6CAB, U+6CB8-6CB9, U+6CBB, U+6CBF, U+6CC1, U+6CD5, U+6CE2-6CE3, U+6CE8, U+6D17, U+6D29, U+6D3B, U+6D3E, U+6D41, U+6D44-6D45, U+6D6E, U+6D74, U+6D78, U+6D88, U+6D99, U+6DE1, U+6DF1, U+6DF7, U+6DF9, U+6DFB, U+6E08, U+6E0B, U+6E1B, U+6E21, U+6E26, U+6E29, U+6E2C, U+6E6F, U+6E80, U+6E90, U+6E96, U+6E9C-6E9D, U+6EB6, U+6EC5, U+6ED1, U+6ED3, U+6EDE, U+6EF2, U+6EF4, U+6EFE, U+6F02, U+6F0F, U+6F14, U+6F22, U+6F5C, U+6F64, U+6F6E, U+6F70, U+6F84, U+6FC0-6FC1, U+6FC3, U+706B, U+706F-7070, U+708E, U+70B9-70BA, U+70C8, U+7121, U+7126, U+7136, U+713C, U+714C, U+7159, U+7167, U+716E, U+719F, U+71B1, U+71C3, U+71E5-71E6, U+7206, U+722A, U+7247-7248, U+7261, U+7269, U+7279, U+727D, U+72AC, U+72AF, U+72B6, U+72C2, U+72D7, U+72D9, U+72EC-72ED, U+72FC-72FD, U+731B, U+732E, U+7336, U+7344, U+7363, U+7387, U+7389, U+73C8, U+73CD, U+73E0, U+73FE, U+7403, U+7406, U+7432, U+74B0, U+7518, U+751F, U+7523, U+7528, U+7531-7533, U+7537, U+753B, U+754C, U+7559, U+7565, U+756A, U+7570, U+7573, U+75B2, U+75C5, U+75D5, U+75DB, U+75E9, U+75F4, U+767A-767B, U+767D, U+7684, U+7686, U+76AE, U+76BA, U+76D7, U+76DB, U+76E3-76E4, U+76EE, U+76F2, U+76F4, U+76F8, U+7701, U+7708-7709, U+771F-7720, U+7729, U+773A, U+773C, U+7740, U+7766, U+7768, U+779E, U+77A5, U+77AC, U+77B0, U+77B3, U+77E2, U+77E5, U+77E9, U+77ED, U+77EF, U+77F3, U+7802, U+7814-7815, U+7832, U+7834, U+78BA, U+78C1, U+793A, U+793E, U+795E, U+7981, U+79C0-79C1, U+79D1-79D2, U+79D8, U+79E4, U+79F0, U+79FB, U+7A00, U+7A0B, U+7A1C, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A4F, U+7A6B, U+7A74, U+7A76, U+7A7A, U+7A81, U+7A93, U+7AAE, U+7ACB, U+7ADC, U+7AE0, U+7AEF, U+7AF6, U+7B11, U+7B26, U+7B2C, U+7B46, U+7B49, U+7B4B, U+7B52, U+7B54, U+7B56, U+7B97, U+7BA1, U+7BB1, U+7BC0, U+7BC4, U+7BC9, U+7C21, U+7C3F, U+7C89, U+7C92, U+7C97, U+7CF8, U+7CFB, U+7D04, U+7D0B, U+7D0D, U+7D14, U+7D19-7D1B, U+7D20-7D22, U+7D2B, U+7D2F-7D30, U+7D3A, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D66, U+7D71, U+7D75-7D76, U+7D99-7D9A, U+7DAD, U+7DB2, U+7DCA, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7DE8-7DE9, U+7DF4, U+7E01, U+7E1B, U+7E1E, U+7E26, U+7E2B, U+7E2E, U+7E3E, U+7E41, U+7E4B, U+7E54, U+7E70, U+7E8F, U+7F6A, U+7F6E, U+7F79, U+7F8E, U+7FA4, U+7FA9, U+7FBD, U+7FD2, U+7FD4, U+7FE0-7FE1, U+7FF3, U+7FFB-7FFC, U+8003, U+8005, U+8010, U+8033, U+805E, U+8074, U+8077, U+8089, U+808C, U+809D, U+80A9, U+80B2, U+80C3, U+80CC, U+80F4, U+80F8, U+80FD, U+8105, U+8107-8108, U+811A, U+8131, U+8133, U+8155, U+8179, U+819C-819D, U+81A8, U+81D3, U+81EA, U+81ED, U+81F3-81F4, U+8208, U+820C, U+821E, U+822A, U+8235, U+826F, U+8272, U+8276, U+829D, U+82AF, U+82B1, U+82B8, U+82BB, U+82BD, U+82DB, U+82E5-82E6, U+82F1, U+8302, U+8336, U+8339, U+8349, U+8352, U+8377, U+83EF, U+840E, U+843D, U+8449, U+8457, U+84B8, U+8535, U+853D, U+8584, U+8607, U+864E, U+865A, U+8679, U+86C7, U+8702, U+871C, U+87BA, U+8840, U+8846, U+884C, U+8853, U+885B, U+885D, U+8861, U+8868, U+8870, U+8896, U+88AB, U+88C1-88C2, U+88C5, U+88CF, U+88D5, U+88DC, U+88FE, U+8907, U+8912, U+8972, U+8981, U+8986, U+898B, U+898F, U+8996-8997, U+899A, U+89A7, U+89AA, U+89B3, U+89D2, U+89E3, U+89E6, U+8A00, U+8A02, U+8A08, U+8A13, U+8A17-8A18, U+8A2A, U+8A2D, U+8A31, U+8A33, U+8A3A, U+8A3C, U+8A55, U+8A5E, U+8A66, U+8A70-8A73, U+8A87, U+8A8C-8A8D, U+8A93, U+8A95, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8AD6, U+8AE6, U+8AEB, U+8AED, U+8AF8, U+8B00, U+8B1D, U+8B58, U+8B66, U+8B70, U+8B77, U+8C46, U+8C61, U+8C6A, U+8CA0, U+8CA2, U+8CAA-8CAC, U+8CB0, U+8CB4, U+8CB7, U+8CC7, U+8CDB, U+8CDE, U+8CEA, U+8CED, U+8D05, U+8D64, U+8D70, U+8D77, U+8D85, U+8D8A, U+8DA3, U+8DB3, U+8DDD, U+8DE1, U+8DE8, U+8DEF, U+8DF3, U+8E0F, U+8E35, U+8E74, U+8E87, U+8E8A, U+8E8D, U+8EAB, U+8EB1, U+8ECA, U+8ECC-8ECD, U+8EE2, U+8EF8, U+8EFD, U+8F09, U+8F1D, U+8F29-8F2A, U+8F5F, U+8FB1, U+8FBA, U+8FBC, U+8FBF, U+8FCE, U+8FD1, U+8FD4, U+8FEB, U+8FF0, U+8FF7, U+8FFD, U+9000-9001, U+9003, U+9006, U+900F-9010, U+9014, U+9019-901A, U+901F-9020, U+9023, U+9032, U+9038, U+9045, U+904A-904B, U+904E, U+9053-9055, U+905C, U+9060, U+9065, U+9069, U+906E, U+9077-9078, U+907D, U+907F, U+90AA, U+90CE, U+90E8, U+90ED, U+90FD, U+914D, U+9152, U+9154, U+916C, U+9177, U+91C8, U+91CD-91CF, U+91D1, U+91D8, U+91DD, U+91E3, U+920D, U+9244, U+9264, U+9280, U+9283, U+92ED, U+92FC, U+9306, U+9310, U+9320, U+932F, U+9332, U+935B, U+9375, U+938C, U+9396, U+93E1, U+9451, U+9577, U+9583, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+95BE, U+95D8, U+9632, U+963B, U+964D, U+9650, U+9663-9665, U+9670, U+9676, U+967A, U+967D, U+9685, U+968A, U+968E-968F, U+9694, U+969B-969C, U+96A0, U+96A3, U+96C4, U+96C6, U+96D1, U+96DB, U+96E2-96E3, U+96E8, U+96EA, U+96F2, U+96F6-96F7, U+96FB, U+9707, U+970A, U+971E, U+9727, U+9732, U+9752, U+9759, U+975E, U+9761-9762, U+9798, U+97AD, U+97F3, U+97FB, U+97FF, U+9802-9803, U+9805-9806, U+9808, U+9810-9811, U+9818, U+982C-982D, U+9837, U+983B-983C, U+984C-984E, U+9854, U+9858, U+985E, U+9870, U+98A8, U+98DB, U+98DF, U+98F2, U+98FD-98FE, U+990A, U+990C, U+9996, U+9999, U+99AC, U+99B3, U+99C4, U+99C6, U+99D0, U+9A0E, U+9A12-9A13, U+9A30, U+9A5A, U+9AA8, U+9AB8, U+9AD8, U+9AEA, U+9B31, U+9B45, U+9B54, U+9BAE, U+9CF4, U+9E7F, U+9EC4, U+9ED2, U+9ED9, U+9F13, U+9F2C, U+9F3B, U+9F62, U+FF01-FF5E;
  font-weight: 700; font-display: swap;
}
@font-face {
  font-family: "Noto Sans JP VN";
  src: url("fonts/NotoSansJP.woff2?v=ccce6444") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+03B1, U+21C4, U+21D4, U+2266, U+2500, U+3004, U+3016-301B, U+301E, U+3020-3032, U+3036-303A, U+303C, U+303E-303F, U+309F-30A0, U+30FF, U+FF02, U+FF07, U+FF1C, U+FF1E, U+FF3E-FF40, U+FF5C;
}
:root {
  --frame-bg: rgba(0, 0, 0, 0.6);
  --frame-border: rgba(255, 255, 255, 0.18);
  --text-color: #f0f0ea;
  --name-color: #ffd479;
  --accent: #8fa3c8;
  --ui-color: #080808;
  --ui-edge: rgba(255, 255, 255, 0.88);
  --top-overlay: rgba(8, 8, 12, 0.6);
  --panel-bg: rgba(18, 18, 24, 0.96);
  --body-font: "Shippori Mincho VN", "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN",
    "Noto Sans JP VN", "Noto Sans JP", serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; letter-spacing: 0; }
html, body { user-select: none; -webkit-user-select: none; }
img { -webkit-user-drag: none; pointer-events: none; }
input, button { pointer-events: auto; font: inherit; }
html, body { width: 100%; height: 100%; overflow: hidden; background: #000; }
body { font-family: var(--body-font); color: var(--text-color); }

#viewport {
  position: fixed; inset: 0; overflow: hidden; background: #000;
  touch-action: manipulation;
}
#canvas {
  position: absolute; top: 50%; left: 50%; z-index: 1;
  width: var(--canvas-w, 0px); height: var(--canvas-h, 0px);
  transform-origin: center center; overflow: hidden; background: #000;
  /* 注意(#248): #canvasへのwill-change昇格は不可——回転舞台の全内容が単一レイヤに
     なり、ラスタ倍率の不整合(拡大表示・再ラスタ遅延)を起こすことを実測済み */
}

.surface { position: absolute; inset: 0; display: none; }
.surface.active { display: block; }
#surface-game { z-index: 1; }
#surface-top, #surface-end { z-index: 10; }

/* Stage */
#cgarea {
  position: absolute; inset: 0; overflow: hidden; background: #000;
}
#scene-look-target, #stage-look, #cutin-layer { position: absolute; inset: 0; }
.cglayer {
  /* insetを-3pxにして親(overflow:hidden)からはみ出させる——覆い・層のGPU合成レイヤは
     クリップと独立に端数丸めされるため、-1pxでは表示倍率(dpr1.25等)次第で1デバイス
     ピクセル分の取り残しが4辺のどこにでも出る(#183)。3pxで丸め誤差を確実に飲む */
  position: absolute; inset: -3px;
  background-size: cover; background-repeat: no-repeat; background-position: center;
  transition: opacity 0.5s ease;
}
#bglayer { z-index: 1; }
/* 近景レイヤ(#255): 効果(z3)とカットイン(z4)の間。z同値3+DOM後着で効果の上に乗る */
#bgfront {
  position: absolute; inset: 0; z-index: 3; pointer-events: none;
  background-size: cover; background-position: center;
}
#cglayer { z-index: 2; opacity: 0; }
#cglayer.visible { opacity: 1; }
#cutin-layer { z-index: 4; pointer-events: none; }
#cg-frame { position: absolute; inset: 0; z-index: 9; pointer-events: none; }
#fxflash {
  position: absolute; inset: -3px; z-index: 8; background: #fff; opacity: 0;
  pointer-events: none;
}

/* Scrim and text */
#scrim {
  /* 黒帯は背景・CGの減光であって、人物(カットイン z-index:4)を暗くするためのものではない。
     以前は cutin と同じ z-index:4 で、描画順しだいでカットインが帯の下へ潜っていた。 */
  position: absolute; z-index: 3; left: 0; right: 0;
  top: var(--scrim-top, 0px); height: var(--scrim-height, 0px);
  pointer-events: none;
  background: var(--scrim-gradient, none);
}
#textarea {
  position: absolute; z-index: 5;
  left: var(--text-left, 0px); top: var(--text-top, 0px);
  width: var(--text-width, 0px); height: var(--text-height, 0px);
  background: transparent; border: 0; overflow: visible;
}
#bodyzone {
  position: absolute; inset: 0; color: var(--text-color);
  font-weight: 500;
  font-size: var(--text-font-size, 1px);
  line-height: var(--text-line-pitch, 1px);
  letter-spacing: var(--text-letter-spacing, 0);
  -webkit-text-stroke: var(--text-stroke, 0) #000;
  paint-order: stroke fill;
}
#bodyzone .line {
  position: relative; height: var(--text-line-pitch, 1px);
  line-height: var(--text-line-pitch, 1px);
  white-space: pre; overflow: visible; word-break: keep-all;
}
/* 全要素リセット(* { letter-spacing: 0 })が1文字スパンに効いて本文の字間(-0.04em)を打ち消していた
   (36字行が1592→1656pxに広がり枠から食み出す。ユーザー指摘「字詰めが違う」)。字間は本文から継承させる */
#bodyzone .line, #bodyzone .ruby-unit, #bodyzone .ruby-base, #bodyzone .ch:not(.ruby-text) { letter-spacing: inherit; }
#bodyzone .ch.pending { visibility: hidden; }
/* ルビの基準箱=基字のem箱(inline)。inline-blockにすると箱が行ピッチ全体になり、
   ルビが行の箱の上へ食み出して上の行・話者ネームに重なる(調整盤の実装=inline相対+bottom:calc(100%-寄せ)) */
.ruby-unit {
  position: relative; display: inline; vertical-align: baseline;
}
.ruby-text {
  position: absolute; left: 50%; bottom: calc(100% - var(--ruby-shift, 0px));
  transform: translateX(-50%); white-space: nowrap; pointer-events: none;
  font-size: var(--ruby-font-size, 1px); line-height: 1; font-weight: 700; letter-spacing: 0; /* 調整盤の.rtと同じく字間なし */
}

#namezone {
  position: absolute; z-index: 6;
  left: var(--name-left, 0px); top: var(--name-top, 0px);
  width: var(--name-rule-width, 0px); height: var(--name-height, 1px);
  /* 文字は白固定・太さ600・字間0.1em(調整盤)。キャラクターカラーは下線(::after)のみ(仕様§3/§17) */
  color: #fff; font-weight: 600; letter-spacing: 0.1em;
  font-size: var(--name-font-size, 1px); line-height: var(--name-line-height, 1.6);
  /* 名前は下線の中央へ(2026-09-19ユーザー指示)。下線は固定長なので、
     文字を左端へ寄せると短い名前ほど下線が長く余って不揃いに見える */
  display: flex; align-items: flex-start; justify-content: center;
  -webkit-text-stroke: var(--text-stroke, 0) #000; paint-order: stroke fill;
}
#namezone:empty { visibility: hidden; }
#namezone::after {
  content: ""; position: absolute; left: 0; top: calc(100% + var(--name-rule-gap, 0px));
  width: var(--name-rule-width, 0px); height: var(--name-rule-thickness, 0px);
  background: var(--name-color);
}

/* 送りマーカー=クリックカーソル(ユーザー支給の参考 2026-09-08——傾いた矢印+3本のバースト線)。
   灰と黒を行き来する控えめな点滅(前意匠の扇形は主張が強すぎで撤回)。
   形はSVGマスクでruntimeが描く(#167: 幾何UIは画像生成しない) */
@keyframes cw-gray-blink { 0%, 100% { background-color: #99a3b0; } 50% { background-color: #1a1f28; } }
#click-wait {
  position: absolute; z-index: 7; display: none;
  left: var(--marker-left, 0px); top: var(--marker-top, 0px);
  width: var(--marker-size, 0px); height: var(--marker-size, 0px);
  pointer-events: none;
}
#click-wait.on { display: block; }
#click-wait::before {
  content: ""; position: absolute; inset: 2%;
  background-color: #99a3b0;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'><g fill='none' stroke='black' stroke-width='16' stroke-linecap='round'><path d='M97 34 L106 12'/><path d='M56 44 L42 26'/><path d='M32 76 L11 71'/></g><path d='M72 62 L148 97 L109 113 L94 150 Z' fill='black' stroke='black' stroke-width='14' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'><g fill='none' stroke='black' stroke-width='16' stroke-linecap='round'><path d='M97 34 L106 12'/><path d='M56 44 L42 26'/><path d='M32 76 L11 71'/></g><path d='M72 62 L148 97 L109 113 L94 150 Z' fill='black' stroke='black' stroke-width='14' stroke-linejoin='round'/></svg>") center / contain no-repeat;
  animation: cw-gray-blink 1.1s steps(1, end) infinite;
}
body[data-effects="static"] #click-wait::before { animation: none; }
#click-wait.auto::before { animation-duration: 0.5s; } /* 自動進行=点滅が速い */
/* AUTO中の「＞」二重矢印は旧マーカー意匠の残骸として撤去(2026-09-08 実機レビュー——
   クリックカーソル以外の表示を出さない。AUTOの区別=点滅速度0.5s+設定アイコンのAバッジ) */

/* Cutins */
.cutin-slot { position: absolute; pointer-events: none; visibility: hidden; }
#speaker-cutin-slot {
  left: var(--speaker-cutin-left, 0px); top: var(--speaker-cutin-top, 0px);
  width: var(--speaker-cutin-w, 0px); height: var(--speaker-cutin-h, 0px);
}
#event-cutin-left-slot {
  left: var(--event-cutin-left-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}
#event-cutin-center-slot {
  left: var(--event-cutin-center-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}
#event-cutin-right-slot {
  left: var(--event-cutin-right-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}
.cutin {
  position: absolute; z-index: 4; overflow: hidden; border-radius: 0;
  will-change: transform, opacity; /* 入場アニメ出だしのカクつき対策(2026-09-08) */
  background: transparent;
  border: var(--cutin-border-px, 0px) solid var(--frame-border);
  box-shadow: none;
  transform: translateX(var(--slide-x, -112%));
  transition: transform var(--cut-dur, 0.4s) ease, opacity var(--cut-dur, 0.4s) ease;
}
.cutin.visible { transform: translateX(0); opacity: 1; }
.cutin.xfade { transform: none; opacity: 0; }
.cutin.xfade.visible { opacity: 1; }
/* 話者カットインの出入り=グリッター転換(スライド廃止・2026-09-07)。
   カードは定位置に置き、絵はcanvasのセル出現/消滅で現す。枠(::after)は同尺で明滅 */
.cutin.glitter { transform: none; transition: none; opacity: 1; }
.cutin.glitter:not(.visible) img { visibility: hidden; }
.cutin.glitter::after { transition: opacity var(--cut-dur, 0.4s) ease; }
.cutin.glitter:not(.visible)::after { opacity: 0; }
.cutin.glitter-out::after { opacity: 0; }
.cutin .glitter-fx { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; }
/* 二重枠の解消(ユーザー指摘の正しい解釈 2026-09-08): キット枠(::after)は表示し、
   その下に敷かれていた「枠生成前のダミー縁(単色border)」だけを消す——キット枠が
   供給されている種別ではダミー縁を描かない(未供給の作品では従来どおりダミー縁が枠代わり) */
.cutin[data-kind="speaker"] { border-width: var(--cutin-speaker-dummy-border, var(--cutin-border-px, 0px)); }
.cutin[data-kind="event"] { border-width: var(--cutin-event-dummy-border, var(--cutin-border-px, 0px)); }
.cutin img { width: 100%; height: 100%; display: block; }
.cutin[data-kind="speaker"] img { object-fit: contain; }
/* 人物(と煌めきcanvas)を枠画像の窓に合わせた八角形でクリップ——枠外へのはみ出し防止
   (2026-09-08。枠(::after)はクリップしない=枠の角を削らないため子要素側に掛ける)。
   切り位置は「枠帯の中央」(仕様§9・2026-09-19裁定): --cutin-clip-* はビルドが
   供給枠の画素から実測して与える。帯の半分が必ず絵の縁に重なるので、縮小表示の
   丸めが出ても枠の外に絵が残らない。既定値は枠未供給時のみ使われる保守的な内窓 */
.cutin[data-kind="speaker"] img,
.cutin[data-kind="speaker"] .glitter-fx {
  clip-path: var(--cutin-clip-speaker,
    polygon(7.7% 1.5%, 92.3% 1.5%, 98.2% 5.9%, 98.2% 94%,
            92.3% 98.5%, 7.7% 98.5%, 1.8% 94%, 1.8% 5.9%));
}
.cutin[data-kind="event"] img { object-fit: cover; }
.cutin[data-kind="event"] img {
  clip-path: var(--cutin-clip-event,
    polygon(4.6% 1.6%, 95.4% 1.6%, 98.9% 6.1%, 98.9% 93.9%,
            95.4% 98.4%, 4.6% 98.4%, 1.1% 93.9%, 1.1% 6.1%));
}
.cutin::after {
  content: ""; position: absolute; inset: calc(var(--cutin-border-px, 0px) * -1);
  pointer-events: none; background-size: 100% 100%; background-repeat: no-repeat;
}
.cutin[data-kind="speaker"]::after {
  background-image: var(--kit-frame-speaker, none);
  /* 枠画像の位置はダミー縁の太さと連動——縁0のときは箱ちょうどに描く
     (負のinsetのままだと overflow:hidden で枠の下端が切れる。2026-09-08) */
  inset: calc(var(--cutin-speaker-dummy-border, var(--cutin-border-px, 0px)) * -1);
}
.cutin[data-kind="event"]::after {
  background-image: var(--kit-frame-event, none);
  inset: calc(var(--cutin-event-dummy-border, var(--cutin-border-px, 0px)) * -1);
}
.cutin[data-kind="speaker"] {
  left: var(--speaker-cutin-left, 0px); top: var(--speaker-cutin-top, 0px);
  width: var(--speaker-cutin-w, 0px); height: var(--speaker-cutin-h, 0px);
}
.cutin[data-kind="event"][data-slot-norm="left"] {
  left: var(--event-cutin-left-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}
.cutin[data-kind="event"][data-slot-norm="center"] {
  /* 可視制御はxfade系クラスに任せる——ここにopacity:0を書くと詳細度で
     .cutin.xfade.visibleに勝ってしまい、中央カットインが永久に不可視になる
     (実測バグ 2026-09-08 チェック公開レビュー「中央表示が一度も無い」の原因) */
  left: var(--event-cutin-center-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}
.cutin[data-kind="event"][data-slot-norm="right"] {
  left: var(--event-cutin-right-x, 0px); top: var(--event-cutin-top, 0px);
  width: var(--event-cutin-w, 0px); height: var(--event-cutin-h, 0px);
}

/* Game UI */
#ep-indicator { display: none; }
#game-ui {
  position: absolute; z-index: 7;
  right: var(--ui-icons-right, 0px); top: var(--ui-icons-top, 0px);
  display: flex; gap: var(--ui-icons-gap, 0px);
}
.iconbtn {
  position: relative; width: var(--ui-hit-px, var(--ui-icon-size, 0px));
  height: var(--ui-hit-px, var(--ui-icon-size, 0px));
  border: 0; background: transparent; cursor: pointer; padding: 0;
}
.iconbtn::before {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: var(--ui-icon-size, 0px); height: var(--ui-icon-size, 0px);
  transform: translate(-50%, -50%);
  background-size: contain; background-repeat: no-repeat; background-position: center;
}
/* バックログ・設定アイコン=runtimeの幾何描画(#187——キット画像は「破滅的に
   よくない」との実機レビューで廃止。#167「幾何UIは画像生成しない」に統合。
   マーカーと同じSVGマスク方式・地色は従来のUI色+縁光 */
/* バックログ・設定アイコン(#187改2): 白地+約2pxの黒縁のSVG直描き(縁光なし)。
   設定は縦スライダー(ミキサー)型——歯車は電源・明るさのアイコンに見えるため変更(実機レビュー) */
#btn-history::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='%23fff' stroke='%23000' stroke-width='7' paint-order='stroke' stroke-linejoin='round'><rect x='14' y='19' width='72' height='14' rx='7'/><rect x='14' y='43' width='72' height='14' rx='7'/><rect x='14' y='67' width='52' height='14' rx='7'/></g></svg>");
}
#btn-settings::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='%23fff' stroke='%23000' stroke-width='6' paint-order='stroke' stroke-linejoin='round'><rect x='21' y='12' width='8' height='76' rx='4'/><rect x='46' y='12' width='8' height='76' rx='4'/><rect x='71' y='12' width='8' height='76' rx='4'/><circle cx='25' cy='60' r='10'/><circle cx='50' cy='34' r='10'/><circle cx='75' cy='66' r='10'/></g></svg>");
}
#btn-settings.auto::after {
  /* 自動進行中のA——隅の小バッジでは見づらいとの実機レビューで、
     アイコン中央に大きく重ねる(2026-09-09) */
  content: "A"; position: absolute; width: auto; height: auto; background: transparent; border-radius: 0;
  left: 50%; top: 50%; transform: translate(-50%, -50%); color: var(--name-color);
  font: 900 calc(var(--ui-icon-size, 0px) * 1.05) / 1 var(--body-font);
  -webkit-text-stroke: 4px #000; paint-order: stroke;
}

/* クレジットの主題歌節(#200)——歌詞が長いためクレジットの本文だけスクロール可
   (#182「スクロールはバックログ専用」のクレジット例外。ユーザー裁定 2026-09-10)。
   スクロールバーの意匠はバックログと同一 */
#ov-credits .popup-body {
  overflow-y: auto;
  padding-right: calc(var(--backlog-scrollbar-width, 0px) + 16px);
  scrollbar-width: auto;
}
#ov-credits .popup-body::-webkit-scrollbar { width: var(--backlog-scrollbar-width, 0px); }
#ov-credits .popup-body::-webkit-scrollbar-thumb {
  background: var(--kit-scroll-thumb, none) center / 100% 100% no-repeat rgba(191, 228, 240, 0.35);
  border-radius: 6px;
}
/* 主題歌節の階層(ユーザー指摘 2026-09-10「全部が全部大きい必要は無い」):
   題=素材行よりやや小さい強調/作詞作曲=さらに小さく控えめ/歌詞=小さめ・連ごとの段落 */
.credits-theme-song {
  margin: calc(var(--popup-item-px, 14px) * 1.2) auto 0;
  width: min(80%, 760px); text-align: center;
  border-top: 1px solid var(--frame-border);
  padding-top: calc(var(--popup-item-px, 14px) * 0.9);
}
.credits-song-title {
  font-size: calc(var(--popup-item-px, 14px) * 0.85);
  font-weight: 700; color: var(--name-color);
}
/* ラベル行(イメージソング等・themeSong.label)——題名行の上に小さめの分類語 */
.credits-song-label {
  font-size: calc(var(--popup-item-px, 14px) * 0.6);
  font-weight: 700; color: var(--name-color);
  letter-spacing: 0.12em; opacity: 0.85; margin-bottom: 2px;
}
.credits-song-credit {
  font-size: calc(var(--popup-item-px, 14px) * 0.6);
  margin: 6px 0 calc(var(--popup-item-px, 14px) * 0.8); opacity: 0.7;
}
.credits-song-lyrics {
  font-size: calc(var(--popup-item-px, 14px) * 0.68);
  line-height: 1.7; opacity: 0.92;
  white-space: pre-line;  /* 支給の改行を逐語で表示・行途中の折返しはさせない */
}
.credits-song-lyrics .credits-song-stanza { margin: 0 0 0.8em; }
.credits-song-lyrics .credits-song-stanza:last-child { margin-bottom: 0; }

/* TOP / END */
/* KV文字の黒縁——絵の上で文字を読ませるための縁取り。太さは骨格定数(kv-screens.outline)。
   板(ボタン)は自前の地を持つので縁は付けない */
#top-title, #end-title {
  -webkit-text-stroke: var(--kv-outline-title, 0px) #000; paint-order: stroke fill;
}
#top-badge, #top-catch, #top-info, #end-message, #end-credits {
  -webkit-text-stroke: var(--kv-outline-text, 0px) #000; paint-order: stroke fill;
}
#top-kv, #end-kv { position: absolute; inset: 0; background-size: cover; background-position: center; }
/* タイトル周りの独立4要素(#244): 主題(#top-title)/和文副題/英字副題/飾り線。
   文言はデータ正本(作品設定)、位置・サイズは骨格定数。空文言・visible以外は出さない */
#top-subtitle {
  position: absolute; left: var(--kv-top-subtitle-x, 0px); top: var(--kv-top-subtitle-y, 0px);
  font-size: var(--kv-top-subtitle-font, 1px); font-weight: 700; letter-spacing: 0; line-height: 1.3;
}
#top-title-en {
  position: absolute; left: var(--kv-top-title-en-x, 0px); top: var(--kv-top-title-en-y, 0px);
  font-size: var(--kv-top-title-en-font, 1px); font-weight: 500; letter-spacing: 0.36em; line-height: 1.3;
}
#top-title-rule {
  position: absolute; left: var(--kv-top-rule-x, 0px); top: var(--kv-top-rule-y, 0px);
  width: var(--kv-top-rule-w, 0px); height: var(--kv-top-rule-h, 0px);
  background: var(--kv-rule-color, #d9a441);
}
#end-subtitle {
  position: absolute; left: var(--kv-ed-subtitle-x, 0px); top: var(--kv-ed-subtitle-y, 0px);
  font-size: var(--kv-ed-subtitle-font, 1px); font-weight: 700; letter-spacing: 0; line-height: 1.3;
}
#end-title-en {
  position: absolute; left: var(--kv-ed-title-en-x, 0px); top: var(--kv-ed-title-en-y, 0px);
  font-size: var(--kv-ed-title-en-font, 1px); font-weight: 500; letter-spacing: 0.36em; line-height: 1.3;
}
#end-title-rule {
  position: absolute; left: var(--kv-ed-rule-x, 0px); top: var(--kv-ed-rule-y, 0px);
  width: var(--kv-ed-rule-w, 0px); height: var(--kv-ed-rule-h, 0px);
  background: var(--kv-rule-color, #d9a441);
}
#top-subtitle:empty, #top-title-en:empty, #end-subtitle:empty, #end-title-en:empty { display: none; }
/* TOPKV環境効果(§5-1): 効果キャンバスをKVのスタッキング文脈(z1)へ閉じ込め、
   組版UI(#top-panel z2)より必ず下に置く。 */
#top-kv { z-index: 1; overflow: hidden; }
#end-kv { z-index: 1; overflow: hidden; }  /* 効果をKVの中へ閉じる(組版UIはz2) */
#top-kv-fx, #end-kv-fx { position: absolute; inset: 0; pointer-events: none; }
/* 雨キャンバスは独立レイヤで合成(#248——回転舞台ごと再ラスタされるとコマ落ちする) */
#top-kv-fx canvas, #end-kv-fx canvas { transform: translateZ(0); will-change: transform; }
#top-panel, #end-panel { position: absolute; inset: 0; z-index: 2; color: #fff; }
#top-badge {
  position: absolute; left: var(--kv-top-badge-x, 0px); top: var(--kv-top-badge-y, 0px);
  font-size: var(--kv-top-badge-font, 1px); line-height: 1;
}
#top-badge[hidden] { display: none; }
#top-title {
  position: absolute; left: var(--kv-top-title-x, 0px); top: var(--kv-top-title-y, 0px);
  font-size: var(--kv-top-title-font, 1px); line-height: 1.15; font-weight: 900;
  /* 折り返し幅は自分の位置から画面右端まで(静穏域の幅に連動させない——
     別の目的の値で題名が折り返されていた。2026-09-07) */
  max-width: calc(var(--canvas-w, 2520px) - var(--kv-top-title-x, 0px) - 40px);
  text-wrap: balance;
}
#top-catch {
  position: absolute; left: var(--kv-top-catch-x, 0px); top: var(--kv-top-catch-y, 0px);
  font-size: var(--kv-top-catch-font, 1px); line-height: 1.35;
  max-width: calc(var(--canvas-w, 2520px) - var(--kv-top-catch-x, 0px) - 40px);
}
#top-info {
  position: absolute; left: var(--kv-top-info-x, 0px); top: var(--kv-top-info-y, 0px);
  font-size: var(--kv-top-info-font, 1px);
  display: flex; flex-wrap: wrap; gap: 20px; align-items: center;
}
#top-author { opacity: 0.8; }
/* 情報行の項目が全て繋がって見える問題(#187): 項目間に細い区切り線を入れる。
   flexのgapを区切り線の左右へ半分ずつ配る */
#top-info { gap: 0; }
#top-info > :not(:first-child) {
  /* :not()で詳細度を上げる——下の button/a のリセット(border:0)に勝たせる */
  border-left: 1px solid rgba(255, 255, 255, 0.4);
  padding-left: 20px; margin-left: 20px;
}
/* 情報行の項目は板ではなく文字列として並べる(操作列と役割を分ける) */
#top-info button, #top-info a {
  font: inherit; color: inherit; background: none; border: 0; padding: 0;
  opacity: 0.8; cursor: pointer; text-decoration: none;
}
#top-info button:hover, #top-info a:hover { opacity: 1; text-decoration: underline; }
/* 音の切り替えはアイコン(依頼_20260925_26): ON=スピーカー / OFF=消音。字幅の代わりに 1 字ぶんの箱 */
/* アイコンは文字に揃える: 白い形の高さ=漢字の字面(0.9em。形は viewBox 24 のうち 18 なので箱は 1.2em)、縁取りは文字と同じ -webkit-text-stroke の太さ(非拡縮の線・paint-order stroke=外側に半分)、上下の中心は行の中心 */
#btn-top-mute { display: inline-flex; align-items: center; justify-content: center; vertical-align: top; height: 1.45em; line-height: 1.45em; }
#btn-top-mute svg { width: 1.2em; height: 1.2em; overflow: visible; display: block; margin-top: 0.09em; }  /* 白い形の中心を字面の中心へ(平らな地の実測で合わせた: 文字 1006 / アイコン 1006) */
#btn-top-mute svg.snd-off { width: 1.54em; height: 1.54em; }  /* 消音の形は viewBox 24 のうち 14(スピーカー本体)なので箱を大きくして白い形の高さを 0.9em に揃える */
#btn-top-mute svg path { stroke: #000; stroke-width: calc(var(--kv-outline-text, 0px) * 0.85); stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; paint-order: stroke fill; }
#btn-top-mute svg { display: none; }
#btn-top-mute[data-sound="on"] .snd-on { display: inline; }
#btn-top-mute[data-sound="off"] .snd-off { display: inline; }
#top-episodes {
  position: absolute; left: var(--kv-top-episodes-x, 0px); top: var(--kv-top-episodes-y, 0px);
  width: var(--kv-top-episodes-w, 0px); max-height: 410px;
  display: flex; flex-wrap: wrap; gap: 14px; overflow-y: auto;
}
#top-links {
  position: absolute; left: var(--kv-top-continue-x, 0px); top: var(--kv-top-continue-y, 0px);
  font-size: var(--kv-top-continue-font, 1px);
  display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
}
/* ラテン文字のみの話プレート表記の視覚中心補正(和文比のインク重心差・明朝実測0.12em) */
.ep-btn .ep-no.latin {
  transform: translateY(calc(-1 * var(--ep-no-latin-lift, 0.12em)));
}
.uibtn, #top-links a, #top-links button {
  min-width: 64px; min-height: 48px; padding: 8px 16px;
  color: #fff; background: rgba(0, 0, 0, 0.48);
  border: 1px solid rgba(255, 255, 255, 0.28); border-radius: 6px;
  cursor: pointer; text-decoration: none; display: inline-flex;
  align-items: center; justify-content: center;
}
.uibtn:hover, #top-links a:hover, #top-links button:hover { background: rgba(0, 0, 0, 0.62); }
#top-links .primary { border-width: 3px; font-weight: 800; box-shadow: 0 0 0 2px rgba(255,255,255,0.3); }
#top-links .secondary { opacity: 0.78; }
.lbl-short { display: none; }
.ep-btn { white-space: nowrap; }  /* 「第1話」を折り返さない */
.ep-btn .ep-no { display: inline; font-size: var(--kv-top-episodes-font, 1px); }
.ep-btn .ep-title, .ep-btn .ep-min { display: none; }

#end-panel { opacity: 0; transition: opacity 1.2s ease; text-align: center; }
#end-panel.visible { opacity: 1; }
#end-message {
  position: absolute; left: var(--kv-ed-read-x, 0px); top: var(--kv-ed-read-y, 0px);
  font-size: var(--kv-ed-read-font, 1px); letter-spacing: 0.08em;
}
#end-title {
  position: absolute; left: var(--kv-ed-title-x, 0px); top: var(--kv-ed-title-y, 0px);
  font-size: var(--kv-ed-title-font, 1px); line-height: 1.15; font-weight: 900;
  max-width: calc(var(--canvas-w, 2520px) - var(--kv-ed-title-x, 0px) - 40px);
}
#end-credits {
  position: absolute; left: var(--kv-ed-credits-x, 0px); top: var(--kv-ed-credits-y, 0px);
  font-size: var(--kv-ed-credits-font, 1px); line-height: 1.75; white-space: pre-line; text-align: left;
}
#end-actions {
  position: absolute; left: var(--kv-ed-callout-x, 0px); top: var(--kv-ed-callout-y, 0px);
  display: flex; gap: 18px; align-items: center;
}
#end-actions.anchor-center { transform: translateX(-50%); }  /* xPx=中心x(骨格定数 kv.ed.callout.anchor) */
#end-source { font-size: var(--kv-ed-callout-font, 1px); }
#btn-end-top {
  position: absolute; left: var(--kv-ed-back-x, 0px); top: var(--kv-ed-back-y, 0px);
  font-size: var(--kv-ed-back-font, 1px);
}

/* Popups */
#policy-text { text-align: center; }
.text-popup-body {
  white-space: pre-line; font-size: var(--popup-item-px, 14px); line-height: 1.9;
  /* スクロールバーはバックログ専用(#182——ユーザー裁定)。本文は内容が収まる量で組む */
  overflow: visible;
}
/* Creditsの組: 原作ブロック(主)を中央に大きく、素材行(従)を仕切り線の下に小さく。
   runtime.jsのDOM構造化(ORIGINAL STORY/原作/著者/題)に対応する見た目側 */
#credits-text { display: flex; flex-direction: column; align-items: center;
  gap: calc(var(--popup-item-px, 14px) * 1.1); }
.credits-primary { text-align: center; padding-top: calc(var(--popup-item-px, 14px) * 0.4); }
.credits-primary-label {
  font-size: calc(var(--popup-item-px, 14px) * 0.74);
  letter-spacing: 0.45em; text-indent: 0.45em; line-height: 1.4;
  color: var(--name-color); opacity: 0.9;
}
/* 書誌標準の階層(2026-09-17): 作品名=主(大)・原作者=従(中)・ラベル=小。行間1.45〜1.6で統一 */
.credits-primary-title {
  font-size: calc(var(--popup-item-px, 14px) * 1.5); font-weight: 700;
  margin-top: calc(var(--popup-item-px, 14px) * 0.5); line-height: 1.45;
}
.credits-primary-role {
  display: inline-block; vertical-align: baseline; margin-right: 0.7em;
  margin-top: calc(var(--popup-item-px, 14px) * 0.45);
  font-size: calc(var(--popup-item-px, 14px) * 0.8); opacity: 0.75; line-height: 1.6;
}
.credits-primary-author {
  display: inline-block; vertical-align: baseline;
  margin-top: calc(var(--popup-item-px, 14px) * 0.45);
  /* 原作者名は作品名に次ぐ主役級(2026-09-17ユーザー指示「原作者の名前も大きく」) */
  font-size: calc(var(--popup-item-px, 14px) * 1.4); font-weight: 700; line-height: 1.6;
}
/* 制作表記(Created by 〜)は常に素材行の最終行——主張しない(2026-09-17ユーザー指示) */
.credits-secondary > :last-child {
  font-size: calc(var(--popup-item-px, 14px) * 0.55);
  opacity: 0.55; margin-top: 0.5em; letter-spacing: 0.08em;
}
.credits-secondary {
  text-align: center; width: min(72%, 560px);
  border-top: 1px solid var(--frame-border); opacity: 0.85;
  padding-top: calc(var(--popup-item-px, 14px) * 0.9);
  font-size: calc(var(--popup-item-px, 14px) * 0.9);
}
.credits-secondary-line { line-height: 2.0; }
/* 素材のかたまりの間だけ間隔を空ける(1件の中の列挙行は詰めたまま。2026-09-19
   ユーザー指摘「音楽と効果音の間に改行幅が無いので見づらい」) */
.credits-secondary-group + .credits-secondary-group { margin-top: 0.9em; }
.overlay {
  position: absolute; inset: -3px; z-index: 20; display: none; /* 減光幕も覆い契約(#183) */
  background: rgba(0, 0, 0, var(--popup-dim, 0.35)); color: #eee;
}
.overlay.active { display: flex; align-items: center; justify-content: center; }
.panel {
  background: var(--panel-bg); border: var(--popup-border, 1px) solid var(--frame-border);
  border-radius: 8px; color: #eee;
}
.popup-panel {
  position: relative; width: var(--popup-w, 0px);
  max-height: calc(var(--canvas-h, 0px) - 80px);
  padding: 0 var(--popup-side-pad, 0px) var(--popup-bottom-pad, 0px);
  overflow: hidden;
}
.popup-header {
  position: relative; height: var(--popup-header-effective, 0px);
  min-height: var(--popup-header-effective, 0px);
}
.popup-header h2 {
  position: absolute; left: 50%; top: var(--popup-title-y, 0px);
  width: var(--popup-title-w, 0px); height: var(--popup-title-h, 0px);
  transform: translateX(-50%); margin: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: var(--popup-title-font, 1px); line-height: 1; color: var(--name-color);
  isolation: isolate;
}
/* 題字プレートはruntimeが幾何描画する(#182)。生成画のプレートは縁が荒れて
   「破損して見える」ためスロット廃止(#167の方針: 幾何UIは画像生成しない)。
   ::before=縁の層 / ::after=地の層 の2層で、枠キットと同じ角落としの八角形 */
.popup-header h2::before {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background: rgba(190, 222, 236, 0.75);
  clip-path: polygon(18px 0, calc(100% - 18px) 0, 100% 18px, 100% calc(100% - 18px),
                     calc(100% - 18px) 100%, 18px 100%, 0 calc(100% - 18px), 0 18px);
}
.popup-header h2::after {
  content: ""; position: absolute; inset: 2px; z-index: -1;
  background: rgba(13, 20, 32, 0.94);
  clip-path: polygon(17px 0, calc(100% - 17px) 0, 100% 17px, 100% calc(100% - 17px),
                     calc(100% - 17px) 100%, 17px 100%, 0 calc(100% - 17px), 0 17px);
}
/* キット枠の供給時はCSSの代替縁・角丸を消す(#182——枠の外側に半透明白線が
   もう一重見える紛らわしさ、および角丸クリップによる枠角の欠けの解消) */
html[data-kit-popup-frame="1"] .popup-panel {
  border-color: transparent; border-radius: 0;
}
/* 本文ブロックは枠帯(約36px)の内側に収める(#188——話者名・本文が枠に掛かっていた)。
   ブロックは枠の内窓でセンターに置く */
html[data-kit-popup-frame="1"] .popup-body {
  padding-left: 44px; padding-right: 44px;
}
/* 供給時はキットのポップアップ枠(#174)。縁だけを画像から取り、中の地はCSSの層を保つ。
   表示契約(#245・2026-09-17ユーザー指摘): 枠画像が境界の正——枠の外縁=パネル外縁(inset0)、
   下地(地色)は枠の内側にclip-path(エッジ+斜め裁ち落とし面取り)で収める。下地が枠をはみ出さない。
   面取り量は枠画像の角意匠に合わせ --kit-popup-frame-edge / --kit-popup-frame-chamfer で調整 */
html[data-kit-popup-frame="1"] .popup-panel {
  border-width: 0;
  background: transparent;
}
html[data-kit-popup-frame="1"] .popup-panel::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: var(--panel-bg, rgba(18, 18, 24, 0.96));
  clip-path: polygon(
    var(--kit-popup-frame-chamfer, 26px) var(--kit-popup-frame-edge, 8px),
    calc(100% - var(--kit-popup-frame-chamfer, 26px)) var(--kit-popup-frame-edge, 8px),
    calc(100% - var(--kit-popup-frame-edge, 8px)) var(--kit-popup-frame-chamfer, 26px),
    calc(100% - var(--kit-popup-frame-edge, 8px)) calc(100% - var(--kit-popup-frame-chamfer, 26px)),
    calc(100% - var(--kit-popup-frame-chamfer, 26px)) calc(100% - var(--kit-popup-frame-edge, 8px)),
    var(--kit-popup-frame-chamfer, 26px) calc(100% - var(--kit-popup-frame-edge, 8px)),
    var(--kit-popup-frame-edge, 8px) calc(100% - var(--kit-popup-frame-chamfer, 26px)),
    var(--kit-popup-frame-edge, 8px) var(--kit-popup-frame-chamfer, 26px));
}
html[data-kit-popup-frame="1"] .popup-panel::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  border: 30px solid transparent;
  border-image: var(--kit-popup-frame, none) 60 stretch;
  background: none;
}
.popup-close {
  position: absolute; right: var(--popup-close-right, 0px); top: var(--popup-close-top, 0px);
  width: var(--popup-close-size, 0px); height: var(--popup-close-size, 0px);
  border: 0; background: transparent; color: #fff; cursor: pointer;
  font-size: calc(var(--popup-close-size, 0px) * 0.72); line-height: 1;
}
/* 供給時はキットの閉じるボタン意匠を使う(×の素テキストはフォールバック。#174) */
html[data-kit-popup-close="1"] .popup-close {
  background: var(--kit-popup-close, none) center / contain no-repeat;
  color: transparent;
}
.popup-body {
  position: relative; max-height: calc(var(--canvas-h, 0px) - var(--popup-header-effective, 0px) - var(--popup-bottom-pad, 0px) - 96px);
  /* スクロールバーはバックログ専用(#182)——バックログは#history-listが自前でスクロールする。
     他のポップアップの本文はスクロールさせない(収まる量で組むのが契約) */
  overflow: hidden; padding-top: var(--popup-content-top-offset, 0px);
}
/* スクロール容器は独立レイヤで合成(#248——回転舞台配下の主スレッドスクロールでは
   再描画が追いつかず、スクロール中に内容が空白になる) */
#ov-credits .popup-body, #history-list { transform: translateZ(0); will-change: transform; }
.setting-row {
  display: grid; grid-template-columns: minmax(0, 0.42fr) minmax(0, 1fr);
  align-items: center; gap: var(--popup-option-gap, 0px);
  margin: 0 0 var(--popup-item-gap, 0px);
  min-height: var(--popup-item-px, 0px); font-size: var(--popup-item-px, 1px);
}
.setting-label { justify-self: center; font-weight: 700; }
.setting-control {
  justify-self: stretch; display: flex; align-items: center; justify-content: center;
  gap: var(--popup-option-gap, 0px); min-width: 0;
}
.setting-control input[type="range"] { width: 520px; height: 52px; } /* 縦の有効範囲を約2倍に(ゲージ選択がシビア・2026-09-07) */
.option-choice {
  flex: 0 0 calc(var(--popup-item-px, 1px) * 5);
  min-height: calc(var(--popup-item-px, 1px) * 1.25);
  display: inline-flex; align-items: center; justify-content: center;
  gap: calc(var(--popup-item-px, 1px) * 0.25);
  border: 1px solid var(--frame-border); border-radius: 6px;
}
.setting-row.top-row {
  display: flex; justify-content: center; gap: var(--popup-option-gap, 0px);
  margin-top: var(--popup-back-top-gap, 0px);
}
.confirm-overlay { z-index: 30; }
.confirm-panel {
  width: calc(var(--popup-w, 0px) * 0.52);
  padding: calc(var(--popup-item-px, 1px) * 1.25) var(--popup-side-pad, 0px);
  text-align: center; font-size: var(--popup-item-px, 1px);
}
.confirm-actions {
  display: flex; align-items: center; justify-content: center;
  gap: var(--popup-option-gap, 0px); margin-top: var(--popup-item-gap, 0px);
}
.confirm-actions .uibtn { min-width: calc(var(--popup-item-px, 1px) * 5); }
#history-list {
  font-size: var(--backlog-body-px, 1px); line-height: 1.8;
  /* 固定viewHeightが.popup-bodyの可視域(canvas-h基準のmax-height)を超えると
     最下段が下端で切れて読めない(実機レビュー2026-09-09)。同じ収支式でキャップする */
  height: min(var(--backlog-view-height, 0px),
              calc(var(--canvas-h, 0px) - var(--popup-header-effective, 0px)
                   - var(--popup-bottom-pad, 0px) - 96px
                   - var(--popup-content-top-offset, 0px)));
  overflow-y: auto;
  padding-right: calc(var(--backlog-scrollbar-width, 0px) + 16px);
  scrollbar-width: auto;
}
#history-list::-webkit-scrollbar { width: var(--backlog-scrollbar-width, 0px); }
#history-list::-webkit-scrollbar-thumb {
  background: var(--kit-scroll-thumb, none) center / 100% 100% no-repeat rgba(191, 228, 240, 0.35);
  border-radius: 6px;
}
#history-list .h-chapter {
  margin: var(--backlog-divider-gap, 0px) 0; text-align: center;
  color: var(--name-color); font-weight: 800;
}
#history-list .h-chapter::after {
  /* 話区切りのキット仕切り(未供給ならvarがnoneで何も出ない。#174) */
  content: ""; display: block; height: 22px; margin: 10px auto 0; max-width: 70%;
  background: var(--kit-divider, none) center / auto 100% no-repeat;
}
#history-list .h-page {
  display: grid; grid-template-columns: var(--backlog-speaker-col, 0px) 1fr;
  gap: 24px; padding: 18px 0; border-top: 1px solid rgba(255, 255, 255, 0.18);
  white-space: pre-wrap;
}
#history-list .h-name { color: var(--name-color); font-weight: 800; text-align: center; }

#scrim, #textarea, #namezone, #click-wait, #game-ui, #cutin-layer {
  transition: opacity 0.25s ease, visibility 0s linear 0s;
}
body[data-view="hidden"] #scrim,
body[data-view="hidden"] #textarea,
body[data-view="hidden"] #namezone,
body[data-view="hidden"] #click-wait,
body[data-view="hidden"] #cutin-layer, /* 絵だけ表示では話者カットインも消す(2026-09-07) */
body[data-view="hidden"] #game-ui {
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity 0.25s ease, visibility 0s linear 0.25s;
}
body[data-view="hidden"] #click-wait { animation: none; }

/* Debug */
#debug-counter {
  position: fixed; left: 10px; bottom: 8px; z-index: 2147483000; display: none;
  font: bold 48px/1.1 Consolas, monospace; color: #8f9;
  background: rgba(0, 0, 0, 0.6); padding: 2px 14px; border-radius: 8px;
  text-shadow: 0 0 4px #000; pointer-events: none;
}
body[data-debug="1"] #debug-counter { display: block; }
#debug-load {
  position: fixed; left: 190px; bottom: 8px; z-index: 2147483000; display: none;
  font: bold 18px/1.2 Consolas, monospace; color: #fff;
  background: rgba(0, 0, 0, 0.6); padding: 8px 12px; border-radius: 8px;
  text-shadow: 0 0 4px #000; pointer-events: none;
}
body[data-debug="1"] #debug-load { display: block; }
#debug-cg {
  position: fixed; right: 10px; top: 8px; z-index: 2147483000; display: none;
  font: bold 20px/1.2 Consolas, monospace; color: #9cf;
  background: rgba(0, 0, 0, 0.6); padding: 4px 12px; border-radius: 8px;
  text-shadow: 0 0 4px #000; pointer-events: none; max-width: 60vw;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
body[data-debug="1"] #debug-cg:not(:empty) { display: block; }

#loading-mark {
  position: fixed; right: 12px; bottom: 12px; z-index: 2147483000;
  width: 24px; height: 24px; display: none; pointer-events: none;
  border: 3px solid rgba(255, 255, 255, 0.35); border-top-color: #fff;
  border-radius: 50%;
}
#loading-mark.visible { display: block; animation: loading-spin 0.8s linear infinite; }
@keyframes loading-spin { to { transform: rotate(360deg); } }

/* レターボックス遮蔽(#183根治): キャンバス内の内容がGPU合成の内部挙動でクリップ外
   (レターボックス領域)へ線状に漏れて見えることがある(暗転中に実証・要素幾何にも
   フィルタにも該当なし=DOM検査に映らない)。レターボックスは常に黒なので、
   上下左右の黒帯全域を実要素のborderで覆い、境界は舞台側へ2px食い込ませて
   (0.2%未満・不可視)どんな漏れ方でも物理的に隠す。borderはapplyLayoutNowが設定 */
#stage-mask {
  position: absolute; inset: 0; z-index: 40; pointer-events: none;
  border: 0 solid #000; background: none; box-sizing: border-box;
}

#fader {
  /* TOP⇄ゲームの暗転幕。#canvas(scale変換)内の覆いはクリップと独立に端数丸めされるため、
     inset:0では4辺のどこかに1デバイスピクセルの取り残し(下の絵が線状に見える)が出る(#183)。
     -3pxで丸め誤差を確実に飲む(canvasのoverflow:hiddenで刈られ副作用なし) */
  position: absolute; inset: -3px; z-index: 30; background: #000; opacity: 0;
  pointer-events: none; transition: opacity 0.6s ease;
}
#fader.black { opacity: 1; pointer-events: auto; }
#stage-fader {
  position: absolute; inset: -3px; z-index: 8; background: #000; opacity: 0;
  pointer-events: none; transition: opacity 0.5s ease;
}
#stage-fader.black { opacity: 1; }

@keyframes fx-shake-s { 0%,100% { transform: translate(0,0); } 25% { transform: translate(4px,2px); } 50% { transform: translate(-4px,-2px); } 75% { transform: translate(3px,-1px); } }
@keyframes fx-shake-l { 0%,100% { transform: translate(0,0); } 20% { transform: translate(10px,6px); } 40% { transform: translate(-10px,-6px); } 60% { transform: translate(8px,-4px); } 80% { transform: translate(-8px,4px); } }
@keyframes fx-flash { 0% { opacity: 0.95; } 100% { opacity: 0; } }
#stage-look.fx-shake-small, #scene-look-target.fx-shake-small, #cgarea.fx-shake-small { animation: fx-shake-s 0.4s ease; }
#stage-look.fx-shake-large, #scene-look-target.fx-shake-large, #cgarea.fx-shake-large { animation: fx-shake-l 0.6s ease; }
#fxflash.run { animation: fx-flash 0.5s ease-out; }
body[data-effects="static"] #cgarea.fx-shake-small,
body[data-effects="static"] #cgarea.fx-shake-large,
body[data-effects="static"] #scene-look-target.fx-shake-small,
body[data-effects="static"] #scene-look-target.fx-shake-large,
body[data-effects="static"] #stage-look.fx-shake-small,
body[data-effects="static"] #stage-look.fx-shake-large { animation: none; }
body[data-effects="static"] #fxflash.run { animation: none; opacity: 0.35; transition: opacity 0.4s; }
body[data-effects="static"] .cutin { transition: opacity 0.01s; transform: none; }
