/* ── @font-face: scripts/build_fonts.py 가 생성합니다. 직접 고치지 마세요 ── */
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/fonts/plexkr-400-ext.a02529c6.woff2") format("woff2");
  unicode-range: U+AC02-AC03,U+AC05-AC07,U+AC09-AC0F,U+AC13-AC14,U+AC16-AC18,U+AC1B,U+AC1D-AC30,U+AC32-AC6F,U+AC71-AC73,U+AC75-AC76,U+AC79-AC7F,U+AC82,U+AC84-AC8B,U+AC8D-ACA7,U+ACAA-ACAB,U+ACAD-ACAF,U+ACB1-ACB8,U+ACBA-ACBB,U+ACBE-ACC3,U+ACC5-ACDF,U+ACE2-ACE6,U+ACE9-ACF0,U+ACF2,U+ACF4,U+ACF6-ACFB,U+ACFD-ACFF,U+AD01-AD03,U+AD05-AD10,U+AD12-AD4F,U+AD51-AD6B,U+AD6E-AD6F,U+AD71-AD73,U+AD76-AD80,U+AD82-AD8B,U+AD8D-ADDB,U+ADDD-ADDF,U+ADE1-ADF7,U+ADF9-ADFB,U+ADFD-ADFF,U+AE01-AE07,U+AE0A-AE2F,U+AE31-AE33,U+AE35-AE37,U+AE39-AE40,U+AE42-AE4B,U+AE4D,U+AE4F-AE5C,U+AE5E-AE67,U+AE69-AEBB,U+AEBD-AED7,U+AED9-AF2B,U+AF2E-AF33,U+AF35-AFB7,U+AFB9-AFBB,U+AFBD-AFC8,U+AFCA-AFD3,U+AFD5-B00B,U+B00D-B00F,U+B011-B013,U+B015-B01C,U+B01E-B043,U+B045-B049,U+B04B,U+B04D-B05C,U+B05E-B07B,U+B07D-B097,U+B099-B09B,U+B09D-B09F,U+B0A1-B0A7,U+B0AA,U+B0AC-B0AD,U+B0AF-B0B3,U+B0B5-B0B7,U+B0B9-B0BB,U+B0BD-B0C4,U+B0C6-B0C7,U+B0C9-B0CF,U+B0D1-B107,U+B10A-B10F,U+B111-B117,U+B119-B122,U+B124-B13F,U+B141-B143,U+B145-B177,U+B179-B191,U+B194-B203,U+B205-B207,U+B209-B20B,U+B20D-B21F,U+B221-B28F,U+B291-B293,U+B295-B297,U+B299-B29F,U+B2A1-B2A4,U+B2A7-B2C7,U+B2C9-B2CB,U+B2CD-B2CF,U+B2D1-B2D7,U+B2DA-B2E3,U+B2E6-B2E7,U+B2E9-B2EA,U+B2ED-B2F3,U+B2F6-B2F8,U+B2FA-B2FE,U+B301-B353,U+B355-B357,U+B359-B35B,U+B35D-B363,U+B365-B36D,U+B36F,U+B371-B377,U+B379-B3C3,U+B3C6-B3C7,U+B3C9-B3CB,U+B3CD-B3D8,U+B3DA-B3FB,U+B3FD-B40F,U+B411-B417,U+B419-B41B,U+B41D-B41F,U+B421-B427,U+B42A-B44F,U+B451-B453,U+B455-B457,U+B459-B460,U+B462-B46B,U+B46D-B4A3,U+B4A5-B4DB,U+B4DE-B4DF,U+B4E1-B4E3,U+B4E5-B4EB,U+B4EE-B4F0,U+B4F2-B513,U+B515-B517,U+B519-B526,U+B528,U+B52A-B52F,U+B531-B54B,U+B54D-B59F,U+B5A1-B5A3,U+B5A5-B5A7,U+B5A9-B5BA,U+B5BD-B5CC,U+B5CE-B60F,U+B612-B69C,U+B69E-B700,U+B702-B73A,U+B73C-B75F,U+B761-B77B,U+B77E-B77F,U+B781-B78B,U+B78E-B797,U+B799-B79B,U+B79D-B7AB,U+B7AD-B7B4,U+B7B6-B7EB,U+B7ED-B7EF,U+B7F1-B7FB,U+B7FE,U+B801-B806,U+B809-B823,U+B826-B827,U+B829-B82B,U+B82D-B837,U+B83A-B83F,U+B841-B85B,U+B85E-B8CB,U+B8CD-B8E7,U+B8E9-B8EB,U+B8ED-B8EF,U+B8F1-B903,U+B905-B957,U+B959-B95F,U+B961-B973,U+B975-B977,U+B979-B97B,U+B97D-B983,U+B986-B9AB,U+B9AE-B9AF,U+B9B1-B9B3,U+B9B5-B9BB,U+B9BE-B9C7,U+B9CA-B9CB,U+B9CD,U+B9CF,U+B9D1-B9DC,U+B9DF-B9E0,U+B9E2-B9E3,U+B9E5-B9E7,U+B9E9-B9F4,U+B9F6-BA37,U+BA3A-BA3B,U+BA3D-BA47,U+BA49-BA4C,U+BA4E-BA53,U+BA55-BA6F,U+BA71-BA73,U+BA75-BA84,U+BA86,U+BA88-BAA7,U+BAAA,U+BAAD-BAAF,U+BAB1-BABA,U+BABC-BB33,U+BB35-BB37,U+BB39-BB3B,U+BB3D-BBAB,U+BBAD-BBBF,U+BBC1-BBF7,U+BBF9-BBFB,U+BBFD-BBFE,U+BC00-BC0E,U+BC10,U+BC12-BC13,U+BC17,U+BC19-BC1A,U+BC1E-BC28,U+BC2A-BC2F,U+BC32-BC83,U+BC85-BC87,U+BC89-BC8B,U+BC8D-BC93,U+BC96-BCA3,U+BCA5-BCBB,U+BCBE-BCBF,U+BCC1-BCC3,U+BCC5-BCF3,U+BCF6-BCF7,U+BCF9-BCFB,U+BCFD-BD04,U+BD06-BD08,U+BD0A-BD0F,U+BD11-BD7F,U+BD81-BD83,U+BD85-BD87,U+BD89-BD98,U+BD9A-BE0B,U+BE0D-BE43,U+BE45-BE4B,U+BE4D-BE5F,U+BE61-BE67,U+BE69-BE7B,U+BE7D-BE7F,U+BE81-BE8C,U+BE8E-BF50,U+BF52-BFCF,U+BFD1-C0AB,U+C0AE-C0AF,U+C0B1-C0B3,U+C0B5-C0BC,U+C0BE-C0C0,U+C0C2-C0C7,U+C0CA-C0DC,U+C0DE-C11B,U+C11F,U+C121-C123,U+C125-C12B,U+C12E-C130,U+C132-C137,U+C139-C13B,U+C13D-C147,U+C14A-C157,U+C159-C18B,U+C18E-C18F,U+C191-C1A0,U+C1A2-C217,U+C219-C21B,U+C21D-C22A,U+C22C-C26B,U+C26D-C2A3,U+C2A5-C2AB,U+C2AD-C2B4,U+C2B6,U+C2B8,U+C2BA-C2DB,U+C2DE-C2DF,U+C2E1-C2E3,U+C2E5-C2EB,U+C2ED-C2F5,U+C2F7,U+C2F9-C312,U+C314-C367,U+C369-C4EF,U+C4F1-C4F7,U+C4F9-C500,U+C502-C528,U+C52A-C543,U+C545-C547,U+C549,U+C54B,U+C54D-C554,U+C556-C557,U+C55A-C55D,U+C55F,U+C562-C573,U+C575-C57B,U+C57E-C590,U+C592-C5B3,U+C5B6-C5B7,U+C5BA,U+C5BD-C5C4,U+C5C9-C5CF,U+C5D1-C5EB,U+C5EE-C5EF,U+C5F1-C5F3,U+C5F5-C5FF,U+C602-C607,U+C609-C623,U+C625-C627,U+C629-C62B,U+C62D,U+C62F-C634,U+C636-C63F,U+C641-C643,U+C645-C653,U+C655-C65B,U+C65D-C677,U+C679-C67B,U+C67D-C693,U+C695-C6A8,U+C6AA-C6AF,U+C6B1-C6B3,U+C6B5-C6B7,U+C6B9-C6BF,U+C6C2-C6CB,U+C6CD-C6CF,U+C6D1-C6D3,U+C6D5-C6DF,U+C6E1-C703,U+C705-C716,U+C718-C71F,U+C722-C727,U+C729-C732,U+C734,U+C736-C73B,U+C73D-C73F,U+C741-C743,U+C745-C74B,U+C74D-C750,U+C752-C757,U+C759-C773,U+C776-C777,U+C779-C77B,U+C77E-C782,U+C786-C787,U+C789-C78F,U+C792-C793,U+C795-C7A0,U+C7A2-C7A4,U+C7A6-C7AB,U+C7AD-C7FF,U+C802-C803,U+C805-C807,U+C809-C80F,U+C812-C814,U+C816-C81B,U+C81D-C837,U+C839-C84B,U+C84D-C86F,U+C872-C873,U+C875-C884,U+C886-C88A,U+C88D-C8FB,U+C8FD-C8FF,U+C901-C903,U+C905-C90C,U+C90E-C910,U+C912-C99C,U+C99E-C9BF,U+C9C2-C9C3,U+C9C5-C9C7,U+C9C9-C9D0,U+C9D2-C9D4,U+C9D6-C9DB,U+C9DD-C9E6,U+C9E8-C9F7,U+C9F9-CABC,U+CABE-CBE3,U+CBE5-CC0C,U+CC0E-CC27,U+CC2A-CC2B,U+CC2D-CC37,U+CC39-CC43,U+CC46-CC97,U+CC99-CC9B,U+CC9D-CCAA,U+CCAC,U+CCAE-CCB3,U+CCB5-CCCF,U+CCD1-CD07,U+CD0A-CD1C,U+CD1E-CD5B,U+CD5D-CD93,U+CD96-CD97,U+CD99-CD9B,U+CD9D-CDA3,U+CDA6-CDA8,U+CDAA-CDAF,U+CDB1-CDC3,U+CDC5-CDE7,U+CDE9-CE1F,U+CE22-CE57,U+CE5A-CE5B,U+CE5D-CE67,U+CE6A-CE73,U+CE75-CE77,U+CE79-CE8F,U+CE91-CEE3,U+CEE5-CEEB,U+CEED-CF1B,U+CF1D-CF53,U+CF55-CF57,U+CF59-CFDF,U+CFE1-D06B,U+D06D-D06F,U+D071-D073,U+D075-D07B,U+D07E-D0A3,U+D0A5-D0B6,U+D0B8-D0BF,U+D0C2-D0CF,U+D0D1-D0D4,U+D0D6-D0DC,U+D0DE-D0EC,U+D0EE-D12F,U+D131-D137,U+D139-D14B,U+D14D-D14F,U+D151-D15B,U+D15D-D167,U+D169-D19F,U+D1A1-D1B4,U+D1B6-D1F3,U+D1F5-D22B,U+D22D-D27F,U+D281-D2B7,U+D2BA-D2BB,U+D2BD-D2BF,U+D2C1-D2EF,U+D2F2-D2F3,U+D2F5-D2F7,U+D2F9-D304,U+D306-D30B,U+D30D,U+D30F,U+D311-D313,U+D315-D327,U+D329-D32B,U+D32D-D37B,U+D37D-D37F,U+D381-D397,U+D399-D3B7,U+D3B9-D3BB,U+D3BD-D3C4,U+D3C6-D3C8,U+D3CA-D3CF,U+D3D1-D3EB,U+D3ED-D3F3,U+D3F5-D45B,U+D45D-D487,U+D489-D503,U+D505-D50B,U+D50D-D53B,U+D53D-D543,U+D545-D550,U+D552-D557,U+D55A-D55B,U+D55D-D55F,U+D561-D567,U+D56A-D56C,U+D56E-D573,U+D576-D587,U+D58A-D5A4,U+D5A6-D5CF,U+D5D1-D5D7,U+D5D9-D5F6,U+D5F8-D5FF,U+D601-D603,U+D605-D610,U+D612-D614,U+D616-D637,U+D639-D63B,U+D63D-D647,U+D649-D653,U+D656-D657,U+D659-D65B,U+D65D-D668,U+D66A-D68B,U+D68E-D6A7,U+D6A9-D6C3,U+D6C5-D733,U+D735-D74F,U+D751-D753,U+D755-D768,U+D76A-D787,U+D789-D797,U+D79A-D7A3;
}
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/fonts/plexkr-400-core.2ed8a734.woff2") format("woff2");
  unicode-range: U+0020-007E,U+00A9,U+00B1-00B2,U+00B7,U+00D7,U+00F7,U+2014,U+2026,U+2190,U+2192-2193,U+2212,U+2462,U+2500,U+2514,U+25B2,U+25BC,U+25C6,U+25D0,U+2600,U+263E,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC12,U+AC15,U+AC19-AC1A,U+AC1C,U+AC31,U+AC70,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACB9,U+ACBC-ACBD,U+ACC4,U+ACE0-ACE1,U+ACE7-ACE8,U+ACF1,U+ACF3,U+ACF5,U+ACFC,U+AD00,U+AD04,U+AD11,U+AD50,U+AD6C-AD6D,U+AD70,U+AD74-AD75,U+AD81,U+AD8C,U+ADDC,U+ADE0,U+ADF8,U+ADFC,U+AE00,U+AE08-AE09,U+AE30,U+AE34,U+AE38,U+AE41,U+AE4C,U+AE4E,U+AE5D,U+AE68,U+AEBC,U+AED8,U+AF2C-AF2D,U+AF34,U+AFB8,U+AFBC,U+AFC9,U+AFD4,U+B00C,U+B010,U+B014,U+B01D,U+B044,U+B04A,U+B04C,U+B05D,U+B07C,U+B098,U+B09C,U+B0A0,U+B0A8-B0A9,U+B0AB,U+B0AE,U+B0B4,U+B0B8,U+B0BC,U+B0C5,U+B0C8,U+B0D0,U+B108-B109,U+B110,U+B118,U+B123,U+B140,U+B144,U+B178,U+B192-B193,U+B204,U+B208,U+B20C,U+B220,U+B290,U+B294,U+B298,U+B2A0,U+B2A5-B2A6,U+B2C8,U+B2CC,U+B2D0,U+B2D8-B2D9,U+B2E4-B2E5,U+B2E8,U+B2EB-B2EC,U+B2F4-B2F5,U+B2F9,U+B2FF-B300,U+B354,U+B358,U+B35C,U+B364,U+B36E,U+B370,U+B378,U+B3C4-B3C5,U+B3C8,U+B3CC,U+B3D9,U+B3FC,U+B410,U+B418,U+B41C,U+B420,U+B428-B429,U+B450,U+B454,U+B458,U+B461,U+B46C,U+B4A4,U+B4DC-B4DD,U+B4E0,U+B4E4,U+B4EC-B4ED,U+B4F1,U+B514,U+B518,U+B527,U+B529,U+B530,U+B54C,U+B5A0,U+B5A4,U+B5A8,U+B5BB-B5BC,U+B5CD,U+B610-B611,U+B69D,U+B701,U+B73B,U+B760,U+B77C-B77D,U+B780,U+B78C-B78D,U+B798,U+B79C,U+B7AC,U+B7B5,U+B7EC,U+B7F0,U+B7FC-B7FD,U+B7FF-B800,U+B807-B808,U+B824-B825,U+B828,U+B82C,U+B838-B839,U+B840,U+B85C-B85D,U+B8CC,U+B8E8,U+B8EC,U+B8F0,U+B904,U+B958,U+B960,U+B974,U+B978,U+B97C,U+B984-B985,U+B9AC-B9AD,U+B9B0,U+B9B4,U+B9BC-B9BD,U+B9C8-B9C9,U+B9CC,U+B9CE,U+B9D0,U+B9DD-B9DE,U+B9E1,U+B9E4,U+B9E8,U+B9F5,U+BA38-BA39,U+BA3C,U+BA48,U+BA4D,U+BA54,U+BA70,U+BA74,U+BA85,U+BA87,U+BAA8-BAA9,U+BAAB-BAAC,U+BAB0,U+BABB,U+BB34,U+BB38,U+BB3C,U+BBAC,U+BBC0,U+BBF8,U+BBFC,U+BBFF,U+BC0F,U+BC11,U+BC14-BC16,U+BC18,U+BC1B-BC1D,U+BC29,U+BC30-BC31,U+BC84,U+BC88,U+BC8C,U+BC94-BC95,U+BCA4,U+BCBC-BCBD,U+BCC0,U+BCC4,U+BCF4-BCF5,U+BCF8,U+BCFC,U+BD05,U+BD09,U+BD10,U+BD80,U+BD84,U+BD88,U+BD99,U+BE0C,U+BE44,U+BE4C,U+BE60,U+BE68,U+BE7C,U+BE80,U+BE8D,U+BF51,U+BFD0,U+C0AC-C0AD,U+C0B0,U+C0B4,U+C0BD,U+C0C1,U+C0C8-C0C9,U+C0DD,U+C11C-C11E,U+C120,U+C124,U+C12C-C12D,U+C131,U+C138,U+C13C,U+C148-C149,U+C158,U+C18C-C18D,U+C190,U+C1A1,U+C218,U+C21C,U+C22B,U+C26C,U+C2A4,U+C2AC,U+C2B5,U+C2B7,U+C2B9,U+C2DC-C2DD,U+C2E0,U+C2E4,U+C2EC,U+C2F6,U+C2F8,U+C313,U+C368,U+C4F0,U+C4F8,U+C501,U+C529,U+C544,U+C548,U+C54A,U+C54C,U+C555,U+C558-C559,U+C55E,U+C560-C561,U+C574,U+C57C-C57D,U+C591,U+C5B4-C5B5,U+C5B8-C5B9,U+C5BB-C5BC,U+C5C5-C5C8,U+C5D0,U+C5EC-C5ED,U+C5F0,U+C5F4,U+C600-C601,U+C608,U+C624,U+C628,U+C62C,U+C62E,U+C635,U+C640,U+C644,U+C654,U+C65C,U+C678,U+C67C,U+C694,U+C6A9,U+C6B0,U+C6B4,U+C6B8,U+C6C0-C6C1,U+C6CC,U+C6D0,U+C6D4,U+C6E0,U+C704,U+C717,U+C720-C721,U+C728,U+C733,U+C735,U+C73C,U+C740,U+C744,U+C74C,U+C751,U+C758,U+C774-C775,U+C778,U+C77C-C77D,U+C783-C785,U+C788,U+C790-C791,U+C794,U+C7A1,U+C7A5,U+C7AC,U+C800-C801,U+C804,U+C808,U+C810-C811,U+C815,U+C81C,U+C838,U+C84C,U+C870-C871,U+C874,U+C885,U+C88B-C88C,U+C8FC,U+C900,U+C904,U+C90D,U+C911,U+C99D,U+C9C0-C9C1,U+C9C4,U+C9C8,U+C9D1,U+C9D5,U+C9DC,U+C9E7,U+C9F8,U+CABD,U+CBE4,U+CC0D,U+CC28-CC29,U+CC2C,U+CC38,U+CC44-CC45,U+CC98,U+CC9C,U+CCAB,U+CCAD,U+CCB4,U+CCD0,U+CD08-CD09,U+CD1D,U+CD5C,U+CD94-CD95,U+CD98,U+CD9C,U+CDA4-CDA5,U+CDA9,U+CDB0,U+CDC4,U+CDE8,U+CE20-CE21,U+CE58-CE59,U+CE5C,U+CE68-CE69,U+CE74,U+CE78,U+CE90,U+CEE4,U+CEEC,U+CF1C,U+CF54,U+CF58,U+CFE0,U+D06C,U+D070,U+D074,U+D07C-D07D,U+D0A4,U+D0B7,U+D0C0-D0C1,U+D0D0,U+D0D5,U+D0DD,U+D0ED,U+D130,U+D138,U+D14C,U+D150,U+D15C,U+D168,U+D1A0,U+D1B5,U+D1F4,U+D22C,U+D280,U+D2B8-D2B9,U+D2BC,U+D2C0,U+D2F0-D2F1,U+D2F4,U+D2F8,U+D305,U+D30C,U+D30E,U+D310,U+D314,U+D328,U+D32C,U+D37C,U+D380,U+D398,U+D3B8,U+D3BC,U+D3C5,U+D3C9,U+D3D0,U+D3EC,U+D3F4,U+D45C,U+D488,U+D504,U+D50C,U+D53C,U+D544,U+D551,U+D558-D559,U+D55C,U+D560,U+D568-D569,U+D56D,U+D574-D575,U+D588-D589,U+D5A5,U+D5D0,U+D5D8,U+D5F7,U+D600,U+D604,U+D611,U+D615,U+D638,U+D63C,U+D648,U+D654-D655,U+D658,U+D65C,U+D669,U+D68C-D68D,U+D6A8,U+D6C4,U+D734,U+D750,U+D754,U+D769,U+D788,U+D798-D799,U+FF0B,U+FF0D;
}
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/fonts/plexkr-500-ext.27904e6a.woff2") format("woff2");
  unicode-range: U+AC02-AC03,U+AC05-AC07,U+AC09-AC0F,U+AC13-AC14,U+AC16-AC18,U+AC1B,U+AC1D-AC30,U+AC32-AC6F,U+AC71-AC73,U+AC75-AC76,U+AC79-AC7F,U+AC82,U+AC84-AC8B,U+AC8D-ACA7,U+ACAA-ACAB,U+ACAD-ACAF,U+ACB1-ACB8,U+ACBA-ACBB,U+ACBE-ACC3,U+ACC5-ACDF,U+ACE2-ACE6,U+ACE9-ACF0,U+ACF2,U+ACF4,U+ACF6-ACFB,U+ACFD-ACFF,U+AD01-AD03,U+AD05-AD10,U+AD12-AD4F,U+AD51-AD6B,U+AD6E-AD6F,U+AD71-AD73,U+AD76-AD80,U+AD82-AD8B,U+AD8D-ADDB,U+ADDD-ADDF,U+ADE1-ADF7,U+ADF9-ADFB,U+ADFD-ADFF,U+AE01-AE07,U+AE0A-AE2F,U+AE31-AE33,U+AE35-AE37,U+AE39-AE40,U+AE42-AE4B,U+AE4D,U+AE4F-AE5C,U+AE5E-AE67,U+AE69-AEBB,U+AEBD-AED7,U+AED9-AF2B,U+AF2E-AF33,U+AF35-AFB7,U+AFB9-AFBB,U+AFBD-AFC8,U+AFCA-AFD3,U+AFD5-B00B,U+B00D-B00F,U+B011-B013,U+B015-B01C,U+B01E-B043,U+B045-B049,U+B04B,U+B04D-B05C,U+B05E-B07B,U+B07D-B097,U+B099-B09B,U+B09D-B09F,U+B0A1-B0A7,U+B0AA,U+B0AC-B0AD,U+B0AF-B0B3,U+B0B5-B0B7,U+B0B9-B0BB,U+B0BD-B0C4,U+B0C6-B0C7,U+B0C9-B0CF,U+B0D1-B107,U+B10A-B10F,U+B111-B117,U+B119-B122,U+B124-B13F,U+B141-B143,U+B145-B177,U+B179-B191,U+B194-B203,U+B205-B207,U+B209-B20B,U+B20D-B21F,U+B221-B28F,U+B291-B293,U+B295-B297,U+B299-B29F,U+B2A1-B2A4,U+B2A7-B2C7,U+B2C9-B2CB,U+B2CD-B2CF,U+B2D1-B2D7,U+B2DA-B2E3,U+B2E6-B2E7,U+B2E9-B2EA,U+B2ED-B2F3,U+B2F6-B2F8,U+B2FA-B2FE,U+B301-B353,U+B355-B357,U+B359-B35B,U+B35D-B363,U+B365-B36D,U+B36F,U+B371-B377,U+B379-B3C3,U+B3C6-B3C7,U+B3C9-B3CB,U+B3CD-B3D8,U+B3DA-B3FB,U+B3FD-B40F,U+B411-B417,U+B419-B41B,U+B41D-B41F,U+B421-B427,U+B42A-B44F,U+B451-B453,U+B455-B457,U+B459-B460,U+B462-B46B,U+B46D-B4A3,U+B4A5-B4DB,U+B4DE-B4DF,U+B4E1-B4E3,U+B4E5-B4EB,U+B4EE-B4F0,U+B4F2-B513,U+B515-B517,U+B519-B526,U+B528,U+B52A-B52F,U+B531-B54B,U+B54D-B59F,U+B5A1-B5A3,U+B5A5-B5A7,U+B5A9-B5BA,U+B5BD-B5CC,U+B5CE-B60F,U+B612-B69C,U+B69E-B700,U+B702-B73A,U+B73C-B75F,U+B761-B77B,U+B77E-B77F,U+B781-B78B,U+B78E-B797,U+B799-B79B,U+B79D-B7AB,U+B7AD-B7B4,U+B7B6-B7EB,U+B7ED-B7EF,U+B7F1-B7FB,U+B7FE,U+B801-B806,U+B809-B823,U+B826-B827,U+B829-B82B,U+B82D-B837,U+B83A-B83F,U+B841-B85B,U+B85E-B8CB,U+B8CD-B8E7,U+B8E9-B8EB,U+B8ED-B8EF,U+B8F1-B903,U+B905-B957,U+B959-B95F,U+B961-B973,U+B975-B977,U+B979-B97B,U+B97D-B983,U+B986-B9AB,U+B9AE-B9AF,U+B9B1-B9B3,U+B9B5-B9BB,U+B9BE-B9C7,U+B9CA-B9CB,U+B9CD,U+B9CF,U+B9D1-B9DC,U+B9DF-B9E0,U+B9E2-B9E3,U+B9E5-B9E7,U+B9E9-B9F4,U+B9F6-BA37,U+BA3A-BA3B,U+BA3D-BA47,U+BA49-BA4C,U+BA4E-BA53,U+BA55-BA6F,U+BA71-BA73,U+BA75-BA84,U+BA86,U+BA88-BAA7,U+BAAA,U+BAAD-BAAF,U+BAB1-BABA,U+BABC-BB33,U+BB35-BB37,U+BB39-BB3B,U+BB3D-BBAB,U+BBAD-BBBF,U+BBC1-BBF7,U+BBF9-BBFB,U+BBFD-BBFE,U+BC00-BC0E,U+BC10,U+BC12-BC13,U+BC17,U+BC19-BC1A,U+BC1E-BC28,U+BC2A-BC2F,U+BC32-BC83,U+BC85-BC87,U+BC89-BC8B,U+BC8D-BC93,U+BC96-BCA3,U+BCA5-BCBB,U+BCBE-BCBF,U+BCC1-BCC3,U+BCC5-BCF3,U+BCF6-BCF7,U+BCF9-BCFB,U+BCFD-BD04,U+BD06-BD08,U+BD0A-BD0F,U+BD11-BD7F,U+BD81-BD83,U+BD85-BD87,U+BD89-BD98,U+BD9A-BE0B,U+BE0D-BE43,U+BE45-BE4B,U+BE4D-BE5F,U+BE61-BE67,U+BE69-BE7B,U+BE7D-BE7F,U+BE81-BE8C,U+BE8E-BF50,U+BF52-BFCF,U+BFD1-C0AB,U+C0AE-C0AF,U+C0B1-C0B3,U+C0B5-C0BC,U+C0BE-C0C0,U+C0C2-C0C7,U+C0CA-C0DC,U+C0DE-C11B,U+C11F,U+C121-C123,U+C125-C12B,U+C12E-C130,U+C132-C137,U+C139-C13B,U+C13D-C147,U+C14A-C157,U+C159-C18B,U+C18E-C18F,U+C191-C1A0,U+C1A2-C217,U+C219-C21B,U+C21D-C22A,U+C22C-C26B,U+C26D-C2A3,U+C2A5-C2AB,U+C2AD-C2B4,U+C2B6,U+C2B8,U+C2BA-C2DB,U+C2DE-C2DF,U+C2E1-C2E3,U+C2E5-C2EB,U+C2ED-C2F5,U+C2F7,U+C2F9-C312,U+C314-C367,U+C369-C4EF,U+C4F1-C4F7,U+C4F9-C500,U+C502-C528,U+C52A-C543,U+C545-C547,U+C549,U+C54B,U+C54D-C554,U+C556-C557,U+C55A-C55D,U+C55F,U+C562-C573,U+C575-C57B,U+C57E-C590,U+C592-C5B3,U+C5B6-C5B7,U+C5BA,U+C5BD-C5C4,U+C5C9-C5CF,U+C5D1-C5EB,U+C5EE-C5EF,U+C5F1-C5F3,U+C5F5-C5FF,U+C602-C607,U+C609-C623,U+C625-C627,U+C629-C62B,U+C62D,U+C62F-C634,U+C636-C63F,U+C641-C643,U+C645-C653,U+C655-C65B,U+C65D-C677,U+C679-C67B,U+C67D-C693,U+C695-C6A8,U+C6AA-C6AF,U+C6B1-C6B3,U+C6B5-C6B7,U+C6B9-C6BF,U+C6C2-C6CB,U+C6CD-C6CF,U+C6D1-C6D3,U+C6D5-C6DF,U+C6E1-C703,U+C705-C716,U+C718-C71F,U+C722-C727,U+C729-C732,U+C734,U+C736-C73B,U+C73D-C73F,U+C741-C743,U+C745-C74B,U+C74D-C750,U+C752-C757,U+C759-C773,U+C776-C777,U+C779-C77B,U+C77E-C782,U+C786-C787,U+C789-C78F,U+C792-C793,U+C795-C7A0,U+C7A2-C7A4,U+C7A6-C7AB,U+C7AD-C7FF,U+C802-C803,U+C805-C807,U+C809-C80F,U+C812-C814,U+C816-C81B,U+C81D-C837,U+C839-C84B,U+C84D-C86F,U+C872-C873,U+C875-C884,U+C886-C88A,U+C88D-C8FB,U+C8FD-C8FF,U+C901-C903,U+C905-C90C,U+C90E-C910,U+C912-C99C,U+C99E-C9BF,U+C9C2-C9C3,U+C9C5-C9C7,U+C9C9-C9D0,U+C9D2-C9D4,U+C9D6-C9DB,U+C9DD-C9E6,U+C9E8-C9F7,U+C9F9-CABC,U+CABE-CBE3,U+CBE5-CC0C,U+CC0E-CC27,U+CC2A-CC2B,U+CC2D-CC37,U+CC39-CC43,U+CC46-CC97,U+CC99-CC9B,U+CC9D-CCAA,U+CCAC,U+CCAE-CCB3,U+CCB5-CCCF,U+CCD1-CD07,U+CD0A-CD1C,U+CD1E-CD5B,U+CD5D-CD93,U+CD96-CD97,U+CD99-CD9B,U+CD9D-CDA3,U+CDA6-CDA8,U+CDAA-CDAF,U+CDB1-CDC3,U+CDC5-CDE7,U+CDE9-CE1F,U+CE22-CE57,U+CE5A-CE5B,U+CE5D-CE67,U+CE6A-CE73,U+CE75-CE77,U+CE79-CE8F,U+CE91-CEE3,U+CEE5-CEEB,U+CEED-CF1B,U+CF1D-CF53,U+CF55-CF57,U+CF59-CFDF,U+CFE1-D06B,U+D06D-D06F,U+D071-D073,U+D075-D07B,U+D07E-D0A3,U+D0A5-D0B6,U+D0B8-D0BF,U+D0C2-D0CF,U+D0D1-D0D4,U+D0D6-D0DC,U+D0DE-D0EC,U+D0EE-D12F,U+D131-D137,U+D139-D14B,U+D14D-D14F,U+D151-D15B,U+D15D-D167,U+D169-D19F,U+D1A1-D1B4,U+D1B6-D1F3,U+D1F5-D22B,U+D22D-D27F,U+D281-D2B7,U+D2BA-D2BB,U+D2BD-D2BF,U+D2C1-D2EF,U+D2F2-D2F3,U+D2F5-D2F7,U+D2F9-D304,U+D306-D30B,U+D30D,U+D30F,U+D311-D313,U+D315-D327,U+D329-D32B,U+D32D-D37B,U+D37D-D37F,U+D381-D397,U+D399-D3B7,U+D3B9-D3BB,U+D3BD-D3C4,U+D3C6-D3C8,U+D3CA-D3CF,U+D3D1-D3EB,U+D3ED-D3F3,U+D3F5-D45B,U+D45D-D487,U+D489-D503,U+D505-D50B,U+D50D-D53B,U+D53D-D543,U+D545-D550,U+D552-D557,U+D55A-D55B,U+D55D-D55F,U+D561-D567,U+D56A-D56C,U+D56E-D573,U+D576-D587,U+D58A-D5A4,U+D5A6-D5CF,U+D5D1-D5D7,U+D5D9-D5F6,U+D5F8-D5FF,U+D601-D603,U+D605-D610,U+D612-D614,U+D616-D637,U+D639-D63B,U+D63D-D647,U+D649-D653,U+D656-D657,U+D659-D65B,U+D65D-D668,U+D66A-D68B,U+D68E-D6A7,U+D6A9-D6C3,U+D6C5-D733,U+D735-D74F,U+D751-D753,U+D755-D768,U+D76A-D787,U+D789-D797,U+D79A-D7A3;
}
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/fonts/plexkr-500-core.99e7c0df.woff2") format("woff2");
  unicode-range: U+0020-007E,U+00A9,U+00B1-00B2,U+00B7,U+00D7,U+00F7,U+2014,U+2026,U+2190,U+2192-2193,U+2212,U+2462,U+2500,U+2514,U+25B2,U+25BC,U+25C6,U+25D0,U+2600,U+263E,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC12,U+AC15,U+AC19-AC1A,U+AC1C,U+AC31,U+AC70,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACB9,U+ACBC-ACBD,U+ACC4,U+ACE0-ACE1,U+ACE7-ACE8,U+ACF1,U+ACF3,U+ACF5,U+ACFC,U+AD00,U+AD04,U+AD11,U+AD50,U+AD6C-AD6D,U+AD70,U+AD74-AD75,U+AD81,U+AD8C,U+ADDC,U+ADE0,U+ADF8,U+ADFC,U+AE00,U+AE08-AE09,U+AE30,U+AE34,U+AE38,U+AE41,U+AE4C,U+AE4E,U+AE5D,U+AE68,U+AEBC,U+AED8,U+AF2C-AF2D,U+AF34,U+AFB8,U+AFBC,U+AFC9,U+AFD4,U+B00C,U+B010,U+B014,U+B01D,U+B044,U+B04A,U+B04C,U+B05D,U+B07C,U+B098,U+B09C,U+B0A0,U+B0A8-B0A9,U+B0AB,U+B0AE,U+B0B4,U+B0B8,U+B0BC,U+B0C5,U+B0C8,U+B0D0,U+B108-B109,U+B110,U+B118,U+B123,U+B140,U+B144,U+B178,U+B192-B193,U+B204,U+B208,U+B20C,U+B220,U+B290,U+B294,U+B298,U+B2A0,U+B2A5-B2A6,U+B2C8,U+B2CC,U+B2D0,U+B2D8-B2D9,U+B2E4-B2E5,U+B2E8,U+B2EB-B2EC,U+B2F4-B2F5,U+B2F9,U+B2FF-B300,U+B354,U+B358,U+B35C,U+B364,U+B36E,U+B370,U+B378,U+B3C4-B3C5,U+B3C8,U+B3CC,U+B3D9,U+B3FC,U+B410,U+B418,U+B41C,U+B420,U+B428-B429,U+B450,U+B454,U+B458,U+B461,U+B46C,U+B4A4,U+B4DC-B4DD,U+B4E0,U+B4E4,U+B4EC-B4ED,U+B4F1,U+B514,U+B518,U+B527,U+B529,U+B530,U+B54C,U+B5A0,U+B5A4,U+B5A8,U+B5BB-B5BC,U+B5CD,U+B610-B611,U+B69D,U+B701,U+B73B,U+B760,U+B77C-B77D,U+B780,U+B78C-B78D,U+B798,U+B79C,U+B7AC,U+B7B5,U+B7EC,U+B7F0,U+B7FC-B7FD,U+B7FF-B800,U+B807-B808,U+B824-B825,U+B828,U+B82C,U+B838-B839,U+B840,U+B85C-B85D,U+B8CC,U+B8E8,U+B8EC,U+B8F0,U+B904,U+B958,U+B960,U+B974,U+B978,U+B97C,U+B984-B985,U+B9AC-B9AD,U+B9B0,U+B9B4,U+B9BC-B9BD,U+B9C8-B9C9,U+B9CC,U+B9CE,U+B9D0,U+B9DD-B9DE,U+B9E1,U+B9E4,U+B9E8,U+B9F5,U+BA38-BA39,U+BA3C,U+BA48,U+BA4D,U+BA54,U+BA70,U+BA74,U+BA85,U+BA87,U+BAA8-BAA9,U+BAAB-BAAC,U+BAB0,U+BABB,U+BB34,U+BB38,U+BB3C,U+BBAC,U+BBC0,U+BBF8,U+BBFC,U+BBFF,U+BC0F,U+BC11,U+BC14-BC16,U+BC18,U+BC1B-BC1D,U+BC29,U+BC30-BC31,U+BC84,U+BC88,U+BC8C,U+BC94-BC95,U+BCA4,U+BCBC-BCBD,U+BCC0,U+BCC4,U+BCF4-BCF5,U+BCF8,U+BCFC,U+BD05,U+BD09,U+BD10,U+BD80,U+BD84,U+BD88,U+BD99,U+BE0C,U+BE44,U+BE4C,U+BE60,U+BE68,U+BE7C,U+BE80,U+BE8D,U+BF51,U+BFD0,U+C0AC-C0AD,U+C0B0,U+C0B4,U+C0BD,U+C0C1,U+C0C8-C0C9,U+C0DD,U+C11C-C11E,U+C120,U+C124,U+C12C-C12D,U+C131,U+C138,U+C13C,U+C148-C149,U+C158,U+C18C-C18D,U+C190,U+C1A1,U+C218,U+C21C,U+C22B,U+C26C,U+C2A4,U+C2AC,U+C2B5,U+C2B7,U+C2B9,U+C2DC-C2DD,U+C2E0,U+C2E4,U+C2EC,U+C2F6,U+C2F8,U+C313,U+C368,U+C4F0,U+C4F8,U+C501,U+C529,U+C544,U+C548,U+C54A,U+C54C,U+C555,U+C558-C559,U+C55E,U+C560-C561,U+C574,U+C57C-C57D,U+C591,U+C5B4-C5B5,U+C5B8-C5B9,U+C5BB-C5BC,U+C5C5-C5C8,U+C5D0,U+C5EC-C5ED,U+C5F0,U+C5F4,U+C600-C601,U+C608,U+C624,U+C628,U+C62C,U+C62E,U+C635,U+C640,U+C644,U+C654,U+C65C,U+C678,U+C67C,U+C694,U+C6A9,U+C6B0,U+C6B4,U+C6B8,U+C6C0-C6C1,U+C6CC,U+C6D0,U+C6D4,U+C6E0,U+C704,U+C717,U+C720-C721,U+C728,U+C733,U+C735,U+C73C,U+C740,U+C744,U+C74C,U+C751,U+C758,U+C774-C775,U+C778,U+C77C-C77D,U+C783-C785,U+C788,U+C790-C791,U+C794,U+C7A1,U+C7A5,U+C7AC,U+C800-C801,U+C804,U+C808,U+C810-C811,U+C815,U+C81C,U+C838,U+C84C,U+C870-C871,U+C874,U+C885,U+C88B-C88C,U+C8FC,U+C900,U+C904,U+C90D,U+C911,U+C99D,U+C9C0-C9C1,U+C9C4,U+C9C8,U+C9D1,U+C9D5,U+C9DC,U+C9E7,U+C9F8,U+CABD,U+CBE4,U+CC0D,U+CC28-CC29,U+CC2C,U+CC38,U+CC44-CC45,U+CC98,U+CC9C,U+CCAB,U+CCAD,U+CCB4,U+CCD0,U+CD08-CD09,U+CD1D,U+CD5C,U+CD94-CD95,U+CD98,U+CD9C,U+CDA4-CDA5,U+CDA9,U+CDB0,U+CDC4,U+CDE8,U+CE20-CE21,U+CE58-CE59,U+CE5C,U+CE68-CE69,U+CE74,U+CE78,U+CE90,U+CEE4,U+CEEC,U+CF1C,U+CF54,U+CF58,U+CFE0,U+D06C,U+D070,U+D074,U+D07C-D07D,U+D0A4,U+D0B7,U+D0C0-D0C1,U+D0D0,U+D0D5,U+D0DD,U+D0ED,U+D130,U+D138,U+D14C,U+D150,U+D15C,U+D168,U+D1A0,U+D1B5,U+D1F4,U+D22C,U+D280,U+D2B8-D2B9,U+D2BC,U+D2C0,U+D2F0-D2F1,U+D2F4,U+D2F8,U+D305,U+D30C,U+D30E,U+D310,U+D314,U+D328,U+D32C,U+D37C,U+D380,U+D398,U+D3B8,U+D3BC,U+D3C5,U+D3C9,U+D3D0,U+D3EC,U+D3F4,U+D45C,U+D488,U+D504,U+D50C,U+D53C,U+D544,U+D551,U+D558-D559,U+D55C,U+D560,U+D568-D569,U+D56D,U+D574-D575,U+D588-D589,U+D5A5,U+D5D0,U+D5D8,U+D5F7,U+D600,U+D604,U+D611,U+D615,U+D638,U+D63C,U+D648,U+D654-D655,U+D658,U+D65C,U+D669,U+D68C-D68D,U+D6A8,U+D6C4,U+D734,U+D750,U+D754,U+D769,U+D788,U+D798-D799,U+FF0B,U+FF0D;
}
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/fonts/plexkr-600-ext.72e0cf18.woff2") format("woff2");
  unicode-range: U+AC02-AC03,U+AC05-AC07,U+AC09-AC0F,U+AC13-AC14,U+AC16-AC18,U+AC1B,U+AC1D-AC30,U+AC32-AC6F,U+AC71-AC73,U+AC75-AC76,U+AC79-AC7F,U+AC82,U+AC84-AC8B,U+AC8D-ACA7,U+ACAA-ACAB,U+ACAD-ACAF,U+ACB1-ACB8,U+ACBA-ACBB,U+ACBE-ACC3,U+ACC5-ACDF,U+ACE2-ACE6,U+ACE9-ACF0,U+ACF2,U+ACF4,U+ACF6-ACFB,U+ACFD-ACFF,U+AD01-AD03,U+AD05-AD10,U+AD12-AD4F,U+AD51-AD6B,U+AD6E-AD6F,U+AD71-AD73,U+AD76-AD80,U+AD82-AD8B,U+AD8D-ADDB,U+ADDD-ADDF,U+ADE1-ADF7,U+ADF9-ADFB,U+ADFD-ADFF,U+AE01-AE07,U+AE0A-AE2F,U+AE31-AE33,U+AE35-AE37,U+AE39-AE40,U+AE42-AE4B,U+AE4D,U+AE4F-AE5C,U+AE5E-AE67,U+AE69-AEBB,U+AEBD-AED7,U+AED9-AF2B,U+AF2E-AF33,U+AF35-AFB7,U+AFB9-AFBB,U+AFBD-AFC8,U+AFCA-AFD3,U+AFD5-B00B,U+B00D-B00F,U+B011-B013,U+B015-B01C,U+B01E-B043,U+B045-B049,U+B04B,U+B04D-B05C,U+B05E-B07B,U+B07D-B097,U+B099-B09B,U+B09D-B09F,U+B0A1-B0A7,U+B0AA,U+B0AC-B0AD,U+B0AF-B0B3,U+B0B5-B0B7,U+B0B9-B0BB,U+B0BD-B0C4,U+B0C6-B0C7,U+B0C9-B0CF,U+B0D1-B107,U+B10A-B10F,U+B111-B117,U+B119-B122,U+B124-B13F,U+B141-B143,U+B145-B177,U+B179-B191,U+B194-B203,U+B205-B207,U+B209-B20B,U+B20D-B21F,U+B221-B28F,U+B291-B293,U+B295-B297,U+B299-B29F,U+B2A1-B2A4,U+B2A7-B2C7,U+B2C9-B2CB,U+B2CD-B2CF,U+B2D1-B2D7,U+B2DA-B2E3,U+B2E6-B2E7,U+B2E9-B2EA,U+B2ED-B2F3,U+B2F6-B2F8,U+B2FA-B2FE,U+B301-B353,U+B355-B357,U+B359-B35B,U+B35D-B363,U+B365-B36D,U+B36F,U+B371-B377,U+B379-B3C3,U+B3C6-B3C7,U+B3C9-B3CB,U+B3CD-B3D8,U+B3DA-B3FB,U+B3FD-B40F,U+B411-B417,U+B419-B41B,U+B41D-B41F,U+B421-B427,U+B42A-B44F,U+B451-B453,U+B455-B457,U+B459-B460,U+B462-B46B,U+B46D-B4A3,U+B4A5-B4DB,U+B4DE-B4DF,U+B4E1-B4E3,U+B4E5-B4EB,U+B4EE-B4F0,U+B4F2-B513,U+B515-B517,U+B519-B526,U+B528,U+B52A-B52F,U+B531-B54B,U+B54D-B59F,U+B5A1-B5A3,U+B5A5-B5A7,U+B5A9-B5BA,U+B5BD-B5CC,U+B5CE-B60F,U+B612-B69C,U+B69E-B700,U+B702-B73A,U+B73C-B75F,U+B761-B77B,U+B77E-B77F,U+B781-B78B,U+B78E-B797,U+B799-B79B,U+B79D-B7AB,U+B7AD-B7B4,U+B7B6-B7EB,U+B7ED-B7EF,U+B7F1-B7FB,U+B7FE,U+B801-B806,U+B809-B823,U+B826-B827,U+B829-B82B,U+B82D-B837,U+B83A-B83F,U+B841-B85B,U+B85E-B8CB,U+B8CD-B8E7,U+B8E9-B8EB,U+B8ED-B8EF,U+B8F1-B903,U+B905-B957,U+B959-B95F,U+B961-B973,U+B975-B977,U+B979-B97B,U+B97D-B983,U+B986-B9AB,U+B9AE-B9AF,U+B9B1-B9B3,U+B9B5-B9BB,U+B9BE-B9C7,U+B9CA-B9CB,U+B9CD,U+B9CF,U+B9D1-B9DC,U+B9DF-B9E0,U+B9E2-B9E3,U+B9E5-B9E7,U+B9E9-B9F4,U+B9F6-BA37,U+BA3A-BA3B,U+BA3D-BA47,U+BA49-BA4C,U+BA4E-BA53,U+BA55-BA6F,U+BA71-BA73,U+BA75-BA84,U+BA86,U+BA88-BAA7,U+BAAA,U+BAAD-BAAF,U+BAB1-BABA,U+BABC-BB33,U+BB35-BB37,U+BB39-BB3B,U+BB3D-BBAB,U+BBAD-BBBF,U+BBC1-BBF7,U+BBF9-BBFB,U+BBFD-BBFE,U+BC00-BC0E,U+BC10,U+BC12-BC13,U+BC17,U+BC19-BC1A,U+BC1E-BC28,U+BC2A-BC2F,U+BC32-BC83,U+BC85-BC87,U+BC89-BC8B,U+BC8D-BC93,U+BC96-BCA3,U+BCA5-BCBB,U+BCBE-BCBF,U+BCC1-BCC3,U+BCC5-BCF3,U+BCF6-BCF7,U+BCF9-BCFB,U+BCFD-BD04,U+BD06-BD08,U+BD0A-BD0F,U+BD11-BD7F,U+BD81-BD83,U+BD85-BD87,U+BD89-BD98,U+BD9A-BE0B,U+BE0D-BE43,U+BE45-BE4B,U+BE4D-BE5F,U+BE61-BE67,U+BE69-BE7B,U+BE7D-BE7F,U+BE81-BE8C,U+BE8E-BF50,U+BF52-BFCF,U+BFD1-C0AB,U+C0AE-C0AF,U+C0B1-C0B3,U+C0B5-C0BC,U+C0BE-C0C0,U+C0C2-C0C7,U+C0CA-C0DC,U+C0DE-C11B,U+C11F,U+C121-C123,U+C125-C12B,U+C12E-C130,U+C132-C137,U+C139-C13B,U+C13D-C147,U+C14A-C157,U+C159-C18B,U+C18E-C18F,U+C191-C1A0,U+C1A2-C217,U+C219-C21B,U+C21D-C22A,U+C22C-C26B,U+C26D-C2A3,U+C2A5-C2AB,U+C2AD-C2B4,U+C2B6,U+C2B8,U+C2BA-C2DB,U+C2DE-C2DF,U+C2E1-C2E3,U+C2E5-C2EB,U+C2ED-C2F5,U+C2F7,U+C2F9-C312,U+C314-C367,U+C369-C4EF,U+C4F1-C4F7,U+C4F9-C500,U+C502-C528,U+C52A-C543,U+C545-C547,U+C549,U+C54B,U+C54D-C554,U+C556-C557,U+C55A-C55D,U+C55F,U+C562-C573,U+C575-C57B,U+C57E-C590,U+C592-C5B3,U+C5B6-C5B7,U+C5BA,U+C5BD-C5C4,U+C5C9-C5CF,U+C5D1-C5EB,U+C5EE-C5EF,U+C5F1-C5F3,U+C5F5-C5FF,U+C602-C607,U+C609-C623,U+C625-C627,U+C629-C62B,U+C62D,U+C62F-C634,U+C636-C63F,U+C641-C643,U+C645-C653,U+C655-C65B,U+C65D-C677,U+C679-C67B,U+C67D-C693,U+C695-C6A8,U+C6AA-C6AF,U+C6B1-C6B3,U+C6B5-C6B7,U+C6B9-C6BF,U+C6C2-C6CB,U+C6CD-C6CF,U+C6D1-C6D3,U+C6D5-C6DF,U+C6E1-C703,U+C705-C716,U+C718-C71F,U+C722-C727,U+C729-C732,U+C734,U+C736-C73B,U+C73D-C73F,U+C741-C743,U+C745-C74B,U+C74D-C750,U+C752-C757,U+C759-C773,U+C776-C777,U+C779-C77B,U+C77E-C782,U+C786-C787,U+C789-C78F,U+C792-C793,U+C795-C7A0,U+C7A2-C7A4,U+C7A6-C7AB,U+C7AD-C7FF,U+C802-C803,U+C805-C807,U+C809-C80F,U+C812-C814,U+C816-C81B,U+C81D-C837,U+C839-C84B,U+C84D-C86F,U+C872-C873,U+C875-C884,U+C886-C88A,U+C88D-C8FB,U+C8FD-C8FF,U+C901-C903,U+C905-C90C,U+C90E-C910,U+C912-C99C,U+C99E-C9BF,U+C9C2-C9C3,U+C9C5-C9C7,U+C9C9-C9D0,U+C9D2-C9D4,U+C9D6-C9DB,U+C9DD-C9E6,U+C9E8-C9F7,U+C9F9-CABC,U+CABE-CBE3,U+CBE5-CC0C,U+CC0E-CC27,U+CC2A-CC2B,U+CC2D-CC37,U+CC39-CC43,U+CC46-CC97,U+CC99-CC9B,U+CC9D-CCAA,U+CCAC,U+CCAE-CCB3,U+CCB5-CCCF,U+CCD1-CD07,U+CD0A-CD1C,U+CD1E-CD5B,U+CD5D-CD93,U+CD96-CD97,U+CD99-CD9B,U+CD9D-CDA3,U+CDA6-CDA8,U+CDAA-CDAF,U+CDB1-CDC3,U+CDC5-CDE7,U+CDE9-CE1F,U+CE22-CE57,U+CE5A-CE5B,U+CE5D-CE67,U+CE6A-CE73,U+CE75-CE77,U+CE79-CE8F,U+CE91-CEE3,U+CEE5-CEEB,U+CEED-CF1B,U+CF1D-CF53,U+CF55-CF57,U+CF59-CFDF,U+CFE1-D06B,U+D06D-D06F,U+D071-D073,U+D075-D07B,U+D07E-D0A3,U+D0A5-D0B6,U+D0B8-D0BF,U+D0C2-D0CF,U+D0D1-D0D4,U+D0D6-D0DC,U+D0DE-D0EC,U+D0EE-D12F,U+D131-D137,U+D139-D14B,U+D14D-D14F,U+D151-D15B,U+D15D-D167,U+D169-D19F,U+D1A1-D1B4,U+D1B6-D1F3,U+D1F5-D22B,U+D22D-D27F,U+D281-D2B7,U+D2BA-D2BB,U+D2BD-D2BF,U+D2C1-D2EF,U+D2F2-D2F3,U+D2F5-D2F7,U+D2F9-D304,U+D306-D30B,U+D30D,U+D30F,U+D311-D313,U+D315-D327,U+D329-D32B,U+D32D-D37B,U+D37D-D37F,U+D381-D397,U+D399-D3B7,U+D3B9-D3BB,U+D3BD-D3C4,U+D3C6-D3C8,U+D3CA-D3CF,U+D3D1-D3EB,U+D3ED-D3F3,U+D3F5-D45B,U+D45D-D487,U+D489-D503,U+D505-D50B,U+D50D-D53B,U+D53D-D543,U+D545-D550,U+D552-D557,U+D55A-D55B,U+D55D-D55F,U+D561-D567,U+D56A-D56C,U+D56E-D573,U+D576-D587,U+D58A-D5A4,U+D5A6-D5CF,U+D5D1-D5D7,U+D5D9-D5F6,U+D5F8-D5FF,U+D601-D603,U+D605-D610,U+D612-D614,U+D616-D637,U+D639-D63B,U+D63D-D647,U+D649-D653,U+D656-D657,U+D659-D65B,U+D65D-D668,U+D66A-D68B,U+D68E-D6A7,U+D6A9-D6C3,U+D6C5-D733,U+D735-D74F,U+D751-D753,U+D755-D768,U+D76A-D787,U+D789-D797,U+D79A-D7A3;
}
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/fonts/plexkr-600-core.71c25ba9.woff2") format("woff2");
  unicode-range: U+0020-007E,U+00A9,U+00B1-00B2,U+00B7,U+00D7,U+00F7,U+2014,U+2026,U+2190,U+2192-2193,U+2212,U+2462,U+2500,U+2514,U+25B2,U+25BC,U+25C6,U+25D0,U+2600,U+263E,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC12,U+AC15,U+AC19-AC1A,U+AC1C,U+AC31,U+AC70,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACB9,U+ACBC-ACBD,U+ACC4,U+ACE0-ACE1,U+ACE7-ACE8,U+ACF1,U+ACF3,U+ACF5,U+ACFC,U+AD00,U+AD04,U+AD11,U+AD50,U+AD6C-AD6D,U+AD70,U+AD74-AD75,U+AD81,U+AD8C,U+ADDC,U+ADE0,U+ADF8,U+ADFC,U+AE00,U+AE08-AE09,U+AE30,U+AE34,U+AE38,U+AE41,U+AE4C,U+AE4E,U+AE5D,U+AE68,U+AEBC,U+AED8,U+AF2C-AF2D,U+AF34,U+AFB8,U+AFBC,U+AFC9,U+AFD4,U+B00C,U+B010,U+B014,U+B01D,U+B044,U+B04A,U+B04C,U+B05D,U+B07C,U+B098,U+B09C,U+B0A0,U+B0A8-B0A9,U+B0AB,U+B0AE,U+B0B4,U+B0B8,U+B0BC,U+B0C5,U+B0C8,U+B0D0,U+B108-B109,U+B110,U+B118,U+B123,U+B140,U+B144,U+B178,U+B192-B193,U+B204,U+B208,U+B20C,U+B220,U+B290,U+B294,U+B298,U+B2A0,U+B2A5-B2A6,U+B2C8,U+B2CC,U+B2D0,U+B2D8-B2D9,U+B2E4-B2E5,U+B2E8,U+B2EB-B2EC,U+B2F4-B2F5,U+B2F9,U+B2FF-B300,U+B354,U+B358,U+B35C,U+B364,U+B36E,U+B370,U+B378,U+B3C4-B3C5,U+B3C8,U+B3CC,U+B3D9,U+B3FC,U+B410,U+B418,U+B41C,U+B420,U+B428-B429,U+B450,U+B454,U+B458,U+B461,U+B46C,U+B4A4,U+B4DC-B4DD,U+B4E0,U+B4E4,U+B4EC-B4ED,U+B4F1,U+B514,U+B518,U+B527,U+B529,U+B530,U+B54C,U+B5A0,U+B5A4,U+B5A8,U+B5BB-B5BC,U+B5CD,U+B610-B611,U+B69D,U+B701,U+B73B,U+B760,U+B77C-B77D,U+B780,U+B78C-B78D,U+B798,U+B79C,U+B7AC,U+B7B5,U+B7EC,U+B7F0,U+B7FC-B7FD,U+B7FF-B800,U+B807-B808,U+B824-B825,U+B828,U+B82C,U+B838-B839,U+B840,U+B85C-B85D,U+B8CC,U+B8E8,U+B8EC,U+B8F0,U+B904,U+B958,U+B960,U+B974,U+B978,U+B97C,U+B984-B985,U+B9AC-B9AD,U+B9B0,U+B9B4,U+B9BC-B9BD,U+B9C8-B9C9,U+B9CC,U+B9CE,U+B9D0,U+B9DD-B9DE,U+B9E1,U+B9E4,U+B9E8,U+B9F5,U+BA38-BA39,U+BA3C,U+BA48,U+BA4D,U+BA54,U+BA70,U+BA74,U+BA85,U+BA87,U+BAA8-BAA9,U+BAAB-BAAC,U+BAB0,U+BABB,U+BB34,U+BB38,U+BB3C,U+BBAC,U+BBC0,U+BBF8,U+BBFC,U+BBFF,U+BC0F,U+BC11,U+BC14-BC16,U+BC18,U+BC1B-BC1D,U+BC29,U+BC30-BC31,U+BC84,U+BC88,U+BC8C,U+BC94-BC95,U+BCA4,U+BCBC-BCBD,U+BCC0,U+BCC4,U+BCF4-BCF5,U+BCF8,U+BCFC,U+BD05,U+BD09,U+BD10,U+BD80,U+BD84,U+BD88,U+BD99,U+BE0C,U+BE44,U+BE4C,U+BE60,U+BE68,U+BE7C,U+BE80,U+BE8D,U+BF51,U+BFD0,U+C0AC-C0AD,U+C0B0,U+C0B4,U+C0BD,U+C0C1,U+C0C8-C0C9,U+C0DD,U+C11C-C11E,U+C120,U+C124,U+C12C-C12D,U+C131,U+C138,U+C13C,U+C148-C149,U+C158,U+C18C-C18D,U+C190,U+C1A1,U+C218,U+C21C,U+C22B,U+C26C,U+C2A4,U+C2AC,U+C2B5,U+C2B7,U+C2B9,U+C2DC-C2DD,U+C2E0,U+C2E4,U+C2EC,U+C2F6,U+C2F8,U+C313,U+C368,U+C4F0,U+C4F8,U+C501,U+C529,U+C544,U+C548,U+C54A,U+C54C,U+C555,U+C558-C559,U+C55E,U+C560-C561,U+C574,U+C57C-C57D,U+C591,U+C5B4-C5B5,U+C5B8-C5B9,U+C5BB-C5BC,U+C5C5-C5C8,U+C5D0,U+C5EC-C5ED,U+C5F0,U+C5F4,U+C600-C601,U+C608,U+C624,U+C628,U+C62C,U+C62E,U+C635,U+C640,U+C644,U+C654,U+C65C,U+C678,U+C67C,U+C694,U+C6A9,U+C6B0,U+C6B4,U+C6B8,U+C6C0-C6C1,U+C6CC,U+C6D0,U+C6D4,U+C6E0,U+C704,U+C717,U+C720-C721,U+C728,U+C733,U+C735,U+C73C,U+C740,U+C744,U+C74C,U+C751,U+C758,U+C774-C775,U+C778,U+C77C-C77D,U+C783-C785,U+C788,U+C790-C791,U+C794,U+C7A1,U+C7A5,U+C7AC,U+C800-C801,U+C804,U+C808,U+C810-C811,U+C815,U+C81C,U+C838,U+C84C,U+C870-C871,U+C874,U+C885,U+C88B-C88C,U+C8FC,U+C900,U+C904,U+C90D,U+C911,U+C99D,U+C9C0-C9C1,U+C9C4,U+C9C8,U+C9D1,U+C9D5,U+C9DC,U+C9E7,U+C9F8,U+CABD,U+CBE4,U+CC0D,U+CC28-CC29,U+CC2C,U+CC38,U+CC44-CC45,U+CC98,U+CC9C,U+CCAB,U+CCAD,U+CCB4,U+CCD0,U+CD08-CD09,U+CD1D,U+CD5C,U+CD94-CD95,U+CD98,U+CD9C,U+CDA4-CDA5,U+CDA9,U+CDB0,U+CDC4,U+CDE8,U+CE20-CE21,U+CE58-CE59,U+CE5C,U+CE68-CE69,U+CE74,U+CE78,U+CE90,U+CEE4,U+CEEC,U+CF1C,U+CF54,U+CF58,U+CFE0,U+D06C,U+D070,U+D074,U+D07C-D07D,U+D0A4,U+D0B7,U+D0C0-D0C1,U+D0D0,U+D0D5,U+D0DD,U+D0ED,U+D130,U+D138,U+D14C,U+D150,U+D15C,U+D168,U+D1A0,U+D1B5,U+D1F4,U+D22C,U+D280,U+D2B8-D2B9,U+D2BC,U+D2C0,U+D2F0-D2F1,U+D2F4,U+D2F8,U+D305,U+D30C,U+D30E,U+D310,U+D314,U+D328,U+D32C,U+D37C,U+D380,U+D398,U+D3B8,U+D3BC,U+D3C5,U+D3C9,U+D3D0,U+D3EC,U+D3F4,U+D45C,U+D488,U+D504,U+D50C,U+D53C,U+D544,U+D551,U+D558-D559,U+D55C,U+D560,U+D568-D569,U+D56D,U+D574-D575,U+D588-D589,U+D5A5,U+D5D0,U+D5D8,U+D5F7,U+D600,U+D604,U+D611,U+D615,U+D638,U+D63C,U+D648,U+D654-D655,U+D658,U+D65C,U+D669,U+D68C-D68D,U+D6A8,U+D6C4,U+D734,U+D750,U+D754,U+D769,U+D788,U+D798-D799,U+FF0B,U+FF0D;
}
/* ── @font-face 끝 ── */

