/* @font-face 시작 — tools/subset-font.py 가 만듦 (손으로 고치지 마세요) */
@font-face {
  font-family: 'Galmuri11';
  src: url('../fonts/galmuri-ext.woff2') format('woff2');
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+20A3-20A4, U+20A7, U+20A9, U+20AC, U+20B9, U+20BD, U+2103, U+2109, U+2113, U+2116, U+2121-2122, U+2126, U+212E, U+2150-217F, U+2189-218B, U+2460-2482, U+249C-24CF, U+24EA-24F4, U+24FF, U+2501-259F, U+2706, U+2709, U+2753, U+2757, U+2776-2793, U+2800-28FF, U+3200-321C, U+3232-3233, U+3239, U+3260-327B, U+327E-327F, U+32A4-32A8, U+3303, U+330D, U+3314, U+3318, U+3322-3323, U+3326-3327, U+332B, U+3336, U+333B, U+3349-334A, U+334D, U+3351, U+3357, U+337B-337E, U+3380-3384, U+3388-33C1, U+33C3-33C6, U+33C8-33CA, U+33CD, U+33CF-33D0, U+33D3, U+33D6, U+33DB-33DD, U+AC02-AC03, U+AC05-AC06, U+AC0B-AC0F, U+AC18, U+AC1E-AC1F, U+AC21-AC23, U+AC25-AC2B, U+AC2E, U+AC32-AC37, U+AC3A-AC3B, U+AC3D-AC3F, U+AC41-AC4A, U+AC4C, U+AC4E-AC53, U+AC55-AC57, U+AC59-AC5B, U+AC5D-AC6F, U+AC72-AC73, U+AC75-AC76, U+AC79, U+AC7B-AC7F, U+AC82, U+AC87-AC88, U+AC8D-AC8F, U+AC91-AC93, U+AC95-AC9B, U+AC9E, U+ACA2-ACA7, U+ACAB, U+ACAD-ACAE, U+ACB1-ACB7, U+ACBA, U+ACBE-ACC0, U+ACC2-ACC3, U+ACC5-ACC7, U+ACC9-ACCB, U+ACCD-ACD4, U+ACD6, U+ACD8-ACDF, U+ACE2-ACE3, U+ACE5-ACE6, U+ACE9, U+ACEB, U+ACED-ACEE, U+ACF2, U+ACF4, U+ACF7-ACFB, U+ACFE-ACFF, U+AD01-AD03, U+AD05, U+AD07-AD0B, U+AD0E, U+AD10, U+AD12-AD17, U+AD19-AD1B, U+AD1D-AD1F, U+AD21-AD28, U+AD2A-AD2B, U+AD2E-AD33, U+AD36-AD37, U+AD39-AD3B, U+AD3D-AD43, U+AD46, U+AD48, U+AD4A-AD4F, U+AD51-AD53, U+AD55-AD57, U+AD59-AD60, U+AD62, U+AD64-AD6B, U+AD6E-AD6F, U+AD71-AD72, U+AD77-AD7A, U+AD7E, U+AD80, U+AD83-AD87, U+AD8A-AD8B, U+AD8D-AD8F, U+AD91-AD9B, U+AD9E-ADA3, U+ADA5-ADB6, U+ADB8-ADBF, U+ADC2-ADC3, U+ADC5-ADC7, U+ADC9-ADCF, U+ADD2, U+ADD4-ADDB, U+ADDD-ADDF, U+ADE1-ADE3, U+ADE5-ADF7, U+ADFA-ADFB, U+ADFD-ADFE, U+AE02-AE07, U+AE0A, U+AE0C, U+AE0E-AE13, U+AE15-AE2F, U+AE32-AE33, U+AE35-AE36, U+AE39, U+AE3B-AE3F, U+AE42, U+AE44, U+AE47-AE49, U+AE4B, U+AE4F, U+AE51-AE53, U+AE55, U+AE57-AE5B, U+AE5E, U+AE62-AE64, U+AE66-AE67, U+AE6A-AE6B, U+AE6D-AE6F, U+AE71-AE77, U+AE7A, U+AE7E-AE83, U+AE86-AE8B, U+AE8D-AEBB, U+AEBF, U+AEC1-AEC3, U+AEC5-AECB, U+AECE, U+AED2-AED7, U+AEDA-AEDB, U+AEDD-AEE7, U+AEE9-AEEA, U+AEEC, U+AEEE-AEF3, U+AEF5-AEF7, U+AEF9-AEFB, U+AEFD-AF06, U+AF09-AF0C, U+AF0E-AF0F, U+AF11-AF2B, U+AF2E-AF2F, U+AF31, U+AF33, U+AF35-AF3B, U+AF3E, U+AF40, U+AF44-AF47, U+AF4A-AF4F, U+AF51-AF5B, U+AF5E-AF63, U+AF66-AF78, U+AF7A-AF7F, U+AF81-AF83, U+AF85-AF87, U+AF89-AF8F, U+AF92-AF94, U+AF96-AF9B, U+AF9D-AFB7, U+AFBA-AFBB, U+AFBD-AFBF, U+AFC1-AFC6, U+AFCA, U+AFCC, U+AFCF-AFD3, U+AFD5-AFDB, U+AFDD-AFE7, U+AFEA-AFEF, U+AFF2-AFF3, U+AFF5-AFF7, U+AFF9-AFFF, U+B002-B003, U+B005-B00B, U+B00D-B00F, U+B011-B013, U+B015-B01B, U+B01E-B027, U+B029-B043, U+B046-B047, U+B049, U+B04B, U+B04D, U+B04F-B052, U+B056, U+B058, U+B05A-B05C, U+B05E-B07B, U+B07E-B07F, U+B081-B083, U+B085-B08B, U+B08E, U+B090, U+B092-B097, U+B09B, U+B09D-B09E, U+B0A3-B0A7, U+B0AA, U+B0B0, U+B0B2, U+B0B6-B0B7, U+B0B9-B0BB, U+B0BD-B0C3, U+B0C6, U+B0CA-B0CF, U+B0D2-B0D3, U+B0D5-B0D7, U+B0D9-B0DF, U+B0E1-B0E4, U+B0E6-B107, U+B10A, U+B10D-B10F, U+B111, U+B114-B117, U+B11A, U+B11E-B122, U+B126-B127, U+B129-B12B, U+B12D-B133, U+B136, U+B13A-B13F, U+B142-B143, U+B145-B147, U+B149-B14F, U+B152-B153, U+B156-B157, U+B159-B15B, U+B15D-B15F, U+B161-B177, U+B17A-B17B, U+B17D-B17F, U+B181, U+B183-B187, U+B18A, U+B18C, U+B18E-B191, U+B195-B197, U+B199-B19B, U+B19D-B1A7, U+B1A9-B1CB, U+B1CD-B1CF, U+B1D1-B1D3, U+B1D5-B1DB, U+B1DE, U+B1E0-B1E7, U+B1EA-B1EB, U+B1ED-B1EF, U+B1F1-B1F8, U+B1FA, U+B1FC, U+B1FE-B203, U+B206-B207, U+B209-B20A, U+B20D-B213, U+B216, U+B218, U+B21A-B21F, U+B221-B233, U+B235-B23B, U+B23D-B257, U+B259-B25B, U+B25D-B25F, U+B261-B267, U+B26A-B273, U+B276-B27B, U+B27D-B283, U+B286-B288, U+B28A-B28F, U+B292-B293, U+B295-B297, U+B29B-B29F, U+B2A2, U+B2A4, U+B2A7-B2A9, U+B2AB, U+B2AD-B2AF, U+B2B1-B2B3, U+B2B5-B2C7, U+B2CA-B2CB, U+B2CD-B2CF, U+B2D1, U+B2D3-B2D7, U+B2DA, U+B2DC, U+B2DE-B2E1, U+B2E3, U+B2E7, U+B2E9-B2EA, U+B2F0-B2F2, U+B2F6, U+B2FC-B2FE, U+B302-B303, U+B305-B307, U+B309-B30F, U+B312, U+B316-B31B, U+B31D-B353, U+B357, U+B359-B35A, U+B35D, U+B360-B363, U+B366, U+B368, U+B36A, U+B36C-B36D, U+B36F, U+B372-B373, U+B375-B377, U+B379-B37F, U+B382, U+B386-B38B, U+B38D-B38F, U+B391-B393, U+B395-B39F, U+B3A2-B3A7, U+B3A9-B3AB, U+B3AD-B3C3, U+B3C6-B3C7, U+B3C9-B3CA, U+B3CD, U+B3CF, U+B3D1-B3D3, U+B3D6, U+B3D8, U+B3DA, U+B3DC, U+B3DE-B3DF, U+B3E1-B3E3, U+B3E5-B3E7, U+B3E9-B3FB, U+B3FD-B40F, U+B411-B417, U+B419-B41B, U+B41D-B41F, U+B421-B427, U+B42A, U+B42C-B433, U+B435-B44F, U+B452-B453, U+B455-B457, U+B459-B45F, U+B462, U+B464, U+B466-B46B, U+B46D-B47F, U+B481-B487, U+B489-B49C, U+B49E-B4A3, U+B4A5-B4A7, U+B4A9-B4AB, U+B4AD-B4B4, U+B4B6, U+B4B8, U+B4BA-B4BF, U+B4C1-B4C3, U+B4C5-B4C7, U+B4C9-B4CF, U+B4D1-B4D4, U+B4D6-B4DB, U+B4DE-B4DF, U+B4E1-B4E2, U+B4E5, U+B4E7-B4EB, U+B4EE, U+B4F0, U+B4F2-B4F7, U+B4F9-B513, U+B516-B517, U+B519-B51A, U+B51D-B523, U+B526, U+B52B-B52F, U+B532-B533, U+B535-B537, U+B539-B53F, U+B542, U+B546-B54A, U+B54E-B54F, U+B551-B553, U+B555-B55B, U+B55E, U+B562-B59F, U+B5A2-B5A3, U+B5A5-B5A7, U+B5A9, U+B5AC-B5AF, U+B5B2, U+B5B6-B5BA, U+B5BE-B5BF, U+B5C1-B5C3, U+B5C5-B5CB, U+B5CE, U+B5D2-B5D7, U+B5D9-B5EB, U+B5ED-B60F, U+B612-B613, U+B615-B617, U+B619-B624, U+B626-B62B, U+B62D-B633, U+B635-B647, U+B649-B663, U+B665-B667, U+B669-B69B, U+B69E-B69F, U+B6A1-B6A3, U+B6A5-B6AA, U+B6AD-B6B0, U+B6B2-B6D3, U+B6D5-B6EF, U+B6F1-B6F3, U+B6F5-B6F7, U+B6F9-B6FF, U+B702-B704, U+B706-B727, U+B72A-B72B, U+B72D-B72E, U+B731-B737, U+B73A, U+B73C-B743, U+B745-B747, U+B749-B74B, U+B74D-B753, U+B756-B75F, U+B761-B763, U+B765-B767, U+B769-B76F, U+B772, U+B774, U+B776-B77B, U+B77E-B77F, U+B781-B783, U+B785-B78B, U+B78E, U+B793-B795, U+B79A-B79B, U+B79D-B79F, U+B7A1-B7A7, U+B7AA, U+B7AE-B7B3, U+B7B6-B7B7, U+B7B9-B7C6, U+B7C8, U+B7CA-B7EB, U+B7EE-B7EF, U+B7F1-B7F3, U+B7F5-B7FB, U+B7FE, U+B802-B806, U+B80A-B80B, U+B80D-B80F, U+B811-B817, U+B81A, U+B81C, U+B81E-B823, U+B826-B827, U+B829-B82B, U+B82D-B833, U+B836, U+B83A-B83F, U+B841-B843, U+B845-B850, U+B852, U+B854-B85B, U+B85E-B85F, U+B861-B863, U+B865-B86B, U+B86E, U+B870, U+B872-B877, U+B879-B87B, U+B87D-B88C, U+B88E-B8A7, U+B8A9-B8AF, U+B8B1-B8B3, U+B8B5-B8B7, U+B8B9-B8BF, U+B8C2, U+B8C4, U+B8C6-B8CB, U+B8CD-B8CF, U+B8D1-B8D3, U+B8D5-B8DC, U+B8DE, U+B8E0, U+B8E2-B8E7, U+B8EA-B8EB, U+B8ED-B8EF, U+B8F1-B8F7, U+B8FA, U+B8FC, U+B8FE-B903, U+B905-B917, U+B919-B91F, U+B921-B93B, U+B93E-B93F, U+B941-B943, U+B945-B94B, U+B94D-B94E, U+B950, U+B952-B957, U+B95A-B95B, U+B95D-B95F, U+B961-B967, U+B96A, U+B96C, U+B96E-B973, U+B976-B977, U+B979-B97B, U+B97D-B983, U+B986, U+B988, U+B98B-B98C, U+B98F-B9AB, U+B9AE-B9AF, U+B9B1-B9B3, U+B9B5-B9BB, U+B9BE, U+B9C0, U+B9C2-B9C7, U+B9CA-B9CB, U+B9CD, U+B9D3-B9D7, U+B9DA, U+B9DC, U+B9DF-B9E0, U+B9E2, U+B9E6-B9E7, U+B9E9-B9EB, U+B9ED-B9F3, U+B9F6, U+B9FB-B9FF, U+BA02-BA07, U+BA09-BA14, U+BA16-BA37, U+BA3A-BA3B, U+BA3D-BA3F, U+BA41, U+BA43-BA47, U+BA4A, U+BA4C, U+BA4F-BA52, U+BA56-BA57, U+BA59-BA5B, U+BA5D-BA63, U+BA66, U+BA6A-BA6F, U+BA72-BA73, U+BA75-BA77, U+BA79-BA82, U+BA86, U+BA88-BA8B, U+BA8D-BAA7, U+BAAA, U+BAAD-BAAF, U+BAB1, U+BAB3-BAB7, U+BABA, U+BABC, U+BABE-BAC3, U+BAC5-BAC7, U+BAC9-BAD7, U+BADA-BAFB, U+BAFD-BAFF, U+BB01-BB03, U+BB05-BB0C, U+BB0E, U+BB10, U+BB12-BB17, U+BB19-BB1B, U+BB1D-BB1F, U+BB21-BB28, U+BB2A, U+BB2C-BB33, U+BB37, U+BB39-BB3A, U+BB3F-BB43, U+BB46, U+BB48, U+BB4A-BB4C, U+BB4E, U+BB51-BB53, U+BB55-BB57, U+BB59-BB60, U+BB62, U+BB64-BB6B, U+BB6D-BB87, U+BB89-BB8B, U+BB8D-BB8F, U+BB91-BBA3, U+BBA5-BBA7, U+BBA9-BBAB, U+BBAD-BBB3, U+BBB5-BBB6, U+BBB8-BBBF, U+BBC1-BBC3, U+BBC5-BBC7, U+BBC9-BBCF, U+BBD1-BBD2, U+BBD4-BBF7, U+BBFA-BBFB, U+BBFD-BBFE, U+BC01, U+BC03-BC07, U+BC0A, U+BC0E, U+BC10, U+BC12-BC13, U+BC19-BC1A, U+BC20-BC23, U+BC26, U+BC28, U+BC2A-BC2C, U+BC2E-BC2F, U+BC32-BC33, U+BC35-BC37, U+BC39-BC3F, U+BC42, U+BC46-BC48, U+BC4A-BC4B, U+BC4E-BC4F, U+BC51-BC5C, U+BC5E-BC83, U+BC86-BC87, U+BC89-BC8A, U+BC8D, U+BC8F-BC93, U+BC96, U+BC98, U+BC9B-BC9F, U+BCA2-BCA3, U+BCA5-BCA6, U+BCA9-BCAF, U+BCB2, U+BCB6-BCBB, U+BCBE-BCBF, U+BCC1-BCC3, U+BCC5-BCCC, U+BCCE, U+BCD2-BCD4, U+BCD6-BCD7, U+BCD9-BCDB, U+BCDD-BCF3, U+BCF7, U+BCF9-BCFB, U+BCFD-BD03, U+BD06, U+BD08, U+BD0A-BD0F, U+BD11-BD13, U+BD15-BD23, U+BD25-BD2B, U+BD2D-BD3F, U+BD41-BD47, U+BD4A-BD4B, U+BD4D-BD4F, U+BD51-BD57, U+BD5A-BD63, U+BD65-BD67, U+BD69-BD7F, U+BD82-BD83, U+BD85-BD86, U+BD8B-BD8F, U+BD92, U+BD94, U+BD96-BD98, U+BD9B, U+BD9D-BDA3, U+BDA5-BDAF, U+BDB1-BDB7, U+BDB9-BDD3, U+BDD6-BDD7, U+BDD9-BDDB, U+BDDD-BDE8, U+BDEA-BDEF, U+BDF1-BDF3, U+BDF5-BDF7, U+BDF9-BDFF, U+BE01-BE02, U+BE04, U+BE06-BE0B, U+BE0E-BE0F, U+BE11-BE13, U+BE15-BE1B, U+BE1E, U+BE20-BE43, U+BE46-BE47, U+BE49-BE4B, U+BE4D, U+BE4F-BE53, U+BE56, U+BE58, U+BE5C-BE5F, U+BE62-BE63, U+BE65-BE67, U+BE69, U+BE6B-BE6F, U+BE72, U+BE76-BE7A, U+BE7E-BE7F, U+BE81-BE83, U+BE85-BE8B, U+BE8E, U+BE92-BE97, U+BE9A-BEA7, U+BEA9-BECF, U+BED2-BED3, U+BED5-BED6, U+BED9-BEDF, U+BEE1-BEE2, U+BEE6-BEEB, U+BEED-BF00, U+BF02-BF07, U+BF0A-BF17, U+BF1A, U+BF1E-BF3F, U+BF42-BF43, U+BF45-BF47, U+BF49-BF4F, U+BF52-BF54, U+BF56-BF93, U+BF95-BFAF, U+BFB1-BFC4, U+BFC6-BFCB, U+BFCE-BFCF, U+BFD1-BFD3, U+BFD5-BFDB, U+BFDD-BFDE, U+BFE0, U+BFE2-C03B, U+C03D-C050, U+C052-C057, U+C059-C05B, U+C05D-C05F, U+C061-C067, U+C06A-C08F, U+C092-C093, U+C095-C097, U+C099-C09F, U+C0A2, U+C0A4, U+C0A6-C0AB, U+C0AE, U+C0B1-C0B2, U+C0B7-C0BB, U+C0BE, U+C0C2-C0C4, U+C0C6-C0C7, U+C0CA-C0CB, U+C0CD-C0CF, U+C0D1-C0D7, U+C0DA, U+C0DE-C0E3, U+C0E6-C0E7, U+C0E9-C0EB, U+C0ED-C0F3, U+C0F6, U+C0F8, U+C0FA-C0FF, U+C101-C103, U+C105-C107, U+C109-C10F, U+C111-C114, U+C116-C11B, U+C121-C122, U+C125, U+C128-C12B, U+C12E, U+C132-C135, U+C137, U+C13A-C13B, U+C13D-C13F, U+C141-C147, U+C14A, U+C14E-C153, U+C156-C157, U+C159-C15B, U+C15D-C163, U+C166, U+C16A-C16F, U+C171-C173, U+C175-C177, U+C179-C184, U+C186-C18B, U+C18F, U+C191-C193, U+C195, U+C197-C19B, U+C19E, U+C1A0, U+C1A2-C1A4, U+C1A6-C1A7, U+C1AA-C1AB, U+C1AD-C1AF, U+C1B1-C1BC, U+C1BE-C1C3, U+C1C5-C1C7, U+C1C9-C1CB, U+C1CD-C1D3, U+C1D5-C1D6, U+C1D9-C1DF, U+C1E1-C1E3, U+C1E5-C1E7, U+C1E9-C1EF, U+C1F2, U+C1F4-C1FB, U+C1FE-C1FF, U+C201-C203, U+C205-C20B, U+C20E, U+C210, U+C212-C217, U+C21A-C21B, U+C21D-C21E, U+C221-C227, U+C22A, U+C22C, U+C22E, U+C230, U+C233, U+C235-C247, U+C249-C24F, U+C252-C253, U+C255-C257, U+C259-C25F, U+C261-C264, U+C266-C26B, U+C26E-C26F, U+C271-C273, U+C275-C27B, U+C27E, U+C280, U+C282-C287, U+C28A-C28F, U+C291-C297, U+C299-C29A, U+C29C, U+C29E-C2A3, U+C2A6-C2A7, U+C2A9-C2AB, U+C2AE-C2B3, U+C2B6, U+C2B8, U+C2BA-C2DB, U+C2DE-C2DF, U+C2E1-C2E2, U+C2E5-C2EA, U+C2EE, U+C2F0, U+C2F2-C2F5, U+C2F7, U+C2FA, U+C2FD-C2FF, U+C301-C307, U+C30A-C30B, U+C30E-C312, U+C316-C317, U+C319-C31B, U+C31D-C323, U+C326-C327, U+C32A-C344, U+C346-C367, U+C36A-C36B, U+C36D-C36F, U+C371, U+C373-C377, U+C37A-C37B, U+C37E-C383, U+C385-C387, U+C389-C38B, U+C38D-C3BF, U+C3C1-C3D7, U+C3DA-C3DB, U+C3DD-C3DE, U+C3E1, U+C3E3-C3E7, U+C3EA-C3EC, U+C3EE-C3F3, U+C3F6-C3F7, U+C3F9-C407, U+C409-C40F, U+C411-C423, U+C425-C42B, U+C42D-C42F, U+C431-C433, U+C435-C43B, U+C43E-C447, U+C449-C463, U+C466-C467, U+C469-C46B, U+C46D-C473, U+C476-C478, U+C47A-C47F, U+C481-C493, U+C495-C49B, U+C49D-C4B7, U+C4B9-C4BB, U+C4BD-C4E8, U+C4EA-C4EF, U+C4F2-C4F3, U+C4F5-C4F7, U+C4F9, U+C4FB-C4FE, U+C502-C50B, U+C50D-C50F, U+C511-C513, U+C515-C51B, U+C51D-C527, U+C52A-C52B, U+C52D-C52F, U+C531-C537, U+C53A, U+C53C, U+C53E-C543, U+C546-C547, U+C54B, U+C54F-C552, U+C556, U+C55A-C55C, U+C55F, U+C562-C563, U+C565-C567, U+C569-C56F, U+C572, U+C576-C57B, U+C57E-C57F, U+C581-C583, U+C585-C586, U+C588-C58B, U+C58E, U+C590, U+C592-C594, U+C596, U+C599-C59B, U+C59D-C59F, U+C5A1-C5A8, U+C5AA-C5B3, U+C5B6-C5B7, U+C5BA, U+C5BF-C5C3, U+C5CB, U+C5CD, U+C5CF, U+C5D2-C5D3, U+C5D5-C5D7, U+C5D9-C5DF, U+C5E2, U+C5E4, U+C5E6-C5EB, U+C5EF, U+C5F1-C5F3, U+C5F5, U+C5F8-C5FB, U+C602-C604, U+C609-C60B, U+C60D-C60F, U+C611-C617, U+C61A, U+C61D-C623, U+C626-C627, U+C629-C62B, U+C62F, U+C631-C632, U+C636, U+C638, U+C63A, U+C63C-C63F, U+C642-C643, U+C645-C647, U+C649-C64F, U+C652, U+C656-C65B, U+C65E-C65F, U+C661-C66B, U+C66D-C66E, U+C670, U+C672-C677, U+C67A-C67B, U+C67D-C67F, U+C681-C687, U+C68A, U+C68C, U+C68E-C693, U+C696-C697, U+C699-C69B, U+C69D-C6A3, U+C6A6, U+C6A8, U+C6AA-C6AF, U+C6B2-C6B3, U+C6B5-C6B7, U+C6BB-C6BF, U+C6C2, U+C6C4, U+C6C6-C6CB, U+C6CE-C6CF, U+C6D1-C6D3, U+C6D5-C6DB, U+C6DE-C6DF, U+C6E2-C6E7, U+C6EA-C6EB, U+C6ED-C6EF, U+C6F1-C6F7, U+C6FA-C6FC, U+C6FE-C703, U+C706-C707, U+C709-C70B, U+C70D-C713, U+C716, U+C718, U+C71A-C71F, U+C722-C723, U+C725-C727, U+C729-C72F, U+C732, U+C734, U+C736, U+C738-C73B, U+C73E-C73F, U+C741-C743, U+C745-C749, U+C74B, U+C74E, U+C750, U+C759-C75B, U+C75D-C75F, U+C761-C767, U+C769-C76A, U+C76C-C773, U+C776-C777, U+C779-C77B, U+C77F-C782, U+C786, U+C78B-C78D, U+C78F, U+C792-C793, U+C795, U+C799, U+C79B-C79F, U+C7A2, U+C7A7-C7AB, U+C7AE-C7AF, U+C7B1-C7B3, U+C7B5-C7BB, U+C7BE, U+C7C2-C7C7, U+C7CA-C7CB, U+C7CD, U+C7CF, U+C7D1-C7D7, U+C7D9-C7DC, U+C7DE-C7E3, U+C7E5-C7E7, U+C7E9-C7EB, U+C7ED-C7FF, U+C802-C803, U+C805-C807, U+C809, U+C80B-C80F, U+C812, U+C814, U+C817-C81B, U+C81E-C81F, U+C821-C823, U+C825-C82B, U+C82E, U+C830, U+C832-C837, U+C839-C83B, U+C83D-C83F, U+C841-C847, U+C84A-C84B, U+C84E-C853, U+C855-C86F, U+C872-C873, U+C875-C877, U+C879, U+C87B-C87F, U+C882, U+C884, U+C888-C88A, U+C88E-C893, U+C895-C89C, U+C89E, U+C8A0, U+C8A2-C8A7, U+C8A9-C8BB, U+C8BE-C8C3, U+C8C5-C8C7, U+C8C9-C8CB, U+C8CD-C8D3, U+C8D6, U+C8D8, U+C8DA-C8DF, U+C8E2-C8E3, U+C8E5-C8F4, U+C8F6-C8FB, U+C8FE-C8FF, U+C901-C903, U+C907-C90B, U+C90E, U+C910, U+C912-C917, U+C919-C92B, U+C92D-C933, U+C935-C94F, U+C952-C953, U+C955-C957, U+C959-C95F, U+C962, U+C964-C96B, U+C96D-C96F, U+C971-C973, U+C975-C97B, U+C97D-C987, U+C98A-C98B, U+C98D-C98F, U+C991-C997, U+C99A, U+C99C, U+C99E-C9BF, U+C9C2-C9C3, U+C9C5-C9C6, U+C9C9, U+C9CB-C9CF, U+C9D2, U+C9D4, U+C9D7-C9D8, U+C9DB, U+C9DE-C9DF, U+C9E1, U+C9E3, U+C9E5-C9E6, U+C9E8-C9EB, U+C9EE, U+C9F2-C9F7, U+C9FA-C9FB, U+C9FD-C9FF, U+CA01-CA07, U+CA0A, U+CA0E-CA13, U+CA15-CA17, U+CA19-CA28, U+CA2A-CA4B, U+CA4E-CA4F, U+CA51-CA53, U+CA55-CA5B, U+CA5E, U+CA62-CA67, U+CA69-CA7C, U+CA7E-CA83, U+CA85-CA97, U+CA99-CABB, U+CABE-CABF, U+CAC1-CAC3, U+CAC5-CACB, U+CACE, U+CAD0, U+CAD2, U+CAD4-CAD7, U+CADA-CADF, U+CAE1-CAEB, U+CAED-CAF3, U+CAF5-CB07, U+CB09-CB0F, U+CB11-CB13, U+CB15-CB17, U+CB19-CB1F, U+CB22-CB40, U+CB42-CB47, U+CB4A-CB4B, U+CB4D-CB4F, U+CB51-CB57, U+CB5A-CB5C, U+CB5E-CB63, U+CB65-CB77, U+CB7A-CB9B, U+CB9D-CBB7, U+CBB9-CBD3, U+CBD5-CBE3, U+CBE5-CBE6, U+CBE8, U+CBEA-CC0B, U+CC0E-CC0F, U+CC11-CC13, U+CC15-CC1B, U+CC1E-CC20, U+CC23-CC26, U+CC2A-CC2B, U+CC2D, U+CC2F, U+CC31-CC37, U+CC3A, U+CC3F-CC43, U+CC46-CC47, U+CC49-CC4B, U+CC4D-CC53, U+CC56, U+CC5A-CC5F, U+CC61-CC63, U+CC65, U+CC67, U+CC69-CC6F, U+CC71-CC74, U+CC76-CC97, U+CC9A-CC9B, U+CC9D-CC9F, U+CCA1-CCA7, U+CCAA, U+CCAE-CCB3, U+CCB6-CCB7, U+CCB9-CCBB, U+CCBD-CCC3, U+CCC6, U+CCC8, U+CCCA-CCCF, U+CCD1-CCD3, U+CCD5-CCE3, U+CCE5-CCEB, U+CCED-CCEF, U+CCF1-CD00, U+CD02-CD07, U+CD0A-CD0B, U+CD0D-CD0F, U+CD11-CD17, U+CD1A, U+CD1C, U+CD1E-CD23, U+CD25-CD27, U+CD29-CD2B, U+CD2D-CD38, U+CD3A-CD5B, U+CD5D-CD5F, U+CD61-CD63, U+CD65-CD6B, U+CD6E, U+CD70, U+CD72-CD77, U+CD79-CD87, U+CD89-CD93, U+CD96-CD97, U+CD99-CD9B, U+CD9D-CDA3, U+CDA6, U+CDA8, U+CDAA-CDAF, U+CDB1-CDC3, U+CDC5-CDCB, U+CDCD-CDCF, U+CDD1-CDE7, U+CDE9-CDEB, U+CDED-CDEF, U+CDF1-CDF7, U+CDFA, U+CDFC, U+CDFE-CE03, U+CE05-CE07, U+CE09-CE0B, U+CE0D-CE13, U+CE15-CE18, U+CE1A-CE1F, U+CE22-CE23, U+CE25-CE27, U+CE29-CE2F, U+CE32, U+CE34, U+CE36-CE57, U+CE5A-CE5B, U+CE5D-CE5E, U+CE62-CE67, U+CE6A, U+CE6C, U+CE6E-CE73, U+CE76-CE77, U+CE79-CE7B, U+CE7D-CE83, U+CE86, U+CE88, U+CE8A-CE8F, U+CE92-CE93, U+CE95-CE97, U+CE99-CE9F, U+CEA2, U+CEA6-CEAB, U+CEAE-CEC0, U+CEC2-CEE3, U+CEE6-CEE7, U+CEE9-CEEA, U+CEED-CEF3, U+CEF6, U+CEFA-CEFF, U+CF02-CF03, U+CF05-CF07, U+CF09-CF0F, U+CF12, U+CF14, U+CF16-CF1B, U+CF1D-CF1F, U+CF21-CF23, U+CF25-CF2B, U+CF2E, U+CF32-CF37, U+CF39-CF53, U+CF56-CF57, U+CF59-CF5B, U+CF5D-CF63, U+CF66, U+CF68, U+CF6A-CF6F, U+CF72-CF73, U+CF75-CF77, U+CF79-CF7F, U+CF81-CF84, U+CF86-CF8B, U+CF8D-CFA0, U+CFA2-CFA7, U+CFA9-CFAF, U+CFB1-CFC3, U+CFC5-CFDF, U+CFE2-CFE3, U+CFE5-CFE7, U+CFE9-CFEF, U+CFF2, U+CFF4, U+CFF6-CFFB, U+CFFD-CFFF, U+D001-D003, U+D005-D010, U+D012-D017, U+D019-D02C, U+D02E-D033, U+D036-D037, U+D039-D03B, U+D03D-D043, U+D046, U+D048, U+D04A-D04F, U+D051-D053, U+D055-D057, U+D059-D05F, U+D061-D06B, U+D06E-D06F, U+D071-D073, U+D075-D07B, U+D07E-D080, U+D082-D0A3, U+D0A6-D0A7, U+D0A9-D0AB, U+D0AD-D0B3, U+D0B6, U+D0B8, U+D0BA-D0BF, U+D0C2-D0C3, U+D0C5-D0C7, U+D0CA-D0CF, U+D0D2, U+D0D6-D0DB, U+D0DE-D0DF, U+D0E1-D0E3, U+D0E5-D0EB, U+D0EE, U+D0F2-D0F7, U+D0F9-D10C, U+D10E-D12F, U+D132-D133, U+D135-D137, U+D139, U+D13B-D13F, U+D142, U+D146-D14B, U+D14E-D14F, U+D151-D153, U+D155-D15B, U+D15E, U+D160, U+D162-D167, U+D169-D16B, U+D16D-D17B, U+D17D-D183, U+D185-D187, U+D189-D19F, U+D1A2-D1A3, U+D1A5-D1A7, U+D1A9-D1AF, U+D1B2, U+D1B4, U+D1B6-D1B9, U+D1BB, U+D1BD-D1BF, U+D1C1-D1D7, U+D1D9-D1F3, U+D1F5-D1F7, U+D1F9-D206, U+D208, U+D20A-D20F, U+D211-D22B, U+D22E-D22F, U+D231-D233, U+D235-D23B, U+D23E, U+D240, U+D242-D247, U+D249-D25B, U+D25D-D263, U+D265-D27F, U+D282-D283, U+D285-D287, U+D289-D28F, U+D292-D294, U+D296-D29B, U+D29D-D29F, U+D2A1-D2A3, U+D2A5-D2AB, U+D2AD-D2B0, U+D2B2-D2B7, U+D2BA-D2BB, U+D2BD-D2BE, U+D2C1, U+D2C3-D2C7, U+D2CA, U+D2CC-D2D3, U+D2D5-D2D7, U+D2D9-D2DB, U+D2DD-D2E3, U+D2E6-D2EF, U+D2F2-D2F3, U+D2F5-D2F7, U+D2F9-D2FF, U+D302, U+D304, U+D306-D30B, U+D30F, U+D311-D313, U+D315, U+D317-D31B, U+D31E, U+D322-D324, U+D326-D327, U+D32A-D32B, U+D32D-D32F, U+D331-D337, U+D33A, U+D33E-D343, U+D346-D37B, U+D37E-D37F, U+D381-D383, U+D385-D38B, U+D38E, U+D392-D397, U+D39A-D39B, U+D39D-D39F, U+D3A1-D3A7, U+D3AA, U+D3AC, U+D3AE-D3B3, U+D3B5-D3B7, U+D3B9-D3BB, U+D3BD-D3C3, U+D3C6-D3C7, U+D3CA-D3CF, U+D3D1-D3D7, U+D3D9-D3E0, U+D3E2, U+D3E4-D3EB, U+D3EE-D3EF, U+D3F1-D3F3, U+D3F5-D3FB, U+D3FE, U+D400, U+D402-D407, U+D409-D41C, U+D41E-D43F, U+D441-D443, U+D445-D45B, U+D45D-D45F, U+D461-D463, U+D465-D46C, U+D46E, U+D470-D477, U+D47A-D47B, U+D47D-D47E, U+D481, U+D483-D487, U+D48A, U+D48C, U+D48E-D493, U+D495-D4A8, U+D4AA-D4CB, U+D4CD-D4CF, U+D4D1-D4D3, U+D4D5-D4DB, U+D4DD-D4DE, U+D4E0-D4E7, U+D4E9-D4EB, U+D4ED-D4EF, U+D4F1-D4F7, U+D4F9-D4FA, U+D4FC, U+D4FE-D503, U+D505-D507, U+D509-D50B, U+D50D-D513, U+D516, U+D518-D53B, U+D53E-D53F, U+D541-D543, U+D545-D54B, U+D54E, U+D550, U+D552-D557, U+D55A-D55B, U+D55D-D55F, U+D561-D564, U+D566-D567, U+D56A, U+D56C, U+D56E-D573, U+D576-D577, U+D579-D57B, U+D57D-D583, U+D586, U+D58A-D58F, U+D591-D5A4, U+D5A6-D5C7, U+D5CA-D5CB, U+D5CD-D5CF, U+D5D1, U+D5D3-D5D7, U+D5DA, U+D5DC, U+D5DE-D5E3, U+D5E6-D5E7, U+D5E9-D5EB, U+D5ED-D5F3, U+D5F6, U+D5F8, U+D5FA-D5FF, U+D602-D603, U+D605-D607, U+D609-D60F, U+D612, U+D616-D61B, U+D61D-D61F, U+D621-D623, U+D625-D62C, U+D62E-D637, U+D63A-D63B, U+D63D-D63F, U+D641-D644, U+D646-D647, U+D64A, U+D64C, U+D64E-D650, U+D652-D653, U+D656-D657, U+D659-D65B, U+D65D-D666, U+D668, U+D66A-D66F, U+D672-D673, U+D675-D682, U+D684, U+D686-D68B, U+D68E-D68F, U+D691-D693, U+D695-D69C, U+D69E, U+D6A0, U+D6A2-D6A7, U+D6A9-D6AB, U+D6AD-D6AF, U+D6B1-D6B8, U+D6BA, U+D6BC-D6C3, U+D6C6-D6C7, U+D6C9-D6CB, U+D6CD-D6D0, U+D6D2-D6D3, U+D6D5-D6D6, U+D6D8, U+D6DA-D6DF, U+D6E1-D6E3, U+D6E5-D6E7, U+D6E9-D6EF, U+D6F1-D6F4, U+D6F6-D6FB, U+D6FE-D6FF, U+D701-D703, U+D705-D710, U+D712-D717, U+D71A-D71B, U+D71D-D71F, U+D721-D727, U+D72A, U+D72C, U+D72E-D733, U+D736-D737, U+D739-D73B, U+D73D-D743, U+D745-D746, U+D748, U+D74A-D74F, U+D752-D753, U+D755, U+D75A-D75F, U+D762, U+D764, U+D766-D768, U+D76A-D76B, U+D76D-D76F, U+D771-D773, U+D775-D77B, U+D77E-D780, U+D782-D787, U+D78A-D78B, U+D78D-D78F, U+D791-D797, U+D79A, U+D79C, U+D79E-D7A3, U+E000-E00D, U+E010-E01B, U+E020-E02E, U+E030-E03D, U+E040-E05D, U+E060-E06B, U+E070-E07E, U+E080-E08D, U+E090-E0A7, U+E0B0-E0B7, U+E0C0-E0CB, U+E0D0-E0DB, U+F000-F001, U+F007, U+F8FF, U+FE10-FE19, U+FE30, U+FF5F-FF60, U+FFE0-FFE6, U+FFE8, U+FFED-FFEE, U+FFFC-FFFD;
}
@font-face {
  font-family: 'Galmuri11';
  src: url('../fonts/galmuri-base.woff2') format('woff2');
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+20-7E, U+A0-FF, U+2010-2027, U+2030-2031, U+2038-203D, U+2043-2049, U+204B, U+2190-2193, U+2500, U+25A0-25AF, U+25B2-25B3, U+25B6-25B7, U+25BA-25BD, U+25C0-25C1, U+25C4-2603, U+2605-2606, U+2610-2612, U+262E, U+2630-2637, U+2639-263C, U+2660-2667, U+2669-266F, U+2680-2689, U+26A0, U+26C4, U+26D4, U+3000-3002, U+3007-3011, U+301C, U+3131-3164, U+AC00-AC01, U+AC04, U+AC07-AC0A, U+AC10-AC17, U+AC19-AC1D, U+AC20, U+AC24, U+AC2C-AC2D, U+AC2F-AC31, U+AC38-AC39, U+AC3C, U+AC40, U+AC4B, U+AC4D, U+AC54, U+AC58, U+AC5C, U+AC70-AC71, U+AC74, U+AC77-AC78, U+AC7A, U+AC80-AC81, U+AC83-AC86, U+AC89-AC8C, U+AC90, U+AC94, U+AC9C-AC9D, U+AC9F-ACA1, U+ACA8-ACAA, U+ACAC, U+ACAF-ACB0, U+ACB8-ACB9, U+ACBB-ACBD, U+ACC1, U+ACC4, U+ACC8, U+ACCC, U+ACD5, U+ACD7, U+ACE0-ACE1, U+ACE4, U+ACE7-ACE8, U+ACEA, U+ACEC, U+ACEF-ACF1, U+ACF3, U+ACF5-ACF6, U+ACFC-ACFD, U+AD00, U+AD04, U+AD06, U+AD0C-AD0D, U+AD0F, U+AD11, U+AD18, U+AD1C, U+AD20, U+AD29, U+AD2C-AD2D, U+AD34-AD35, U+AD38, U+AD3C, U+AD44-AD45, U+AD47, U+AD49, U+AD50, U+AD54, U+AD58, U+AD61, U+AD63, U+AD6C-AD6D, U+AD70, U+AD73-AD76, U+AD7B-AD7D, U+AD7F, U+AD81-AD82, U+AD88-AD89, U+AD8C, U+AD90, U+AD9C-AD9D, U+ADA4, U+ADB7, U+ADC0-ADC1, U+ADC4, U+ADC8, U+ADD0-ADD1, U+ADD3, U+ADDC, U+ADE0, U+ADE4, U+ADF8-ADF9, U+ADFC, U+ADFF-AE01, U+AE08-AE09, U+AE0B, U+AE0D, U+AE14, U+AE30-AE31, U+AE34, U+AE37-AE38, U+AE3A, U+AE40-AE41, U+AE43, U+AE45-AE46, U+AE4A, U+AE4C-AE4E, U+AE50, U+AE54, U+AE56, U+AE5C-AE5D, U+AE5F-AE61, U+AE65, U+AE68-AE69, U+AE6C, U+AE70, U+AE78-AE79, U+AE7B-AE7D, U+AE84-AE85, U+AE8C, U+AEBC-AEBE, U+AEC0, U+AEC4, U+AECC-AECD, U+AECF-AED1, U+AED8-AED9, U+AEDC, U+AEE8, U+AEEB, U+AEED, U+AEF4, U+AEF8, U+AEFC, U+AF07-AF08, U+AF0D, U+AF10, U+AF2C-AF2D, U+AF30, U+AF32, U+AF34, U+AF3C-AF3D, U+AF3F, U+AF41-AF43, U+AF48-AF49, U+AF50, U+AF5C-AF5D, U+AF64-AF65, U+AF79, U+AF80, U+AF84, U+AF88, U+AF90-AF91, U+AF95, U+AF9C, U+AFB8-AFB9, U+AFBC, U+AFC0, U+AFC7-AFC9, U+AFCB, U+AFCD-AFCE, U+AFD4, U+AFDC, U+AFE8-AFE9, U+AFF0-AFF1, U+AFF4, U+AFF8, U+B000-B001, U+B004, U+B00C, U+B010, U+B014, U+B01C-B01D, U+B028, U+B044-B045, U+B048, U+B04A, U+B04C, U+B04E, U+B053-B055, U+B057, U+B059, U+B05D, U+B07C-B07D, U+B080, U+B084, U+B08C-B08D, U+B08F, U+B091, U+B098-B09A, U+B09C, U+B09F-B0A2, U+B0A8-B0A9, U+B0AB-B0AF, U+B0B1, U+B0B3-B0B5, U+B0B8, U+B0BC, U+B0C4-B0C5, U+B0C7-B0C9, U+B0D0-B0D1, U+B0D4, U+B0D8, U+B0E0, U+B0E5, U+B108-B109, U+B10B-B10C, U+B110, U+B112-B113, U+B118-B119, U+B11B-B11D, U+B123-B125, U+B128, U+B12C, U+B134-B135, U+B137-B139, U+B140-B141, U+B144, U+B148, U+B150-B151, U+B154-B155, U+B158, U+B15C, U+B160, U+B178-B179, U+B17C, U+B180, U+B182, U+B188-B189, U+B18B, U+B18D, U+B192-B194, U+B198, U+B19C, U+B1A8, U+B1CC, U+B1D0, U+B1D4, U+B1DC-B1DD, U+B1DF, U+B1E8-B1E9, U+B1EC, U+B1F0, U+B1F9, U+B1FB, U+B1FD, U+B204-B205, U+B208, U+B20B-B20C, U+B214-B215, U+B217, U+B219, U+B220, U+B234, U+B23C, U+B258, U+B25C, U+B260, U+B268-B269, U+B274-B275, U+B27C, U+B284-B285, U+B289, U+B290-B291, U+B294, U+B298-B29A, U+B2A0-B2A1, U+B2A3, U+B2A5-B2A6, U+B2AA, U+B2AC, U+B2B0, U+B2B4, U+B2C8-B2C9, U+B2CC, U+B2D0, U+B2D2, U+B2D8-B2D9, U+B2DB, U+B2DD, U+B2E2, U+B2E4-B2E6, U+B2E8, U+B2EB-B2EF, U+B2F3-B2F5, U+B2F7-B2FB, U+B2FF-B301, U+B304, U+B308, U+B310-B311, U+B313-B315, U+B31C, U+B354-B356, U+B358, U+B35B-B35C, U+B35E-B35F, U+B364-B365, U+B367, U+B369, U+B36B, U+B36E, U+B370-B371, U+B374, U+B378, U+B380-B381, U+B383-B385, U+B38C, U+B390, U+B394, U+B3A0-B3A1, U+B3A8, U+B3AC, U+B3C4-B3C5, U+B3C8, U+B3CB-B3CC, U+B3CE, U+B3D0, U+B3D4-B3D5, U+B3D7, U+B3D9, U+B3DB, U+B3DD, U+B3E0, U+B3E4, U+B3E8, U+B3FC, U+B410, U+B418, U+B41C, U+B420, U+B428-B429, U+B42B, U+B434, U+B450-B451, U+B454, U+B458, U+B460-B461, U+B463, U+B465, U+B46C, U+B480, U+B488, U+B49D, U+B4A4, U+B4A8, U+B4AC, U+B4B5, U+B4B7, U+B4B9, U+B4C0, U+B4C4, U+B4C8, U+B4D0, U+B4D5, U+B4DC-B4DD, U+B4E0, U+B4E3-B4E4, U+B4E6, U+B4EC-B4ED, U+B4EF, U+B4F1, U+B4F8, U+B514-B515, U+B518, U+B51B-B51C, U+B524-B525, U+B527-B52A, U+B530-B531, U+B534, U+B538, U+B540-B541, U+B543-B545, U+B54B-B54D, U+B550, U+B554, U+B55C-B55D, U+B55F-B561, U+B5A0-B5A1, U+B5A4, U+B5A8, U+B5AA-B5AB, U+B5B0-B5B1, U+B5B3-B5B5, U+B5BB-B5BD, U+B5C0, U+B5C4, U+B5CC-B5CD, U+B5CF-B5D1, U+B5D8, U+B5EC, U+B610-B611, U+B614, U+B618, U+B625, U+B62C, U+B634, U+B648, U+B664, U+B668, U+B69C-B69D, U+B6A0, U+B6A4, U+B6AB-B6AC, U+B6B1, U+B6D4, U+B6F0, U+B6F4, U+B6F8, U+B700-B701, U+B705, U+B728-B729, U+B72C, U+B72F-B730, U+B738-B739, U+B73B, U+B744, U+B748, U+B74C, U+B754-B755, U+B760, U+B764, U+B768, U+B770-B771, U+B773, U+B775, U+B77C-B77D, U+B780, U+B784, U+B78C-B78D, U+B78F-B792, U+B796-B799, U+B79C, U+B7A0, U+B7A8-B7A9, U+B7AB-B7AD, U+B7B4-B7B5, U+B7B8, U+B7C7, U+B7C9, U+B7EC-B7ED, U+B7F0, U+B7F4, U+B7FC-B7FD, U+B7FF-B801, U+B807-B809, U+B80C, U+B810, U+B818-B819, U+B81B, U+B81D, U+B824-B825, U+B828, U+B82C, U+B834-B835, U+B837-B839, U+B840, U+B844, U+B851, U+B853, U+B85C-B85D, U+B860, U+B864, U+B86C-B86D, U+B86F, U+B871, U+B878, U+B87C, U+B88D, U+B8A8, U+B8B0, U+B8B4, U+B8B8, U+B8C0-B8C1, U+B8C3, U+B8C5, U+B8CC, U+B8D0, U+B8D4, U+B8DD, U+B8DF, U+B8E1, U+B8E8-B8E9, U+B8EC, U+B8F0, U+B8F8-B8F9, U+B8FB, U+B8FD, U+B904, U+B918, U+B920, U+B93C-B93D, U+B940, U+B944, U+B94C, U+B94F, U+B951, U+B958-B959, U+B95C, U+B960, U+B968-B969, U+B96B, U+B96D, U+B974-B975, U+B978, U+B97C, U+B984-B985, U+B987, U+B989-B98A, U+B98D-B98E, U+B9AC-B9AD, U+B9B0, U+B9B4, U+B9BC-B9BD, U+B9BF, U+B9C1, U+B9C8-B9C9, U+B9CC, U+B9CE-B9D2, U+B9D8-B9D9, U+B9DB, U+B9DD-B9DE, U+B9E1, U+B9E3-B9E5, U+B9E8, U+B9EC, U+B9F4-B9F5, U+B9F7-B9FA, U+BA00-BA01, U+BA08, U+BA15, U+BA38-BA39, U+BA3C, U+BA40, U+BA42, U+BA48-BA49, U+BA4B, U+BA4D-BA4E, U+BA53-BA55, U+BA58, U+BA5C, U+BA64-BA65, U+BA67-BA69, U+BA70-BA71, U+BA74, U+BA78, U+BA83-BA85, U+BA87, U+BA8C, U+BAA8-BAA9, U+BAAB-BAAC, U+BAB0, U+BAB2, U+BAB8-BAB9, U+BABB, U+BABD, U+BAC4, U+BAC8, U+BAD8-BAD9, U+BAFC, U+BB00, U+BB04, U+BB0D, U+BB0F, U+BB11, U+BB18, U+BB1C, U+BB20, U+BB29, U+BB2B, U+BB34-BB36, U+BB38, U+BB3B-BB3E, U+BB44-BB45, U+BB47, U+BB49, U+BB4D, U+BB4F-BB50, U+BB54, U+BB58, U+BB61, U+BB63, U+BB6C, U+BB88, U+BB8C, U+BB90, U+BBA4, U+BBA8, U+BBAC, U+BBB4, U+BBB7, U+BBC0, U+BBC4, U+BBC8, U+BBD0, U+BBD3, U+BBF8-BBF9, U+BBFC, U+BBFF-BC00, U+BC02, U+BC08-BC09, U+BC0B-BC0D, U+BC0F, U+BC11, U+BC14-BC18, U+BC1B-BC1F, U+BC24-BC25, U+BC27, U+BC29, U+BC2D, U+BC30-BC31, U+BC34, U+BC38, U+BC40-BC41, U+BC43-BC45, U+BC49, U+BC4C-BC4D, U+BC50, U+BC5D, U+BC84-BC85, U+BC88, U+BC8B-BC8C, U+BC8E, U+BC94-BC95, U+BC97, U+BC99-BC9A, U+BCA0-BCA1, U+BCA4, U+BCA7-BCA8, U+BCB0-BCB1, U+BCB3-BCB5, U+BCBC-BCBD, U+BCC0, U+BCC4, U+BCCD, U+BCCF-BCD1, U+BCD5, U+BCD8, U+BCDC, U+BCF4-BCF6, U+BCF8, U+BCFC, U+BD04-BD05, U+BD07, U+BD09, U+BD10, U+BD14, U+BD24, U+BD2C, U+BD40, U+BD48-BD49, U+BD4C, U+BD50, U+BD58-BD59, U+BD64, U+BD68, U+BD80-BD81, U+BD84, U+BD87-BD8A, U+BD90-BD91, U+BD93, U+BD95, U+BD99-BD9A, U+BD9C, U+BDA4, U+BDB0, U+BDB8, U+BDD4-BDD5, U+BDD8, U+BDDC, U+BDE9, U+BDF0, U+BDF4, U+BDF8, U+BE00, U+BE03, U+BE05, U+BE0C-BE0D, U+BE10, U+BE14, U+BE1C-BE1D, U+BE1F, U+BE44-BE45, U+BE48, U+BE4C, U+BE4E, U+BE54-BE55, U+BE57, U+BE59-BE5B, U+BE60-BE61, U+BE64, U+BE68, U+BE6A, U+BE70-BE71, U+BE73-BE75, U+BE7B-BE7D, U+BE80, U+BE84, U+BE8C-BE8D, U+BE8F-BE91, U+BE98-BE99, U+BEA8, U+BED0-BED1, U+BED4, U+BED7-BED8, U+BEE0, U+BEE3-BEE5, U+BEEC, U+BF01, U+BF08-BF09, U+BF18-BF19, U+BF1B-BF1D, U+BF40-BF41, U+BF44, U+BF48, U+BF50-BF51, U+BF55, U+BF94, U+BFB0, U+BFC5, U+BFCC-BFCD, U+BFD0, U+BFD4, U+BFDC, U+BFDF, U+BFE1, U+C03C, U+C051, U+C058, U+C05C, U+C060, U+C068-C069, U+C090-C091, U+C094, U+C098, U+C0A0-C0A1, U+C0A3, U+C0A5, U+C0AC-C0AD, U+C0AF-C0B0, U+C0B3-C0B6, U+C0BC-C0BD, U+C0BF-C0C1, U+C0C5, U+C0C8-C0C9, U+C0CC, U+C0D0, U+C0D8-C0D9, U+C0DB-C0DD, U+C0E4-C0E5, U+C0E8, U+C0EC, U+C0F4-C0F5, U+C0F7, U+C0F9, U+C100, U+C104, U+C108, U+C110, U+C115, U+C11C-C120, U+C123-C124, U+C126-C127, U+C12C-C12D, U+C12F-C131, U+C136, U+C138-C139, U+C13C, U+C140, U+C148-C149, U+C14B-C14D, U+C154-C155, U+C158, U+C15C, U+C164-C165, U+C167-C169, U+C170, U+C174, U+C178, U+C185, U+C18C-C18E, U+C190, U+C194, U+C196, U+C19C-C19D, U+C19F, U+C1A1, U+C1A5, U+C1A8-C1A9, U+C1AC, U+C1B0, U+C1BD, U+C1C4, U+C1C8, U+C1CC, U+C1D4, U+C1D7-C1D8, U+C1E0, U+C1E4, U+C1E8, U+C1F0-C1F1, U+C1F3, U+C1FC-C1FD, U+C200, U+C204, U+C20C-C20D, U+C20F, U+C211, U+C218-C219, U+C21C, U+C21F-C220, U+C228-C229, U+C22B, U+C22D, U+C22F, U+C231-C232, U+C234, U+C248, U+C250-C251, U+C254, U+C258, U+C260, U+C265, U+C26C-C26D, U+C270, U+C274, U+C27C-C27D, U+C27F, U+C281, U+C288-C289, U+C290, U+C298, U+C29B, U+C29D, U+C2A4-C2A5, U+C2A8, U+C2AC-C2AD, U+C2B4-C2B5, U+C2B7, U+C2B9, U+C2DC-C2DD, U+C2E0, U+C2E3-C2E4, U+C2EB-C2ED, U+C2EF, U+C2F1, U+C2F6, U+C2F8-C2F9, U+C2FB-C2FC, U+C300, U+C308-C309, U+C30C-C30D, U+C313-C315, U+C318, U+C31C, U+C324-C325, U+C328-C329, U+C345, U+C368-C369, U+C36C, U+C370, U+C372, U+C378-C379, U+C37C-C37D, U+C384, U+C388, U+C38C, U+C3C0, U+C3D8-C3D9, U+C3DC, U+C3DF-C3E0, U+C3E2, U+C3E8-C3E9, U+C3ED, U+C3F4-C3F5, U+C3F8, U+C408, U+C410, U+C424, U+C42C, U+C430, U+C434, U+C43C-C43D, U+C448, U+C464-C465, U+C468, U+C46C, U+C474-C475, U+C479, U+C480, U+C494, U+C49C, U+C4B8, U+C4BC, U+C4E9, U+C4F0-C4F1, U+C4F4, U+C4F8, U+C4FA, U+C4FF-C501, U+C50C, U+C510, U+C514, U+C51C, U+C528-C529, U+C52C, U+C530, U+C538-C539, U+C53B, U+C53D, U+C544-C545, U+C548-C54A, U+C54C-C54E, U+C553-C555, U+C557-C559, U+C55D-C55E, U+C560-C561, U+C564, U+C568, U+C570-C571, U+C573-C575, U+C57C-C57D, U+C580, U+C584, U+C587, U+C58C-C58D, U+C58F, U+C591, U+C595, U+C597-C598, U+C59C, U+C5A0, U+C5A9, U+C5B4-C5B5, U+C5B8-C5B9, U+C5BB-C5BE, U+C5C4-C5CA, U+C5CC, U+C5CE, U+C5D0-C5D1, U+C5D4, U+C5D8, U+C5E0-C5E1, U+C5E3, U+C5E5, U+C5EC-C5EE, U+C5F0, U+C5F4, U+C5F6-C5F7, U+C5FC-C601, U+C605-C608, U+C60C, U+C610, U+C618-C619, U+C61B-C61C, U+C624-C625, U+C628, U+C62C-C62E, U+C630, U+C633-C635, U+C637, U+C639, U+C63B, U+C640-C641, U+C644, U+C648, U+C650-C651, U+C653-C655, U+C65C-C65D, U+C660, U+C66C, U+C66F, U+C671, U+C678-C679, U+C67C, U+C680, U+C688-C689, U+C68B, U+C68D, U+C694-C695, U+C698, U+C69C, U+C6A4-C6A5, U+C6A7, U+C6A9, U+C6B0-C6B1, U+C6B4, U+C6B8-C6BA, U+C6C0-C6C1, U+C6C3, U+C6C5, U+C6CC-C6CD, U+C6D0, U+C6D4, U+C6DC-C6DD, U+C6E0-C6E1, U+C6E8-C6E9, U+C6EC, U+C6F0, U+C6F8-C6F9, U+C6FD, U+C704-C705, U+C708, U+C70C, U+C714-C715, U+C717, U+C719, U+C720-C721, U+C724, U+C728, U+C730-C731, U+C733, U+C735, U+C737, U+C73C-C73D, U+C740, U+C744, U+C74A, U+C74C-C74D, U+C74F, U+C751-C758, U+C75C, U+C760, U+C768, U+C76B, U+C774-C775, U+C778, U+C77C-C77E, U+C783-C785, U+C787-C78A, U+C78E, U+C790-C791, U+C794, U+C796-C798, U+C79A, U+C7A0-C7A1, U+C7A3-C7A6, U+C7AC-C7AD, U+C7B0, U+C7B4, U+C7BC-C7BD, U+C7BF-C7C1, U+C7C8-C7C9, U+C7CC, U+C7CE, U+C7D0, U+C7D8, U+C7DD, U+C7E4, U+C7E8, U+C7EC, U+C800-C801, U+C804, U+C808, U+C80A, U+C810-C811, U+C813, U+C815-C816, U+C81C-C81D, U+C820, U+C824, U+C82C-C82D, U+C82F, U+C831, U+C838, U+C83C, U+C840, U+C848-C849, U+C84C-C84D, U+C854, U+C870-C871, U+C874, U+C878, U+C87A, U+C880-C881, U+C883, U+C885-C887, U+C88B-C88D, U+C894, U+C89D, U+C89F, U+C8A1, U+C8A8, U+C8BC-C8BD, U+C8C4, U+C8C8, U+C8CC, U+C8D4-C8D5, U+C8D7, U+C8D9, U+C8E0-C8E1, U+C8E4, U+C8F5, U+C8FC-C8FD, U+C900, U+C904-C906, U+C90C-C90D, U+C90F, U+C911, U+C918, U+C92C, U+C934, U+C950-C951, U+C954, U+C958, U+C960-C961, U+C963, U+C96C, U+C970, U+C974, U+C97C, U+C988-C989, U+C98C, U+C990, U+C998-C999, U+C99B, U+C99D, U+C9C0-C9C1, U+C9C4, U+C9C7-C9C8, U+C9CA, U+C9D0-C9D1, U+C9D3, U+C9D5-C9D6, U+C9D9-C9DA, U+C9DC-C9DD, U+C9E0, U+C9E2, U+C9E4, U+C9E7, U+C9EC-C9ED, U+C9EF-C9F1, U+C9F8-C9F9, U+C9FC, U+CA00, U+CA08-CA09, U+CA0B-CA0D, U+CA14, U+CA18, U+CA29, U+CA4C-CA4D, U+CA50, U+CA54, U+CA5C-CA5D, U+CA5F-CA61, U+CA68, U+CA7D, U+CA84, U+CA98, U+CABC-CABD, U+CAC0, U+CAC4, U+CACC-CACD, U+CACF, U+CAD1, U+CAD3, U+CAD8-CAD9, U+CAE0, U+CAEC, U+CAF4, U+CB08, U+CB10, U+CB14, U+CB18, U+CB20-CB21, U+CB41, U+CB48-CB49, U+CB4C, U+CB50, U+CB58-CB59, U+CB5D, U+CB64, U+CB78-CB79, U+CB9C, U+CBB8, U+CBD4, U+CBE4, U+CBE7, U+CBE9, U+CC0C-CC0D, U+CC10, U+CC14, U+CC1C-CC1D, U+CC21-CC22, U+CC27-CC29, U+CC2C, U+CC2E, U+CC30, U+CC38-CC39, U+CC3B-CC3E, U+CC44-CC45, U+CC48, U+CC4C, U+CC54-CC55, U+CC57-CC59, U+CC60, U+CC64, U+CC66, U+CC68, U+CC70, U+CC75, U+CC98-CC99, U+CC9C, U+CCA0, U+CCA8-CCA9, U+CCAB-CCAD, U+CCB4-CCB5, U+CCB8, U+CCBC, U+CCC4-CCC5, U+CCC7, U+CCC9, U+CCD0, U+CCD4, U+CCE4, U+CCEC, U+CCF0, U+CD01, U+CD08-CD09, U+CD0C, U+CD10, U+CD18-CD19, U+CD1B, U+CD1D, U+CD24, U+CD28, U+CD2C, U+CD39, U+CD5C, U+CD60, U+CD64, U+CD6C-CD6D, U+CD6F, U+CD71, U+CD78, U+CD88, U+CD94-CD95, U+CD98, U+CD9C, U+CDA4-CDA5, U+CDA7, U+CDA9, U+CDB0, U+CDC4, U+CDCC, U+CDD0, U+CDE8, U+CDEC, U+CDF0, U+CDF8-CDF9, U+CDFB, U+CDFD, U+CE04, U+CE08, U+CE0C, U+CE14, U+CE19, U+CE20-CE21, U+CE24, U+CE28, U+CE30-CE31, U+CE33, U+CE35, U+CE58-CE59, U+CE5C, U+CE5F-CE61, U+CE68-CE69, U+CE6B, U+CE6D, U+CE74-CE75, U+CE78, U+CE7C, U+CE84-CE85, U+CE87, U+CE89, U+CE90-CE91, U+CE94, U+CE98, U+CEA0-CEA1, U+CEA3-CEA5, U+CEAC-CEAD, U+CEC1, U+CEE4-CEE5, U+CEE8, U+CEEB-CEEC, U+CEF4-CEF5, U+CEF7-CEF9, U+CF00-CF01, U+CF04, U+CF08, U+CF10-CF11, U+CF13, U+CF15, U+CF1C, U+CF20, U+CF24, U+CF2C-CF2D, U+CF2F-CF31, U+CF38, U+CF54-CF55, U+CF58, U+CF5C, U+CF64-CF65, U+CF67, U+CF69, U+CF70-CF71, U+CF74, U+CF78, U+CF80, U+CF85, U+CF8C, U+CFA1, U+CFA8, U+CFB0, U+CFC4, U+CFE0-CFE1, U+CFE4, U+CFE8, U+CFF0-CFF1, U+CFF3, U+CFF5, U+CFFC, U+D000, U+D004, U+D011, U+D018, U+D02D, U+D034-D035, U+D038, U+D03C, U+D044-D045, U+D047, U+D049, U+D050, U+D054, U+D058, U+D060, U+D06C-D06D, U+D070, U+D074, U+D07C-D07D, U+D081, U+D0A4-D0A5, U+D0A8, U+D0AC, U+D0B4-D0B5, U+D0B7, U+D0B9, U+D0C0-D0C1, U+D0C4, U+D0C8-D0C9, U+D0D0-D0D1, U+D0D3-D0D5, U+D0DC-D0DD, U+D0E0, U+D0E4, U+D0EC-D0ED, U+D0EF-D0F1, U+D0F8, U+D10D, U+D130-D131, U+D134, U+D138, U+D13A, U+D140-D141, U+D143-D145, U+D14C-D14D, U+D150, U+D154, U+D15C-D15D, U+D15F, U+D161, U+D168, U+D16C, U+D17C, U+D184, U+D188, U+D1A0-D1A1, U+D1A4, U+D1A8, U+D1B0-D1B1, U+D1B3, U+D1B5, U+D1BA, U+D1BC, U+D1C0, U+D1D8, U+D1F4, U+D1F8, U+D207, U+D209, U+D210, U+D22C-D22D, U+D230, U+D234, U+D23C-D23D, U+D23F, U+D241, U+D248, U+D25C, U+D264, U+D280-D281, U+D284, U+D288, U+D290-D291, U+D295, U+D29C, U+D2A0, U+D2A4, U+D2AC, U+D2B1, U+D2B8-D2B9, U+D2BC, U+D2BF-D2C0, U+D2C2, U+D2C8-D2C9, U+D2CB, U+D2D4, U+D2D8, U+D2DC, U+D2E4-D2E5, U+D2F0-D2F1, U+D2F4, U+D2F8, U+D300-D301, U+D303, U+D305, U+D30C-D30E, U+D310, U+D314, U+D316, U+D31C-D31D, U+D31F-D321, U+D325, U+D328-D329, U+D32C, U+D330, U+D338-D339, U+D33B-D33D, U+D344-D345, U+D37C-D37D, U+D380, U+D384, U+D38C-D38D, U+D38F-D391, U+D398-D399, U+D39C, U+D3A0, U+D3A8-D3A9, U+D3AB, U+D3AD, U+D3B4, U+D3B8, U+D3BC, U+D3C4-D3C5, U+D3C8-D3C9, U+D3D0, U+D3D8, U+D3E1, U+D3E3, U+D3EC-D3ED, U+D3F0, U+D3F4, U+D3FC-D3FD, U+D3FF, U+D401, U+D408, U+D41D, U+D440, U+D444, U+D45C, U+D460, U+D464, U+D46D, U+D46F, U+D478-D479, U+D47C, U+D47F-D480, U+D482, U+D488-D489, U+D48B, U+D48D, U+D494, U+D4A9, U+D4CC, U+D4D0, U+D4D4, U+D4DC, U+D4DF, U+D4E8, U+D4EC, U+D4F0, U+D4F8, U+D4FB, U+D4FD, U+D504, U+D508, U+D50C, U+D514-D515, U+D517, U+D53C-D53D, U+D540, U+D544, U+D54C-D54D, U+D54F, U+D551, U+D558-D559, U+D55C, U+D560, U+D565, U+D568-D569, U+D56B, U+D56D, U+D574-D575, U+D578, U+D57C, U+D584-D585, U+D587-D589, U+D590, U+D5A5, U+D5C8-D5C9, U+D5CC, U+D5D0, U+D5D2, U+D5D8-D5D9, U+D5DB, U+D5DD, U+D5E4-D5E5, U+D5E8, U+D5EC, U+D5F4-D5F5, U+D5F7, U+D5F9, U+D600-D601, U+D604, U+D608, U+D610-D611, U+D613-D615, U+D61C, U+D620, U+D624, U+D62D, U+D638-D639, U+D63C, U+D640, U+D645, U+D648-D649, U+D64B, U+D64D, U+D651, U+D654-D655, U+D658, U+D65C, U+D667, U+D669, U+D670-D671, U+D674, U+D683, U+D685, U+D68C-D68D, U+D690, U+D694, U+D69D, U+D69F, U+D6A1, U+D6A8, U+D6AC, U+D6B0, U+D6B9, U+D6BB, U+D6C4-D6C5, U+D6C8, U+D6CC, U+D6D1, U+D6D4, U+D6D7, U+D6D9, U+D6E0, U+D6E4, U+D6E8, U+D6F0, U+D6F5, U+D6FC-D6FD, U+D700, U+D704, U+D711, U+D718-D719, U+D71C, U+D720, U+D728-D729, U+D72B, U+D72D, U+D734-D735, U+D738, U+D73C, U+D744, U+D747, U+D749, U+D750-D751, U+D754, U+D756-D759, U+D760-D761, U+D763, U+D765, U+D769, U+D76C, U+D770, U+D774, U+D77C-D77D, U+D781, U+D788-D789, U+D78C, U+D790, U+D798-D799, U+D79B, U+D79D, U+FF01-FF5E;
}
/* @font-face 끝 */

