/* 俐方體 11 號：繁體中文像素字型（授權見 assets/font/LICENSE_Cubic11_OFL.txt） */
/* FONT-BEGIN（tools/build_font.py 產生，不要手改） */
@font-face { font-family: "Cubic 11"; src: url("assets/font/Cubic_11_game.woff2") format("woff2"); font-display: swap; unicode-range: U+20-7E,U+B0-B3,U+B7,U+B9,U+BD,U+D7,U+F7,U+3A9,U+3B8,U+3BB,U+3C0,U+2013-2014,U+2026,U+2032-2033,U+2070,U+2074-2078,U+207A,U+207F-2088,U+2190-2193,U+21D2,U+2211-2212,U+221A,U+221D-221E,U+2220,U+2234,U+2260,U+2460-2465,U+25A1,U+25B2-25B3,U+25BC,U+25C6-25C7,U+25CB,U+25CE-25CF,U+2605-2606,U+266A,U+3000-3002,U+3008-3011,U+30FB,U+4E00-4E01,U+4E03,U+4E08-4E0B,U+4E0D,U+4E11,U+4E14-4E16,U+4E18-4E19,U+4E1F,U+4E26,U+4E2D,U+4E32,U+4E39,U+4E3B,U+4E45,U+4E4B,U+4E4E,U+4E56,U+4E58-4E59,U+4E5D,U+4E5F,U+4E7E,U+4E82,U+4E86,U+4E8B-4E8C,U+4E92,U+4E94,U+4E9B,U+4E9E,U+4EA1,U+4EA4-4EA6,U+4EA8,U+4EAB-4EAE,U+4EBA,U+4EC0,U+4EC4,U+4ECA-4ECB,U+4ECD,U+4ED4-4ED9,U+4EE3-4EE5,U+4EF2,U+4EF6,U+4EFB,U+4EFD,U+4F01,U+4F0F-4F11,U+4F2F-4F30,U+4F34,U+4F3A,U+4F3C,U+4F43,U+4F46,U+4F48,U+4F4D-4F4F,U+4F54-4F55,U+4F59,U+4F5B-4F5C,U+4F60,U+4F73,U+4F7F,U+4F86,U+4F8B,U+4F96,U+4F9B,U+4F9D,U+4FAF,U+4FB5,U+4FBF,U+4FC2,U+4FC4,U+4FCA,U+4FD0,U+4FDD,U+4FE1,U+4FEE,U+5009,U+500B,U+500D,U+5011-5012,U+5019,U+501F,U+5021,U+502B,U+503C,U+5047,U+5049,U+504F,U+505A,U+505C,U+5065,U+5074,U+5076,U+5085,U+5091,U+5098-5099,U+50B2-50B3,U+50B5,U+50B7,U+50C5,U+50CF,U+50F9,U+5112,U+511F,U+512A,U+5132,U+5141,U+5143-5145,U+5148-5149,U+514B,U+514D,U+5152,U+5154,U+5165,U+5167-5169,U+516B-516E,U+5171,U+5176-5178,U+517C,U+518A,U+518D,U+5192,U+5195,U+51A0,U+51AC,U+51B0,U+51B7,U+51C3,U+51C6,U+51CD,U+51DD,U+51E1,U+51F1,U+51F8,U+51FA,U+51FD,U+5206-5207,U+520A,U+5211-5212,U+5217,U+521D,U+5224-5225,U+5229-522A,U+5230,U+5236-5238,U+523A-523B,U+5247,U+524D,U+525B,U+525D,U+5269-526A,U+526F,U+5272,U+5275,U+5283,U+5287,U+5289,U+529B,U+529F-52A0,U+52A9-52AA,U+52BE,U+52C3,U+52D2,U+52D5,U+52D9,U+52DD-52DE,U+52E2,U+52E4,U+52F0,U+52FA-52FB,U+52FE,U+5305,U+5316-5317,U+532F,U+5339,U+533F-5341,U+5343,U+5347-5348,U+534A,U+5353-5354,U+5357,U+535C,U+5360-5361,U+5366,U+5370-5371,U+5373,U+5377,U+537B,U+537F,U+539F,U+53A5,U+53AD,U+53B2,U+53BB,U+53C3,U+53C8,U+53CA-53CB,U+53CD,U+53D4,U+53D6-53D7,U+53DB,U+53E3-53E6,U+53EA-53EB,U+53EE-53F0,U+53F2-53F3,U+53F8,U+53FC,U+5403-5404,U+5408-540A,U+540C-540D,U+5410-5411,U+541B,U+5426-5427,U+542B,U+5433,U+5435,U+5438-5439,U+543E,U+5442,U+5448,U+544A,U+5462,U+5464,U+5468,U+5473,U+547C-547D,U+548C,U+5496,U+549A,U+54AA,U+54B3,U+54C0-54C1,U+54C8,U+54E1,U+54E5,U+54E8,U+54EA,U+54ED,U+54F2,U+5510,U+552E,U+5531,U+5538,U+5543,U+5546,U+554A,U+554F,U+555F,U+5566,U+556A,U+5576,U+557C,U+5584,U+5589,U+5594,U+559C-559D,U+55AE,U+55B5,U+55BB,U+55CE,U+55EF,U+5609,U+560C,U+561B,U+5634,U+5668,U+5674,U+56A8,U+56B4,U+56BC,U+56CA,U+56DA-56DB,U+56DE,U+56E0,U+56F0,U+56FA,U+5708,U+570B,U+570D,U+5712-5713,U+5716,U+5718,U+571F,U+5728,U+5730,U+573E,U+5740,U+5747,U+5750,U+5761,U+5782-5783,U+578B,U+57AE,U+57CB,U+57CE,U+57D4,U+57DF,U+57F7,U+57F9-57FA,U+5802,U+5805-5806,U+5821,U+5824,U+5831,U+5834,U+584A,U+5854,U+585E,U+586B,U+5883,U+588A,U+5893,U+589E,U+58A8,U+58BE,U+58C1,U+58D3,U+58DE,U+58EB,U+590F,U+5916,U+591A,U+591C,U+5920,U+5922,U+5925,U+5927,U+5929-592B,U+592E,U+5931,U+593E,U+5947,U+594F,U+5954,U+5957,U+5960,U+5967,U+596A,U+596E,U+5973-5974,U+5976,U+5979,U+597D,U+5982,U+598D,U+59A4,U+59B9,U+59BB,U+59CA-59CB,U+59D0,U+59D3-59D4,U+59DA,U+59DC,U+59E8,U+59FF,U+5A01,U+5A03,U+5A1F,U+5A49,U+5A77,U+5ABD,U+5B0B-5B0C,U+5B24,U+5B30,U+5B50,U+5B54,U+5B57-5B58,U+5B5F,U+5B63-5B64,U+5B69,U+5B6B,U+5B78,U+5B83,U+5B85,U+5B87-5B89,U+5B8B-5B8C,U+5B8F,U+5B97-5B9A,U+5B9C,U+5BA2-5BA5,U+5BAE,U+5BB4-5BB6,U+5BB8-5BB9,U+5BC4,U+5BC6,U+5BCC,U+5BD2-5BD3,U+5BDF,U+5BE1,U+5BE6,U+5BE9,U+5BEB-5BEC,U+5BF5-5BF6,U+5C01,U+5C04,U+5C07-5C08,U+5C0A,U+5C0D-5C0F,U+5C11,U+5C16,U+5C1A,U+5C24,U+5C2C,U+5C31,U+5C37,U+5C3A,U+5C3E-5C40,U+5C45-5C46,U+5C48,U+5C4B,U+5C4F,U+5C55,U+5C5C,U+5C64-5C65,U+5C6C,U+5C6F,U+5C71,U+5CA9,U+5CB1,U+5CB3,U+5CB8,U+5CF0,U+5CF6,U+5D19,U+5D27,U+5D29,U+5DB8,U+5DDD-5DDE,U+5DE1,U+5DE5-5DE7,U+5DEB,U+5DEE,U+5DF1-5DF2,U+5DF4,U+5DF7,U+5E02-5E03,U+5E0C,U+5E1D,U+5E2B,U+5E2D,U+5E33,U+5E36,U+5E38,U+5E45,U+5E55,U+5E63,U+5E6B,U+5E72-5E74,U+5E78-5E79,U+5E7C,U+5E7E,U+5E8A,U+5E8F,U+5E95,U+5E97,U+5E9C,U+5EA6-5EA7,U+5EAB,U+5EAD,U+5EB5,U+5EB7-5EB8,U+5EC2,U+5ECA,U+5ED6,U+5EE0,U+5EE2-5EE3,U+5EF3,U+5EF6-5EF7,U+5EFA,U+5F04,U+5F0F,U+5F13,U+5F15,U+5F1F,U+5F26-5F27,U+5F31,U+5F35,U+5F37,U+5F48,U+5F4E,U+5F62,U+5F64-5F65,U+5F69,U+5F6D,U+5F71,U+5F79,U+5F7C,U+5F80,U+5F85,U+5F88,U+5F8B-5F8C,U+5F90-5F91,U+5F97,U+5F9E,U+5FA1,U+5FA9-5FAA,U+5FAE,U+5FB5,U+5FB7,U+5FC3,U+5FC5,U+5FCD,U+5FD7-5FD9,U+5FEB,U+5FF5,U+5FFD,U+600E,U+6012,U+6015,U+601D,U+6021,U+6025,U+6027,U+602F,U+6046,U+6062,U+6068-6069,U+606D,U+606F-6070,U+6085,U+609F,U+60A8,U+60B2,U+60B6,U+60C5,U+60E0-60E1,U+60F3,U+6101,U+6108,U+610F,U+611B,U+611F,U+6123,U+614B,U+6162-6163,U+6168,U+6176-6177,U+6182,U+6191,U+61B2,U+61B6,U+61BE,U+61C2,U+61C9,U+61F2,U+61F7-61F8,U+6208,U+620A,U+620C,U+6210-6212,U+6216,U+621A,U+622A,U+6230,U+6232,U+6234,U+6236,U+623F-6240,U+6247,U+624B,U+624D,U+6253,U+625B,U+6263,U+626E,U+6279,U+627E-6280,U+6284,U+6289-628A,U+6292-6293,U+6295,U+6297-6298,U+62AC,U+62B1,U+62B5,U+62BD,U+62C6,U+62C9,U+62CB,U+62CD,U+62D2,U+62D4,U+62D6,U+62D8,U+62DA-62DC,U+62EC,U+62FC,U+62FF,U+6301,U+6307,U+6309,U+6311,U+6316,U+632A-632B,U+632F,U+6377,U+6383,U+6388-6389,U+638C,U+638F,U+6392,U+639B,U+63A1,U+63A5,U+63A8,U+63CF-63D0,U+63D2,U+63DA-63DB,U+63E1,U+63EA,U+63ED-63EE,U+63F4,U+640D,U+6416,U+641E,U+642C-642D,U+6436,U+6469,U+6478,U+6490,U+649E,U+64A5,U+64AD,U+64B0,U+64BF,U+64C5,U+64C7,U+64CA-64CB,U+64CD,U+64D4,U+64DA,U+64E0,U+64E6,U+64EC,U+64F2,U+64F4,U+64FA,U+651C,U+6524,U+652F,U+6536,U+6539,U+653E-653F,U+6545,U+6548,U+6551,U+6557-6559,U+6562-6563,U+6566,U+656C,U+6572,U+6574-6575,U+6578,U+6582,U+6587,U+6599,U+659C,U+65AF-65B0,U+65B7,U+65B9,U+65BC-65BD,U+65C1,U+65C5,U+65CB,U+65CF,U+65D7,U+65E2,U+65E5-65E6,U+65E9,U+65FA,U+6602,U+6607,U+660E-660F,U+6613,U+661F,U+6625,U+662D,U+662F,U+6631,U+6641-6643,U+6649,U+665A,U+6668,U+666E-666F,U+6674,U+667A,U+6691,U+6696-6697,U+66A8,U+66AB,U+66C6,U+66C9,U+66F2,U+66F4,U+66F8-66F9,U+66FE-6700,U+6703,U+6708-6709,U+670B,U+670D,U+6717,U+671B,U+671D,U+671F,U+6728,U+672A-672C,U+6731,U+6735,U+674E,U+6750-6751,U+675C,U+675F,U+676F,U+6771,U+677F,U+6790,U+6795,U+6797,U+679A,U+679C-679D,U+67B6,U+67CF-67D0,U+67D3-67D4,U+67DA,U+67E5,U+67EF,U+67F1,U+67F3,U+6821,U+682A,U+6838-6839,U+683C-683D,U+6843,U+6846,U+6848,U+684C,U+6851,U+6876,U+687F,U+6881,U+6885,U+6893,U+689D,U+68C4,U+68D2,U+68DF,U+6905,U+690D,U+6930,U+694A,U+695A,U+6968,U+696D,U+6975,U+6982,U+699C,U+69AE,U+69CB,U+69F3,U+6A02,U+6A13,U+6A19,U+6A21,U+6A23,U+6A38-6A39,U+6A58,U+6A5F,U+6A6B,U+6A94,U+6AA2,U+6AAF,U+6ABB,U+6AC3,U+6B04,U+6B0A,U+6B21,U+6B23,U+6B38,U+6B3E,U+6B47,U+6B4C,U+6B50,U+6B61-6B66,U+6B6A,U+6B72,U+6B77-6B78,U+6B7B,U+6B8A,U+6B96,U+6B98,U+6BB5,U+6BBC,U+6BBF,U+6BC5,U+6BCD,U+6BCF,U+6BD4,U+6BDB,U+6BEB,U+6BEF,U+6C0F,U+6C11,U+6C23,U+6C27-6C28,U+6C2B-6C2C,U+6C2E,U+6C34,U+6C38,U+6C42,U+6C57,U+6C5F-6C60,U+6C6A,U+6C7A,U+6C88-6C89,U+6C92,U+6C99,U+6C9B,U+6CB3,U+6CB8-6CB9,U+6CBB,U+6CBF,U+6CC1,U+6CD5,U+6CDB,U+6CE1-6CE2,U+6CE5,U+6CE8,U+6D0B,U+6D17,U+6D1E,U+6D25,U+6D2A,U+6D32,U+6D35,U+6D3B,U+6D3E,U+6D41,U+6D69-6D6A,U+6D6E,U+6D77,U+6D82,U+6D85,U+6D88,U+6DAF,U+6DB2,U+6DB5,U+6DBC,U+6DCB,U+6DD1,U+6DD8,U+6DDA,U+6DE1,U+6DE4,U+6DE8,U+6DEA,U+6DEE,U+6DF1,U+6DF5,U+6DF7,U+6DF9-6DFB,U+6E05,U+6E1B,U+6E21,U+6E29,U+6E2C,U+6E2F,U+6E38,U+6E4A,U+6E67,U+6E6F,U+6E90,U+6E96,U+6E9D,U+6EAA-6EAB,U+6EAF,U+6EB6,U+6EC5,U+6ED1,U+6ED5,U+6EFE-6EFF,U+6F01-6F02,U+6F0F,U+6F14,U+6F20,U+6F22,U+6F2B,U+6F32,U+6F3F,U+6F51,U+6F58,U+6F62,U+6F64,U+6F70,U+6FB1,U+6FC0-6FC1,U+6FC3,U+6FD5,U+6FDF,U+6FFE,U+700F,U+7063,U+706B,U+7070,U+70AC-70AF,U+70BA,U+70E4,U+70F4,U+70F7,U+7109,U+7121,U+7126,U+7136,U+7159,U+7167,U+7169,U+718A,U+719F,U+71AC,U+71B1,U+71C3,U+71C8,U+71D2,U+71DF,U+71E5,U+71ED,U+7206,U+722C-722D,U+7236,U+7238,U+723E,U+7246-7248,U+724C,U+7259,U+725B,U+7260-7261,U+7267,U+7269,U+7274,U+7279,U+72AF,U+72C0,U+72D7,U+734E,U+7368,U+7372,U+7378,U+737B,U+7387,U+7389,U+738B,U+73A9,U+73B2,U+73BB,U+73CD,U+73ED,U+73FE,U+7403,U+7406,U+742A,U+7433-7436,U+745C,U+7483,U+74A7,U+74B0,U+74E3,U+74E6,U+74F6,U+7504,U+751F,U+7522,U+7528,U+752B,U+7530-7533,U+7537,U+754C,U+7559,U+7562,U+7565,U+756A-756B,U+7570,U+7576,U+758A,U+7591,U+75BC,U+75BE,U+75C5,U+75DB,U+7626,U+7642,U+766E,U+767B-767E,U+7684,U+7686-7687,U+76BA,U+76C6,U+76CA,U+76DB,U+76DF,U+76E1,U+76E3-76E4,U+76E7,U+76EE-76EF,U+76F2,U+76F4,U+76F8,U+76FE,U+7701,U+7709,U+770B,U+771F-7720,U+7728,U+773C,U+773E,U+775B,U+7761,U+7763,U+777F,U+778C,U+77AC,U+77DB,U+77E5,U+77E9,U+77ED-77EF,U+77F3,U+7802,U+7814,U+7834,U+7838,U+785D,U+786B-786C,U+7891,U+7897,U+78B0,U+78B3,U+78BA,U+78BC,U+78C1,U+78DA,U+790E,U+793A,U+793E,U+7955-7956,U+795D-795E,U+7968,U+798F,U+79AA,U+79AE,U+79B9,U+79C1,U+79CB,U+79D1-79D2,U+79D8,U+79DF,U+79E6,U+79E9,U+79FB,U+7A00,U+7A05,U+7A0B,U+7A1C,U+7A2E,U+7A31,U+7A3F,U+7A4D-7A4E,U+7A69,U+7A6B,U+7A76,U+7A7A,U+7A7F,U+7A81,U+7A84,U+7A97,U+7ACB,U+7AD9,U+7AE0,U+7AE5,U+7AEF,U+7AF6,U+7AF9,U+7AFF,U+7B11,U+7B26,U+7B2C,U+7B46,U+7B49,U+7B54,U+7B56,U+7B60,U+7B71,U+7B97,U+7BA1,U+7BB1,U+7BC0,U+7BC4,U+7BC7,U+7BE9,U+7C21,U+7C27,U+7C3D,U+7C3F,U+7C43,U+7C4D,U+7C60,U+7C64,U+7C73,U+7C89,U+7C92,U+7CB2,U+7CBD-7CBE,U+7CCA,U+7CD5-7CD6,U+7CDE-7CDF,U+7CE7,U+7CEC,U+7CFB,U+7D00,U+7D04-7D05,U+7D0B,U+7D0D,U+7D10,U+7D14,U+7D19-7D1A,U+7D20,U+7D22,U+7D2B,U+7D2F-7D30,U+7D33,U+7D39,U+7D42,U+7D44,U+7D50,U+7D55,U+7D66,U+7D71-7D72,U+7D81,U+7D93,U+7D9C,U+7DA0,U+7DAD,U+7DB1-7DB2,U+7DB4,U+7DCA,U+7DDA,U+7DE3,U+7DE8-7DE9,U+7DEF,U+7DF4,U+7E09,U+7E23,U+7E2E,U+7E3D-7E3E,U+7E41,U+7E5E,U+7E69,U+7E7C,U+7E8C,U+7F3A,U+7F69-7F6A,U+7F6E,U+7F70,U+7F72,U+7F75,U+7F85,U+7F8E,U+7FA4,U+7FA9,U+7FB2,U+7FBD,U+7FC1,U+7FD2,U+7FD4,U+7FE0,U+7FF0,U+7FF9,U+7FFB,U+8001,U+8003,U+8005,U+800C-800D,U+8010,U+8012,U+8017,U+8033,U+804A,U+8056,U+805A,U+805E,U+806F,U+8072,U+8077,U+807D,U+8089,U+8098,U+809D,U+80A1,U+80AF,U+80B2,U+80CC,U+80CE,U+80DE,U+80E1,U+80F8,U+80FD,U+8102,U+8108,U+810A,U+8129,U+812B,U+8139,U+814E,U+8166,U+8170,U+8173,U+817A,U+817F,U+819A,U+819C,U+81A8,U+81BD,U+81C2,U+81C9,U+81E8,U+81EA,U+81ED,U+81F3-81F4,U+81FA,U+8205,U+8207-820A,U+820C-820D,U+8212,U+8216,U+821E-821F,U+822C,U+8239,U+826F,U+8272,U+82AC,U+82AF,U+82B1,U+82B7,U+82B9,U+82DE-82DF,U+82E1,U+82E5,U+82F1,U+8303-8304,U+8336,U+8340,U+8349-834A,U+8377,U+838A,U+83AB,U+83DC,U+83EF,U+8404,U+842C,U+843D,U+8449,U+8457,U+845B,U+8461,U+8463,U+84C1,U+84CB,U+84EE,U+8513,U+8521,U+8523,U+856D,U+859B,U+85A6,U+85AA,U+85CD,U+85CF,U+85DD,U+85E5,U+8607,U+862D,U+8655,U+865B,U+865E-865F,U+866F,U+86C7,U+86CB,U+8700,U+8755,U+8776,U+878D,U+87A2,U+87E0,U+881F,U+8836,U+8840,U+884C,U+8853,U+8857,U+885B,U+885D,U+8861,U+8863,U+8868,U+8870,U+8881,U+888B,U+888D,U+8896,U+88AB,U+88C1-88C2,U+88DC-88DD,U+88E1,U+88FD,U+8907,U+8936,U+8972,U+897F,U+8981,U+8986,U+898B,U+898F,U+8996,U+89AA,U+89BA,U+89BD,U+89C0,U+89D2,U+89E3,U+89F8,U+8A00,U+8A02,U+8A08,U+8A0A,U+8A0E,U+8A13,U+8A17-8A18,U+8A1F,U+8A2A,U+8A2D,U+8A31,U+8A34,U+8A3B,U+8A55,U+8A5E,U+8A60,U+8A66,U+8A69,U+8A71-8A73,U+8A79,U+8A87,U+8A8C-8A8D,U+8A95,U+8A9E,U+8AA4,U+8AAA,U+8AB0,U+8AB2,U+8ABF,U+8AC7,U+8ACB,U+8AD6,U+8AE1,U+8AE7,U+8AEE,U+8AF7-8AF8,U+8B1B,U+8B1D,U+8B20,U+8B49,U+8B58,U+8B5C,U+8B6C,U+8B6F-8B70,U+8B80,U+8B8A,U+8B93,U+8B9A,U+8C37,U+8C46,U+8C50,U+8C61,U+8C6A,U+8C93,U+8C9D,U+8CA0-8CA1,U+8CA7-8CA9,U+8CAB-8CAC,U+8CB4,U+8CB6-8CB7,U+8CBB-8CBC,U+8CBF-8CC0,U+8CC7-8CC8,U+8CD3,U+8CE0,U+8CE2-8CE3,U+8CE6,U+8CEA,U+8CED,U+8CF4,U+8CFA,U+8CFC-8CFD,U+8D0A,U+8D0F,U+8D16,U+8D64,U+8D70,U+8D74,U+8D77,U+8D85,U+8D8A,U+8D95,U+8D99,U+8DA8,U+8DB3-8DB4,U+8DCC,U+8DD1,U+8DDD,U+8DDF,U+8DE1,U+8DE8,U+8DEF,U+8DF3,U+8E72,U+8E8D,U+8EAB,U+8EBA,U+8ECA,U+8ECC-8ECD,U+8ED2,U+8EDF,U+8EF8,U+8EFE,U+8F03,U+8F09,U+8F14-8F15,U+8F2A,U+8F2F,U+8F38,U+8F3B,U+8F49,U+8F4D,U+8F9B,U+8FA6,U+8FAD,U+8FAF-8FB0,U+8FC5,U+8FCE,U+8FD1,U+8FEB,U+8FF0,U+8FF4,U+8FF7,U+8FFD,U+9000-9001,U+9006,U+900D,U+900F-9010,U+9014,U+9017,U+9019-901B,U+901D,U+901F-9020,U+9022-9023,U+9031-9032,U+9047,U+904A-904B,U+904D-904E,U+9053-9055,U+9059,U+905E,U+9060,U+9069,U+906E,U+9072,U+9077-9078,U+907A,U+907F-9080,U+9084,U+908A,U+908F,U+90A3,U+90A6,U+90AA,U+90B1,U+90B5,U+90CA,U+90E8,U+90ED,U+90FD,U+9109,U+9112,U+9127,U+912D,U+9130,U+914D,U+9152,U+9165,U+9175-9176,U+9178,U+9189,U+918B,U+9192,U+919C,U+91AB-91AC,U+91AF,U+91CB-91CF,U+91D1,U+91DD,U+9209,U+9215,U+9223,U+9234,U+925B,U+9280,U+9285,U+9298,U+92A8,U+92B3,U+92C5,U+92FC,U+9304,U+9310,U+9322,U+932B,U+932F,U+934B,U+9375,U+937E,U+9396,U+93E1,U+93FD,U+9418,U+9435,U+9451,U+947D,U+9577,U+9580,U+9583,U+9589,U+958B,U+9593,U+95A3,U+95B1,U+95C6,U+95DC,U+962E,U+9632,U+963B,U+963F,U+9644,U+964B-964D,U+9650,U+9661-9664,U+966A,U+9670,U+9673,U+9676,U+9678,U+967D,U+9686,U+968A,U+968E,U+9694,U+9699,U+969B,U+96A8,U+96AA,U+96B1,U+96BB,U+96C0,U+96C4-96C6,U+96D5-96D6,U+96D9,U+96DC,U+96DE,U+96E2-96E3,U+96E8,U+96EA,U+96EF,U+96F2,U+96F6,U+96FB,U+9700,U+971C,U+971E,U+9732,U+9738,U+9748,U+9752,U+975C,U+975E,U+9760,U+9762,U+9769,U+978B,U+978F,U+97CC,U+97D3,U+97F3,U+97FF,U+9801-9802,U+9805-9806,U+9808,U+980C,U+9810,U+9812-9813,U+9818,U+9824,U+982D,U+9837-9838,U+983B,U+9846,U+984C-984D,U+984F,U+9858,U+985E,U+9867,U+986F,U+98A8,U+98B1,U+98C4,U+98DB,U+98DF,U+98EF,U+98F2,U+98FC-98FE,U+9905,U+990A,U+9910,U+9913,U+9918,U+9921,U+9928,U+9935,U+9996,U+9999,U+99A8,U+99AC,U+99AE,U+99D0,U+99E2,U+99F1,U+9A37,U+9A55,U+9A57,U+9AA8,U+9AB0,U+9AD4,U+9AD8,U+9AEE-9AEF,U+9B06,U+9B27,U+9B44-9B45,U+9B4F,U+9B6F,U+9CE5,U+9CE9,U+9CF4,U+9D3B,U+9DA9,U+9DAF,U+9DFA,U+9E1D,U+9E79,U+9E7C-9E7D,U+9E7F,U+9E97,U+9EA5,U+9EB5,U+9EBB-9EBC,U+9EC3,U+9ECE-9ECF,U+9ED1,U+9ED8,U+9EDE,U+9EE8,U+9F13,U+9F20,U+9F3B,U+9F41,U+9F4A-9F4B,U+9F52,U+9F61,U+9F8D,U+9F94,U+FF01,U+FF03-FF06,U+FF08-FF0D,U+FF0F,U+FF1A-FF20,U+FF3C,U+FF3F,U+FF5C,U+FF5E; }
@font-face { font-family: "Cubic 11 Full"; src: url("assets/font/Cubic_11.woff2") format("woff2"); font-display: swap; unicode-range: U+2E80-9FFF,U+F900-FAFF,U+FF00-FFEF; }
/* FONT-END */
/* 放榜那天｜手機直式版面（v8）
   整個遊戲是一欄，寬度上限 460px；電腦上看起來就是置中的一支手機。 */