/* ── tokens: light is the base, both dark scopes redefine only tokens ────── */
:root {
  color-scheme: light;
  /* 패밀리는 하나입니다. IBM Plex Sans KR 은 숫자 자폭이 이미 고정이라
     표·차트의 숫자 정렬에 별도의 고정폭 글꼴이 필요하지 않습니다. */
  --font: "IBM Plex Sans KR", system-ui, -apple-system, "Malgun Gothic", sans-serif;
  --ground:      #eef1f5;
  --surface:     #ffffff;
  --panel:       #f7f9fb;
  --ink:         #131922;
  --ink-2:       #414d5c;
  /* #64717f 는 --ground(#eef1f5) 위에서 4.40:1 이라 WCAG AA(4.5:1) 미달입니다.
     네비·푸터·masthead 설명문이 전부 이 색이라 사이트 전체가 걸렸습니다.
     3단계만 어둡게 해서 4.60:1 로 올렸습니다. 다크 모드는 5.8~6.7 이라 그대로 둡니다. */
  --muted:       #616e7c;
  --line:        #dce1e8;
  --line-soft:   #e8ecf1;
  --accent:      #0e4c55;
  --accent-ink:  #0e4c55;
  --accent-soft: #e0eef0;
  /* .pill.good 이 --good-soft(#e2f0e9) 위에서 4.25:1 이라 AA 미달이었습니다.
     12px 라 큰 글자 예외도 못 받습니다. 4.56:1 로 올렸습니다. */
  --good:        #2a7855;
  --good-soft:   #e2f0e9;
  --warn:        #8f6418;
  --warn-soft:   #f6eddb;
  --bad:         #a8413d;
  --bad-soft:    #f7e5e4;
  --s1: #2a78d6;  /* 근로소득 */
  --s2: #eb6834;  /* 개인연금 */
  --s3: #1baf7a;  /* 국민연금 */
  --s4: #eda100;  /* 주담대 원리금 · 주택연금 */
  --s5: #e87ba4;  /* 연금 납입 */
  --other:  #9aa4b0;  /* 자산 인출 — 범주가 아니라 '나머지' */
  --grow:   #1f7a45;  /* 남는 돈 · 확장기 */
  --grow-2: #62bd90;  /* 남는 돈 · 축소기 */
  --short:  #2a78d6;  /* 소득보다 지출이 큰 해 */
  --band:        #9ec5f4;
  --band-a:      0.34;
  --median:      #2a78d6;
  --grid:        #e6eaf0;
  --shadow:      0 1px 2px rgba(19,25,34,.05), 0 8px 24px -16px rgba(19,25,34,.22);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --ground:      #0e1216;
    --surface:     #171b20;
    --panel:       #1c2128;
    --ink:         #e9edf2;
    --ink-2:       #c2cbd6;
    --muted:       #909cab;
    --line:        #29313a;
    --line-soft:   #222931;
    --accent:      #4fb3b8;
    --accent-ink:  #7fcbcf;
    --accent-soft: #14323a;
    --good:        #5fbf8e;
    --good-soft:   #16302a;
    --warn:        #d9a24b;
    --warn-soft:   #332816;
    --bad:         #e08079;
    --bad-soft:    #351f1f;
    --s1: #3987e5;
    --s2: #d95926;
    --s3: #199e70;
    --s4: #c98500;
    --s5: #d55181;
    --other:  #6b7684;
    --grow:   #35a96f;
    --grow-2: #8ed7b2;
    --short:  #3987e5;
    --band:        #1c5cab;
    --band-a:      0.55;
    --median:      #86b6ef;
    --grid:        #242c35;
    --shadow:      0 1px 2px rgba(0,0,0,.4), 0 10px 28px -18px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --ground:      #0e1216;
  --surface:     #171b20;
  --panel:       #1c2128;
  --ink:         #e9edf2;
  --ink-2:       #c2cbd6;
  --muted:       #909cab;
  --line:        #29313a;
  --line-soft:   #222931;
  --accent:      #4fb3b8;
  --accent-ink:  #7fcbcf;
  --accent-soft: #14323a;
  --good:        #5fbf8e;
  --good-soft:   #16302a;
  --warn:        #d9a24b;
  --warn-soft:   #332816;
  --bad:         #e08079;
  --bad-soft:    #351f1f;
  --s1: #3987e5;
  --s2: #d95926;
  --s3: #199e70;
  --s4: #c98500;
  --s5: #d55181;
  --other:  #6b7684;
  --grow:   #35a96f;
  --grow-2: #8ed7b2;
  --short:  #3987e5;
  --band:        #1c5cab;
  --band-a:      0.55;
  --median:      #86b6ef;
  --grid:        #242c35;
  --shadow:      0 1px 2px rgba(0,0,0,.4), 0 10px 28px -18px rgba(0,0,0,.9);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
b, strong, h1, h2, h3 { font-weight: 600; }   /* 700 은 불러오지 않습니다 */
body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.num { font-family: var(--font); font-variant-numeric: tabular-nums; }

/* ── theme toggle (호스트 테마가 없는 단독 페이지용) ────────────────────── */
.themetoggle {
  position: fixed; top: 14px; right: 14px; z-index: 20;
  width: 38px; height: 38px; border-radius: 50%; cursor: pointer;
  display: grid; place-items: center; font-size: 17px; line-height: 1;
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  box-shadow: var(--shadow);
}
.themetoggle:hover { border-color: var(--accent); color: var(--accent-ink); }
.themetoggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 720px) { .themetoggle { top: 10px; right: 10px; } }