:root {
  --ink: #1b1828;
  --ink-2: #262139;
  --ink-3: #3a3355;
  --ink-4: #4d4570;
  --paper: #fdf6e3;
  --muted: #b9b1d0;
  --sun: #ffd34e;
  --sun-dark: #d9a91a;
  --leaf: #4ade80;
  --rose: #ff6b8b;
  --sky: #7cc4f0;
  --radius: 10px;
  --font: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;
  --pixel: 'Galmuri11', var(--font);
  --safe-b: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--ink); color: var(--paper); font-family: var(--font); -webkit-tap-highlight-color: transparent; }
button, input, select { font: inherit; color: inherit; }
.hidden { display: none !important; }
.pixel { image-rendering: pixelated; image-rendering: crisp-edges; }
.pixel-font { font-family: var(--pixel); letter-spacing: 0.01em; }
.mirror { transform: scaleX(-1); }

/* 월드: 월드 해상도 캔버스를 CSS 로 정수 배율 확대 (render.js 가 크기·위치를 정함) */
#game {
  position: fixed; left: 0; top: 0; width: 100vw; height: 100vh; display: block; touch-action: none;
  transform-origin: 0 0; will-change: transform; image-rendering: pixelated; image-rendering: crisp-edges;
}
/* 글자 레이어: 화면 해상도, 클릭은 아래 월드로 통과 */
#ui { position: fixed; inset: 0; width: 100vw; height: 100vh; height: 100dvh; display: block; pointer-events: none; }