:root {
  --navy: #27466b;
  --blue: #3d7cc9;
  --cream: #fff6dc;
  --ink: #3a2a14;
  --muted: #6b5a3a;
  --gold1: #ffd76a;
  --gold2: #f0a020;
  --goldEdge: #8a5412;
  --good: #2f8f3b;
  --bad: #c2453b;
  --font: "Cubic 11", "Cubic 11 Full", "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", sans-serif;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; }
body {
  background: #2d4d73;
  background-image:
    linear-gradient(45deg, rgba(255,255,255,.04) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.04) 75%),
    linear-gradient(45deg, rgba(255,255,255,.04) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.04) 75%);
  background-size: 24px 24px;
  background-position: 0 0, 12px 12px;
  color: var(--ink);
  font-family: var(--font);
  touch-action: manipulation;          /* 連點不要放大畫面 */
  -webkit-text-size-adjust: 100%;
}
button { font-family: var(--font); cursor: pointer; color: var(--ink); }
#game {
  max-width: 460px; margin: 0 auto; min-height: 100dvh;
  padding: calc(8px + env(safe-area-inset-top)) 10px 0;
  display: flex; flex-direction: column; gap: 6px;
}

/* ---------- 上方狀態 ---------- */
.topbar {
  background: var(--cream); border: 3px solid var(--navy); border-radius: 12px;
  padding: 6px 8px; box-shadow: 0 3px 0 #1a2f4a; display: grid; gap: 5px;
}
.row1, .row2 { display: flex; gap: 5px; align-items: center; }
.title { font-size: 19px; color: var(--navy); margin-right: auto; letter-spacing: 1px; white-space: nowrap; }
.chip {
  background: #fff; border: 2px solid var(--navy); border-radius: 8px; padding: 2px 7px;
  display: flex; gap: 5px; align-items: center; white-space: nowrap;
}
.chip span { font-size: 11px; color: var(--muted); }
.chip b { font-size: 14px; font-weight: normal; font-variant-numeric: tabular-nums; }
.chip.date { background: var(--blue); }
.chip.date b { color: #fff; }
.chip.gear { font-size: 17px; line-height: 1; padding: 3px 9px; min-height: 30px; }
.row2 .chip { flex: 1; justify-content: center; }
.chip.meter i { flex: 1; min-width: 28px; height: 9px; background: #e6dcc0; border: 1px solid var(--navy); border-radius: 99px; overflow: hidden; }
.chip.meter em { display: block; height: 100%; background: var(--good); width: 50%; transition: width .25s; }
.chip.meter em.low { background: var(--bad); }
.chip.meter em.mid { background: var(--gold2); }

/* ---------- 房間 ---------- */
.stage {
  position: relative; border: 3px solid var(--navy); border-radius: 12px; overflow: hidden;
  background: #1a2f4a; box-shadow: 0 3px 0 #1a2f4a;
}
canvas { display: block; }
#c { width: 100%; height: auto; image-rendering: pixelated; }
.ticker {
  position: absolute; left: 6px; right: 6px; bottom: 6px; text-align: center;
  background: rgba(20, 30, 50, .85); color: #fff; font-size: 13px; line-height: 1.4;
  padding: 4px 8px; border-radius: 8px; border: 2px solid rgba(255,255,255,.35);
  opacity: 0; transition: opacity .25s; pointer-events: none;
}
.ticker.show { opacity: 1; }
.ticker .good { color: #9ff0a8; }
.ticker .bad { color: #ffb3aa; }
.banner {
  position: absolute; top: 30%; left: 0; right: 0; text-align: center; pointer-events: none;
  font-size: 36px; color: #fff; opacity: 0;
  text-shadow: 3px 3px 0 var(--goldEdge), -2px -2px 0 var(--goldEdge), 2px -2px 0 var(--goldEdge), -2px 2px 0 var(--goldEdge);
}
.banner.show { animation: banner 1.8s ease-out; }
@keyframes banner {
  0% { opacity: 0; transform: translateX(40%) scale(.9); }
  15% { opacity: 1; transform: translateX(0) scale(1.05); }
  80% { opacity: 1; transform: translateX(0) scale(1); }
  100% { opacity: 0; transform: translateX(-30%); }
}

/* ---------- 視窗 ---------- */
.window { background: var(--cream); border: 3px solid var(--navy); border-radius: 12px; box-shadow: 0 3px 0 #1a2f4a; overflow: hidden; }
.win-title {
  background: linear-gradient(#5b97e0, var(--blue)); color: #fff; padding: 3px 10px;
  display: flex; justify-content: space-between; align-items: center; font-size: 14px; border-bottom: 3px solid var(--navy);
}
.win-title .next { font-size: 12px; opacity: .95; }
.win-title .link { background: none; border: none; color: #fff; font-size: 12px; text-decoration: underline; padding: 4px 0 4px 12px; }
.win-body { padding: 6px 8px; }
.hidden { display: none !important; }

/* ---------- 成績單：五科直條 ---------- */
.subjects { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.subc { display: grid; justify-items: center; gap: 1px; font-size: 12px; }
.vtrack { position: relative; width: 100%; height: 34px; background: #e6dcc0; border: 2px solid var(--navy); border-radius: 6px; overflow: hidden; }
.vfill { position: absolute; left: 0; right: 0; bottom: 0; background: var(--blue); transition: height .3s; }
.vfill.under { background: var(--bad); }
.vline { position: absolute; left: 0; right: 0; height: 2px; background: var(--ink); }
.vnum { position: absolute; inset: 0; display: grid; place-items: center; font-size: 14px; color: #fff; text-shadow: 1px 1px 0 rgba(0,0,0,.55), -1px -1px 0 rgba(0,0,0,.35); }
.subc i { font-style: normal; font-size: 10px; color: var(--goldEdge); }
.minor { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 6px; }
.minor div { background: #fff; border: 2px solid var(--navy); border-radius: 8px; padding: 2px 4px; text-align: center; display: flex; justify-content: center; gap: 6px; align-items: baseline; }
.minor span { font-size: 10px; color: var(--muted); }
.minor b { font-weight: normal; font-size: 14px; }
.trait { font-size: 11px; margin: 6px 0 0; color: var(--navy); line-height: 1.4; }
.status { font-size: 12px; margin: 2px 0 0; color: var(--bad); min-height: 0; }
.status:empty, .trait:empty { display: none; }

/* ---------- 排行程 ---------- */
.slots { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; margin-bottom: 6px; }
.slot {
  background: #fff; border: 2px dashed #b9a676; border-radius: 8px; min-height: 40px; font-size: 13px; color: #9a8a6a;
  display: grid; place-items: center; text-align: center; padding: 0;
}
.slot.filled { border-style: solid; border-color: var(--navy); color: var(--ink); box-shadow: 0 2px 0 var(--navy); }
.slot.now { background: #ffe9a8; }
.slot.locked { background: #e9e2cf; border-style: solid; border-color: #c9bd9c; color: #b0a27c; font-size: 11px; }
.palette { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.act {
  background: #fff; border: 2px solid var(--navy); border-radius: 9px; padding: 2px; min-height: 40px; font-size: 14px; line-height: 1.25;
  box-shadow: 0 2px 0 var(--navy);
}
.act small { display: block; font-size: 10px; color: var(--muted); white-space: nowrap; }
.act:active:not(:disabled) { transform: translateY(2px); box-shadow: none; }
.act:disabled { opacity: .45; }
.act.study { background: #eaf3ff; }

.credit { color: rgba(255,255,255,.5); font-size: 10px; margin: 0; text-align: center; line-height: 1.4; }

/* ---------- 底部固定：開始這個月 ---------- */
.gobar {
  position: sticky; bottom: 0; margin: auto -10px 0; padding: 4px 10px calc(8px + env(safe-area-inset-bottom));
  background: linear-gradient(rgba(45,77,115,0), #2d4d73 28%); position: sticky;
}
.saved { position: absolute; left: 0; right: 0; top: -16px; color: #fff; font-size: 11px; text-align: center; opacity: 0; transition: opacity .4s; pointer-events: none; text-shadow: 0 1px 2px rgba(0,0,0,.6); }
.saved.show { opacity: 1; }
.gold {
  background: linear-gradient(var(--gold1), var(--gold2)); border: 3px solid var(--goldEdge); border-radius: 12px;
  padding: 10px 8px; font-size: 15px; box-shadow: 0 3px 0 var(--goldEdge); line-height: 1.35;
}
.gold:active:not(:disabled) { transform: translateY(3px); box-shadow: none; }
.gold:disabled { filter: grayscale(.7); opacity: .7; }
.go { width: 100%; font-size: 18px; padding: 10px; }

/* ---------- 彈出視窗 ---------- */
.modal { position: fixed; inset: 0; z-index: 10; background: rgba(10, 20, 40, .6); display: grid; place-items: center; padding: 10px; }
.modal .window { width: min(440px, 100%); max-height: calc(100dvh - 20px); overflow-y: auto; }
.modal .win-title { font-size: 16px; padding: 5px 10px; position: sticky; top: 0; z-index: 1; }
.modal .win-body { padding: 10px; }
#modalBody { font-size: 15px; line-height: 1.65; margin-bottom: 10px; }
#modalBody p { margin: 0 0 8px; }
.opts { display: grid; gap: 8px; }
.pick { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.pick canvas { width: 64px; height: 96px; image-rendering: pixelated; margin: 0 auto 4px; }
.pick4 { grid-template-columns: repeat(4, 1fr); }
.pick4 canvas { width: 48px; height: 72px; }
.rollbtn { display: block; width: 100%; margin: 8px 0 2px; font-size: 14px; }
.scores { width: 100%; border-collapse: collapse; margin: 6px 0; }
.scores td { padding: 3px 6px; border-bottom: 1px dashed #c9bd9c; }
.scores td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.big { font-size: 26px; color: var(--navy); text-align: center; margin: 4px 0 8px; }
.sum { background: #fff; border: 2px solid var(--navy); border-radius: 10px; padding: 8px 10px; font-size: 13px; }
.promo { font-size: 12px; color: var(--muted); margin-top: 10px; text-align: center; }
.promo a { color: var(--blue); }
.q-note { font-size: 12px; color: var(--muted); }
.good { color: var(--good); }
.bad { color: var(--bad); }
.pts { text-align: center; font-size: 14px; color: var(--goldEdge); margin: 8px 0 0; }
.newtag { color: var(--bad); font-size: 11px; font-weight: normal; }
.ev { width: 100%; max-width: 360px; margin: 0 auto 10px; image-rendering: pixelated; border: 3px solid var(--navy); border-radius: 8px; background: #cfe7f0; }

/* 骰子 */
.dice { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.die-wrap { background: #fff; border: 3px solid var(--navy); border-radius: 10px; padding: 6px 2px; display: grid; justify-items: center; gap: 2px; box-shadow: 0 3px 0 var(--navy); }
.die-wrap.locked { background: #ffe9a8; border-color: var(--goldEdge); box-shadow: 0 3px 0 var(--goldEdge); }
.die-wrap b { font-weight: normal; font-size: 12px; }
.die-wrap small { font-size: 10px; color: var(--muted); }
.die-wrap i { font-style: normal; font-size: 10px; color: #9a8a6a; }
.die { width: 40px; height: 40px; background: #fffdf5; border: 3px solid var(--ink); border-radius: 8px; padding: 4px;
  display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); gap: 1px; }
.die span { border-radius: 50%; }
.die span.on { background: var(--ink); }
.die.v6 span.on, .die.v5 span.on { background: var(--bad); }
.die.rolling { animation: shake .14s infinite; }
@keyframes shake { 0% { transform: rotate(-8deg); } 50% { transform: rotate(8deg) translateY(-3px); } 100% { transform: rotate(-8deg); } }
.dice-sum { text-align: center; font-size: 13px; color: var(--muted); margin: 8px 0 0; }

/* 商店與圖鑑 */
.row {
  width: 100%; text-align: left; background: #fff; border: 3px solid var(--navy); border-radius: 10px;
  padding: 6px 10px; margin-bottom: 8px; display: grid; grid-template-columns: 1fr auto; gap: 2px 8px;
  font-size: 14px; box-shadow: 0 3px 0 var(--navy);
}
.row b { font-weight: normal; }
.row small { grid-column: 1 / -1; font-size: 11px; color: var(--muted); }
.row b small { font-size: 11px; }
/* 福利社商品的小圖（v47） */
.row.hasico { grid-template-columns: 36px 1fr auto; }
.row.hasico .ico { grid-row: 1 / span 2; width: 36px; height: 36px; image-rendering: pixelated; align-self: center; }
.row.hasico small { grid-column: 2 / -1; }
.row[disabled] .ico { opacity: .45; }
.shop.two .row.hasico { grid-template-columns: 28px 1fr; }
.shop.two .row.hasico .ico { width: 28px; height: 28px; }
.shop.two .row.hasico .cost { grid-column: 2; }
.row:disabled { opacity: .5; }
.cost { color: var(--goldEdge); }
.codex { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; }
.codex span { background: #fff; border: 2px solid var(--navy); border-radius: 99px; padding: 1px 8px; font-size: 12px; }
.codex span.off { color: #b0a27c; border-color: #c9bd9c; background: #f1ead6; }

/* ---------- v9：過場卡（月份開場、月底結算、考試前）---------- */
.veil {
  position: absolute; inset: 0; z-index: 3; background: rgba(18, 28, 48, .86); color: #fff;
  display: grid; align-content: center; justify-items: center; gap: 6px; padding: 10px; text-align: center;
  opacity: 0; pointer-events: none; transition: opacity .22s;
}
.veil.show { opacity: 1; pointer-events: auto; }
.veil b { font-weight: normal; font-size: 30px; letter-spacing: 2px;
  text-shadow: 2px 2px 0 var(--goldEdge), -1px -1px 0 var(--goldEdge), 2px -1px 0 var(--goldEdge), -1px 2px 0 var(--goldEdge); }
.veil.show b { animation: veilIn .35s ease-out; }
@keyframes veilIn { from { transform: translateY(10px) scale(.92); opacity: 0; } }
.veil span { font-size: 14px; color: #ffe9a8; }
.veil small { position: absolute; bottom: 6px; left: 0; right: 0; font-size: 10px; color: rgba(255,255,255,.5); }
.sumrow { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 10px; }
.sumrow span { font-size: 13px; color: #fff; }
.sumrow i { font-style: normal; }
.sumrow i.up { color: #9ff0a8; }
.sumrow i.down { color: #ffb3aa; }
/* 彈出視窗滑進來，不要啪一下出現 */
.modal { animation: fadeIn .2s ease-out; }
.modal .window { animation: popIn .26s ease-out; }
@keyframes fadeIn { from { opacity: 0; } }
@keyframes popIn { from { transform: translateY(16px) scale(.96); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .modal, .modal .window, .veil.show b, .banner.show { animation: none; } }

/* v10：月底結算卡要等人看完，提示字放大並閃動 */
.veil.hold small { font-size: 13px; color: #ffe9a8; bottom: 10px; animation: blink 1.2s ease-in-out infinite; }
@keyframes blink { 50% { opacity: .35; } }
.veil.hold .sumrow span { font-size: 15px; }

/* v11：爸媽的期望、福利社 */
.expect { font-size: 12px; margin: 6px 0 0; color: var(--ink); line-height: 1.4; }
.expect b { font-weight: normal; color: var(--bad); }
.expect:empty { display: none; }
button.chip { font-family: var(--font); cursor: pointer; }

/* v12：選單、讀書方法、同學、科系 */
.minor { grid-template-columns: repeat(4, 1fr); gap: 4px; }
.minor div { gap: 4px; padding: 2px; }
.gobar { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: end; }
.gobar .menu { padding: 10px 14px; font-size: 16px; }
.mate { display: grid; grid-template-columns: 40px 1fr; gap: 8px; align-items: center; background: #fff; border: 2px solid var(--navy); border-radius: 10px; padding: 6px 8px; margin-bottom: 6px; font-size: 14px; line-height: 1.4; }
.mate b { font-weight: normal; }
.mate small { font-size: 11px; color: var(--muted); }
.mate small.good { color: var(--good); }
.mface { width: 36px; height: 40px; image-rendering: pixelated; }
.mbar { height: 8px; background: #e6dcc0; border: 1px solid var(--navy); border-radius: 99px; overflow: hidden; margin: 2px 0; }
.mbar i { display: block; height: 100%; background: #ff7fa8; }
.dept { font-size: 18px; color: var(--goldEdge); }
.later { background: #fff; border: 2px dashed var(--navy); border-radius: 10px; padding: 6px 10px; font-size: 13px; line-height: 1.6; }
.sum.keep { margin-top: 6px; font-size: 12px; line-height: 1.6; background: #fff8e1; }
.sum.keep b { font-weight: normal; color: var(--navy); }
.later b { font-weight: normal; color: var(--navy); }
.later.alt { border-color: var(--goldEdge); background: #fff8e0; }
.sum b { font-weight: normal; color: var(--navy); }

/* v13 */
.sumrow .lvup { color: #ffe08a; }
.subc i { white-space: nowrap; font-size: 9px; }

/* v14：性別與名字、寵物、裝潢 */
.seg { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 8px; }
.act.on, .skinbtn.on { background: #ffe9a8; border-color: var(--goldEdge); box-shadow: 0 2px 0 var(--goldEdge); }
.skinbtn { background: #fff; border: 3px solid var(--navy); border-radius: 10px; padding: 4px; box-shadow: 0 3px 0 var(--navy); }
.pick small { display: block; text-align: center; font-size: 12px; }
.namerow { display: grid; grid-template-columns: 1fr auto; gap: 6px; }
.namerow input { font-family: var(--font); font-size: 18px; padding: 6px 10px; border: 3px solid var(--navy); border-radius: 10px; background: #fff; color: var(--ink); min-width: 0; }
.petpic { width: 72px; height: 66px; image-rendering: pixelated; margin: 0 auto; }
.shop.two { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.shop.two .row { margin-bottom: 0; }
.who { text-align: center; font-size: 15px; color: var(--muted); margin: 0 !important; }
p.q-note.good { color: var(--good); }

/* v15：寵物還沒餵時，選單按鈕右上角亮紅點 */
.gobar .menu { position: relative; }
.opts button { position: relative; }
.opts button .dot { position: absolute; top: -5px; right: -5px; width: 14px; height: 14px; background: #e5484d; border: 2px solid #fff; border-radius: 50%; }
.gobar .menu.dot::after { content: ''; position: absolute; top: -4px; right: -4px; width: 12px; height: 12px;
  background: #e5484d; border: 2px solid #fff; border-radius: 50%; }

/* v16：寵物頭像（LPC 貓狗素材） */
.pick canvas.petpic, .mate canvas.petpic { width: 72px; height: 66px; }
.mate.petrow { grid-template-columns: 72px 1fr; }

/* v21：行動變 13 個，改成一排五個才放得進手機一個畫面 */
.palette { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
.palette .act { padding-left: 1px; padding-right: 1px; font-size: 13px; letter-spacing: -0.3px; }
.palette .act small { font-size: 9px; letter-spacing: -0.3px; overflow: hidden; }
.palette .act { min-height: 38px; }
.palette .act small.lv { color: #2c6aa8; }

/* v23：同學畫面的「約他」按鈕 */
.mate .hang { display: block; width: 100%; margin-top: 4px; min-height: 0; padding: 3px 6px; font-size: 13px; text-align: left; }
.mate .hang small { display: inline; margin-left: 6px; }
.mate .hang:disabled { opacity: .45; }

/* v25：成績單小格多一個體魄；過場卡裡的小動畫 */
.minor { grid-template-columns: repeat(5, 1fr); gap: 3px; }
.minor div { gap: 3px; padding: 2px 1px; }
.veil .ev { width: 64%; max-width: 250px; margin: 2px auto; border-width: 2px; }
/* v25：小格變六個（人際／歷程／體魄／魅力／領悟／效率） */
.minor { grid-template-columns: repeat(6, 1fr); gap: 2px; }
.minor div { gap: 2px; padding: 2px 0; }
.minor span { font-size: 9px; }
.minor b { font-size: 13px; }

/* v27：結果卡的浮層、結局頁的分享按鈕 */
.sharebox { position: fixed; inset: 0; z-index: 50; background: rgba(18, 28, 48, .92); display: none; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 14px; }
.sharebox.show { display: flex; }
.sharebox img { max-width: 100%; max-height: 72vh; border: 3px solid #fff; border-radius: 8px; }
.sharebox p { color: #ffe9a8; font-size: 13px; margin: 0; }
.sharebox div { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.sharebox .gold { padding: 8px 16px; font-size: 16px; text-decoration: none; display: inline-block; }
.row.share { width: 100%; margin-top: 8px; }
.win-title .link { font-size: 12px; }

/* v28：送禮、幫在意的人取名字 */
.mate .rename { display: inline-block; width: auto; min-height: 0; padding: 0 8px; font-size: 11px; margin-left: 4px; vertical-align: middle; }
.mate small.bday, .q-note b.bday { color: #c0392b; }

/* v29：備份代碼、結局導流 */
textarea.bk { width: 100%; box-sizing: border-box; font-family: ui-monospace, Menlo, monospace; font-size: 11px; line-height: 1.3; padding: 6px 8px; border: 2px solid var(--navy); border-radius: 8px; background: #fff; color: var(--ink); resize: none; word-break: break-all; }
.bkbtn { min-height: 0; padding: 4px 14px; margin: 4px 0 8px; }
.promo .promoline { display: block; font-size: 13px; color: var(--ink); line-height: 1.5; margin-bottom: 4px; }

/* v31：數學青於藍使用中的小標 */
.subc .appmark { display: block; font-style: normal; font-size: 9px; line-height: 1.2; color: #fff; background: #3d5fc4; border-radius: 6px; padding: 0 3px; margin: 1px auto 0; width: max-content; }

/* v33：雲端存檔 */
.cloudcode { font-size: 28px; letter-spacing: 3px; text-align: center; color: var(--navy); background: #fff; border: 3px solid var(--navy); border-radius: 10px; padding: 6px 4px; margin: 6px 0; user-select: all; -webkit-user-select: all; }
.bkbox { border: 2px solid var(--navy); border-radius: 10px; padding: 8px 10px; margin: 8px 0; background: rgba(255,255,255,.5); }
.bkbox > b { font-weight: normal; font-size: 16px; }
.bkbox summary { cursor: pointer; font-size: 14px; }
.bkbox .namerow input { text-transform: uppercase; letter-spacing: 2px; }

/* v34：排行榜 */
.board { max-height: 46vh; overflow-y: auto; border: 2px solid var(--navy); border-radius: 10px; background: #fff; }
.brow { display: grid; grid-template-columns: 26px 1fr auto; column-gap: 6px; align-items: baseline; padding: 4px 8px; border-bottom: 1px dashed #d8cfb8; font-size: 14px; line-height: 1.25; }
.brow:last-child { border-bottom: 0; }
.brow i { font-style: normal; color: var(--muted); grid-row: span 2; align-self: center; text-align: center; }
.brow b { font-weight: normal; }
.brow span { text-align: right; color: var(--navy); }
.brow small { grid-column: 2 / 4; font-size: 11px; color: var(--muted); }
.brow.me { background: #fff3c4; }
.seg.seg3 { grid-template-columns: 1fr 1fr 1fr; }
.q-note .rename { display: inline-block; width: auto; min-height: 0; padding: 0 8px; font-size: 11px; margin-left: 4px; vertical-align: middle; }

/* v35：人物傳記 */
.biochart { display: block; width: 100%; height: 62px; background: #fff; border: 2px solid var(--navy); border-radius: 8px; margin: 2px 0 6px; }
table.biot { font-size: 12px; }
table.biot th { font-weight: normal; color: var(--muted); font-size: 11px; text-align: right; padding: 2px 3px; }
table.biot th:first-child, table.biot td:first-child { text-align: left; white-space: nowrap; }
table.biot td { padding: 2px 3px; text-align: right; }
.tl { border-left: 3px solid var(--navy); margin: 4px 0 8px 4px; padding-left: 8px; }
.tl div { display: grid; grid-template-columns: 62px 1fr; gap: 6px; font-size: 13px; line-height: 1.35; padding: 2px 0; }
.tl i { font-style: normal; color: var(--muted); font-size: 11px; padding-top: 2px; }

/* v36：錄取通知書 */
.letter { position: relative; background: #fffdf2; border: 3px solid var(--navy); outline: 1px solid #c9a44a; outline-offset: -8px; border-radius: 4px; padding: 20px 18px 16px; margin: 4px 0 10px; text-align: center; box-shadow: 0 3px 0 #1a2f4a; }
.letter .lt-c { position: absolute; width: 12px; height: 12px; background: var(--navy); box-shadow: inset 0 0 0 3px var(--navy), inset 0 0 0 12px #c9a44a; }
.letter .lt-c.tl { left: -3px; top: -3px; } .letter .lt-c.tr { right: -3px; top: -3px; } .letter .lt-c.bl { left: -3px; bottom: -3px; } .letter .lt-c.br { right: -3px; bottom: -3px; }
.letter .lt-top { font-size: 12px; color: var(--muted); letter-spacing: 1px; }
.letter .lt-title { font-size: 30px; letter-spacing: 8px; margin: 2px 0 2px 8px; color: var(--ink); }
.letter .lt-rule { display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 8px; }
.letter .lt-rule span { width: 70px; height: 2px; background: #c9a44a; } .letter .lt-rule b { font-weight: normal; color: #c9a44a; font-size: 12px; }
.letter .lt-to { text-align: left; margin: 0 4px; font-size: 14px; } .letter .lt-to b { font-weight: normal; font-size: 20px; }
.letter .lt-body { text-align: left; margin: 4px 4px; font-size: 14px; color: #5b4a2e; }
.letter .lt-school { font-size: 30px; color: #b23a2f; margin: 8px 0 0; line-height: 1.2; }
.letter .lt-dept { font-size: 20px; color: #7a5a1e; margin: 2px 0 8px; line-height: 1.25; }
.letter .lt-foot { display: flex; justify-content: space-between; align-items: flex-end; margin: 8px 4px 0; font-size: 11px; color: var(--muted); text-align: left; }
.letter .lt-seal { display: grid; grid-template-columns: 1fr 1fr; width: 58px; height: 58px; border: 3px solid #c2332a; outline: 1px solid #c2332a; outline-offset: -6px; color: #c2332a; transform: rotate(-9deg); opacity: .86; align-items: center; justify-items: center; padding: 6px; box-sizing: border-box; animation: sealIn .5s ease-out .5s backwards; }
.letter .lt-seal b { font-weight: normal; font-size: 19px; line-height: 1; }
@keyframes sealIn { from { transform: rotate(-9deg) scale(2.2); opacity: 0; } to { transform: rotate(-9deg) scale(1); opacity: .86; } }
@media (prefers-reduced-motion: reduce) { .letter .lt-seal { animation: none; } }

/* v38：更新說明的條列（借用傳記時間線的樣式，左欄只放一個點） */
#modalBody .tl.notes div { grid-template-columns: 14px 1fr; }
#modalBody .tl.notes div i { text-align: center; }

/* ---------- 標題畫面（v41）：蓋住整個遊戲，視窗（備份、圖鑑…）開在它上面 ---------- */
/* 聲音提醒（v49）：每次打開先問，蓋在標題畫面上面 */
.soundask { position: fixed; left: 50%; top: calc(8px + env(safe-area-inset-top)); transform: translateX(-50%); z-index: 30; width: min(440px, calc(100vw - 16px)); display: flex; align-items: center; gap: 8px;
  background: #fff8e1; border: 3px solid var(--navy); border-radius: 12px; padding: 8px 10px; box-shadow: 0 4px 0 var(--navy); font-size: 14px; }
.soundask span { flex: 1; line-height: 1.3; }
.soundask small { display: block; font-size: 11px; color: var(--muted); }
.soundask button { padding: 6px 10px; font-size: 14px; white-space: nowrap; }
.soundask.hidden { display: none; }
/* 連到官網試答的連結（v55） */
.sitelink { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.ticker.show .sitelink { pointer-events: auto; color: #ffe9a8; white-space: nowrap; }
.appsec .sitelink { display: block; margin-top: 2px; color: #ffe9a8; }
a.t-brand { text-decoration: none; }
.snd-ask .titlescr .t-in { padding-top: calc(78px + env(safe-area-inset-top)); }
.titlescr { position: fixed; inset: 0; z-index: 9; overflow-y: auto; background: #223d5e;
  background-image: radial-gradient(ellipse 90% 46% at 50% 30%, rgba(120,170,225,.38), transparent 70%), linear-gradient(45deg, rgba(255,255,255,.04) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.04) 75%), linear-gradient(45deg, rgba(255,255,255,.04) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.04) 75%);
  background-size: 100% 100%, 24px 24px, 24px 24px; background-position: 0 0, 0 0, 12px 12px; animation: fadeIn .25s ease-out; }
.titlescr .t-in { max-width: 460px; min-height: 100dvh; margin: 0 auto; padding: calc(18px + env(safe-area-inset-top)) 18px calc(14px + env(safe-area-inset-bottom)); display: flex; flex-direction: column; align-items: center; text-align: center; }
.titlescr .t-kicker { margin: 6px 0 0; font-size: 15px; letter-spacing: 6px; color: #cfe1f5; }
.titlescr .t-logo { margin: 2px 0 10px; font-size: clamp(56px, 19vw, 86px); line-height: 1.05; font-weight: normal; letter-spacing: 4px; color: #ffe9a8; text-shadow: 0 4px 0 #8a5a12, 0 8px 0 #16304d; }
.titlescr .t-art { width: 100%; max-width: 400px; margin: 0 0 12px; border-color: #ffe9a8; box-shadow: 0 6px 0 #16304d; }
.titlescr .t-logo { position: relative; display: inline-block; }
.titlescr .t-seal { position: absolute; right: -14px; top: -40px; width: 44px; height: 44px; display: grid; place-items: center; font-style: normal; font-size: 15px; line-height: 1.15; letter-spacing: 1px; color: #ff6a5c; border: 3px solid #ff6a5c; border-radius: 6px; box-shadow: inset 0 0 0 2px #223d5e, inset 0 0 0 3px #ff6a5c; transform: rotate(11deg); text-shadow: none; background: rgba(34,61,94,.55); }
.titlescr .t-facts { display: flex; justify-content: center; gap: 8px; margin: 12px 0 2px; flex-wrap: wrap; }
.titlescr .t-facts span { font-size: 12px; letter-spacing: 1px; color: #cfe1f5; border: 2px solid rgba(207,225,245,.45); border-radius: 999px; padding: 3px 10px; }
.titlescr .t-btns .gold.big { animation: tPulse 2.2s ease-in-out infinite; }
@keyframes tPulse { 0%, 100% { box-shadow: 0 5px 0 #8a5a12, 0 0 0 0 rgba(255,216,106,0); } 50% { box-shadow: 0 5px 0 #8a5a12, 0 0 0 7px rgba(255,216,106,.22); } }
@media (prefers-reduced-motion: reduce) { .titlescr .t-btns .gold.big { animation: none; } }
.titlescr .t-tag { margin: 0 0 12px; font-size: 16px; line-height: 1.7; color: #fff; }
.titlescr .t-legacy { width: 100%; margin: 0 0 12px; padding: 8px 10px; background: var(--cream); border: 3px solid var(--navy); border-radius: 10px; font-size: 13px; line-height: 1.6; color: var(--ink); text-align: left; }
.titlescr .t-legacy b { color: #b23a2f; }
.titlescr .t-btns { width: 100%; display: grid; gap: 8px; }
.titlescr .t-btns .gold { width: 100%; font-size: 17px; padding: 10px; }
.titlescr .t-btns .gold.big { font-size: 22px; padding: 14px; }
.titlescr .t-btns .two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.titlescr .t-btns .two .gold { font-size: 15px; padding: 9px 4px; }
.titlescr .t-link { background: none; border: 0; padding: 6px; font: inherit; font-size: 14px; color: #cfe1f5; text-decoration: underline; cursor: pointer; }
.titlescr .t-note { margin: 8px 0 0; font-size: 12px; line-height: 1.6; color: #cfe1f5; }
.titlescr .t-foot { margin: auto 0 0; padding-top: 12px; font-size: 11px; color: rgba(255,255,255,.5); }
.titlescr .t-brand { display: flex; align-items: center; justify-content: center; gap: 10px; margin: auto 0 6px; font-size: 13px; letter-spacing: 1px; color: #dfe6ff; }
.titlescr .t-mark { width: 60px; height: 75px; image-rendering: auto; }
.titlescr .ret .t-mark { width: 48px; height: 60px; }
.titlescr .ret .t-logo { font-size: clamp(48px, 15vw, 68px); margin-bottom: 8px; }
.titlescr .ret .t-art { max-width: 320px; margin-bottom: 8px; }
.titlescr .ret .t-tag { font-size: 14px; margin-bottom: 8px; }
.titlescr .t-in > * { max-width: 100%; }
.titlescr .t-in > p, .titlescr .t-in > .t-legacy, .titlescr .t-in > .t-btns { align-self: stretch; }

/* 活動布告欄（v43） */
.shop .row .stars { color: #d9a400; letter-spacing: 1px; font-size: 12px; }
.shop .row small i { font-style: normal; }
.shop .row small i.good { color: #2f8f3b; }
.shop .row small i.bad { color: #c2453b; }

/* 福利社裡的數學青於藍專區（v43） */
.appsec { margin: 10px 0 4px; padding: 5px 8px; border-radius: 8px; background: #3d5fc4; color: #e9eeff; font-size: 11px; line-height: 1.5; }
.appsec b { display: inline-block; margin-right: 8px; padding: 0 6px; border-radius: 6px; background: #fff; color: #3d5fc4; font-weight: normal; font-size: 13px; }
.shop.app .row { border-color: #3d5fc4; }
.shop.app .row b { color: #2c46a0; }
.apptag { font-style: normal; font-size: 10px; color: #fff; background: #3d5fc4; border-radius: 6px; padding: 0 5px; margin-left: 4px; }

#modalBody .dice + p { margin-top: 14px; }
.bmrow { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 2px 0 10px; }
.bmrow select { font: inherit; font-size: 16px; padding: 6px 8px; border: 3px solid var(--navy); border-radius: 10px; background: #fff; color: inherit; }