/* ── shell ───────────────────────────────────────────────────────────────── */
.wrap { max-width: 1280px; margin: 0 auto; padding: 28px 20px 72px; }
.masthead { padding-right: 52px; }

.masthead {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 14px 24px;
  padding-bottom: 20px; margin-bottom: 24px;
  border-bottom: 1px solid var(--line);
}
.masthead h1 {
  font-family: var(--font);
  font-weight: 600; font-size: clamp(26px, 3.4vw, 38px);
  letter-spacing: -.01em; line-height: 1.15; margin: 0;
  text-wrap: balance;
}
.masthead .sub { color: var(--muted); font-size: 14px; max-width: 46ch; margin: 0; word-break: keep-all; }
/* 설명이 두 문단인 계산기 — 한 줄 소개 + 무엇을 어떻게 계산하는지(Growth G21).
   masthead 는 가로로 흐르므로 두 문단을 한 칸에 세로로 묶습니다 */
.masthead .subs { display: grid; gap: 6px; max-width: 46ch; }
.eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent-ink); margin: 0 0 6px;
}

.cols { display: grid; grid-template-columns: 352px minmax(0, 1fr); gap: 24px; align-items: start; }
@media (max-width: 1000px) { .cols { grid-template-columns: minmax(0, 1fr); } }