/* ── 카드·폼 ───────────────────────────── */

.screen {
  position: fixed; inset: 0; display: grid; place-items: center; padding: 16px; overflow: auto;
  background: radial-gradient(ellipse at center, rgba(27, 24, 40, 0.35), rgba(27, 24, 40, 0.88));
  z-index: 10;
}
.card {
  width: min(400px, 100%);
  background: var(--ink-2);
  border: 3px solid var(--ink);
  border-radius: var(--radius);
  box-shadow: 0 0 0 3px var(--ink-3), 8px 8px 0 3px rgba(0, 0, 0, 0.35);
  padding: 28px 24px 22px;
}
.logo { margin: 0; font-size: 40px; font-weight: 400; color: var(--sun); text-shadow: 3px 3px 0 var(--ink), 3px 3px 0 var(--ink); line-height: 1.1; }
.sub { margin: 8px 0 18px; color: var(--muted); font-size: 14px; }
.live { margin: -6px 0 16px; font-size: 13px; color: var(--leaf); }
h2 { margin: 0; font-size: 20px; font-weight: 400; }
h3 { margin: 18px 0 8px; font-size: 13px; color: var(--muted); font-weight: 700; letter-spacing: 0.02em; }

.tabs { display: flex; gap: 4px; background: var(--ink); padding: 4px; border-radius: 8px; margin-bottom: 16px; }
.tabs button { flex: 1; border: 0; padding: 8px; border-radius: 6px; background: transparent; color: var(--muted); cursor: pointer; font-weight: 700; }
.tabs button.on { background: var(--ink-3); color: var(--paper); }