/* ── control rail ────────────────────────────────────────────────────────── */
/* 레일이 화면보다 길면 sticky가 붙지 못하고 같이 흘러내립니다.
   화면 높이만큼 잘라서 레일 안에서 따로 스크롤되게 합니다. */
.rail {
  display: flex; flex-direction: column; gap: 12px; min-width: 0;
  position: sticky; top: 16px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  padding: 2px 6px 2px 2px;   /* 카드 그림자가 잘리지 않도록 */
  margin: -2px -6px -2px -2px;
  scrollbar-width: thin;
  scrollbar-color: var(--line) transparent;
  overscroll-behavior-y: contain;
}
.rail::-webkit-scrollbar { width: 8px; }
.rail::-webkit-scrollbar-track { background: transparent; }
.rail::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }
.rail::-webkit-scrollbar-thumb:hover { background: var(--muted); }
.rail > .group { flex: 0 0 auto; }   /* flex 컨테이너에서 내용이 눌리지 않게 */

@media (max-width: 1000px) {
  .rail { position: static; max-height: none; overflow: visible;
          padding: 0; margin: 0; }
}

.group {
  background: var(--surface); border: 1px solid var(--line); border-radius: 10px;
  box-shadow: var(--shadow); overflow: hidden;
}
.group > summary {
  cursor: pointer; list-style: none; padding: 13px 16px;
  font-size: 13px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-2); display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.group > summary::-webkit-details-marker { display: none; }
.group > summary::after {
  content: "＋"; font-family: var(--font); color: var(--muted); font-size: 14px;
}
.group[open] > summary::after { content: "－"; }
.group[open] > summary { border-bottom: 1px solid var(--line-soft); }
.group > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.group .body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 14px; }

.field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; align-items: baseline; }
.field label { font-size: 14px; color: var(--ink-2); }
.field .val { font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 14px; font-weight: 500; color: var(--ink); white-space: nowrap; }
.field input[type="range"] { grid-column: 1 / -1; width: 100%; accent-color: var(--accent); margin: 2px 0 0;
  touch-action: pan-y; }   /* 세로 스와이프는 페이지 스크롤로 넘깁니다 */
.field input[type="range"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
.field .hint { grid-column: 1 / -1; font-size: 12.5px; color: var(--muted); margin-top: -2px; }
/* 친 값이 그대로 안 들어갔을 때의 안내 (field-ui.js 의 notify). 틀린 게 아니라
   "이렇게 맞췄다"는 말이라 오류 빨강이 아니라 경고 색입니다. 대비 4.51:1 */
.field .fieldmsg {
  grid-column: 1 / -1; margin: 2px 0 0; padding: 6px 9px; border-radius: 6px;
  font-size: 12.5px; line-height: 1.5; background: var(--warn-soft); color: var(--warn);
  word-break: keep-all;   /* "옮겼습니\n다." 처럼 음절 단위로 끊기지 않게 */
}
/* 글자가 들어가기 전(0.25초)에도 낭독기 트리에 남아 있어야 해서 display:none 대신 */
.field .fieldmsg:empty { margin: 0; padding: 0; }
/* ── 값 직접 입력 · 한 칸 조정 ─────────────────────────────────────────── */
/* 슬라이더는 칸이 촘촘하면 손가락으로 한 칸을 집을 수 없습니다.
   값을 눌러 타이핑하거나, －/＋ 로 정확히 한 칸씩 움직입니다. */
.field .sliderrow {
  grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; margin-top: 2px;
}
.field .sliderrow input[type="range"] { flex: 1 1 auto; min-width: 0; margin: 0; }
.field .val.editable { cursor: pointer; border-bottom: 1px dashed var(--line); }
.field .val.editable:hover { border-bottom-color: var(--accent); color: var(--accent-ink); }
.field .val.editable:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px;
}
.stepbtn {
  font: inherit; font-size: 13px; line-height: 1; flex: 0 0 auto;
  width: 22px; height: 22px; padding: 0; border-radius: 5px; cursor: pointer;
  border: 1px solid var(--line); background: var(--panel); color: var(--ink-2);
  display: inline-grid; place-items: center;
}
.stepbtn:hover { border-color: var(--accent); color: var(--accent-ink); }
/* 끝에 닿았거나 연동으로 잠긴 버튼·값 칸 (field-ui.js, P0 #8 가). 누르면 이유를
   말해야 해서 disabled 대신 aria-disabled 이고, 그래서 초점·클릭은 그대로 받습니다. */