.form { display: flex; flex-direction: column; gap: 12px; }
.form label, .settings label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--muted); font-weight: 600; }
.form input, .settings select, #people-search, #chat-input {
  background: var(--ink); color: var(--paper); border: 2px solid var(--ink-3); border-radius: 8px;
  padding: 10px 12px; font-size: 15px; outline: none; width: 100%;
}
.form input:focus, .settings select:focus, #people-search:focus, #chat-input:focus { border-color: var(--sun); }
/* 로그인: 구글 버튼 + (개발 모드) 테스트 로그인 */
.google-btn { display: flex; justify-content: center; min-height: 44px; margin: 6px 0 8px; }
.hint.center { text-align: center; }
.dev-form { margin-top: 16px; padding-top: 14px; border-top: 2px dashed var(--ink-3); }

.error { color: var(--rose); font-size: 13px; margin: 0; min-height: 1em; }
.warn { margin: 14px 0 0; font-size: 12px; color: var(--sun); line-height: 1.5; }
.hint { margin: 0; font-size: 12px; color: var(--muted); }

.btn {
  border: 2px solid var(--ink); border-radius: 8px; padding: 10px 16px; cursor: pointer; font-weight: 700;
  background: var(--ink-3); color: var(--paper); box-shadow: 0 3px 0 var(--ink); transition: transform 0.05s, filter 0.1s;
}
.btn:hover { filter: brightness(1.12); }
.btn:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--ink); }
.btn:disabled { opacity: 0.6; cursor: default; }
.btn.primary { background: var(--sun); color: var(--ink); box-shadow: 0 3px 0 var(--sun-dark), 0 3px 0 2px var(--ink); }
.btn.big { width: 100%; padding: 14px; font-size: 17px; font-family: var(--pixel); font-weight: 400; }
.btn.small { padding: 7px 12px; font-size: 13px; }
.btn.ghost { background: transparent; border-color: var(--ink-3); box-shadow: none; }
.link { background: none; border: 0; color: var(--muted); text-decoration: underline; cursor: pointer; font-size: 13px; }
.row { display: flex; gap: 8px; justify-content: center; align-items: center; flex-wrap: wrap; }
.row.end { justify-content: flex-end; margin-top: 14px; }