.stepbtn[aria-disabled="true"] { opacity: .35; cursor: default; }
.stepbtn[aria-disabled="true"]:hover { border-color: var(--line); color: var(--ink-2); }
.field .val.editable.locked { color: var(--muted); border-bottom-style: dotted; cursor: default; }
.field .val.editable.locked:hover { border-bottom-color: var(--line); color: var(--muted); }
.stepbtn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.valedit {
  font: inherit; font-size: 13px; font-variant-numeric: tabular-nums;
  width: 7ch; text-align: right; padding: 1px 5px;
  border: 1px solid var(--accent); border-radius: 4px;
  background: var(--surface); color: var(--ink);
}
.valedit:focus { outline: none; }
.valunit { font-size: 12px; color: var(--muted); margin-left: 3px; }

.field .syncrow {
  grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: -2px;
}
.field .synclink {
  grid-column: 1 / -1; display: flex; align-items: center; gap: 6px;
  font-size: 12.5px; color: var(--muted); margin-top: -2px; cursor: pointer;
}
.field .syncrow .synclink { grid-column: auto; margin-top: 0; }
.field .synclink input { accent-color: var(--accent); width: 13px; height: 13px; margin: 0; cursor: pointer; }
.field .synclink:has(input:checked) { color: var(--ink-2); font-weight: 500; }
.field input[type="range"]:disabled { opacity: .4; cursor: not-allowed; }