.avatar-stage {
  background:
    radial-gradient(ellipse 40% 10% at 50% 86%, rgba(0, 0, 0, 0.22), transparent 70%),
    repeating-conic-gradient(#7ec850 0 25%, #74bd48 0 50%) 0 0 / 12px 12px;
  border: 3px solid var(--ink); border-radius: 10px; padding: 6px; display: inline-flex; flex-direction: column; align-items: center;
}

/* ── 입장 준비 ─────────────────────────── */

.card.lobby { width: min(720px, 100%); display: grid; grid-template-columns: 200px 1fr; gap: 24px; }
.lobby-left { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.lobby-right { display: flex; flex-direction: column; gap: 12px; }
.cam-preview { position: relative; aspect-ratio: 4 / 3; background: var(--ink); border-radius: 10px; overflow: hidden; border: 2px solid var(--ink-3); }
.cam-preview video { width: 100%; height: 100%; object-fit: cover; display: block; }
.cam-off { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 16px; text-align: center; color: var(--muted); font-size: 13px; background: var(--ink); }
.cam-off p { margin: 0; }
.meter { height: 6px; background: var(--ink); border-radius: 3px; overflow: hidden; }
.meter i { display: block; height: 100%; width: 0; background: var(--leaf); transition: width 0.08s; }

/* ── HUD ─────────────────────────────────── */

#hud { position: fixed; inset: 0; pointer-events: none; z-index: 5; }
#hud > * { pointer-events: auto; }
#hud > #topbar, #hud > #videos { pointer-events: none; }
#topbar > *, #videos > * { pointer-events: auto; }

#topbar { position: absolute; top: 12px; left: 12px; right: 12px; display: flex; gap: 8px; align-items: flex-start; }
#zone-badge {
  background: rgba(27, 24, 40, 0.86); border: 2px solid var(--ink-3); border-radius: 10px;
  padding: 8px 12px; display: flex; flex-direction: column; gap: 3px; max-width: min(60vw, 320px);
  backdrop-filter: blur(4px);
}
#zone-badge b { font-size: 15px; color: var(--sun); font-weight: 400; }
#zone-badge span { font-size: 12px; color: var(--muted); }
#zone-badge.quiet { border-color: #6b5aa8; }
#zone-badge.private { border-color: var(--sun-dark); }
#online-pill {
  background: rgba(27, 24, 40, 0.86); border: 2px solid var(--ink-3); border-radius: 999px; padding: 6px 12px;
  font-size: 13px; font-weight: 700; white-space: nowrap;
}
#online-pill small { color: var(--muted); font-weight: 600; }

#videos {
  position: absolute; top: 12px; left: 50%; transform: translateX(-50%);
  display: flex; gap: 8px; max-width: calc(100vw - 420px); overflow-x: auto; padding: 2px 2px 6px; flex-wrap: nowrap;
  scrollbar-width: thin;
}
#videos.many .vtile { width: 128px; }
.vtile {
  position: relative; width: 168px; aspect-ratio: 4 / 3; flex: none; border-radius: 10px; overflow: hidden; cursor: zoom-in;
  background: var(--ink-2); border: 2px solid var(--ink-3); box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);
  transition: border-color 0.12s, box-shadow 0.12s, width 0.3s ease, margin 0.3s ease, opacity 0.42s ease, transform 0.42s cubic-bezier(0.2, 0.9, 0.3, 1.2);
}
/* 등장·퇴장 페이드 */
.vtile.enter { opacity: 0; transform: translateY(-10px) scale(0.86); }
.vtile.leave {
  opacity: 0; transform: scale(0.86); width: 0 !important; margin-right: -10px; border-width: 0; pointer-events: none;
  transition: opacity 0.38s ease, transform 0.38s ease, width 0.3s ease 0.2s, margin 0.3s ease 0.2s, border-width 0.3s ease 0.2s;
}
.vtile.big { width: min(480px, 70vw); cursor: zoom-out; }
.vtile.speaking { border-color: var(--leaf); box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.45), 0 4px 0 rgba(0, 0, 0, 0.3); }
/* 거리에 따라 영상이 옅어짐 (--near: 0.28 ~ 1, hud.js 가 부드럽게 바꿈) */
.vtile video, .vtile .ph, .vtile .snap { opacity: var(--near, 1); filter: saturate(var(--near, 1)); }
.vtile video { width: 100%; height: 100%; object-fit: cover; display: block; background: var(--ink); }
.vtile .snap { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vtile .ph { position: absolute; inset: 0; margin: auto; display: none; }
.vtile.nocam video { visibility: hidden; }
.vtile.nocam .ph { display: block; }
.vtile.connecting { opacity: 0.55; }
@media (prefers-reduced-motion: reduce) { .vtile, .vtile.leave { transition-duration: 0.01s !important; transition-delay: 0s !important; } }
.vname {
  position: absolute; left: 6px; bottom: 6px; max-width: calc(100% - 40px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  background: rgba(27, 24, 40, 0.82); padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 700;
}
.vinfo {
  position: absolute; right: 6px; bottom: 6px; width: 22px; height: 22px; border-radius: 6px; border: 0; cursor: pointer;
  background: rgba(27, 24, 40, 0.82); font-size: 12px; font-weight: 800; font-family: var(--pixel);
}

#status {
  position: absolute; top: 72px; left: 50%; transform: translateX(-50%);
  background: var(--rose); color: var(--ink); font-weight: 800; font-size: 13px; padding: 8px 14px; border-radius: 999px;
  box-shadow: 0 3px 0 rgba(0, 0, 0, 0.3);
}

#toolbar {
  position: absolute; bottom: calc(14px + var(--safe-b)); left: 50%; transform: translateX(-50%);
  display: flex; align-items: center; gap: 6px; background: rgba(27, 24, 40, 0.92); border: 2px solid var(--ink-3);
  border-radius: 14px; padding: 6px; box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);
}
.tool {
  width: 44px; height: 44px; border-radius: 10px; border: 0; background: var(--ink-3); cursor: pointer; font-size: 20px;
  position: relative; flex: none; transition: filter 0.1s, transform 0.05s;
}
.tool:hover { filter: brightness(1.25); }
.tool:active { transform: translateY(1px); }
.tool.on { background: var(--ink-4); box-shadow: inset 0 0 0 2px var(--sun); }
.tool.off { background: #5a2a3a; }
.tool.off::after {
  content: ""; position: absolute; left: 9px; right: 9px; top: 50%; height: 3px; background: var(--rose);
  transform: rotate(-40deg); border-radius: 2px;
}
.tool:disabled { opacity: 0.4; cursor: default; }
.sep { width: 2px; height: 28px; background: var(--ink-3); margin: 0 2px; flex: none; }
#help {
  position: absolute; bottom: calc(80px + var(--safe-b)); left: 50%; transform: translateX(-50%);
  margin: 0; font-size: 12px; color: rgba(253, 246, 227, 0.75); text-shadow: 0 1px 2px #000; white-space: nowrap; pointer-events: none;
}

#emote-bar {
  position: absolute; bottom: calc(80px + var(--safe-b)); left: 50%; transform: translateX(-50%);
  display: flex; gap: 4px; background: rgba(27, 24, 40, 0.92); border: 2px solid var(--ink-3); border-radius: 12px; padding: 6px;
}
.emote { width: 40px; height: 40px; border: 0; border-radius: 8px; background: transparent; font-size: 22px; cursor: pointer; }
.emote:hover { background: var(--ink-3); transform: translateY(-2px); }

/* 채팅 */
#chatbox {
  position: absolute; left: 12px; bottom: calc(14px + var(--safe-b)); width: min(340px, calc(100vw - 24px));
  display: flex; flex-direction: column; gap: 6px;
}
#chat-toggle {
  position: absolute; top: -40px; left: 0; width: 34px; height: 34px; border-radius: 8px; border: 2px solid var(--ink-3);
  background: rgba(27, 24, 40, 0.86); cursor: pointer; font-size: 15px;
}
#chat-log {
  max-height: 210px; overflow-y: auto; display: flex; flex-direction: column; gap: 3px; padding: 8px 10px;
  background: rgba(27, 24, 40, 0.55); border-radius: 10px; font-size: 13px; line-height: 1.45;
  mask-image: linear-gradient(to bottom, transparent 0, #000 22px); scrollbar-width: thin; transition: background 0.3s;
}
#chat-log:empty { display: none; }
#chatbox.fresh #chat-log, #chatbox:focus-within #chat-log, #chatbox:hover #chat-log { background: rgba(27, 24, 40, 0.82); }
#chatbox.collapsed #chat-log { display: none; }
.msg { word-break: break-word; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
.msg b { font-weight: 800; margin-right: 2px; }
.msg.system { color: var(--muted); font-size: 12px; }
#chat-input { padding: 9px 12px; font-size: 14px; background: rgba(27, 24, 40, 0.86); }

/* 미니맵 */
#minimap-wrap {
  position: absolute; right: 12px; bottom: calc(14px + var(--safe-b)); width: 260px; z-index: 1;
  background: rgba(27, 24, 40, 0.92); border: 2px solid var(--ink-3); border-radius: 12px; padding: 8px;
  box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);
}
#minimap { width: 100%; display: block; border-radius: 6px; cursor: crosshair; }
#warps { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.mini-btn {
  border: 1px solid var(--ink-4); background: var(--ink-3); color: var(--paper); border-radius: 6px; padding: 3px 7px;
  font-size: 11px; cursor: pointer; font-weight: 700; white-space: nowrap;
}
.mini-btn:hover { border-color: var(--sun); }
.mini-btn.go { background: var(--sun); color: var(--ink); border-color: var(--sun); }