.check {
  display: flex; align-items: center; gap: 9px; cursor: pointer;
  font-size: 14px; font-weight: 500; color: var(--ink);
  padding-top: 10px; border-top: 1px solid var(--line-soft);
}
.check input { accent-color: var(--accent); width: 15px; height: 15px; margin: 0; cursor: pointer; flex: 0 0 auto; }
.check input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.check:has(input:not(:checked)) { color: var(--muted); }

.subhead {
  margin: 4px 0 -2px; padding-top: 12px; border-top: 1px solid var(--line-soft);
  font-size: 12.5px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: var(--muted);
}

.rowbtns { display: flex; gap: 8px; flex-wrap: wrap; }
button.act {
  font: inherit; font-size: 12.5px; font-weight: 500;
  padding: 8px 12px; border-radius: 7px; cursor: pointer;
  border: 1px solid var(--line); background: var(--panel); color: var(--ink-2);
}
button.act:hover { border-color: var(--accent); color: var(--accent-ink); }
button.act:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.rail.mode-income [data-mode="save"],
.rail.mode-save [data-mode="income"] { display: none; }

/* ── 은퇴 전 타임라인 ─────────────────────────────────────────────────────── */
.tl { display: flex; flex-direction: column; gap: 7px; }
.tlbar { display: flex; height: 10px; border-radius: 5px; overflow: hidden; background: var(--line-soft); }
.tlseg { min-width: 0; transition: flex-grow .15s; }
.tlseg.a { background: var(--grow); }
.tlseg.b { background: var(--grow-2); }
.tlrow { display: flex; flex-wrap: wrap; gap: 3px 14px; font-size: 12.5px; color: var(--ink-2); }
.tlrow span { display: inline-flex; align-items: center; gap: 5px; }
.tlrow i { width: 9px; height: 9px; border-radius: 2px; flex: 0 0 auto; }
.tlrow i.a { background: var(--grow); }
.tlrow i.b { background: var(--grow-2); }
.tlrow b { font-weight: 600; color: var(--ink); }
.tlnote { font-size: 12.5px; color: var(--muted); }

.calc { font-size: 12.5px; color: var(--muted); }
.calc b { font-family: var(--font); font-variant-numeric: tabular-nums;
  color: var(--ink-2); font-weight: 600; }

/* ── results ─────────────────────────────────────────────────────────────── */
.results { display: flex; flex-direction: column; gap: 20px; min-width: 0; }

.verdict {
  min-width: 0;
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--shadow); padding: 22px 24px;
  display: grid; grid-template-columns: minmax(180px, 250px) 1fr; gap: 24px 32px; align-items: center;
}
@media (max-width: 660px) { .verdict { grid-template-columns: 1fr; } }
.gaugewrap { display: flex; align-items: center; gap: 16px; }
.gauge { flex: 0 0 auto; }
.bignum { font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 44px; font-weight: 600; line-height: 1; letter-spacing: -.02em; }
.bignum small { font-size: 20px; font-weight: 500; }
.pill {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
  font-size: 12.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px;
}
.pill.good { background: var(--good-soft); color: var(--good); }
.pill.mid  { background: var(--accent-soft); color: var(--accent-ink); }
.pill.warn { background: var(--warn-soft); color: var(--warn); }
.pill.bad  { background: var(--bad-soft);  color: var(--bad); }
.gaugelabel { font-size: 13px; color: var(--muted); letter-spacing: .04em; }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: 18px 22px; }
.kpi .k { font-size: 12.5px; color: var(--muted); letter-spacing: .03em; }
.kpi .v { font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 21px; font-weight: 500; line-height: 1.3; }
.kpi .v small { font-size: 13px; color: var(--ink-2); font-weight: 400; }
/* 다섯 장이 같은 무게면 어디부터 볼지 모릅니다. 돈으로 답하는 한 장만 올립니다 */
.kpi.primary .k { color: var(--ink-2); font-weight: 600; }
.kpi.primary .v { font-size: 26px; font-weight: 600; color: var(--accent-ink); }

/* 요약 한 줄 — 게이지·KPI 아래 전폭. 확률이 무엇의 확률인지, 돈으로 얼마인지 */
.verdictline {
  grid-column: 1 / -1; margin: 0; padding-top: 16px; border-top: 1px solid var(--line-soft);
  font-size: 15px; line-height: 1.6; color: var(--ink); word-break: keep-all;
}
.verdictline b { font-weight: 600; color: var(--accent-ink); }

/* 계산기 결과 바로 아래 면책 — 10개 계산기에 같은 문구 (tests 가 동일성 검사) */
.resultnote { margin: -6px 0 0; font-size: 14px; line-height: 1.6; word-break: keep-all; }
.resultnote a { color: var(--accent-ink); white-space: nowrap; }

/* 눈에는 안 보이고 낭독기만 읽는 글자 */
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.card {
  min-width: 0;
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--shadow); padding: 20px 22px 18px;
}
.cardhead { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
/* 심플 모드에서 고급 전용 입력을 접습니다. hidden 속성이 아니라 클래스로
   숨기는 이유는 app.js 의 applyUi 주석에 있습니다 — data-child·data-move 가
   같은 요소의 hidden 을 자기 기준으로 다시 켜기 때문입니다. */
.rail.ui-simple [data-adv] { display: none !important; }

/* 값끼리 앞뒤가 안 맞을 때의 경고. 숨기지 않고 눈에 띄게 둡니다 */
.warnnote {
  background: var(--warn-soft); color: var(--warn);
  border-radius: 6px; padding: 8px 10px; margin: 8px 0 2px;
}
.warnnote b { color: inherit; }

/* 접힌 그룹 안의 경고는 아무도 못 봅니다. 제목에 다는 깃발입니다. */
.warnflag {
  background: var(--warn-soft); color: var(--warn);
  font-size: 12px; font-weight: 600; border-radius: 999px;
  padding: 2px 8px; margin-left: 8px; vertical-align: 2px;
}

/* 심플/고급 전환 — 사이드바 맨 위, 첫 그룹보다 먼저 눈에 들어와야 합니다 */
.modebar {
  display: flex; flex-direction: column; gap: 6px; align-items: flex-start;
  padding: 0 0 14px; margin-bottom: 4px; border-bottom: 1px solid var(--line-soft);
}
.modebar .hint { font-size: 12.5px; color: var(--muted); }
.modebar .seg button { padding: 6px 16px; }

.seg { display: inline-flex; border: 1px solid var(--line); border-radius: 7px; overflow: hidden;
  flex: 0 0 auto; justify-self: start; }
.seg button {
  font: inherit; font-size: 12px; padding: 5px 11px; cursor: pointer;
  border: 0; border-right: 1px solid var(--line); background: var(--surface); color: var(--muted);
}
.seg button:last-child { border-right: 0; }
.seg button[aria-pressed="true"] { background: var(--accent-soft); color: var(--accent-ink); font-weight: 600; }
.seg button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

.card h2 {
  font-family: var(--font);
  font-size: 18px; font-weight: 600; margin: 0 0 3px; letter-spacing: -.005em;
}
.card .lede { font-size: 13.5px; color: var(--muted); margin: 0 0 16px; max-width: 62ch; }

.legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 10px; font-size: 12.5px; color: var(--ink-2); }
.legend .lgl { color: var(--muted); font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; align-self: center; }
.legend + .legend { margin-top: -4px; }
.legend span { display: inline-flex; align-items: center; gap: 6px; }
.swatch { width: 11px; height: 11px; border-radius: 3px; flex: 0 0 auto; }
.swatch.line { height: 3px; border-radius: 2px; width: 16px; }
.swatch.dash { height: 0; width: 16px; border-top: 2px dashed currentColor; }
.swatch.vline { width: 0; height: 13px; border-left: 2px dashed currentColor; border-radius: 0; }

.chartbox { position: relative; overflow-x: auto;
  overscroll-behavior-x: contain;   /* 끝에 닿아도 페이지 뒤로가기로 넘어가지 않게 */
  -webkit-overflow-scrolling: touch; }