/* 도구 막대가 넓어서 화면이 좁으면 지도를 막대 위로 */
@media (max-width: 1440px) { #minimap-wrap { bottom: calc(80px + var(--safe-b)); } }

/* 접속자 목록 */
#panel {
  position: absolute; top: 70px; right: 12px; bottom: calc(80px + var(--safe-b)); width: 300px;
  background: rgba(27, 24, 40, 0.95); border: 2px solid var(--ink-3); border-radius: 12px;
  display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3);
}
#panel header { display: flex; justify-content: space-between; align-items: center; padding: 12px 14px 8px; }
#panel header b { font-weight: 400; color: var(--sun); }
#panel header .modal-x { position: static; }
#people-search { margin: 0 12px 8px; width: calc(100% - 24px); padding: 8px 10px; font-size: 13px; }
#people-list { overflow-y: auto; padding: 0 8px 12px; flex: 1; scrollbar-width: thin; }
.people-sec { font-size: 11px; color: var(--muted); font-weight: 800; margin: 10px 6px 4px; letter-spacing: 0.04em; }
.person { display: flex; align-items: center; gap: 8px; padding: 6px; border-radius: 8px; }
.person:hover { background: var(--ink-3); }
.person .thumb { width: 33px; height: 45px; flex: none; }
.person-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.person-text b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.person-text span { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.person-actions { display: flex; gap: 4px; }

/* 알림 */
#toast {
  position: fixed; left: 50%; bottom: 140px; transform: translate(-50%, 12px); opacity: 0; z-index: 30;
  background: var(--paper); color: var(--ink); font-weight: 800; font-size: 14px; padding: 10px 16px; border-radius: 10px;
  border: 2px solid var(--ink); box-shadow: 0 4px 0 var(--ink); transition: opacity 0.2s, transform 0.2s; pointer-events: none;
  max-width: calc(100vw - 32px); text-align: center;
}
#toast.show { opacity: 1; transform: translate(-50%, 0); }
/* 대화 상자가 떠 있으면 알림은 그 위로 */
body:has(#dialog:not(.hidden)) #toast { bottom: 250px; }

/* ── 모달 ─────────────────────────────────── */

#modal { position: fixed; inset: 0; background: rgba(10, 8, 18, 0.62); display: grid; place-items: center; padding: 16px; z-index: 20; }
.modal-card {
  position: relative; width: min(420px, 100%); max-height: calc(100dvh - 32px); overflow: auto;
  background: var(--ink-2); border: 3px solid var(--ink); border-radius: var(--radius);
  box-shadow: 0 0 0 3px var(--ink-3), 8px 8px 0 3px rgba(0, 0, 0, 0.35); padding: 24px;
}
.modal-card.wide { width: min(700px, 100%); }
.modal-card h2 { margin-bottom: 14px; }
.modal-x { position: absolute; top: 10px; right: 10px; border: 0; background: none; color: var(--muted); font-size: 18px; cursor: pointer; padding: 4px 8px; }

.profile { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; }
.profile h2 { margin: 12px 0 0; font-size: 22px; }
.joined { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.where { margin: 2px 0 0; color: var(--sun); font-size: 13px; font-weight: 700; }
.empty { color: var(--muted); font-size: 13px; }
.links { list-style: none; padding: 0; margin: 14px 0; width: 100%; display: flex; flex-direction: column; gap: 8px; }
.link-row {
  display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 11px 14px; border-radius: 8px;
  background: var(--ink); border: 2px solid var(--ink-3); color: var(--paper); text-decoration: none; font-size: 14px;
}
.link-row:hover { border-color: var(--sun); }
.link-name { font-weight: 800; }
.link-row.ig .link-name { color: #ff8fb1; }
.link-row.li .link-name { color: #7cb7ff; }
.link-row.web .link-name { color: var(--leaf); }
.link-val { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.customize-body { display: flex; gap: 18px; align-items: flex-start; }
.avatar-stage.big { flex: none; gap: 8px; }
.dir-btns { display: flex; gap: 4px; }
.dir-btns .chip { padding: 4px 8px; }
.opts { display: flex; flex-direction: column; gap: 12px; flex: 1; min-width: 0; }
.opt-row { display: flex; flex-direction: column; gap: 6px; }
.opt-label { font-size: 12px; color: var(--muted); font-weight: 800; }
.opt-items { display: flex; flex-wrap: wrap; gap: 6px; }
.swatch { width: 26px; height: 26px; border-radius: 6px; border: 2px solid var(--ink); background: var(--c); cursor: pointer; }
.swatch.on { outline: 3px solid var(--sun); outline-offset: 1px; }
.chip { border: 2px solid var(--ink-3); background: var(--ink); color: var(--paper); border-radius: 6px; padding: 5px 9px; font-size: 13px; cursor: pointer; }
.chip.on { background: var(--sun); color: var(--ink); border-color: var(--sun); font-weight: 800; }

.settings .set-group { display: flex; flex-direction: column; gap: 12px; }
.settings label.check { flex-direction: row; align-items: center; gap: 8px; color: var(--paper); font-weight: 600; }
.settings input[type=range] { width: 100%; accent-color: var(--sun); }
.preview-wrap { display: flex; flex-direction: column; gap: 6px; }
.preview-video { width: 100%; aspect-ratio: 4 / 3; max-height: 190px; object-fit: cover; border-radius: 8px; background: var(--ink); }

/* ── 놀이: 대화 상자 · 카드 · 보상 · 행동 버튼 ─────────────── */

#dialog {
  position: fixed; left: 50%; bottom: calc(84px + var(--safe-b)); transform: translateX(-50%); z-index: 18;
  width: min(600px, calc(100vw - 20px)); display: flex; gap: 12px; align-items: flex-start;
  background: rgba(27, 24, 40, 0.97); border: 3px solid var(--paper); border-radius: 12px; padding: 12px 14px 14px;
  box-shadow: 0 0 0 3px var(--ink), 0 6px 0 rgba(0, 0, 0, 0.35); cursor: pointer; user-select: none;
  animation: dlg-in 0.16s ease-out;
}
@keyframes dlg-in { from { opacity: 0; transform: translate(-50%, 10px); } }
.dlg-face { width: 64px; height: 64px; flex: none; border-radius: 8px; background: radial-gradient(circle at 50% 70%, #3a3355, #262139); border: 2px solid var(--ink-3); }
.dlg-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.dlg-name { color: var(--sun); font-size: 14px; font-weight: 400; }
.dlg-text { margin: 0; font-size: 15px; line-height: 1.55; min-height: 3.1em; white-space: pre-wrap; word-break: keep-all; overflow-wrap: anywhere; }
.dlg-choices { display: flex; flex-direction: column; gap: 4px; }
.dlg-choice {
  text-align: left; border: 2px solid var(--ink-3); background: var(--ink-2); color: var(--paper); border-radius: 8px;
  padding: 7px 10px; font-size: 14px; cursor: pointer; display: flex; gap: 8px; align-items: center;
}
.dlg-choice i { font-style: normal; font-family: var(--pixel); color: var(--muted); font-size: 11px; }
.dlg-choice:hover, .dlg-choice.sel { border-color: var(--sun); background: var(--ink-3); }
.dlg-choice.sel i { color: var(--sun); }
.dlg-next { position: absolute; right: 12px; bottom: 6px; color: var(--sun); font-size: 11px; opacity: 0; }
#dialog.done .dlg-next { opacity: 1; animation: blink 0.8s steps(2) infinite; }
@keyframes blink { 50% { opacity: 0.15; } }

#card {
  position: fixed; left: 50%; top: 16%; transform: translateX(-50%); z-index: 22; width: min(340px, calc(100vw - 24px));
  background: var(--ink-2); border: 3px solid var(--paper); border-radius: 12px; padding: 16px; text-align: center;
  box-shadow: 0 0 0 3px var(--ink), 0 8px 0 rgba(0, 0, 0, 0.35); animation: card-in 0.28s cubic-bezier(0.2, 1.4, 0.4, 1);
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
@keyframes card-in { from { opacity: 0; transform: translate(-50%, 20px) scale(0.85); } }
#card .card-art { min-height: 60px; display: grid; place-items: center; padding: 10px 18px; border-radius: 10px; background: radial-gradient(ellipse at 50% 60%, rgba(255, 255, 255, 0.12), transparent 70%); }
#card .card-text { display: flex; flex-direction: column; gap: 4px; align-items: center; }
#card .card-title { font-size: 20px; font-weight: 400; color: var(--paper); }
#card .card-sub { color: var(--sun); font-size: 13px; font-weight: 700; }
#card p { margin: 2px 0 0; font-size: 13px; color: var(--muted); line-height: 1.5; }
#card .card-badge { background: var(--rose); color: var(--ink); font-weight: 900; font-size: 12px; padding: 2px 8px; border-radius: 999px; animation: badge-pop 0.5s cubic-bezier(0.2, 1.8, 0.4, 1) 0.15s both; }
@keyframes badge-pop { from { transform: scale(0.3); } }
#card .card-hint { color: var(--muted); font-size: 11px; margin-top: 4px; }
#card.tone-blue { border-color: #7cc4f0; }
#card.tone-purple { border-color: #c4a0f0; box-shadow: 0 0 0 3px var(--ink), 0 0 24px rgba(196, 160, 240, 0.45), 0 8px 0 rgba(0, 0, 0, 0.35); }
#card.tone-gold { border-color: var(--sun); box-shadow: 0 0 0 3px var(--ink), 0 0 32px rgba(255, 211, 78, 0.6), 0 8px 0 rgba(0, 0, 0, 0.35); }
#card.tone-gold .card-art { background: radial-gradient(ellipse at 50% 60%, rgba(255, 211, 78, 0.35), transparent 70%); }

#reward {
  position: fixed; left: 50%; top: 70px; transform: translateX(-50%); z-index: 24; max-width: calc(100vw - 24px);
  background: linear-gradient(180deg, #ffe680, var(--sun)); color: var(--ink); border: 3px solid var(--ink); border-radius: 12px;
  padding: 10px 16px; display: flex; flex-direction: column; gap: 3px; text-align: center; box-shadow: 0 5px 0 rgba(0, 0, 0, 0.35); pointer-events: none;
}
#reward b { font-size: 16px; font-weight: 400; }
#reward span { font-size: 12px; font-weight: 700; opacity: 0.85; }
#reward.pop { animation: reward-in 0.5s cubic-bezier(0.2, 1.6, 0.4, 1); }
@keyframes reward-in { from { opacity: 0; transform: translate(-50%, -20px) scale(0.7); } }

#act-btn {
  position: absolute; right: 14px; bottom: calc(84px + var(--safe-b)); min-width: 74px; height: 74px; border-radius: 50%;
  border: 3px solid var(--ink); background: var(--sun); color: var(--ink); box-shadow: 0 4px 0 var(--sun-dark), 0 4px 0 3px var(--ink);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; cursor: pointer; padding: 4px 8px; touch-action: manipulation;
}
#act-btn:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--sun-dark), 0 1px 0 3px var(--ink); }
#act-btn .act-icon { font-size: 24px; line-height: 1; }
#act-btn .act-label { font-size: 11px; font-weight: 900; max-width: 80px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (pointer: fine) { #act-btn { display: none; } }

#focus-pill, #mail-pill {
  background: rgba(27, 24, 40, 0.86); border: 2px solid var(--ink-3); border-radius: 999px; padding: 6px 12px; cursor: pointer;
  font-size: 13px; font-weight: 800; white-space: nowrap; color: var(--paper); font-variant-numeric: tabular-nums;
}
#focus-pill { border-color: #ff9f43; color: #ffd1a3; }
#mail-pill { border-color: var(--sky); animation: blink 1.2s steps(2) 4; }

/* 피아노 건반 */
#piano {
  position: absolute; left: 50%; bottom: calc(80px + var(--safe-b)); transform: translateX(-50%); z-index: 6;
  background: rgba(27, 24, 40, 0.95); border: 2px solid var(--ink-3); border-radius: 12px; padding: 10px 12px 12px;
  box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; gap: 8px; max-width: calc(100vw - 16px);
}
.phead { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.phead b { color: var(--sun); font-weight: 400; }
.poct { font-size: 12px; color: var(--leaf); font-weight: 800; }
.phelp { font-size: 11px; color: var(--muted); flex: 1; }
.pkeys { --kw: 40px; --bw: 26px; position: relative; height: 112px; width: calc(var(--n) * var(--kw)); max-width: 100%; align-self: center; }
.pkey { position: absolute; top: 0; border: 2px solid var(--ink); cursor: pointer; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 6px; touch-action: none; }
.pkey small { font-size: 10px; font-weight: 800; pointer-events: none; }
.pkey.white { width: var(--kw); height: 112px; background: #f7f3ea; color: #8a8498; border-radius: 0 0 6px 6px; z-index: 1; }
.pkey.black { width: var(--bw); height: 68px; background: #1d1b24; color: #8a8498; border-radius: 0 0 4px 4px; z-index: 2; }
.pkey.white.down { background: #ffe680; transform: translateY(2px); }
.pkey.black.down { background: #5b4fa0; }
.pkey.next { box-shadow: inset 0 -10px 0 rgba(74, 222, 128, 0.7); }
.psongs { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; font-size: 11px; color: var(--muted); }
.psongs .chip { padding: 3px 8px; font-size: 11px; }
.psong { display: flex; gap: 4px; flex-wrap: wrap; font-size: 11px; }
.psong span { padding: 2px 5px; border-radius: 4px; background: var(--ink); color: var(--muted); }
.psong span.done { color: var(--leaf); }
.psong span.now { background: var(--leaf); color: var(--ink); font-weight: 800; }

/* 게시판 */
.board .hint { margin: -6px 0 12px; }
.note-write { display: flex; flex-direction: column; gap: 6px; background: var(--ink); border: 2px solid var(--ink-3); border-radius: 10px; padding: 10px; margin-bottom: 14px; }
.note-write textarea, .letter-write textarea, .letter-read textarea {
  width: 100%; resize: vertical; background: transparent; color: var(--paper); border: 0; outline: none; font: inherit; font-size: 14px; line-height: 1.5;
}
.row.between { justify-content: space-between; flex-wrap: nowrap; }
.note-colors { display: flex; gap: 4px; }
.note-colors .swatch { width: 22px; height: 22px; }
.count { color: var(--muted); font-size: 11px; margin-left: auto; margin-right: 8px; }
.notes { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; padding: 10px; border-radius: 10px;
  background: #b98450 radial-gradient(circle at 20% 30%, #c9925a 0 2px, transparent 3px) 0 0 / 14px 14px; border: 4px solid #8a5a36; }
.note { position: relative; background: var(--c); color: #3a2a18; padding: 14px 10px 8px; border-radius: 2px; transform: rotate(var(--r)); box-shadow: 2px 3px 0 rgba(0, 0, 0, 0.25); min-height: 90px; display: flex; flex-direction: column; }
.note p { margin: 0; font-size: 13px; line-height: 1.45; flex: 1; word-break: keep-all; overflow-wrap: anywhere; }
.note .pin { position: absolute; top: 4px; left: 50%; width: 8px; height: 8px; margin-left: -4px; border-radius: 50%; background: #e74c3c; box-shadow: inset -2px -2px 0 rgba(0, 0, 0, 0.25); }
.note-foot { display: flex; justify-content: space-between; align-items: center; gap: 4px; margin-top: 6px; font-size: 10px; color: #7a6248; }
.note-act { border: 0; background: rgba(0, 0, 0, 0.08); border-radius: 4px; cursor: pointer; font-size: 11px; padding: 2px 5px; color: #5a4632; }
.notes .empty { grid-column: 1 / -1; color: #fff3e0; text-align: center; }

/* 유리병 편지 */
.paper {
  background: #fdf6e3 repeating-linear-gradient(transparent 0 23px, #e6d8b8 23px 24px); color: #3a2a18; border-radius: 6px;
  padding: 10px 12px; line-height: 24px; font-size: 14px; box-shadow: inset 0 0 0 2px #e6d8b8; margin: 10px 0;
}
.letter-write .paper textarea { color: #3a2a18; line-height: 24px; }
.paper.read { white-space: pre-wrap; word-break: keep-all; overflow-wrap: anywhere; min-height: 96px; font-size: 15px; }
.paper.small { font-size: 13px; padding: 6px 10px; margin: 6px 0 2px; white-space: pre-wrap; }
.letter-read .reply { display: flex; flex-direction: column; gap: 6px; background: var(--ink); border-radius: 10px; padding: 10px; border: 2px solid var(--ink-3); }
.mailbox .mail { border-bottom: 2px dashed var(--ink-3); padding: 8px 0 10px; }
.replies { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.reply-line { background: var(--ink); border-radius: 8px; padding: 6px 10px; font-size: 13px; }
.reply-line.new { border: 2px solid var(--sky); }
.reply-line b { color: var(--sky); font-size: 11px; }
.reply-line small { color: var(--muted); }

/* 집중 */
.focus .fnow { display: flex; flex-direction: column; align-items: center; gap: 2px; margin: 4px 0 12px; }
.focus .ftime { font-size: 40px; font-weight: 400; color: #ffd1a3; font-variant-numeric: tabular-nums; }
.focus .fnow span { font-size: 12px; color: var(--muted); }
.fstats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 16px 0 10px; }
.fstats div { background: var(--ink); border-radius: 8px; padding: 8px 4px; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.fstats b { font-size: 16px; color: var(--sun); }
.fstats small { font-size: 11px; color: var(--muted); }
.fbars { display: flex; gap: 6px; align-items: flex-end; height: 92px; padding: 6px 4px 0; background: var(--ink); border-radius: 8px; }
.fbar { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 2px; position: relative; }
.fbar i { width: 70%; background: #ff9f43; border-radius: 3px 3px 0 0; min-height: 2px; }
.fbar.today i { background: var(--sun); }
.fbar small { font-size: 10px; color: var(--muted); }
.fbar em { position: absolute; top: 0; font-style: normal; font-size: 10px; color: var(--paper); }
.frank { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; }
.frank li { display: flex; justify-content: space-between; background: var(--ink); border-radius: 8px; padding: 6px 10px; font-size: 13px; }
.frank li.me { border: 2px solid var(--sun); }
.frank li b { color: #ffd1a3; }

/* 가방 */
.bag-tabs { flex-wrap: wrap; }
.bag-tabs button { flex: 1 0 auto; font-size: 12px; padding: 7px 8px; }
.bag-body .hint { margin-bottom: 10px; }
.dex { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.dex-cell { background: var(--ink); border: 2px solid var(--ink-3); border-radius: 10px; padding: 6px 4px 8px; display: flex; flex-direction: column; align-items: center; gap: 2px; text-align: center; }
.dex-cell canvas { width: 48px; height: 48px; }
.dex-cell b { font-size: 12px; }
.dex-cell small { font-size: 10px; color: var(--muted); line-height: 1.3; }
.dex-cell.unknown b { color: var(--muted); }
.dex-cell.r1:not(.unknown) { border-color: #5a8ab8; }
.dex-cell.r2:not(.unknown) { border-color: #9a6ad8; }
.dex-cell.r3:not(.unknown) { border-color: var(--sun); box-shadow: 0 0 10px rgba(255, 211, 78, 0.35); }
.dex-cell .hearts { color: var(--rose); font-size: 12px; letter-spacing: 1px; }
.stamps { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.stamp { background: var(--ink); border: 2px dashed var(--ink-3); border-radius: 10px; padding: 8px; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.stamp i { font-style: normal; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; border: 2px solid var(--ink-3); color: var(--muted); font-size: 16px; }
.stamp.on { border-style: solid; border-color: #e8705e; }
.stamp.on i { border-color: #e8705e; color: #ff8a7a; transform: rotate(-12deg); }
.stamp b { font-size: 12px; text-align: center; }
.stamp small { font-size: 10px; color: var(--muted); }
.rewards h3 { margin: 14px 0 6px; }
.reward { display: flex; align-items: center; gap: 10px; background: var(--ink); border-radius: 10px; padding: 8px 10px; margin-bottom: 6px; border: 2px solid var(--ink-3); }
.reward.open { border-color: var(--sun); }
.reward > i { font-style: normal; font-size: 20px; }
.reward > div { flex: 1; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.reward b { font-size: 13px; }
.reward b small { color: var(--muted); font-weight: 600; }
.reward span { font-size: 11px; color: var(--muted); }
.reward em { font-style: normal; font-size: 12px; font-weight: 800; color: var(--sun); white-space: nowrap; }
.bar { height: 6px; background: var(--ink-3); border-radius: 3px; overflow: hidden; }
.bar i { display: block; height: 100%; background: var(--leaf); }
.stats-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px; }
.stats-list div { display: flex; justify-content: space-between; background: var(--ink); border-radius: 8px; padding: 8px 12px; font-size: 13px; }
.stats-list b { color: var(--sun); }
.chip.locked { opacity: 0.55; border-style: dashed; }
.chip.prize { border-color: var(--sun); }

/* 마이룸 */
.room-card { width: 100%; margin-top: 14px; display: flex; flex-direction: column; align-items: center; gap: 8px; border-top: 2px dashed var(--ink-3); padding-top: 12px; }
.room-head { width: 100%; display: flex; justify-content: space-between; align-items: center; }
.room-head b { color: var(--sun); font-weight: 400; }
.room-canvas { width: 100%; max-width: 320px; aspect-ratio: 10 / 8; border-radius: 8px; border: 3px solid var(--ink); background: var(--ink); }
.btn.like.on { background: var(--rose); color: var(--ink); }
.room-editor .room-stage { position: relative; width: min(480px, 100%); margin: 8px auto; }
.room-editor .room-canvas.big { max-width: none; width: 100%; display: block; }
.room-ghost { position: absolute; inset: 3px; width: calc(100% - 6px); height: calc(100% - 6px); cursor: crosshair; touch-action: none; }
.room-sel { margin: 4px 0 8px; }
.room-opts { display: flex; gap: 16px; flex-wrap: wrap; margin: 6px 0; }
.room-palette { display: grid; grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); gap: 6px; max-height: 210px; overflow-y: auto; padding: 2px; }
.pal { background: var(--ink); border: 2px solid var(--ink-3); border-radius: 8px; padding: 4px; display: flex; flex-direction: column; align-items: center; gap: 2px; cursor: pointer; color: var(--paper); }
.pal canvas { width: 32px; height: 32px; }
.pal span { font-size: 11px; }
.pal small { font-size: 10px; color: var(--muted); }
.pal.on { border-color: var(--sun); }
.pal.locked { opacity: 0.55; }
.bag-room { display: flex; flex-direction: column; align-items: center; }
.bag-room .room-card { border-top: 0; margin-top: 0; }

/* ── 작은 화면 ─────────────────────────────── */

@media (max-width: 720px) {
  .card.lobby { grid-template-columns: 1fr; }
  #videos { top: 64px; max-width: calc(100vw - 16px); }
  .vtile { width: 108px; }
  #videos.many .vtile { width: 92px; }
  #help { display: none; }
  .tool { width: 38px; height: 38px; font-size: 17px; }
  #toolbar { gap: 3px; padding: 5px; bottom: calc(10px + var(--safe-b)); }
  .sep { display: none; }
  #chatbox { bottom: calc(66px + var(--safe-b)); width: min(300px, calc(100vw - 24px)); }
  #chat-log { max-height: 120px; }
  #minimap-wrap { bottom: auto; top: 64px; width: 200px; }
  #panel { top: 64px; left: 8px; right: 8px; width: auto; bottom: calc(66px + var(--safe-b)); }
  #emote-bar { bottom: calc(66px + var(--safe-b)); flex-wrap: wrap; justify-content: center; width: calc(100vw - 24px); }
  .customize-body { flex-direction: column; align-items: center; }
  #zone-badge span { display: none; }
  #toolbar { max-width: calc(100vw - 16px); overflow-x: auto; scrollbar-width: none; }
  #dialog { bottom: calc(66px + var(--safe-b)); }
  .dlg-face { width: 48px; height: 48px; }
  #act-btn { bottom: calc(150px + var(--safe-b)); right: 10px; }
  .pkeys { --kw: calc((100vw - 48px) / 11); --bw: calc((100vw - 48px) / 16); height: 96px; }
  .pkey.white { height: 96px; }
  .pkey.black { height: 58px; }
  .phelp { display: none; }
  .fstats { grid-template-columns: repeat(2, 1fr); }
  .dex, .stamps { grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: 6px; }
  .dex-cell canvas { width: 40px; height: 40px; }
  .modal-card { padding: 18px 14px; }
}

/* ── 화면 속 화면(PiP) 창 ─────────────────────────── */
.pip-body { display: flex; flex-direction: column; height: 100vh; overflow: hidden; background: var(--ink); }
.pip-head { display: flex; align-items: center; gap: 8px; padding: 8px 10px; background: var(--ink-2); border-bottom: 2px solid var(--ink-3); font-size: 13px; }
.pip-zone { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pip-count { color: var(--leaf); font-weight: 700; font-size: 12px; }
.pip-body #videos {
  position: static; transform: none; max-width: none; flex: 1; min-height: 0; overflow-y: auto;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); align-content: start; gap: 6px; padding: 6px;
}
.pip-body #videos .vtile { width: auto; cursor: default; }
.pip-body #videos .vtile.big { grid-column: 1 / -1; width: auto; }
.pip-body #videos .vtile.leave { width: auto !important; margin: 0; }
.pip-empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--muted); font-size: 14px; text-align: center; }
.pip-empty small { font-size: 12px; opacity: 0.8; }
.pip-empty-icon { font-size: 30px; }
.pip-bar { display: flex; gap: 6px; padding: 8px; background: var(--ink-2); border-top: 2px solid var(--ink-3); }
.pip-bar .tool { width: 40px; height: 36px; }
.pip-back {
  margin-left: auto; border: 2px solid var(--ink); border-radius: 8px; padding: 0 12px; cursor: pointer; font-weight: 700;
  background: var(--ink-3); color: var(--paper); font-family: inherit;
}
#pip-marker {
  position: absolute; top: 12px; left: 50%; transform: translateX(-50%); pointer-events: auto; cursor: pointer;
  border: 2px solid var(--ink-3); border-radius: 999px; padding: 6px 14px; background: rgba(38, 33, 57, 0.92); color: var(--muted);
  font: inherit; font-size: 12px; font-weight: 700;
}
.pip-source { position: fixed; width: 2px; height: 2px; opacity: 0; pointer-events: none; left: 0; top: 0; }

/* ── 로그인 화면: 고른 노래 + 박자에 맞춰 은은하게 부푸는 빛 (js/home.js) ──────────
   --glow: 지금 곡의 첫 빛깔 (곡이 바뀌면 home.js 가 바꿈)
   앱 이름 글꼴: Fraunces Italic (가변 글꼴 · "Jazzy Town" 글자만 남김 · OFL, fonts/Fraunces-OFL.txt) */
@font-face {
  font-family: 'Fraunces JT';
  src: url('../fonts/fraunces-italic-jt.woff') format('woff');
  font-style: italic; font-weight: 100 900; font-display: block;
}
.screen.home {
  --glow: #ff5e7a;
  background: #0e0a1f; padding: 24px 16px calc(104px + var(--safe-b));
}
#home-glow { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.home-main { position: relative; z-index: 1; width: min(960px, 100%); display: flex; flex-direction: column; align-items: center; text-align: center; }
/* 글자 뒤만 살짝 어둡게 (빛이 밝은 곡에서도 작은 글씨가 읽히게) */
.home-main::before {
  content: ''; position: absolute; z-index: -1; inset: -12% -8%; pointer-events: none;
  background: radial-gradient(closest-side, rgba(14, 10, 31, 0.42), rgba(14, 10, 31, 0.18) 60%, transparent);
}
/* 앱 이름: 박자에 안 움직이고 가만히 (빛 색만 곡을 따라감) */
.home-title {
  margin: 0; color: var(--paper); white-space: nowrap;
  font-family: 'Fraunces JT', 'Iowan Old Style', Georgia, serif; font-style: italic;
  font-weight: 740;
  font-variation-settings: 'opsz' 144, 'SOFT' 100, 'WONK' 1;
  font-size: clamp(48px, 15vw, 150px); line-height: 1; letter-spacing: -0.035em;
  text-shadow: 0 0 32px var(--glow), 0 1px 3px rgba(14, 10, 31, 0.35);
}
.home-sub { margin: 20px 0 32px; font-size: clamp(15px, 2.4vw, 19px); font-weight: 500; line-height: 1.5; color: rgba(253, 246, 227, 0.92); text-shadow: 0 1px 2px rgba(14, 10, 31, 0.55), 0 0 18px rgba(14, 10, 31, 0.5); }
.home .google-btn { margin: 0 0 14px; }
.home .live { margin: 0 0 6px; color: #c2ffd9; font-size: 13px; line-height: 1.4; min-height: 1.4em; transition: opacity 0.6s; }
.home .live.off { opacity: 0; }
.home .hint { color: rgba(253, 246, 227, 0.72); text-shadow: 0 1px 2px rgba(14, 10, 31, 0.6); }
.home .error { margin-top: 10px; }
.home .warn { max-width: 360px; }
.home .dev-form {
  width: min(340px, 100%); margin-top: 24px; padding: 16px; text-align: left;
  border: 1px solid rgba(253, 246, 227, 0.16); border-radius: 14px;
  background: rgba(14, 10, 31, 0.5); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.home .dev-form input { background: rgba(14, 10, 31, 0.7); }

/* 플레이어 (왼쪽 아래): ▶/⏸ · 막대 4개 · 곡 이름 · 다른 곡 */
.home-player {
  position: absolute; z-index: 2; left: 16px; bottom: calc(16px + var(--safe-b)); max-width: calc(100% - 32px);
  display: flex; align-items: center; gap: 12px; padding: 8px 10px 8px 8px;
  border: 1px solid rgba(253, 246, 227, 0.14); border-radius: 999px;
  background: rgba(14, 10, 31, 0.55); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
}
.hp-btn { flex: none; display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; background: var(--paper); color: #0e0a1f; }
.hp-btn svg { width: 22px; height: 22px; fill: currentColor; }
.hp-btn:focus-visible { outline: 2px solid var(--glow); outline-offset: 3px; }
#home-next { width: 36px; height: 36px; background: transparent; color: var(--paper); }
#home-next:hover { background: rgba(253, 246, 227, 0.12); }
.hp-play .i-pause, .home.playing .hp-play .i-play { display: none; }
.home.playing .hp-play .i-pause { display: block; }
.hp-eq { flex: none; display: flex; align-items: flex-end; gap: 3px; height: 20px; }
.hp-eq i { width: 4px; height: 100%; border-radius: 2px; background: var(--glow); transform-origin: 50% 100%; transform: scaleY(0.18); }
/* 곡 이름 칸은 폭 고정 (곡이 바뀌어도 "다른 곡" 버튼이 옆으로 안 움직이게 · 긴 이름은 … ) */
.hp-text { flex: none; width: 190px; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; padding-right: 4px; }
.hp-text b { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hp-text small { font-size: 12px; color: rgba(253, 246, 227, 0.6); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 소리가 막혀 있을 때만: "화면을 누르면 음악이 나와요" */
.home-tap {
  position: absolute; z-index: 2; left: 0; right: 0; bottom: calc(80px + var(--safe-b)); margin: 0;
  text-align: center; font-size: 13px; color: rgba(253, 246, 227, 0.75); pointer-events: none;
  opacity: 0; transition: opacity 0.4s;
}
.home-tap.show { opacity: 1; animation: home-tap 2.4s ease-in-out infinite; }
@keyframes home-tap { 50% { opacity: 0.45; } }

@media (max-width: 720px) {
  .home-player { right: 16px; }
  .hp-text { flex: 1; width: auto; }
  .home-tap { bottom: calc(84px + var(--safe-b)); }
}
@media (prefers-reduced-motion: reduce) {
  .home-tap.show { animation: none; }
}