.chartbox svg { display: block; }
.tip {
  position: absolute; pointer-events: none; opacity: 0; transition: opacity .1s;
  background: var(--surface); border: 1px solid var(--line); border-radius: 8px;
  box-shadow: var(--shadow); padding: 9px 11px; font-size: 12px; min-width: 150px; z-index: 5;
}
.tip .th { font-weight: 600; margin-bottom: 5px; font-size: 12.5px; }
.tip table { border-collapse: collapse; width: 100%; }
.tip td { padding: 1px 0; white-space: nowrap; }
.tip td:last-child { text-align: right; padding-left: 14px;
  font-family: var(--font); font-variant-numeric: tabular-nums; }
.tip .dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; }

/* ── 가정 사항 모아보기 ─────────────────────────────────────────────── */
/* 항목이 서른 개가 넘어서 한 줄에 하나씩 쌓으면 화면을 한참 넘깁니다.
   넓으면 여러 단으로 흘리고 좁으면 한 단이 되게 둡니다. */
.sumwrap {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 0 26px; align-items: start; margin-top: 6px;
}
.sumwrap[hidden] { display: none; }
/* 접힌 상태에서도 펼칠 이유가 보이게 — "가정 47개 · 기본설정과 다른 값 3개" */
.sumcount { display: block; margin-top: 6px; font-weight: 600; color: var(--ink-2); }
.sumgrp { min-width: 0; }
.sumgrp h3 {
  font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; margin: 14px 0 2px;
}
.sumrow {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 5px 0; border-bottom: 1px solid var(--line-soft); font-size: 14px;
}
.sumrow .sk { color: var(--ink-2); min-width: 0; }
.sumrow .sv {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  color: var(--ink); white-space: nowrap; flex: 0 0 auto;
}
/* 기본설정에서 바뀐 값만 굵게 — 서른 줄이 전부 같은 굵기면 아무것도 안 보입니다 */
.sumrow .sv.diff { font-weight: 600; color: var(--accent-ink); }

table.data { border-collapse: collapse; width: 100%; font-size: 13.5px; margin-top: 4px; }
table.data th, table.data td { padding: 7px 10px; border-bottom: 1px solid var(--line-soft); text-align: right; }
table.data th:first-child, table.data td:first-child { text-align: left; }
table.data thead th { font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; border-bottom: 1px solid var(--line); }
table.data td.n { font-family: var(--font); font-variant-numeric: tabular-nums; }
table.data tr.here td { background: var(--accent-soft); font-weight: 600; }
table.data td.pending { color: var(--muted); }
@media (max-width: 560px) { table.data { display: block; overflow-x: auto; white-space: nowrap;
  overscroll-behavior-x: contain; } }
table.data tr.here td:first-child { border-radius: 6px 0 0 6px; }
table.data tr.here td:last-child { border-radius: 0 6px 6px 0; }

.notes { font-size: 14px; color: var(--ink-2); }
.notes ul { margin: 8px 0 0; padding-left: 18px; }
.notes li { margin-bottom: 6px; }
.notes b { color: var(--ink); font-weight: 600; }
.disclaimer {
  border-left: 3px solid var(--accent); background: var(--panel);
  padding: 12px 16px; border-radius: 0 8px 8px 0; font-size: 14px; color: var(--ink-2);
}
.footer { margin-top: 8px; font-size: 13px; color: var(--muted); }

@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* ── 사이트 공통 (다중 페이지) ───────────────────────────────────────────── */
.sitenav {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px 18px;
  max-width: 1280px; margin: 0 auto; padding: 14px 20px 0;
  font-size: 13.5px;
}
/* 좁은 화면에서는 메뉴 첫 줄이 오른쪽 끝까지 차서, 그 자리의 링크가 고정된 테마
   버튼(44px) 밑에 깔렸습니다. 은퇴자금 375px 에서 "4% 룰"을 누르면 화면 색이
   바뀌었습니다(P0 #8 나). 어느 항목이 끝에 올지는 줄바꿈에 달려 있으므로 버튼
   자리(44 + 좌우 10)를 메뉴에서 늘 비워 둡니다. 위 .sitenav 의 padding 보다 뒤에
   있어야 이깁니다. */
@media (max-width: 720px) { .sitenav { padding-right: 64px; } }
.sitenav a { color: var(--muted); text-decoration: none; padding: 4px 0; }
.sitenav a:hover { color: var(--accent-ink); }
.sitenav a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.sitenav .brand {
  font-family: var(--font); font-weight: 600; font-size: 16px;
  color: var(--ink); margin-right: 8px;
  display: inline-flex; align-items: center; gap: 7px;
}
.sitenav .brand img { display: block; border-radius: 5px; }
.sitefoot {
  max-width: 1280px; margin: 0 auto; padding: 28px 20px 48px;
  border-top: 1px solid var(--line); font-size: 13px; color: var(--muted);
}
.sitefoot a { color: var(--ink-2); }
.sitefoot p { margin: 8px 0 0; }

/* 계산기 목록 카드 */
.cardgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
a.calccard {
  display: block; text-decoration: none; color: inherit;
  background: var(--surface); border: 1px solid var(--line); border-radius: 10px;
  padding: 16px 18px; box-shadow: var(--shadow);
}
a.calccard:hover { border-color: var(--accent); }
a.calccard:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
a.calccard b { display: block; font-size: 15px; font-weight: 600; margin-bottom: 4px; }
a.calccard span { font-size: 12.5px; color: var(--muted); line-height: 1.5; }
a.calccard.soon { opacity: .55; pointer-events: none; }
a.calccard.soon b::after { content: " (준비 중)"; font-weight: 400; color: var(--muted); font-size: 12px; }

/* 입력 하나 · 결과 하나짜리 단순 계산기 레이아웃 */
.simple { display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: 24px; align-items: start; }
@media (max-width: 860px) { .simple { grid-template-columns: minmax(0, 1fr); } }
.out { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 18px 22px; }
.out .k { font-size: 12.5px; color: var(--muted); }
.out .v { font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 22px; font-weight: 500; line-height: 1.3; }
.out .v small { font-size: 13px; color: var(--ink-2); font-weight: 400; }

/* ── 값 변화 방향 표시 ──────────────────────────────────────────────────── */
/* 숫자만 봐서는 방금 좋아졌는지 나빠졌는지 알기 어렵습니다. 값이 바뀔 때
   옆에 방향(▲▼)과 차이를 잠깐 띄웁니다. 1.4초 뒤 서서히 사라집니다. */
.delta {
  display: inline-block; margin-left: 7px; vertical-align: middle;
  font-size: 12.5px; font-weight: 700; line-height: 1.5;
  padding: 2px 7px; border-radius: 999px; white-space: nowrap;
  opacity: 1; transition: opacity .3s ease;
}
.delta.fade { opacity: 0; }
.delta.up   { background: var(--good-soft); color: var(--good); }
.delta.down { background: var(--bad-soft);  color: var(--bad); }
.bignum .delta { font-size: 13px; padding: 3px 9px; }

/* ── 결과 공유 카드 ─────────────────────────────────────────────────────── */
.cardmodal {
  position: fixed; inset: 0; z-index: 60; display: grid; place-items: center;
  padding: 20px; background: rgba(9, 13, 17, .62);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
  overscroll-behavior: contain;
}
.cardbox {
  width: min(420px, 100%); max-height: calc(100vh - 40px); overflow-y: auto;
  background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: var(--shadow); padding: 18px;
}
.cardprev { min-height: 120px; display: grid; place-items: center;
  font-size: 13px; color: var(--muted); }
.cardprev img { display: block; width: 100%; height: auto; border-radius: 10px; }
.cardnote {
  margin: 12px 0 14px; font-size: 13px; line-height: 1.5; color: var(--muted);
  border-left: 3px solid var(--accent); padding-left: 10px;
}
.cardbtns { display: flex; gap: 8px; flex-wrap: wrap; }
.cardbtns .act { flex: 1 1 auto; min-height: 42px; }
.cardbtns .act.primary {
  background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600;
}
.cardbtns .act.primary:hover { filter: brightness(1.08); color: #fff; }
@media (pointer: coarse) { .cardbtns .act { min-height: 48px; } }

/* ── 드래그 중 아직 다시 계산되지 않은 값 ───────────────────────────────── */
/* 무거운 파생 계산(90% 생활비·민감도)은 손을 뗄 때만 돕니다. 그 사이의 값은
   이전 결과라서, 최신값처럼 보이지 않도록 흐리게 둡니다. */
.stale { opacity: .42; transition: opacity .15s; }
/* 표는 머리까지 흐리면 글자 대비가 1.79:1 로 떨어집니다. 민감도 표는 이제 카드가
   보일 때까지 계산하지 않아(P1 #27-b) 로드 직후 흐린 채로 남으므로, 흐림은 값이
   든 본문에만 둡니다. 머리는 늘 읽혀야 합니다. */
table.stale { opacity: 1; }
table.stale tbody { opacity: .42; transition: opacity .15s; }

/* ── 모바일 고정 결과 바 ─────────────────────────────────────────────────── */
/* 모바일에서는 레일이 sticky 를 잃어 결과가 두 화면 아래로 내려갑니다.
   엄지가 닿는 하단에 핵심 지표만 고정해 조작과 결과를 한 화면에 둡니다. */
.stickybar { display: none; }
.sb-item { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.sb-k { font-size: 11.5px; color: var(--muted); letter-spacing: .03em; white-space: nowrap; }
.sb-v { font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 19px; font-weight: 600; line-height: 1.2; white-space: nowrap; color: var(--ink); }
.sb-v small { font-size: 12px; font-weight: 400; color: var(--ink-2); }
.sb-v.good { color: var(--good); }
.sb-v.mid  { color: var(--accent-ink); }
.sb-v.bad  { color: var(--bad); }
.sb-go {
  font: inherit; font-size: 13px; font-weight: 600; margin-left: auto; flex: 0 0 auto;
  min-height: 44px; padding: 0 15px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--accent); background: var(--accent-soft); color: var(--accent-ink);
}
.sb-go:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

@media (max-width: 1000px) {
  .stickybar {
    display: flex; align-items: center; gap: 16px;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
    padding: 8px 16px;
    padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));
    background: var(--surface); border-top: 1px solid var(--line);
    box-shadow: 0 -2px 16px -6px rgba(19, 25, 34, .3);
    transition: transform .18s ease, opacity .18s ease;
  }
  .stickybar.off { transform: translateY(110%); opacity: 0; pointer-events: none; }
  /* 바가 푸터를 가리지 않도록 */
  body.has-stickybar { padding-bottom: calc(70px + env(safe-area-inset-bottom, 0px)); }
}

/* ── 터치 기기: 손가락 크기에 맞춘 타겟 ──────────────────────────────────── */
/* WCAG 2.5.5 / Apple HIG 44pt / Material 48dp. 시각적 크기는 그대로 두고
   눌리는 영역만 키웁니다 — accent-color 로 칠해지는 네이티브 트랙을 유지하려고
   -webkit-appearance 는 건드리지 않았습니다. */
@media (pointer: coarse) {
  .field input[type="range"] { height: 44px; margin: 0; }
  .field { gap: 2px 10px; }

  .check { min-height: 44px; padding-top: 0; margin-top: 10px; }
  .check input { width: 22px; height: 22px; }

  .seg button { min-height: 44px; padding: 0 14px; font-size: 13px; }
  .stepbtn { width: 40px; height: 40px; font-size: 18px; }
  .field .sliderrow { margin-top: 0; }   /* 버튼 없는 줄과 높이를 맞춥니다 */
  /* iOS 는 16px 미만 입력에 포커스하면 화면을 확대해 버립니다 */
  .valedit { font-size: 16px; width: 7.5ch; padding: 4px 6px; }

  button.act { min-height: 44px; padding: 0 14px; }
  .group > summary { padding: 15px 16px; }
  .sitenav a { padding: 9px 0; }
  .themetoggle { width: 44px; height: 44px; }
}
