@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-0.woff2") format("woff2"); unicode-range: U+f9ca-fa0b,U+ff03-ff05,U+ff07,U+ff0a-ff0b,U+ff0d-ff19,U+ff1b,U+ff1d,U+ff20-ff5b,U+ff5d,U+ffe0-ffe3,U+ffe5-ffe6; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-1.woff2") format("woff2"); unicode-range: U+d723-d728,U+d72a-d733,U+d735-d748,U+d74a-d74f,U+d752-d753,U+d755-d757,U+d75a-d75f,U+d762-d764,U+d766-d768,U+d76a-d76b,U+d76d-d76f,U+d771-d787,U+d789-d78b,U+d78d-d78f,U+d791-d797,U+d79a,U+d79c,U+d79e-d7a3,U+f900-f909,U+f90b-f92e; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-2.woff2") format("woff2"); unicode-range: U+d679-d68b,U+d68e-d69e,U+d6a0,U+d6a2-d6a7,U+d6a9-d6c3,U+d6c6-d6c7,U+d6c9-d6cb,U+d6cd-d6d3,U+d6d5-d6d6,U+d6d8-d6e3,U+d6e5-d6e7,U+d6e9-d6fb,U+d6fd-d717,U+d719-d71f,U+d721-d722; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-3.woff2") format("woff2"); unicode-range: U+d5bc-d5c7,U+d5ca-d5cb,U+d5cd-d5cf,U+d5d1-d5d7,U+d5d9-d5da,U+d5dc,U+d5de-d5e3,U+d5e6-d5e7,U+d5e9-d5eb,U+d5ed-d5f6,U+d5f8,U+d5fa-d5ff,U+d602-d603,U+d605-d607,U+d609-d60f,U+d612-d613,U+d616-d61b,U+d61d-d637,U+d63a-d63b,U+d63d-d63f,U+d641-d647,U+d64a-d64c,U+d64e-d653,U+d656-d657,U+d659-d65b,U+d65d-d666,U+d668,U+d66a-d678; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-4.woff2") format("woff2"); unicode-range: U+d507,U+d509-d50b,U+d50d-d513,U+d515-d53b,U+d53e-d53f,U+d541-d543,U+d545-d54c,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-d583,U+d585-d586,U+d58a-d5a4,U+d5a6-d5bb; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-5.woff2") format("woff2"); unicode-range: U+d464-d477,U+d47a-d47b,U+d47d-d47f,U+d481-d487,U+d489-d48a,U+d48c,U+d48e-d4e7,U+d4e9-d503,U+d505-d506; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-6.woff2") format("woff2"); unicode-range: U+d3bf-d3c7,U+d3ca-d3cf,U+d3d1-d3eb,U+d3ee-d3ef,U+d3f1-d3f3,U+d3f5-d3fb,U+d3fd-d400,U+d402-d45b,U+d45d-d463; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-7.woff2") format("woff2"); unicode-range: U+d2ff,U+d302-d304,U+d306-d30b,U+d30f,U+d311-d313,U+d315-d31b,U+d31e,U+d322-d324,U+d326-d327,U+d32a-d32b,U+d32d-d32f,U+d331-d337,U+d339-d33c,U+d33e-d37b,U+d37e-d37f,U+d381-d383,U+d385-d38b,U+d38e-d390,U+d392-d397,U+d39a-d39b,U+d39d-d39f,U+d3a1-d3a7,U+d3a9-d3aa,U+d3ac,U+d3ae-d3b3,U+d3b5-d3b7,U+d3b9-d3bb,U+d3bd-d3be; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-8.woff2") format("woff2"); unicode-range: U+d257-d27f,U+d281-d29b,U+d29d-d29f,U+d2a1-d2ab,U+d2ad-d2b7,U+d2ba-d2bb,U+d2bd-d2bf,U+d2c1-d2c7,U+d2c9-d2ef,U+d2f2-d2f3,U+d2f5-d2f7,U+d2f9-d2fe; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-9.woff2") format("woff2"); unicode-range: U+d1b4,U+d1b6-d1f3,U+d1f5-d22b,U+d22e-d22f,U+d231-d233,U+d235-d23b,U+d23d-d240,U+d242-d256; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-10.woff2") format("woff2"); unicode-range: U+d105-d12f,U+d132-d133,U+d135-d137,U+d139-d13f,U+d141-d142,U+d144,U+d146-d14b,U+d14e-d14f,U+d151-d153,U+d155-d15b,U+d15e-d187,U+d189-d19f,U+d1a2-d1a3,U+d1a5-d1a7,U+d1a9-d1af,U+d1b2-d1b3; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-11.woff2") format("woff2"); unicode-range: U+d04b-d04f,U+d051-d057,U+d059-d06b,U+d06d-d06f,U+d071-d073,U+d075-d07b,U+d07e-d0a3,U+d0a6-d0a7,U+d0a9-d0ab,U+d0ad-d0b3,U+d0b6,U+d0b8,U+d0ba-d0bf,U+d0c2-d0c3,U+d0c5-d0c7,U+d0c9-d0cf,U+d0d2,U+d0d6-d0db,U+d0de-d0df,U+d0e1-d0e3,U+d0e5-d0eb,U+d0ee-d0f0,U+d0f2-d104; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-12.woff2") format("woff2"); unicode-range: U+cfa2-cfc3,U+cfc5-cfdf,U+cfe2-cfe3,U+cfe5-cfe7,U+cfe9-cff4,U+cff6-cffb,U+cffd-cfff,U+d001-d003,U+d005-d017,U+d019-d033,U+d036-d037,U+d039-d03b,U+d03d-d04a; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-13.woff2") format("woff2"); unicode-range: U+cef0-cef3,U+cef6,U+cef9-ceff,U+cf01-cf03,U+cf05-cf07,U+cf09-cf0f,U+cf11-cf12,U+cf14-cf1b,U+cf1d-cf1f,U+cf21-cf2f,U+cf31-cf53,U+cf56-cf57,U+cf59-cf5b,U+cf5d-cf63,U+cf66,U+cf68,U+cf6a-cf6f,U+cf71-cf84,U+cf86-cf8b,U+cf8d-cfa1; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-14.woff2") format("woff2"); unicode-range: U+ce3c-ce57,U+ce5a-ce5b,U+ce5d-ce5f,U+ce61-ce67,U+ce6a,U+ce6c,U+ce6e-ce73,U+ce76-ce77,U+ce79-ce7b,U+ce7d-ce83,U+ce85-ce88,U+ce8a-ce8f,U+ce91-ce93,U+ce95-ce97,U+ce99-ce9f,U+cea2,U+cea4-ceab,U+cead-cee3,U+cee6-cee7,U+cee9-ceeb,U+ceed-ceef; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-15.woff2") format("woff2"); unicode-range: U+cd92-cd93,U+cd96-cd97,U+cd99-cd9b,U+cd9d-cda3,U+cda6-cda8,U+cdaa-cdaf,U+cdb1-cdc3,U+cdc5-cdcb,U+cdcd-cde7,U+cde9-ce03,U+ce05-ce1f,U+ce22-ce34,U+ce36-ce3b; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-16.woff2") format("woff2"); unicode-range: U+ccef-cd07,U+cd0a-cd0b,U+cd0d-cd1a,U+cd1c,U+cd1e-cd2b,U+cd2d-cd5b,U+cd5d-cd77,U+cd79-cd91; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-17.woff2") format("woff2"); unicode-range: U+cc3f-cc43,U+cc46-cc47,U+cc49-cc4b,U+cc4d-cc53,U+cc55-cc58,U+cc5a-cc5f,U+cc61-cc97,U+cc9a-cc9b,U+cc9d-cc9f,U+cca1-cca7,U+ccaa,U+ccac,U+ccae-ccb3,U+ccb6-ccb7,U+ccb9-ccbb,U+ccbd-cccf,U+ccd1-cce3,U+cce5-ccee; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-18.woff2") format("woff2"); unicode-range: U+cb91-cbd3,U+cbd5-cbe3,U+cbe5-cc0b,U+cc0e-cc0f,U+cc11-cc13,U+cc15-cc1b,U+cc1d-cc20,U+cc23-cc27,U+cc2a-cc2b,U+cc2d,U+cc2f,U+cc31-cc37,U+cc3a,U+cc3c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-19.woff2") format("woff2"); unicode-range: U+caf4-cb47,U+cb4a-cb90; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-20.woff2") format("woff2"); unicode-range: U+ca4a-ca4b,U+ca4e-ca4f,U+ca51-ca53,U+ca55-ca5b,U+ca5d-ca60,U+ca62-ca83,U+ca85-cabb,U+cabe-cabf,U+cac1-cac3,U+cac5-cacb,U+cacd-cad0,U+cad2,U+cad4-cad8,U+cada-caf3; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-21.woff2") format("woff2"); unicode-range: U+c996-c997,U+c99a-c99c,U+c99e-c9bf,U+c9c2-c9c3,U+c9c5-c9c7,U+c9c9-c9cf,U+c9d2,U+c9d4,U+c9d7-c9d8,U+c9db,U+c9de-c9df,U+c9e1-c9e3,U+c9e5-c9e6,U+c9e8-c9eb,U+c9ee-c9f0,U+c9f2-c9f7,U+c9f9-ca0b,U+ca0d-ca28,U+ca2a-ca49; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-22.woff2") format("woff2"); unicode-range: U+c8e9-c8f4,U+c8f6-c8fb,U+c8fe-c8ff,U+c901-c903,U+c905-c90b,U+c90e-c910,U+c912-c917,U+c919-c92b,U+c92d-c94f,U+c951-c953,U+c955-c96b,U+c96d-c973,U+c975-c987,U+c98a-c98b,U+c98d-c98f,U+c991-c995; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-23.woff2") format("woff2"); unicode-range: U+c841-c84b,U+c84d-c86f,U+c872-c873,U+c875-c877,U+c879-c87f,U+c882-c884,U+c887-c88a,U+c88d-c8c3,U+c8c5-c8df,U+c8e1-c8e8; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-24.woff2") format("woff2"); unicode-range: U+c779-c77b,U+c77e-c782,U+c786,U+c78b,U+c78d,U+c78f,U+c792-c793,U+c795,U+c797,U+c799-c79f,U+c7a2,U+c7a7-c7ab,U+c7ae-c7bb,U+c7bd-c7c0,U+c7c2-c7c7,U+c7c9-c7dc,U+c7de-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-c82e,U+c830-c837,U+c839-c83b,U+c83d-c840; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-25.woff2") format("woff2"); unicode-range: U+c6bb-c6bf,U+c6c2,U+c6c4,U+c6c6-c6cb,U+c6ce-c6cf,U+c6d1-c6d3,U+c6d5-c6db,U+c6dd-c6df,U+c6e1-c6e7,U+c6e9-c6eb,U+c6ed-c6ef,U+c6f1-c6f8,U+c6fa-c703,U+c705-c707,U+c709-c70b,U+c70d-c716,U+c718,U+c71a-c71f,U+c722-c723,U+c725-c727,U+c729-c734,U+c736-c73b,U+c73e-c73f,U+c741-c743,U+c745-c74b,U+c74e-c750,U+c752-c757,U+c759-c773,U+c776-c777; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-26.woff2") format("woff2"); unicode-range: U+c5f5-c5fb,U+c5fe,U+c602-c605,U+c607,U+c609-c60f,U+c611-c61a,U+c61c-c623,U+c626-c627,U+c629-c62b,U+c62d,U+c62f-c632,U+c636,U+c638,U+c63a-c63f,U+c642-c643,U+c645-c647,U+c649-c652,U+c656-c65b,U+c65d-c65f,U+c661-c663,U+c665-c677,U+c679-c67b,U+c67d-c693,U+c696-c697,U+c699-c69b,U+c69d-c6a3,U+c6a6,U+c6a8,U+c6aa-c6af,U+c6b2-c6b3,U+c6b5-c6b7,U+c6b9-c6ba; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-27.woff2") format("woff2"); unicode-range: U+c517-c527,U+c52a-c52b,U+c52d-c52f,U+c531-c538,U+c53a,U+c53c,U+c53e-c543,U+c546-c547,U+c54b,U+c54d-c552,U+c556,U+c55a-c55b,U+c55d,U+c55f,U+c562-c563,U+c565-c567,U+c569-c56f,U+c572,U+c574,U+c576-c57b,U+c57e-c57f,U+c581-c583,U+c585-c586,U+c588-c58b,U+c58e,U+c590,U+c592-c596,U+c599-c5b3,U+c5b6-c5b7,U+c5ba,U+c5be-c5c3,U+c5ca-c5cb,U+c5cd,U+c5cf,U+c5d2-c5d3,U+c5d5-c5d7,U+c5d9-c5df,U+c5e1-c5e2,U+c5e4,U+c5e6-c5eb,U+c5ef,U+c5f1-c5f3; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-28.woff2") format("woff2"); unicode-range: U+c475-c4ef,U+c4f2-c4f3,U+c4f5-c4f7,U+c4f9-c4ff,U+c502-c50b,U+c50d-c516; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-29.woff2") format("woff2"); unicode-range: U+c3d0-c3d7,U+c3da-c3db,U+c3dd-c3de,U+c3e1-c3ec,U+c3ee-c3f3,U+c3f5-c42b,U+c42d-c463,U+c466-c474; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-30.woff2") format("woff2"); unicode-range: U+c32b-c367,U+c36a-c36b,U+c36d-c36f,U+c371-c377,U+c37a-c37b,U+c37e-c383,U+c385-c387,U+c389-c3cf; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-31.woff2") format("woff2"); unicode-range: U+c26a-c26b,U+c26d-c26f,U+c271-c273,U+c275-c27b,U+c27e-c287,U+c289-c28f,U+c291-c297,U+c299-c29a,U+c29c-c2a3,U+c2a5-c2a7,U+c2a9-c2ab,U+c2ad-c2b3,U+c2b6,U+c2b8,U+c2ba-c2bb,U+c2bd-c2db,U+c2de-c2df,U+c2e1-c2e2,U+c2e5-c2ea,U+c2ee,U+c2f0,U+c2f2-c2f5,U+c2f7,U+c2fa-c2fb,U+c2fd-c2ff,U+c301-c307,U+c309-c30c,U+c30e-c312,U+c315-c323,U+c325-c328,U+c32a; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-32.woff2") format("woff2"); unicode-range: U+c1bc-c1c3,U+c1c5-c1df,U+c1e1-c1fb,U+c1fd-c203,U+c205-c20c,U+c20e,U+c210-c217,U+c21a-c21b,U+c21d-c21e,U+c221-c227,U+c229-c22a,U+c22c,U+c22e,U+c230,U+c233-c24f,U+c251-c257,U+c259-c269; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-33.woff2") format("woff2"); unicode-range: U+c101-c11b,U+c11f,U+c121-c123,U+c125-c12b,U+c12e,U+c132-c137,U+c13a-c13b,U+c13d-c13f,U+c141-c147,U+c14a,U+c14c-c153,U+c155-c157,U+c159-c15b,U+c15d-c166,U+c169-c16f,U+c171-c177,U+c179-c18b,U+c18e-c18f,U+c191-c193,U+c195-c19b,U+c19d-c19e,U+c1a0,U+c1a2-c1a4,U+c1a6-c1bb; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-34.woff2") format("woff2"); unicode-range: U+c049-c057,U+c059-c05b,U+c05d-c05f,U+c061-c067,U+c069-c08f,U+c091-c0ab,U+c0ae-c0af,U+c0b1-c0b3,U+c0b5,U+c0b7-c0bb,U+c0be,U+c0c2-c0c7,U+c0ca-c0cb,U+c0cd-c0cf,U+c0d1-c0d7,U+c0d9-c0da,U+c0dc,U+c0de-c0e3,U+c0e5-c0eb,U+c0ed-c0f3,U+c0f6,U+c0f8,U+c0fa-c0ff; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-35.woff2") format("woff2"); unicode-range: U+bfa7-bfaf,U+bfb1-bfc4,U+bfc6-bfcb,U+bfce-bfcf,U+bfd1-bfd3,U+bfd5-bfdb,U+bfdd-c048; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-36.woff2") format("woff2"); unicode-range: U+bf07,U+bf09-bf3f,U+bf41-bf4f,U+bf52-bf54,U+bf56-bfa6; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-37.woff2") format("woff2"); unicode-range: U+be56,U+be58,U+be5c-be5f,U+be62-be63,U+be65-be67,U+be69-be74,U+be76-be7b,U+be7e-be7f,U+be81-be8e,U+be90,U+be92-bea7,U+bea9-becf,U+bed2-bed3,U+bed5-bed6,U+bed9-bee3,U+bee6-bf06; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-38.woff2") format("woff2"); unicode-range: U+bdb0-bdd3,U+bdd5-bdef,U+bdf1-be0b,U+be0d-be0f,U+be11-be13,U+be15-be43,U+be46-be47,U+be49-be4b,U+be4d-be53; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-39.woff2") format("woff2"); unicode-range: U+bd03,U+bd06,U+bd08,U+bd0a-bd0f,U+bd11-bd22,U+bd25-bd47,U+bd49-bd58,U+bd5a-bd7f,U+bd82-bd83,U+bd85-bd87,U+bd8a-bd8f,U+bd91-bd92,U+bd94,U+bd96-bd98,U+bd9a-bdaf; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-40.woff2") format("woff2"); unicode-range: U+bc4e-bc83,U+bc86-bc87,U+bc89-bc8b,U+bc8d-bc93,U+bc96,U+bc98,U+bc9b-bc9f,U+bca2-bca3,U+bca5-bca7,U+bca9-bcb2,U+bcb4-bcbb,U+bcbe-bcbf,U+bcc1-bcc3,U+bcc5-bccc,U+bcce-bcd0,U+bcd2-bcd4,U+bcd6-bcf3,U+bcf7,U+bcf9-bcfb,U+bcfd-bd02; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-41.woff2") format("woff2"); unicode-range: U+bb90-bba3,U+bba5-bbab,U+bbad-bbbf,U+bbc1-bbf7,U+bbfa-bbfb,U+bbfd-bbfe,U+bc01-bc07,U+bc09-bc0a,U+bc0e,U+bc10,U+bc12-bc13,U+bc17,U+bc19-bc1a,U+bc1e,U+bc20-bc23,U+bc26,U+bc28,U+bc2a-bc2c,U+bc2e-bc2f,U+bc32-bc33,U+bc35-bc37,U+bc39-bc3f,U+bc41-bc42,U+bc44,U+bc46-bc48,U+bc4a-bc4d; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-42.woff2") format("woff2"); unicode-range: U+bae6-bafb,U+bafd-bb17,U+bb19-bb33,U+bb37,U+bb39-bb3a,U+bb3d-bb43,U+bb45-bb46,U+bb48,U+bb4a-bb4f,U+bb51-bb53,U+bb55-bb57,U+bb59-bb62,U+bb64-bb8f; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-43.woff2") format("woff2"); unicode-range: U+ba30-ba37,U+ba3a-ba3b,U+ba3d-ba3f,U+ba41-ba47,U+ba49-ba4a,U+ba4c,U+ba4e-ba53,U+ba56-ba57,U+ba59-ba5b,U+ba5d-ba63,U+ba65-ba66,U+ba68-ba6f,U+ba71-ba73,U+ba75-ba77,U+ba79-ba84,U+ba86,U+ba88-baa7,U+baaa,U+baad-baaf,U+bab1-bab7,U+baba,U+babc,U+babe-bae5; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-44.woff2") format("woff2"); unicode-range: U+b96e-b973,U+b976-b977,U+b979-b97b,U+b97d-b983,U+b986,U+b988,U+b98a-b98d,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+b9d2-b9d7,U+b9da,U+b9dc,U+b9df-b9e0,U+b9e2,U+b9e6-b9e7,U+b9e9-b9f3,U+b9f6,U+b9f8,U+b9fb-ba2f; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-45.woff2") format("woff2"); unicode-range: U+b8bf-b8cb,U+b8cd-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+b93d-b957,U+b95a-b95b,U+b95d-b95f,U+b961-b967,U+b969-b96c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-46.woff2") format("woff2"); unicode-range: U+b80d-b80f,U+b811-b817,U+b81a,U+b81c-b823,U+b826-b827,U+b829-b82b,U+b82d-b833,U+b836,U+b83a-b83f,U+b841-b85b,U+b85e-b85f,U+b861-b863,U+b865-b86b,U+b86e,U+b870,U+b872-b8af,U+b8b1-b8be; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-47.woff2") format("woff2"); unicode-range: U+b74d-b75f,U+b761-b763,U+b765-b774,U+b776-b77b,U+b77e-b77f,U+b781-b783,U+b785-b78b,U+b78e,U+b792-b796,U+b79a-b79b,U+b79d-b7a7,U+b7aa,U+b7ae-b7b3,U+b7b6-b7c8,U+b7ca-b7eb,U+b7ee-b7ef,U+b7f1-b7f3,U+b7f5-b7fb,U+b7fe,U+b802-b806,U+b80a-b80b; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-48.woff2") format("woff2"); unicode-range: U+b6a7-b6aa,U+b6ac-b6b0,U+b6b2-b6ef,U+b6f1-b727,U+b72a-b72b,U+b72d-b72e,U+b731-b737,U+b739-b73a,U+b73c-b743,U+b745-b74c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-49.woff2") format("woff2"); unicode-range: U+b605-b60f,U+b612-b617,U+b619-b624,U+b626-b69b,U+b69e-b6a3,U+b6a5-b6a6; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-50.woff2") format("woff2"); unicode-range: U+b55f,U+b562-b583,U+b585-b59f,U+b5a2-b5a3,U+b5a5-b5a7,U+b5a9-b5b2,U+b5b5-b5ba,U+b5bd-b604; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-51.woff2") format("woff2"); unicode-range: U+b4a5-b4b6,U+b4b8-b4bf,U+b4c1-b4c7,U+b4c9-b4db,U+b4de-b4df,U+b4e1-b4e2,U+b4e5-b4eb,U+b4ee,U+b4f0,U+b4f2-b513,U+b516-b517,U+b519-b51a,U+b51d-b523,U+b526,U+b528,U+b52b-b52f,U+b532-b533,U+b535-b537,U+b539-b53f,U+b541-b544,U+b546-b54b,U+b54d-b54f,U+b551-b55b,U+b55d-b55e; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-52.woff2") format("woff2"); unicode-range: U+b3f8-b3fb,U+b3fd-b40f,U+b411-b417,U+b419-b41b,U+b41d-b41f,U+b421-b427,U+b42a-b42b,U+b42d-b44f,U+b452-b453,U+b455-b457,U+b459-b45f,U+b462-b464,U+b466-b46b,U+b46d-b47f,U+b481-b4a3; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-53.woff2") format("woff2"); unicode-range: U+b342-b353,U+b356-b357,U+b359-b35b,U+b35d-b35e,U+b360-b363,U+b366,U+b368,U+b36a-b36d,U+b36f,U+b372-b373,U+b375-b377,U+b379-b37f,U+b381-b382,U+b384,U+b386-b38b,U+b38d-b3c3,U+b3c6-b3c7,U+b3c9-b3ca,U+b3cd-b3d3,U+b3d6,U+b3d8,U+b3da-b3f7; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-54.woff2") format("woff2"); unicode-range: U+b27c-b283,U+b285-b28f,U+b292-b293,U+b295-b297,U+b29a-b29f,U+b2a1-b2a4,U+b2a7-b2a9,U+b2ab,U+b2ad-b2c7,U+b2ca-b2cb,U+b2cd-b2cf,U+b2d1-b2d7,U+b2da,U+b2dc,U+b2de-b2e3,U+b2e7,U+b2e9-b2ea,U+b2ef-b2f3,U+b2f6,U+b2f8,U+b2fa-b2fb,U+b2fd-b2fe,U+b302-b303,U+b305-b307,U+b309-b30f,U+b312,U+b316-b31b,U+b31d-b341; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-55.woff2") format("woff2"); unicode-range: U+b1d6-b1e7,U+b1e9-b1fc,U+b1fe-b203,U+b206-b207,U+b209-b20b,U+b20d-b213,U+b216-b21f,U+b221-b257,U+b259-b273,U+b275-b27b; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-56.woff2") format("woff2"); unicode-range: U+b120-b122,U+b126-b127,U+b129-b12b,U+b12d-b133,U+b136,U+b138,U+b13a-b13f,U+b142-b143,U+b145-b14f,U+b151-b153,U+b156-b157,U+b159-b177,U+b17a-b17b,U+b17d-b17f,U+b181-b187,U+b189-b18c,U+b18e-b191,U+b195-b1a7,U+b1a9-b1cb,U+b1cd-b1d5; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-57.woff2") format("woff2"); unicode-range: U+b05f-b07b,U+b07e-b07f,U+b081-b083,U+b085-b08b,U+b08d-b097,U+b09b,U+b09d-b09f,U+b0a2-b0a7,U+b0aa,U+b0b0,U+b0b2,U+b0b6-b0b7,U+b0b9-b0bb,U+b0bd-b0c3,U+b0c6-b0c7,U+b0ca-b0cf,U+b0d1-b0df,U+b0e1-b0e4,U+b0e6-b107,U+b10a-b10b,U+b10d-b10f,U+b111-b112,U+b114-b117,U+b119-b11a,U+b11c-b11f; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-58.woff2") format("woff2"); unicode-range: U+afac-afb7,U+afba-afbb,U+afbd-afbf,U+afc1-afc6,U+afca-afcc,U+afce-afd3,U+afd5-afe7,U+afe9-afef,U+aff1-b00b,U+b00d-b00f,U+b011-b013,U+b015-b01b,U+b01d-b027,U+b029-b043,U+b045-b047,U+b049,U+b04b,U+b04d-b052,U+b055-b056,U+b058-b05c,U+b05e; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-59.woff2") format("woff2"); unicode-range: U+af03-af07,U+af09-af2b,U+af2e-af33,U+af35-af3b,U+af3e-af40,U+af44-af47,U+af4a-af5c,U+af5e-af63,U+af65-af7f,U+af81-afab; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-60.woff2") format("woff2"); unicode-range: U+ae56-ae5b,U+ae5e-ae60,U+ae62-ae64,U+ae66-ae67,U+ae69-ae6b,U+ae6d-ae83,U+ae85-aebb,U+aebf,U+aec1-aec3,U+aec5-aecb,U+aece,U+aed0,U+aed2-aed7,U+aed9-aef3,U+aef5-af02; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-61.woff2") format("woff2"); unicode-range: U+ad9c-ada3,U+ada5-adbf,U+adc1-adc3,U+adc5-adc7,U+adc9-add2,U+add4-addb,U+addd-addf,U+ade1-ade3,U+ade5-adf7,U+adfa-adfb,U+adfd-adff,U+ae02-ae07,U+ae0a,U+ae0c,U+ae0e-ae13,U+ae15-ae2f,U+ae31-ae33,U+ae35-ae37,U+ae39-ae3f,U+ae42,U+ae44,U+ae46-ae49,U+ae4b,U+ae4f,U+ae51-ae53,U+ae55; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-62.woff2") format("woff2"); unicode-range: U+ace2-ace3,U+ace5-ace6,U+ace9-acef,U+acf2,U+acf4,U+acf7-acfb,U+acfe-acff,U+ad01-ad03,U+ad05-ad0b,U+ad0d-ad10,U+ad12-ad1b,U+ad1d-ad33,U+ad35-ad48,U+ad4a-ad4f,U+ad51-ad6b,U+ad6e-ad6f,U+ad71-ad72,U+ad77-ad7c,U+ad7e,U+ad80,U+ad82-ad87,U+ad89-ad8b,U+ad8d-ad8f,U+ad91-ad9b; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-63.woff2") format("woff2"); unicode-range: U+ac25-ac2c,U+ac2e,U+ac30,U+ac32-ac37,U+ac39-ac3f,U+ac41-ac4c,U+ac4e-ac6f,U+ac72-ac73,U+ac75-ac76,U+ac79-ac7f,U+ac82,U+ac84-ac88,U+ac8a-ac8b,U+ac8d-ac8f,U+ac91-ac93,U+ac95-ac9b,U+ac9d-ac9e,U+aca1-aca7,U+acab,U+acad-acaf,U+acb1-acb7,U+acba-acbb,U+acbe-acc0,U+acc2-acc3,U+acc5-acdf; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-64.woff2") format("woff2"); unicode-range: U+99df,U+99ed,U+99f1,U+99ff,U+9a01,U+9a08,U+9a0e-9a0f,U+9a19,U+9a2b,U+9a30,U+9a36-9a37,U+9a40,U+9a43,U+9a45,U+9a4d,U+9a55,U+9a57,U+9a5a-9a5b,U+9a5f,U+9a62,U+9a65,U+9a69-9a6a,U+9aa8,U+9ab8,U+9ad3,U+9ae5,U+9aee,U+9b1a,U+9b27,U+9b2a,U+9b31,U+9b3c,U+9b41-9b45,U+9b4f,U+9b54,U+9b5a,U+9b6f,U+9b8e,U+9b91,U+9b9f,U+9bab,U+9bae,U+9bc9,U+9bd6,U+9be4,U+9be8,U+9c0d,U+9c10,U+9c12,U+9c15,U+9c25,U+9c32,U+9c3b,U+9c47,U+9c49,U+9c57,U+9ce5,U+9ce7,U+9ce9,U+9cf3-9cf4,U+9cf6,U+9d09,U+9d1b,U+9d26,U+9d28,U+9d3b,U+9d51,U+9d5d,U+9d60-9d61,U+9d6c,U+9d72,U+9da9,U+9daf,U+9db4,U+9dc4,U+9dd7,U+9df2,U+9df8-9dfa,U+9e1a,U+9e1e,U+9e75,U+9e79,U+9e7d,U+9e7f,U+9e92-9e93,U+9e97,U+9e9d,U+9e9f,U+9ea5,U+9eb4-9eb5,U+9ebb,U+9ebe,U+9ec3,U+9ecd-9ece,U+9ed4,U+9ed8,U+9edb-9edc,U+9ede,U+9ee8,U+9ef4,U+9f07-9f08,U+9f0e,U+9f13,U+9f20,U+9f3b,U+9f4a-9f4b,U+9f4e,U+9f52,U+9f5f,U+9f61,U+9f67,U+9f6a,U+9f6c,U+9f77,U+9f8d,U+9f90,U+9f95,U+9f9c,U+ac02-ac03,U+ac05-ac06,U+ac09-ac0f,U+ac17-ac18,U+ac1b,U+ac1e-ac1f,U+ac21-ac23; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-65.woff2") format("woff2"); unicode-range: U+338c-339c,U+339f-33a0,U+33a2-33cb,U+33cf-33d0,U+33d3,U+33d6,U+33d8,U+33db-33dd,U+4e01,U+4e03,U+4e07-4e08,U+4e11,U+4e14-4e15,U+4e18-4e19,U+4e1e,U+4e32,U+4e38-4e39,U+4e42-4e43,U+4e45,U+4e4d-4e4f,U+4e56,U+4e58-4e59,U+4e5d-4e5e,U+4e6b,U+4e6d,U+4e73,U+4e76-4e77,U+4e7e,U+4e82,U+4e86,U+4e88,U+4e8e,U+4e90-4e92,U+4e94-4e95,U+4e98,U+4e9b,U+4e9e,U+4ea1-4ea2,U+4ea4-4ea6,U+4ea8,U+4eab,U+4ead-4eae,U+4eb6,U+4ec0-4ec1,U+4ec4,U+4ec7,U+4ecb,U+4ecd,U+4ed4-4ed5,U+4ed7-4ed9,U+4edd,U+4edf,U+4ee4,U+4ef0,U+4ef2,U+4ef6-4ef7,U+4efb,U+4f01,U+4f09,U+4f0b,U+4f0d-4f11,U+4f2f,U+4f34,U+4f36,U+4f38,U+4f3a,U+4f3c-4f3d; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-66.woff2") format("woff2"); unicode-range: U+3136,U+3138,U+313a-3140,U+3143-3144,U+3150,U+3152,U+3154-3156,U+3158-315b,U+315d-315f,U+3162,U+3164-318c,U+318e,U+3200-321b,U+3231,U+3239,U+3251-325a,U+3260-327b,U+327e-327f,U+328a-3290,U+3294,U+329e,U+32a5,U+3380-3384,U+3388-338b; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-67.woff2") format("woff2"); unicode-range: U+2f7d,U+2f7f-2f8b,U+2f8e-2f90,U+2f92-2f97,U+2f99-2fa0,U+2fa2-2fa3,U+2fa5-2fa9,U+2fac-2fb1,U+2fb3-2fbc,U+2fc1-2fca,U+2fcd-2fd4,U+3003,U+3012-3019,U+301c,U+301e-3020,U+3036,U+3041,U+3043,U+3045,U+3047,U+3049,U+304e,U+3050,U+3052,U+3056,U+305a,U+305c,U+305e,U+3062,U+3065,U+306c,U+3070-307d,U+3080,U+3085,U+3087,U+308e,U+3090-3091,U+30a1,U+30a5,U+30a9,U+30ae,U+30b1-30b2,U+30b4,U+30b6,U+30bc-30be,U+30c2,U+30c5,U+30cc,U+30d2,U+30d4,U+30d8-30dd,U+30e4,U+30e6,U+30e8,U+30ee,U+30f0-30f2,U+30f4-30f6,U+3133,U+3135; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-68.woff2") format("woff2"); unicode-range: U+2541-254b,U+25a4-25a9,U+25b1,U+25b5,U+25b9,U+25bf,U+25c1,U+25c3,U+25c9-25ca,U+25cc,U+25ce,U+25d0-25d1,U+25e6,U+25ef,U+260f,U+261d,U+261f,U+262f,U+2660,U+2664,U+2667-2669,U+266d,U+266f,U+2716,U+271a,U+273d,U+2756,U+2776-277f,U+278a-2793,U+2963,U+2965,U+2ac5-2ac6,U+2acb-2acc,U+2f00,U+2f04,U+2f06,U+2f08,U+2f0a-2f0b,U+2f11-2f12,U+2f14,U+2f17-2f18,U+2f1c-2f1d,U+2f1f-2f20,U+2f23-2f26,U+2f28-2f29,U+2f2b,U+2f2d,U+2f2f-2f32,U+2f38,U+2f3c-2f40,U+2f42-2f4c,U+2f4f-2f52,U+2f54-2f58,U+2f5a-2f66,U+2f69-2f70,U+2f72-2f76,U+2f78,U+2f7a-2f7c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-69.woff2") format("woff2"); unicode-range: U+2479-2487,U+249c-24d1,U+24d3-24d7,U+24d9-24e9,U+24eb-24f4,U+2500-2501,U+2503,U+250c-2513,U+2515-2516,U+2518-2540; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-70.woff2") format("woff2"); unicode-range: U+215b-215e,U+2162-2169,U+2170-2179,U+2195-2199,U+21b0-21b4,U+21bc,U+21c0,U+21c4-21c5,U+21cd,U+21cf-21d4,U+21e0-21e3,U+21e6-21e9,U+2200,U+2202-2203,U+2206-2209,U+220b-220c,U+220f,U+2211,U+2213,U+221a,U+221d-2220,U+2222,U+2225-2227,U+2229-222c,U+222e,U+2234-2237,U+223d,U+2243,U+2245,U+2248,U+2250-2253,U+225a,U+2260-2262,U+2264-2267,U+226a-226b,U+226e-2273,U+2276-2277,U+2279-227b,U+2280-2287,U+228a-228b,U+2295-2297,U+22a3-22a5,U+22bb-22bc,U+22ce-22cf,U+22da-22db,U+22ee-22ef,U+2306,U+2312,U+2314,U+2467-2478; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-71.woff2") format("woff2"); unicode-range: U+81-82,U+84,U+a2-a5,U+a7-a8,U+aa,U+ac,U+b1-b3,U+b6,U+b8-ba,U+bc-be,U+c0,U+c2,U+c6-cb,U+ce-d0,U+d4,U+d8-d9,U+db-dc,U+de-df,U+e6,U+eb,U+ee-f0,U+f4,U+f7-f9,U+fb,U+fe-ff,U+111,U+126-127,U+132-133,U+138,U+13f-142,U+149-14b,U+152-153,U+166-167,U+2bc,U+2c7,U+2d0,U+2d8-2d9,U+2db-2dd,U+391-394,U+396-3a1,U+3a3-3a9,U+3b2-3b6,U+3b8,U+3bc,U+3be-3c1,U+3c3-3c9,U+2010,U+2015-2016,U+2018-2019,U+201b,U+201f-2021,U+2025,U+2030,U+2033-2036,U+203c,U+203e,U+2042,U+2074,U+207a-207f,U+2081-2084,U+2109,U+2113,U+2116,U+2121,U+2126,U+212b,U+2153-2154; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-72.woff2") format("woff2"); unicode-range: U+e8,U+2da,U+2160,U+2194,U+3054,U+3058,U+306d,U+3086,U+308d,U+30ac,U+30bb,U+30c4,U+30cd-30ce,U+30e2,U+3132,U+3146,U+3149,U+339d,U+4e3b,U+4f0a,U+4fdd,U+4fe1,U+5409,U+540c,U+5834,U+592a-592b,U+5b9a,U+5dde,U+5e0c,U+5e73,U+5f0f,U+60f3,U+653f,U+661f,U+662f,U+667a,U+683c,U+6b4c,U+6c11,U+767c,U+76ee,U+76f4,U+77f3,U+79d1,U+7a7a,U+7b2c,U+7d22,U+8207,U+8a00,U+8a71,U+9280,U+9580,U+958b,U+96c6,U+9762,U+98df,U+9ed1,U+ac2d,U+adc8,U+add3,U+af48,U+b014,U+b134-b135,U+b158,U+b2aa,U+b35f,U+b6a4,U+b9cf,U+bb63,U+bd23,U+be91,U+c29b,U+c3f4,U+c42c,U+c55c,U+c573,U+c58f,U+c78c,U+c7dd,U+c8f5,U+cad1,U+cc48,U+cf10,U+cf20,U+d03c,U+d07d,U+d2a0,U+d30e,U+d38d,U+d3a8,U+d3c8,U+d5e5,U+d5f9,U+d6e4,U+f90a,U+ff02,U+ff1c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-73.woff2") format("woff2"); unicode-range: U+3b1,U+2466,U+25a1,U+25a3,U+261c,U+3008-3009,U+305b,U+305d,U+3069,U+30a7,U+30ba,U+30cf,U+30ef,U+3151,U+3157,U+4e4b,U+4e5f,U+4e8c,U+4eca,U+4ed6,U+4f5b,U+50cf,U+5149,U+5165,U+5171,U+5229,U+529b,U+5316,U+539f,U+53f2,U+571f,U+5728,U+58eb,U+591c,U+5b78,U+5c11,U+5c55,U+5ddd,U+5e02,U+5fb7,U+60c5,U+610f,U+611f,U+6625,U+66f8,U+6797,U+679c,U+682a,U+6d2a,U+706b,U+7406,U+767b,U+76f8,U+77e5,U+7acb,U+898b,U+8a69,U+8def,U+8fd1,U+901a,U+90e8,U+91cd,U+975e,U+ae14,U+ae6c,U+aec0,U+afc7,U+afc9,U+b01c,U+b028,U+b308,U+b311,U+b314,U+b31c,U+b524,U+b560,U+b764,U+b920,U+b9e3,U+bd48,U+be7d,U+c0db,U+c231,U+c270,U+c2e3,U+c37d,U+c3ed,U+c530,U+c6a5,U+c6dc,U+c7a4,U+c954,U+c974,U+d000,U+d565,U+d667,U+d6c5,U+d79d,U+ff1e; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-74.woff2") format("woff2"); unicode-range: U+131,U+2032,U+2465,U+2642,U+3048,U+3051,U+3083-3084,U+308f,U+30c0,U+30d1,U+30d3,U+30d6,U+30df,U+30e7,U+3153,U+4e16,U+4e8b,U+4ee5,U+5206,U+52a0,U+52d5,U+53e4,U+53ef,U+54c1,U+57ce,U+597d,U+5b8c,U+5ea6,U+5f8c,U+5f97,U+6210,U+6240,U+624b,U+6728,U+6bd4,U+7236,U+7269,U+7279,U+738b,U+7528,U+7530,U+767e,U+798f,U+8005,U+8a18,U+90fd,U+91cc,U+9577,U+9593,U+98a8,U+ac20,U+acf6,U+ad90,U+af5d,U+af80,U+afcd,U+aff0,U+b0a1,U+b0b5,U+b1fd,U+b2fc,U+b380,U+b51b,U+b584,U+b5b3,U+b8fd,U+b93c,U+b9f4,U+bb44,U+bc08,U+bc27,U+bc49,U+be55,U+be64,U+bfb0,U+bfc5,U+c178,U+c21f,U+c314,U+c4f1,U+c58d,U+c664,U+c698,U+c6a7,U+c6c1,U+c9ed,U+cac0,U+cacc,U+cad9,U+ccb5,U+cdcc,U+d0e4,U+d143,U+d320,U+d330,U+d54d,U+ff06,U+ff1f,U+ff5e; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-75.woff2") format("woff2"); unicode-range: U+b4,U+20a9,U+20ac,U+2190,U+24d8,U+2502,U+2514,U+2592,U+25c7-25c8,U+2663,U+3060,U+3064,U+3081,U+3088,U+30a3,U+30a6,U+30aa,U+30b5,U+30c7,U+30ca-30cb,U+30d0,U+30e3,U+30e5,U+339e,U+4e09,U+4eac,U+4f5c,U+5167-5168,U+516c,U+51fa,U+5408,U+540d,U+591a,U+5b57,U+6211,U+65b9,U+660e,U+6642,U+6700,U+6b63,U+6e2f,U+7063,U+7532,U+793e,U+81ea,U+8272,U+82b1,U+897f,U+8eca,U+91ce,U+ac38,U+ad76,U+ae84,U+aecc,U+b07d,U+b0b1,U+b215,U+b2a0,U+b310,U+b3d7,U+b52a,U+b618,U+b775,U+b797,U+bcd5,U+bd59,U+be80,U+bea8,U+bed1,U+bee4-bee5,U+c060,U+c2ef,U+c329,U+c3dc,U+c597,U+c5bd,U+c5e5,U+c69c,U+c9d6,U+ca29,U+ca5c,U+ca84,U+cc39,U+cc3b,U+ce89,U+cee5,U+cf65,U+cf85,U+d058,U+d145,U+d22d,U+d325,U+d37d,U+d3ad,U+d769,U+ff0c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-76.woff2") format("woff2"); unicode-range: U+2161,U+2228,U+2299,U+2464,U+2517,U+2640,U+3042,U+304a,U+3053,U+3061,U+307f,U+3082,U+308c,U+3092,U+30a8,U+30ab,U+30ad,U+30b0,U+30b3,U+30b7,U+30c1,U+30c6,U+30c9,U+30d5,U+30d7,U+30de,U+30e0-30e1,U+30ec-30ed,U+4e0b,U+4e0d,U+4ee3,U+53f0,U+548c,U+5b89,U+5bb6,U+5c0f,U+611b,U+6771,U+6aa2,U+6bcd,U+6c34,U+6cd5,U+6d77,U+767d,U+795e,U+8ecd,U+9999,U+9ad8,U+ac07,U+ac1a,U+ac40,U+ad0c,U+ad88,U+ada4,U+ae01,U+ae65,U+aebd,U+aec4,U+afe8,U+b139,U+b205,U+b383,U+b38c,U+b42c,U+b461,U+b55c,U+b78f,U+b8fb,U+b9f7,U+bafc,U+bc99,U+bed8,U+bfcd,U+c0bf,U+c0f9,U+c167,U+c204,U+c20f,U+c22f,U+c258,U+c298,U+c2bc,U+c388,U+c501,U+c50c,U+c5b9,U+c5ce,U+c641,U+c648,U+c73d,U+ca50,U+ca61,U+cc4c,U+ceac,U+d0d4,U+d5f7,U+d6d7,U+ff1a; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-77.woff2") format("woff2"); unicode-range: U+2103,U+2463,U+25c6,U+25cb,U+266c,U+3001,U+300a,U+3046,U+304c-304d,U+304f,U+3055,U+3059,U+3063,U+3066-3068,U+306f,U+3089,U+30b8,U+30bf,U+314f,U+4e0a,U+570b,U+5730,U+5916,U+5929,U+5c71,U+5e74,U+5fc3,U+601d,U+6027,U+63d0,U+6709,U+6734,U+751f,U+7684,U+82f1,U+9053,U+91d1,U+97f3,U+ac2f,U+ac4d,U+adc4,U+ade4,U+ae41,U+ae4d-ae4e,U+aed1,U+afb9,U+b0e0,U+b299,U+b365,U+b46c,U+b480,U+b4c8,U+b7b4,U+b819,U+b918,U+baab,U+bab9,U+be8f,U+bed7,U+c0ec,U+c19f,U+c1a5,U+c3d9,U+c464,U+c53d,U+c553,U+c570,U+c5cc,U+c633,U+c6a4,U+c7a3,U+c7a6,U+c886,U+c9d9-c9da,U+c9ec,U+ca0c,U+cc21,U+cd1b,U+cd78,U+cdc4,U+cef8,U+cfe4,U+d0a5,U+d0b5,U+d0ec,U+d15d,U+d188,U+d23c,U+d2ac,U+d729,U+d79b,U+ff01,U+ff08-ff09,U+ff5c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-78.woff2") format("woff2"); unicode-range: U+2039-203a,U+223c,U+25b3,U+25b7,U+25bd,U+25cf,U+266a,U+3002,U+300b,U+304b,U+3057,U+305f,U+306a-306b,U+307e,U+308a-308b,U+3093,U+30a2,U+30af,U+30b9,U+30c3,U+30c8,U+30e9-30eb,U+33a1,U+4e00,U+524d,U+5357,U+5b50,U+7121,U+884c,U+9751,U+ac94,U+aebe,U+aecd,U+af08,U+af41,U+af49,U+b010,U+b053,U+b109,U+b11b,U+b128,U+b154,U+b291,U+b2e6,U+b301,U+b385,U+b525,U+b5b4,U+b729,U+b72f,U+b738,U+b7ff,U+b837,U+b975,U+ba67,U+bb47,U+bc1f,U+bd90,U+bfd4,U+c27c,U+c324,U+c379,U+c3e0,U+c465,U+c53b,U+c58c,U+c610,U+c653,U+c6cd,U+c813,U+c82f,U+c999,U+c9e0,U+cac4,U+cad3,U+cbd4,U+cc10,U+cc22,U+ccb8,U+ccbc,U+cda5,U+ce84,U+cea3,U+cf67,U+cfe1,U+d241,U+d30d,U+d31c,U+d391,U+d401,U+d479,U+d5c9,U+d5db,U+d649,U+d6d4; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-79.woff2") format("woff2"); unicode-range: U+b0,U+e9,U+2193,U+2462,U+260e,U+261e,U+300e-300f,U+3044,U+30a4,U+30fb-30fc,U+314d,U+5973,U+6545,U+6708,U+7537,U+ac89,U+ac9c,U+acc1,U+ad04,U+ad75,U+ad7d,U+ae45,U+ae61,U+af42,U+b0ab,U+b0af,U+b0b3,U+b12c,U+b194,U+b1a8,U+b220,U+b258,U+b284,U+b2ff,U+b315,U+b371,U+b3d4-b3d5,U+b460,U+b527,U+b534,U+b810,U+b818,U+b98e,U+ba55,U+bbac,U+bc0b,U+bc40,U+bca1,U+bccd,U+bd93,U+be54,U+be5a,U+bf08,U+bf50,U+bf55,U+bfdc,U+c0c0,U+c0d0,U+c0f4,U+c100,U+c11e,U+c170,U+c20d,U+c274,U+c290,U+c308,U+c369,U+c539,U+c587,U+c5ff,U+c6ec,U+c70c,U+c7ad,U+c7c8,U+c83c,U+c881,U+cb48,U+cc60,U+ce69,U+ce6b,U+ce75,U+cf04,U+cf08,U+cf55,U+cf70,U+cffc,U+d0b7,U+d1a8,U+d2c8,U+d384,U+d47c,U+d48b,U+d5dd,U+d5e8,U+d720,U+d759,U+f981; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-80.woff2") format("woff2"); unicode-range: U+e0,U+e2,U+395,U+3b7,U+3ba,U+2460-2461,U+25a0,U+3010-3011,U+306e,U+30f3,U+314a,U+314c,U+5927,U+65b0,U+7e41,U+97d3,U+9ad4,U+ad49,U+ae0b,U+ae0d,U+ae43,U+ae5d,U+aecf,U+af3c,U+af64,U+afd4,U+b080,U+b084,U+b0c5,U+b10c,U+b1e8,U+b2ac,U+b36e,U+b451,U+b515,U+b540,U+b561,U+b6ab,U+b6b1,U+b72c,U+b730,U+b744,U+b800,U+b8ec,U+b8f0,U+b904,U+b968,U+b96d,U+b987,U+b9d9,U+bb36,U+bb49,U+bc2d,U+bc43,U+bcf6,U+bd89,U+be57,U+be61,U+bed4,U+c090,U+c130,U+c148,U+c19c,U+c2f9,U+c36c,U+c37c,U+c384,U+c3df,U+c575,U+c584,U+c660,U+c719,U+c816,U+ca4d,U+ca54,U+cabc,U+cb49,U+cc14,U+cff5,U+d004,U+d038,U+d0b4,U+d0d3,U+d0e0,U+d0ed,U+d131,U+d1b0,U+d31f,U+d33d,U+d3a0,U+d3ab,U+d514,U+d584,U+d6a1,U+d6cc,U+d749,U+d760,U+d799; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-81.woff2") format("woff2"); unicode-range: U+24,U+60,U+3b9,U+3bb,U+3bd,U+2191,U+2606,U+300c-300d,U+3131,U+3134,U+3139,U+3141-3142,U+3148,U+3161,U+3163,U+321c,U+4eba,U+5317,U+ac31,U+ac77,U+ac9f,U+acb9,U+acf0-acf1,U+acfd,U+ad73,U+af3d,U+b00c,U+b04a,U+b057,U+b0c4,U+b188,U+b1cc,U+b214,U+b2db,U+b2ee,U+b304,U+b4ed,U+b518,U+b5bc,U+b625,U+b69c-b69d,U+b7ac,U+b801,U+b86c,U+b959,U+b95c,U+b985,U+ba48,U+bb58,U+bc0c,U+bc38,U+bc85,U+bc9a,U+bf40,U+c068,U+c0bd,U+c0cc,U+c12f,U+c149,U+c1e0,U+c22b,U+c22d,U+c250,U+c2fc,U+c300,U+c313,U+c370,U+c3d8,U+c557,U+c580,U+c5e3,U+c62e,U+c634,U+c6f0,U+c74d,U+c783,U+c78e,U+c796,U+c7bc,U+c92c,U+ca4c,U+cc1c,U+cc54,U+cc59,U+ce04,U+cf30,U+cfc4,U+d140,U+d321,U+d38c,U+d399,U+d54f,U+d587,U+d5d0,U+d6e8,U+d770; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-82.woff2") format("woff2"); unicode-range: U+d7,U+ea,U+fc,U+2192,U+25bc,U+3000,U+3137,U+3145,U+315c,U+7f8e,U+ac13,U+ac71,U+ac90,U+acb8,U+ace7,U+ad7f,U+ae50,U+aef4,U+af34,U+afbc,U+b048,U+b09a,U+b0ad,U+b0bc,U+b113,U+b125,U+b141,U+b20c,U+b2d9,U+b2ed,U+b367,U+b369,U+b374,U+b3cb,U+b4ec,U+b611,U+b760,U+b81b,U+b834,U+b8b0,U+b8e1,U+b989,U+b9d1,U+b9e1,U+b9fa,U+ba4d,U+ba78,U+bb35,U+bb54,U+bbf9,U+bc11,U+bcb3,U+bd05,U+bd95,U+bdd4,U+be10,U+bed0,U+bf51,U+c0d8,U+c232,U+c2b7,U+c2eb,U+c378,U+c500,U+c52c,U+c549,U+c568,U+c598,U+c5c9,U+c61b,U+c639,U+c67c,U+c717,U+c78a,U+c80a,U+c90c-c90d,U+c950,U+c9e7,U+cbe4,U+cca9,U+cce4,U+cdb0,U+ce78,U+ce94,U+ce98,U+cf8c,U+d018,U+d034,U+d0f1,U+d1b1,U+d280,U+d2f8,U+d338,U+d380,U+d3b4,U+d610,U+d69f,U+d6fc,U+d758; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-83.woff2") format("woff2"); unicode-range: U+e7,U+2022,U+203b,U+25c0,U+2605,U+2661,U+3147,U+318d,U+672c,U+8a9e,U+acaa,U+acbc,U+ad1c,U+ae4a,U+ae5c,U+b044,U+b054,U+b0c8-b0c9,U+b2a6,U+b2d0,U+b35c,U+b364,U+b428,U+b454,U+b465,U+b4b7,U+b4e3,U+b51c,U+b5a1,U+b784,U+b790,U+b7ab,U+b7f4,U+b82c,U+b835,U+b8e9,U+b8f8,U+b9d8,U+b9f9,U+ba5c,U+ba64,U+babd,U+bb18,U+bb3b,U+bbff,U+bc0d,U+bc45,U+bc97,U+bcbc,U+be45,U+be75,U+be7c,U+bfcc,U+c0b6,U+c0f7,U+c14b,U+c2b4,U+c30d,U+c4f8,U+c5bb,U+c5d1,U+c5e0,U+c5ee,U+c5fd,U+c606,U+c6c5,U+c6e0,U+c708,U+c81d,U+c820,U+c824,U+c878,U+c918,U+c96c,U+c9e4,U+c9f1,U+cc2e,U+cd09,U+cea1,U+cef5,U+cef7,U+cf64,U+cf69,U+cfe8,U+d035,U+d0ac,U+d230,U+d234,U+d2f4,U+d31d,U+d575,U+d578,U+d608,U+d614,U+d718,U+d751,U+d761,U+d78c,U+d790; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-84.woff2") format("woff2"); unicode-range: U+2665,U+3160,U+4e2d,U+6587,U+65e5,U+ac12,U+ac14,U+ac16,U+ac81,U+ad34,U+ade0,U+ae54,U+aebc,U+af2c,U+afc0,U+afc8,U+b04c,U+b08c,U+b099,U+b0a9,U+b0ac,U+b0ae,U+b0b8,U+b123,U+b179,U+b2e5,U+b2f7,U+b4c0,U+b531,U+b538,U+b545,U+b550,U+b5a8,U+b6f0,U+b728,U+b73b,U+b7ad,U+b7ed,U+b809,U+b864,U+b86d,U+b871,U+b9bf,U+b9f5,U+ba40,U+ba4b,U+ba58,U+ba87,U+baac,U+bbc0,U+bc16,U+bc34,U+bd07,U+bd99,U+be59,U+bfd0,U+c058,U+c0e4,U+c0f5,U+c12d,U+c139,U+c228,U+c529,U+c5c7,U+c635,U+c637,U+c735,U+c77d,U+c787,U+c789,U+c8c4,U+c989,U+c98c,U+c9d0,U+c9d3,U+cc0c,U+cc99,U+cd0c,U+cd2c,U+cd98,U+cda4,U+ce59,U+ce60,U+ce6d,U+cea0,U+d0d0-d0d1,U+d0d5,U+d14d,U+d1a4,U+d29c,U+d2f1,U+d301,U+d39c,U+d3bc,U+d4e8,U+d540,U+d5ec,U+d640,U+d750; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-85.woff2") format("woff2"); unicode-range: U+5e,U+25b2,U+25b6,U+314e,U+ac24,U+ace1,U+ace4,U+ae68,U+af2d,U+b0d0,U+b0e5,U+b150,U+b155,U+b193,U+b2c9,U+b2dd,U+b3c8,U+b3fc,U+b410,U+b458,U+b4dd,U+b5a0,U+b5a4,U+b5bb,U+b7b5,U+b838,U+b840,U+b86f,U+b8f9,U+b960,U+b9e5,U+bab8,U+bb50,U+bc1d,U+bc24-bc25,U+bca8,U+bcbd,U+bd04,U+bd10,U+bd24,U+be48,U+be5b,U+be68,U+c05c,U+c12c,U+c140,U+c15c,U+c168,U+c194,U+c219,U+c27d,U+c2a8,U+c2f1,U+c2f8,U+c368,U+c554-c555,U+c559,U+c564,U+c5d8,U+c5fc,U+c625,U+c65c,U+c6b1,U+c728,U+c794,U+c84c,U+c88c,U+c8e0,U+c8fd,U+c998,U+c9dd,U+cc0d,U+cc30,U+ceec,U+cf13,U+cf1c,U+cf5c,U+d050,U+d07c,U+d0a8,U+d134,U+d138,U+d154,U+d1f4,U+d2bc,U+d329,U+d32c,U+d3d0,U+d3f4,U+d3fc,U+d56b,U+d5cc,U+d600-d601,U+d639,U+d6c8,U+d754,U+d765; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-86.woff2") format("woff2"); unicode-range: U+3c-3d,U+2026,U+24d2,U+314b,U+ac11,U+acf3,U+ad74,U+ad81,U+adf9,U+ae34,U+af43,U+afb8,U+b05d,U+b07c,U+b110,U+b118,U+b17c,U+b180,U+b18d,U+b192,U+b2cc,U+b355,U+b378,U+b4a4,U+b4ef,U+b78d,U+b799,U+b7a9,U+b7fd,U+b807,U+b80c,U+b839,U+b9b4,U+b9db,U+ba3c,U+bab0,U+bba4,U+bc94,U+be4c,U+c154,U+c1c4,U+c26c,U+c2ac,U+c2ed,U+c4f4,U+c55e,U+c561,U+c571,U+c5b5,U+c5c4,U+c654-c655,U+c695,U+c6e8,U+c6f9,U+c724,U+c751,U+c775,U+c7a0,U+c7c1,U+c874,U+c880,U+c9d5,U+c9f8,U+cabd,U+cc29,U+cc2c,U+cca8,U+ccab,U+ccd0,U+ce21,U+ce35,U+ce7c,U+ce90,U+cee8,U+cef4,U+cfe0,U+d070,U+d0b9,U+d0c1,U+d0c4,U+d0c8,U+d15c,U+d1a1,U+d2c0,U+d300,U+d314,U+d3ed,U+d478,U+d480,U+d48d,U+d508,U+d53d,U+d5e4,U+d611,U+d61c,U+d68d,U+d6a8,U+d798; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-87.woff2") format("woff2"); unicode-range: U+23,U+25,U+5f,U+a9,U+ac08,U+ac78,U+aca8,U+acac,U+ace8,U+ad70,U+adc0,U+addc,U+b137,U+b140,U+b208,U+b290,U+b2f5,U+b3c5,U+b3cc,U+b420,U+b429,U+b529,U+b530,U+b77d,U+b79c,U+b7a8,U+b7c9,U+b7f0,U+b7fc,U+b828,U+b860,U+b9ad,U+b9c1,U+b9c9,U+b9dd-b9de,U+b9e8,U+ba38-ba39,U+babb,U+bc00,U+bc8c,U+bca0,U+bca4,U+bcd1,U+bcfc,U+bd09,U+bdf0,U+be60,U+c0ad,U+c0b4,U+c0bc,U+c190,U+c1fc,U+c220,U+c288,U+c2b9,U+c2f6,U+c528,U+c545,U+c558,U+c5bc,U+c5d4,U+c600,U+c644,U+c6c0,U+c6c3,U+c721,U+c798,U+c7a1,U+c811,U+c838,U+c871,U+c904,U+c990,U+c9dc,U+cc38,U+cc44,U+cca0,U+cd1d,U+cd95,U+cda9,U+ce5c,U+cf00,U+cf58,U+d150,U+d22c,U+d305,U+d328,U+d37c,U+d3f0,U+d551,U+d5a5,U+d5c8,U+d5d8,U+d63c,U+d64d,U+d669,U+d734,U+d76c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-88.woff2") format("woff2"); unicode-range: U+26,U+2b,U+3e,U+40,U+7e,U+ac01,U+ac19,U+ac1d,U+aca0,U+aca9,U+acb0,U+ad8c,U+ae09,U+ae38,U+ae40,U+aed8,U+b09c,U+b0a0,U+b108,U+b204,U+b298,U+b2d8,U+b2eb-b2ec,U+b2f4,U+b313,U+b358,U+b450,U+b4e0,U+b54c,U+b610,U+b780,U+b78c,U+b791,U+b8e8,U+b958,U+b974,U+b984,U+b9b0,U+b9bc-b9bd,U+b9ce,U+ba70,U+bbfc,U+bc0f,U+bc15,U+bc1b,U+bc31,U+bc95,U+bcc0,U+bcc4,U+bd81,U+bd88,U+c0c8,U+c11d,U+c13c,U+c158,U+c18d,U+c1a1,U+c21c,U+c4f0,U+c54a,U+c560,U+c5b8,U+c5c8,U+c5f4,U+c628,U+c62c,U+c678,U+c6cc,U+c808,U+c810,U+c885,U+c88b,U+c900,U+c988,U+c99d,U+c9c8,U+cc3d-cc3e,U+cc45,U+cd08,U+ce20,U+cee4,U+d074,U+d0a4,U+d0dd,U+d2b9,U+d3b8,U+d3c9,U+d488,U+d544,U+d559,U+d56d,U+d588,U+d615,U+d648,U+d655,U+d658,U+d65c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-89.woff2") format("woff2"); unicode-range: U+d,U+7c,U+ac10,U+ac15,U+ac74,U+ac80,U+ac83,U+acc4,U+ad11,U+ad50,U+ad6d,U+adfc,U+ae00,U+ae08,U+ae4c,U+b0a8,U+b124,U+b144,U+b178,U+b274,U+b2a5,U+b2e8,U+b2f9,U+b354,U+b370,U+b418,U+b41c,U+b4f1,U+b514,U+b798,U+b808,U+b824-b825,U+b8cc,U+b978,U+b9d0,U+b9e4,U+baa9,U+bb3c,U+bc18,U+bc1c,U+bc30,U+bc84,U+bcf5,U+bcf8,U+bd84,U+be0c,U+be14,U+c0b0,U+c0c9,U+c0dd,U+c124,U+c2dd,U+c2e4,U+c2ec,U+c54c,U+c57c-c57d,U+c591,U+c5c5-c5c6,U+c5ed,U+c608,U+c640,U+c6b8,U+c6d4,U+c784,U+c7ac,U+c800-c801,U+c9c1,U+c9d1,U+cc28,U+cc98,U+cc9c,U+ccad,U+cd5c,U+cd94,U+cd9c,U+cde8,U+ce68,U+cf54,U+d0dc,U+d14c,U+d1a0,U+d1b5,U+d2f0,U+d30c,U+d310,U+d398,U+d45c,U+d50c,U+d53c,U+d560,U+d568,U+d589,U+d604,U+d6c4,U+d788; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-90.woff2") format("woff2"); unicode-range: U+ac04,U+ac1c,U+ac70,U+ac8c,U+acbd,U+acf5,U+acfc,U+ad00,U+ad6c,U+adf8,U+b098,U+b0b4,U+b294,U+b2c8,U+b300,U+b3c4,U+b3d9,U+b4dc,U+b4e4,U+b77c,U+b7ec,U+b85d,U+b97c,U+b9c8,U+b9cc,U+ba54,U+ba74,U+ba85,U+baa8,U+bb34,U+bb38,U+bbf8,U+bc14,U+bc29,U+bc88,U+bcf4,U+bd80,U+be44,U+c0c1,U+c11c,U+c120,U+c131,U+c138,U+c18c,U+c218,U+c2b5,U+c2e0,U+c544,U+c548,U+c5b4,U+c5d0,U+c5ec,U+c5f0,U+c601,U+c624,U+c694,U+c6a9,U+c6b0,U+c6b4,U+c6d0,U+c704,U+c720,U+c73c,U+c740,U+c744,U+c74c,U+c758,U+c77c,U+c785,U+c788,U+c790-c791,U+c7a5,U+c804,U+c815,U+c81c,U+c870,U+c8fc,U+c911,U+c9c4,U+ccb4,U+ce58,U+ce74,U+d06c,U+d0c0,U+d130,U+d2b8,U+d3ec,U+d504,U+d55c,U+d569,U+d574,U+d638,U+d654,U+d68c; }
@font-face { font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920;
  font-display: swap; src: url("fonts/pretendard-91.woff2") format("woff2"); unicode-range: U+20-22,U+27-2a,U+2c-39,U+3a-3b,U+3f,U+41-4e,U+4f-5d,U+61-7b,U+7d,U+a0-a1,U+ab,U+ad-ae,U+b7,U+bb,U+bf,U+2013-2014,U+201c-201d,U+2122,U+ac00,U+ace0,U+ae30,U+b2e4,U+b85c,U+b9ac,U+c0ac,U+c2a4,U+c2dc,U+c774,U+c778,U+c9c0,U+d558; }
:root {
  --primary: #16324F;
  --primary-deep: #0D1F30;
  /* 액센트는 블루 하나 — DESIGN.md §2. 로고의 빨강·주황은 마크와 오류 신호 전용이라
     UI 액센트로 쓰지 않는다. #0079B0 채움(흰 라벨 4.81:1) / #005A8C 텍스트(7.39:1). */
  --accent: #0079B0;
  --accent-ink: #FFFFFF;
  --accent-text: #005A8C;
  --ink: #171A21;
  --paper: #FFFFFF;
  --tint: #F6F3ED;
  --muted: #5D6470;
  --line: #E6E2D9;
  --logo-h: 4.5rem;
  --header-cta-bg: var(--accent);
  --header-cta-ink: var(--accent-ink);
  --nav-color: var(--muted);
  --nav-size: .90625rem;
--radius-sm: 999px; --radius: 18px; --radius-img: 16px; --container: 78rem; --gutter: clamp(1.25rem, 4vw, 3.5rem); --section-y: clamp(3.25rem, 7.5vw, 5.5rem); --bar-h: 4.75rem; --header-h: 4.75rem; --surface: #FDFBF7; --paper: #FFFFFF; --ink: #16324D; --muted: #5F7288; --line: #E2E8F0; --tint: #FBF7F1; --sand: #FBEEDC; --display-weight: 600; --shadow-card: 0 14px 34px -22px rgba(22,50,77,.30);
  --font-display: "Pretendard Variable", Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;
  --font-body: "Pretendard Variable", Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;
  --display-weight: 600;
}
* { box-sizing: border-box; }
html { overflow-x: clip; scroll-padding-top: calc(var(--header-h) + .5rem); -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; font-family: var(--font-body); color: var(--ink); background: var(--surface); font-size: 1.0625rem; line-height: 1.6; overflow-x: clip; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--primary); }
a:hover { color: var(--accent); }
p { text-wrap: pretty; }
:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 80%, #000); outline-offset: 2px; border-radius: .3rem; }
::selection { background: color-mix(in srgb, var(--accent) 35%, #fff); color: var(--ink); }

h1, h2, h3, .brand { font-family: var(--font-display); font-weight: var(--display-weight); }
h1 { font-size: clamp(2.125rem, 4.8vw, 3.75rem); line-height: 1.05; letter-spacing: -0.02em; text-wrap: balance; margin: 0; }
h2 { font-size: clamp(1.625rem, 3.2vw, 2.5rem); line-height: 1.1; letter-spacing: -0.015em; text-wrap: balance; }
h3 { font-size: clamp(1.0625rem, 2vw, 1.3125rem); letter-spacing: -0.01em; font-weight: 600; }

.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.skip-link { position: absolute; left: .5rem; top: -3rem; z-index: 60; background: var(--ink); color: #fff; padding: .6rem 1rem; border-radius: .5rem; transition: top .15s; }
.skip-link:focus { top: .5rem; }

/* ---- header ---- */
.site-header { position: sticky; top: 0; z-index: 40; background: color-mix(in srgb, var(--surface) 88%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); color: var(--ink); border-bottom: 1px solid var(--line); padding-top: env(safe-area-inset-top); }
.site-header .container { display: flex; align-items: center; gap: .75rem 1.75rem; min-height: var(--header-h); }
.brand { color: var(--ink); text-decoration: none; font-size: 1.09375rem; letter-spacing: -0.01em; margin-right: auto; display: inline-flex; align-items: center; gap: .625rem; }
.brand:hover { color: var(--ink); }
.brand img { max-height: var(--logo-h, 2.25rem); width: auto; }
.brand-mark { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: var(--radius-sm); background: var(--primary); color: #fff; font-size: 1rem; font-weight: 600; flex: none; }
.brand-mark--ghost { background: rgba(255,255,255,.12); }
.site-nav--desktop { display: none; }
.header-cta { display: inline-flex; align-items: center; gap: .5rem; background: var(--accent); color: var(--accent-ink); text-decoration: none; font-weight: 600; font-size: 1rem; padding: .65rem 1.25rem; border-radius: var(--radius-sm); min-height: 2.75rem; transition: filter .15s, transform .15s; }
.header-cta:hover { color: var(--accent-ink); filter: brightness(1.06); transform: translateY(-1px); }
.header-cta svg { width: .95em; height: .95em; }
.header-cta__num { display: none; }
.pw-nav > summary { list-style: none; cursor: pointer; color: var(--ink); display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; min-width: 2.75rem; padding: 0 .8rem; font-weight: 600; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper); }
.pw-nav > summary::-webkit-details-marker { display: none; }
.pw-nav > summary svg { width: 1.2em; height: 1.2em; }
/* mobile menu: a full-screen panel dropping straight below the header. top:var(--header-h)
   anchors correctly whether or not the header is a containing block (backdrop-filter makes
   it one), so it never floats off-screen. body.nav-open (set by site.js) lifts the header
   above the bottom bar and hides the bar so nothing overlaps — robust in any circumstance. */
.pw-nav[open] .site-nav--sheet { position: fixed; top: var(--header-h); left: 0; right: 0; height: calc(100dvh - var(--header-h)); z-index: 55; background: var(--paper); color: var(--ink); padding: 1.25rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; border-top: 1px solid var(--line); }
body.nav-open .site-header { z-index: 60; }
body.nav-open .pw-bottombar { display: none; }
.nav-sheet-title { font-weight: 600; color: var(--muted); font-size: 1rem; text-transform: uppercase; letter-spacing: .1em; margin: 0 .5rem .25rem; }
/* the mobile sheet stacks vertically; scoped to --sheet so it never overrides
   .site-nav--desktop{display:none} on phones (that leaked the desktop nav onto mobile) */
.site-nav--sheet { display: flex; flex-direction: column; gap: .25rem; }
.site-nav a { color: var(--ink); text-decoration: none; font-weight: 600; display: block; padding: .85rem .75rem; border-radius: var(--radius-sm); min-height: 3rem; }
.site-nav--sheet a[aria-current="page"] { background: color-mix(in srgb, var(--ink) 6%, transparent); }
/* nav submenu CSS (.nav-group/.nav-dropdown/.nav-subgroup) lives in SharedContent (all 9 layouts) */

/* ---- hero: shared overlay + split structures (panel/band live in soft/editorial) ---- */
.hero-eyebrow { display: inline-flex; align-items: center; gap: .5rem; margin: 0 0 1rem; font-size: 1rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--accent-text); }
.eyebrow-dot { width: 6px; height: 6px; border-radius: 99px; background: var(--accent); flex: none; }
.eyebrow-tick { display: none; }
.hero-sub { margin: 1.25rem 0 0; font-size: clamp(1rem, 2vw, 1.1875rem); line-height: 1.6; color: var(--muted); max-width: 46ch; }
.hero-cta { display: flex; flex-wrap: wrap; gap: .875rem; margin-top: 1.75rem; }
.hero-media { margin: 0; }

.hero--overlay { position: relative; isolation: isolate; }
.hero--overlay .hero-media { position: absolute; inset: 0; z-index: -2; }
.hero--overlay .hero-media img { width: 100%; height: 100%; object-fit: cover; }
.hero--overlay::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(10,10,15,.32), rgba(10,10,15,.68)); }
.hero--overlay .container { position: relative; padding-top: clamp(4rem, 13vw, 8.5rem); padding-bottom: clamp(4rem, 13vw, 8.5rem); }
.hero--overlay .hero-content { max-width: 42rem; }
.hero--overlay h1, .hero--overlay h2, .hero--overlay .hero-sub { color: #fff; }
.hero--overlay .hero-eyebrow { color: #fff; }
.hero--overlay.hero--light::after { background: linear-gradient(180deg, rgba(255,255,255,.45), rgba(255,255,255,.72)); }
.hero--overlay.hero--light :is(h1,h2,.hero-sub,.hero-eyebrow) { color: var(--ink); }
/* .hero--video (background-video hero) CSS lives in SharedContent so all 9 layouts style it */

.hero--split { padding: clamp(2rem, 5vw, 3.5rem) 0 0; }
.hero--split .hero-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: center; }
.hero--split .hero-media img { width: 100%; height: clamp(240px, 42vw, 460px); object-fit: cover; border-radius: var(--radius); }

/* ---- buttons ---- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .55rem; background: var(--accent); color: var(--accent-ink); font-weight: 600; text-decoration: none; padding: 1rem 1.75rem; min-height: 2.875rem; border: 0; border-radius: var(--radius-sm); font-size: 1rem; cursor: pointer; transition: filter .15s, transform .15s; }
.btn svg { width: 1em; height: 1em; }
.btn:hover { color: var(--accent-ink); filter: brightness(1.06); transform: translateY(-2px); }
.btn:active { transform: translateY(0); }
.btn--ghost { background: transparent; color: var(--ink); border: 1.5px solid color-mix(in srgb, var(--ink) 26%, transparent); }
.btn--ghost:hover { color: var(--ink); border-color: var(--ink); background: color-mix(in srgb, var(--ink) 4%, transparent); filter: none; }
.hero--overlay .btn--ghost { color: #fff; border-color: rgba(255,255,255,.5); }
.hero--overlay.hero--light .btn--ghost { color: var(--ink); border-color: color-mix(in srgb, var(--ink) 26%, transparent); }
.btn--lg { padding: 1.0625rem 2rem; font-size: 1.03125rem; }

/* ---- sections ---- */
.block { padding: var(--section-y) 0; }
.sec-head { margin: 0 0 clamp(1.5rem, 3.5vw, 2.5rem); }
.sec-head h2 { margin: .5rem 0 0; }
.sec-eyebrow { display: block; font-size: 1rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--accent-text); }
.sec-index, .eyebrow-tick { display: none; }
.page-title { margin: 1.25rem 0 0; }

.grid { display: grid; gap: 1.5rem; grid-template-columns: 1fr; }

/* ---- cards ---- */
.card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.75rem; transition: transform .18s, box-shadow .18s, border-color .18s; }
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-card); }
.card h3 { margin: 0 0 .5rem; }
.card p { margin: 0; color: var(--muted); font-size: 1rem; line-height: 1.65; }
.card-icon { display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: var(--radius-sm); margin-bottom: 1.125rem; background: color-mix(in srgb, var(--accent) 14%, var(--paper)); color: var(--accent-text); }
.card-icon svg { width: 22px; height: 22px; }
.price { color: var(--primary); font-weight: 600; margin-top: .6rem; }

/* ---- image with text ---- */
.iwt-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: center; }
.iwt-text p { margin: 0; font-size: 1.03125rem; line-height: 1.7; color: var(--muted); max-width: 56ch; }
.iwt-image img { border-radius: var(--radius); width: 100%; object-fit: cover; }

/* ---- testimonials (blockquote cards; layouts may restyle .quotes-band) ---- */
blockquote.card { margin: 0; padding: 2rem; }
.quote-mark { display: block; font-family: Georgia, serif; font-size: 3rem; line-height: .6; color: var(--accent-text); }
blockquote.card p { margin: 1rem 0 0; font-size: 1.0625rem; line-height: 1.6; color: color-mix(in srgb, var(--ink) 90%, transparent); }
blockquote.card footer { margin-top: 1rem; font-size: 1rem; font-weight: 600; color: var(--muted); }

/* ---- FAQ (chevron; layouts may switch to the plus) ---- */
.faq-grid { display: grid; gap: 2rem 3.5rem; grid-template-columns: 1fr; align-items: start; }
.sec-head--stack { margin-bottom: 0; }
.faq-list { display: flex; flex-direction: column; gap: .75rem; }
/* --radius-sm is a pill in some layouts, and a pill can't hold a paragraph: once the
   answer opens, the box grows tall and the rounding swallows the text. Panels that
   expand get their own modest, fixed corner. */
.faq-list details { background: var(--paper); border: 1px solid var(--line); border-radius: min(var(--radius-sm), 16px); padding: 1.25rem 1.5rem; }
.faq-list summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; font-size: 1.0625rem; font-weight: 600; min-height: 1.875rem; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-chip { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 28px; height: 28px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 14%, var(--paper)); color: var(--accent-text); transition: transform .2s; }
.faq-chip svg { width: 15px; height: 15px; }
.faq-chip .i-plus { display: none; }
.faq-list details[open] .faq-chip { transform: rotate(180deg); }
.faq-list details p { margin: .75rem 0 0; font-size: 1rem; line-height: 1.65; color: var(--muted); max-width: 68ch; }

/* ---- CTA ---- */
.cta-block { padding-inline: 0; }
.cta-banner { position: relative; border-radius: var(--radius); overflow: hidden; isolation: isolate; background: var(--tint); text-align: center; padding: clamp(3rem, 8vw, 5rem) 1.5rem; }
.cta-banner h2 { margin: 0 auto; max-width: 24ch; }
.cta-banner .btn { margin-top: 1.75rem; }
.cta-banner.has-photo { padding: 0; }
.cta-banner.has-photo .cta-media { position: absolute; inset: 0; z-index: -2; }
.cta-banner.has-photo .cta-media img { width: 100%; height: 100%; object-fit: cover; }
.cta-banner.has-photo::after { content: ""; position: absolute; inset: 0; z-index: -1; background: color-mix(in srgb, var(--primary-deep) 80%, transparent); }
.cta-content { display: contents; }
.cta-banner.has-photo .cta-content { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.5rem; min-height: clamp(300px, 32vw, 360px); padding: clamp(1.75rem, 5vw, 4rem); }
.cta-banner.has-photo h2 { color: #fff; }

/* ---- footer ---- */
.site-footer { background: var(--primary-deep); color: rgba(255,255,255,.72); padding: clamp(3rem, 7vw, 4.5rem) 0 2.5rem; font-size: 1rem; }
.footer-card { display: contents; }
.site-footer p { margin: .25rem 0; line-height: 1.7; }
.site-footer a { color: #fff; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(255,255,255,.3); }
.site-footer a:hover { color: #fff; text-decoration-color: var(--accent); }
.footer-grid { display: grid; gap: 2.25rem; grid-template-columns: 1fr; }
.footer-brand { display: flex; align-items: center; gap: .625rem; font-family: var(--font-display); font-weight: var(--display-weight); font-size: 1.1875rem; color: #fff; letter-spacing: -0.01em; }
.footer-label { font-size: 1rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.45); margin: 0 0 .875rem; }
.footer-nav { display: flex; flex-direction: column; gap: .1rem; }
/* a service-area list is long and shallow — two columns read far faster than one */
.footer-nav--places { display: block; columns: 2; column-gap: 1.5rem; }
.footer-nav--places a { break-inside: avoid; }
.footer-nav a { display: inline-block; padding: .3rem 0; text-decoration: none; }
.footer-nav a:hover { text-decoration: underline; }
.footer-cta { display: inline-flex; align-items: center; gap: .5rem; color: #fff; font-weight: 600; text-decoration: none !important; border: 1px solid rgba(255,255,255,.25); padding: .65rem 1.25rem; border-radius: var(--radius-sm); transition: border-color .15s; margin-top: .25rem; }
.footer-cta:hover { border-color: var(--accent); }
.footer-cta svg { width: .95em; height: .95em; }
.footer-social { display: flex; gap: .75rem; margin-top: .25rem; }
.footer-social a { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.25); border-radius: var(--radius-sm); color: #fff; transition: border-color .15s; }
.footer-social a:hover { border-color: var(--accent); }
.footer-social svg { width: 1rem; height: 1rem; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; border-top: 1px solid rgba(255,255,255,.12); margin-top: 2.75rem; padding-top: 1.375rem; font-size: 1rem; color: rgba(255,255,255,.5); }
.footer-bottom a { color: rgba(255,255,255,.6); text-decoration: none; }
.footer-bottom a:hover { color: #fff; }

/* ---- bottom bar (phones) ---- */
.pw-bottombar { position: fixed; inset-inline: 0; bottom: 0; z-index: 50; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; background: color-mix(in srgb, var(--paper) 92%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-top: 1px solid var(--line); padding: .5rem .375rem calc(.625rem + env(safe-area-inset-bottom)); transition: transform .15s ease, visibility 0s linear .15s; }
.pw-bottombar[hidden] { display: grid; }
.pw-bottombar.is-hidden { transform: translateY(110%); visibility: hidden; }
.pw-bottombar__item { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .2rem; min-height: 3.25rem; padding: .3rem .25rem; text-decoration: none; color: color-mix(in srgb, var(--ink) 62%, transparent); font-size: 1rem; font-weight: 600; text-align: center; }
.pw-bottombar__item:hover { color: var(--ink); }
.pw-bottombar__item svg { width: 1.25rem; height: 1.25rem; }
.pw-bottombar__item .dot { display: none; }
.pw-bottombar__item.is-primary { color: var(--accent-text); font-weight: 600; }
.has-bottombar { padding-bottom: calc(var(--bar-h) + env(safe-area-inset-bottom)); }

/* ---- reveals / reduced motion / print ---- */
@media (prefers-reduced-motion: no-preference) {
  html.js-reveal [data-reveal] { opacity: 0; transform: translateY(14px); transition: opacity .5s ease, transform .5s ease; }
  html.js-reveal [data-reveal].is-in { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
  .pw-bottombar.is-hidden { transform: none; visibility: visible; }
}
@media print {
  .site-header, .pw-bottombar, .skip-link, .header-cta, .pw-nav, .footer-cta, .footer-social, .hero-cta, .breadcrumbs { display: none !important; }
  body { color: #000; background: #fff; font-size: 12pt; }
  .has-bottombar { padding-bottom: 0; }
  .hero--overlay::after, .hero--overlay .hero-media { display: none !important; }
  .site-footer, .sec--dark, .quotes-band, .cta-banner { background: #fff !important; }
  /* force every text black on white — backgrounds are dropped by print, so a dark
     layout's light --ink/--muted would otherwise vanish (IT especially) */
  body * { color: #000 !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .card, blockquote, .faq-list details, .menu-item, .ba-pair { break-inside: avoid; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .85em; word-break: break-all; }
}

/* ---- tablet / desktop ---- */
@media (min-width: 48rem) {
  .grid { grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
  .gallery { grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
  .iwt-grid { grid-template-columns: 1fr 1fr; gap: 3.5rem; }
  .image-right .iwt-grid .iwt-image { order: 2; }
  .hero--split .hero-grid { grid-template-columns: 1.1fr .9fr; gap: 3.5rem; }
  .footer-grid { grid-template-columns: 2fr 1fr 1fr; gap: 3rem; }
  /* a 4th column appears only when the footer has service areas to list */
  .footer-grid:has(> :nth-child(4)) { grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 2.5rem; }
}
@media (min-width: 64rem) { .faq-grid { grid-template-columns: 1fr 1.7fr; } }
@media (min-width: 48.0625rem) {
  .pw-nav { display: none; }
  .site-nav--desktop { display: flex; flex-direction: row; flex-wrap: wrap; gap: .375rem; align-items: center; }
  .site-nav--desktop a { color: var(--muted); padding: .5rem .9rem; min-height: auto; font-size: 1rem; border-radius: var(--radius-sm); text-decoration: none; font-weight: 600; }
  .site-nav--desktop a:hover { color: var(--ink); background: color-mix(in srgb, var(--ink) 5%, transparent); }
  .site-nav--desktop a[aria-current="page"] { color: var(--ink); background: color-mix(in srgb, var(--ink) 7%, transparent); }
  .header-cta__num { display: inline; }
  .nav-cta { display: inline-flex; }
  .header-cta__short { display: none; }
  .pw-bottombar { display: none; }
  .has-bottombar { padding-bottom: 0; }
}
/* breadcrumb trail (inner pages) — pairs with the BreadcrumbList JSON-LD */
.breadcrumbs { font-size: 1rem; padding: 1rem 0 0; color: var(--muted); }
.breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; }
.breadcrumbs li + li::before { content: "\203A"; margin-right: .4rem; color: var(--muted); }
.breadcrumbs a { color: var(--muted); }
.breadcrumbs [aria-current="page"] { color: var(--ink); font-weight: 600; }

/* prose readability + link affordance */
.prose { max-width: 68ch; }
.prose a, .site-footer a:not(.btn), blockquote a { text-underline-offset: .18em; text-decoration-thickness: 1px; }
.prose a:hover, blockquote a:hover { text-decoration: underline; }

/* menu (restaurants): small-caps eyebrow section names, dotted leaders */
.menu-section h3 {
  font-size: 1rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent-text); border: 0; padding-bottom: 0; margin: 2rem 0 .75rem;
}
.menu-item { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; padding: .5rem 0;
  border-bottom: 1px dotted color-mix(in srgb, var(--ink) 22%, transparent); }
.menu-item .name { font-weight: 600; }
.menu-item .desc { color: var(--muted); font-size: 1rem; margin: 0; }
.menu-item .price { white-space: nowrap; margin: 0; }

/* lightbox: a full-screen viewer for gallery photos */
.lightbox { position: fixed; inset: 0; z-index: 70; display: none; place-items: center; background: rgba(8,12,18,.92); padding: clamp(1rem, 4vw, 3rem); }
.lightbox.is-open { display: grid; }
body.lb-open { overflow: hidden; }
.lightbox figure { margin: 0; max-width: 100%; max-height: 100%; display: flex; flex-direction: column; gap: .75rem; align-items: center; }
.lightbox img { max-width: 100%; max-height: 78vh; width: auto; border-radius: var(--radius-img); cursor: zoom-in; object-fit: contain; }
.lightbox img.is-zoomed { max-height: none; max-width: none; width: auto; height: 180vh; cursor: zoom-out; }
.lightbox figcaption { color: rgba(255,255,255,.86); font-size: 1rem; text-align: center; }
.lightbox button { position: absolute; background: rgba(255,255,255,.14); color: #fff; border: 0; width: 3rem; height: 3rem; border-radius: 999px; font-size: 1.75rem; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.lightbox button:hover { background: rgba(255,255,255,.26); }
.lb-close { top: 1rem; right: 1rem; }
.lb-prev { left: 1rem; top: 50%; translate: 0 -50%; }
.lb-next { right: 1rem; top: 50%; translate: 0 -50%; }
.gallery a { display: block; }
.gallery a[data-zoom] { cursor: zoom-in; }
@media (max-width: 30rem) { .lb-prev { left: .35rem; } .lb-next { right: .35rem; } }

/* available to screen readers, absent from the page — for labels that duplicate a visual */
.visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

/* star ratings above a quote */
.stars { display: flex; gap: .15rem; margin: 0 0 .625rem; }
.stars svg { width: 1.0625rem; height: 1.0625rem; fill: color-mix(in srgb, var(--ink) 16%, transparent); }
.stars svg.is-on { fill: #F5A524; }
/* stars already open the quote; the big typographic mark just lands on top of them */
blockquote:has(.stars) .quote-mark { display: none; }

/* a service card that leads with a photo */
.card--photo { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.card--photo .card-media { margin: 0; }
.card--photo .card-media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 0; }
.card--photo .card-icon { display: none; }
.card--photo :is(h3, p, .price) { padding-inline: 1.5rem; }
.card--photo h3 { margin-top: 1.25rem; }
.card--photo > :last-child { padding-bottom: 1.5rem; }

/* video: a poster and a play button until someone asks for the iframe */
.video-grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
/* two videos side by side is the natural shape; a cols-N override still wins */
@media (min-width: 48rem) { .video-grid { grid-template-columns: repeat(2, 1fr); } }
.video { margin: 0; position: relative; }
.video-facade { display: block; position: relative; width: 100%; padding: 0; border: 0; cursor: pointer; background: color-mix(in srgb, var(--ink) 90%, #000); border-radius: var(--radius-img); overflow: hidden; aspect-ratio: 16 / 9; }
.video-facade img { width: 100%; height: 100%; object-fit: cover; }
.video-play { position: absolute; inset: 0; margin: auto; width: 4.5rem; height: 4.5rem; display: grid; place-items: center; border-radius: 999px; background: rgba(255,255,255,.92); color: var(--ink); transition: transform .15s; }
.video-play svg { width: 2rem; height: 2rem; margin-left: .2rem; }
.video-facade:hover .video-play { transform: scale(1.06); }
.video iframe { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--radius-img); display: block; }
.video figcaption { margin-top: .75rem; color: var(--muted); font-size: 1rem; }
.video-fallback { display: inline-block; margin-top: .75rem; font-weight: 600; }

/* top bar: the welcome line above the header, carrying the phone. Sits ABOVE the sticky
   header in the document, so it scrolls away and the header alone stays pinned. */
.topbar { background: var(--ink); color: color-mix(in srgb, #fff 82%, transparent); font-size: 1rem; }
.topbar .container { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .25rem 1.25rem; padding-block: .5rem; text-align: center; }
.topbar p { margin: 0; }
.topbar__note { font-weight: 600; }
.topbar__contact { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem 1rem; }
.topbar a { display: inline-flex; align-items: center; gap: .35rem; color: #fff; text-decoration: none; font-weight: 600; }
.topbar a:hover { color: #fff; text-decoration: underline; }
.topbar svg { width: .95em; height: .95em; }

/* the one nav item that is an action, not a destination */
.nav-cta { display: none; align-items: center; gap: .5rem; background: var(--accent); color: var(--accent-ink); text-decoration: none; font-weight: 600; font-size: 1rem; padding: .65rem 1.35rem; border-radius: var(--radius-sm); min-height: 2.75rem; transition: filter .15s, transform .15s; }
.nav-cta:hover { color: var(--accent-ink); filter: brightness(1.06); transform: translateY(-1px); }
/* the desktop override lives HERE, next to the base rule. In a media query further
   up the sheet it loses to this `display: none` on source order and the button
   never appears at any width. */
@media (min-width: 48.0625rem) { .nav-cta { display: inline-flex; } }

/* gallery */
.gallery { display: grid; gap: .875rem; grid-template-columns: repeat(2, 1fr); }
.gallery figure { margin: 0; }
.gallery img { border-radius: var(--radius-img); width: 100%; object-fit: cover; }
.gallery figcaption { margin-top: .625rem; font-weight: 600; font-size: 1rem; line-height: 1.35; color: var(--ink); text-wrap: balance; }
/* one shape for every photo, so the rows line up however the originals were cropped */
.gallery--square img { aspect-ratio: 1 / 1; }
.gallery--landscape img { aspect-ratio: 4 / 3; }
.gallery--portrait img { aspect-ratio: 3 / 4; }
.gallery--wide img { aspect-ratio: 16 / 9; }

/* logo strip: partner/cert marks on one centered row, UNIFORM height (not a cropped grid) */
.logo-strip { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.75rem 2.75rem; }
.logo-strip li { margin: 0; }
.logo-strip img { height: 2.5rem; width: auto; max-width: 11rem; object-fit: contain; border-radius: 0; }
.logo-strip--sm img { height: 2rem; max-width: 9rem; }
.logo-strip--lg img { height: 3.75rem; max-width: 14rem; }
.logo-strip--xl img { height: 5rem; max-width: 16rem; }
.logo-strip--4x img { height: 10rem; max-width: 26rem; }
.logo-strip--6x img { height: 15rem; max-width: 34rem; }
.logo-strip--8x img { height: 20rem; max-width: 42rem; }
/* the big sizes slide instead of wrapping: the row stays on one line and scrolls (swipe on
   touch, trackpad/drag on desktop) — zero JS. width:fit-content keeps a SHORT row centred
   while a long one scrolls, avoiding the flex-centring overflow clip. */
.logo-strip--4x, .logo-strip--6x, .logo-strip--8x {
  flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain;
  width: fit-content; max-width: 100%; margin-inline: auto;
  scroll-snap-type: x proximity; padding-bottom: .75rem;
}
.logo-strip--4x li, .logo-strip--6x li, .logo-strip--8x li { flex: 0 0 auto; scroll-snap-align: center; }

/* blog: listing cards + a readable article column */
.post-list { display: grid; gap: 2rem; grid-template-columns: 1fr; }
.post-card { display: flex; flex-direction: column; gap: .5rem; }
/* the UA's [hidden] rule loses to the display above — without this the search box and
   pager set the attribute and nothing actually disappears */
.post-card[hidden] { display: none; }
.post-card img { border-radius: var(--radius-img); width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.post-card time, .post-head time { font-size: 1rem; color: var(--muted); letter-spacing: .02em; }
.post-card h3 { margin: 0; font-size: 1.125rem; line-height: 1.3; }
.post-card h3 a { color: var(--ink); text-decoration: none; }
.post-card h3 a:hover { color: var(--accent-text); }
.post-card p { margin: 0; color: var(--muted); font-size: 1rem; line-height: 1.6; }
.post { max-width: 44rem; margin-inline: auto; }
.post-head h1 { margin: .35rem 0 0; }
.post-media img { border-radius: var(--radius-img); width: 100%; margin: 1.75rem 0; }
.post-body { font-size: 1.0625rem; line-height: 1.75; }
.post-body :is(h2, h3) { margin-top: 2rem; }
.post-body img { border-radius: var(--radius-img); }
.post-tags { margin-top: 2rem; color: var(--muted); font-size: 1rem; word-spacing: .35rem; }
.post-back { margin-top: 1.5rem; }

/* featured strip: the newest post large, the next four beside it */
.post-featured { display: grid; gap: 1.5rem; grid-template-columns: 1fr; }
.post-featured__rest { display: grid; gap: 1.25rem; grid-template-columns: repeat(2, 1fr); }
.post-card--lead h3 { font-size: clamp(1.25rem, 2.4vw, 1.75rem); }
.post-card--lead img { aspect-ratio: 16 / 10; }
.post-featured__rest .post-card img { aspect-ratio: 4 / 3; }
.post-featured__rest .post-card h3 { font-size: 1rem; }
@media (min-width: 56rem) { .post-featured { grid-template-columns: 1fr 1fr; gap: 2rem; } }

/* archive: search box, count and page buttons */
.post-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-bottom: 1.5rem; }
.post-search { flex: 1 1 16rem; max-width: 24rem; padding: .7rem 1rem; font: inherit; font-size: 1rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); }
.post-search:focus-visible { border-color: var(--accent); }
.post-count { margin: 0; color: var(--muted); font-size: 1rem; }
.post-pager { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: 2rem; }
.post-pager button { min-width: 2.5rem; min-height: 2.5rem; padding: 0 .6rem; font: inherit; font-weight: 600; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); cursor: pointer; }
.post-pager button:hover { border-color: var(--accent); }
.post-pager button.is-current { background: var(--accent); color: var(--accent-ink); border-color: transparent; }
@media (min-width: 48rem) { .post-list--grid .post-list, .post-list--paged .post-list { grid-template-columns: repeat(3, 1fr); } }

/* footer slogan under the brand — opacity-based so it reads on any footer background */
.footer-slogan { margin: .35rem 0 .1rem; font-size: 1rem; line-height: 1.5; opacity: .82; max-width: 34ch; }

/* full-bleed background-video hero (HeroBlock.VideoPath) — self-contained so it works on
   EVERY layout regardless of that layout's usual hero shape (soft=panel, editorial=band, …) */
.hero--video { position: relative; isolation: isolate; }
.hero--video .hero-media { position: absolute; inset: 0; z-index: -2; margin: 0; background: var(--ink); }
.hero--video .hero-media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero--video::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(10,10,15,.32), rgba(10,10,15,.68)); }
.hero--video .container { position: relative; padding-top: clamp(4rem, 13vw, 8.5rem); padding-bottom: clamp(4rem, 13vw, 8.5rem); }
.hero--video .hero-content { max-width: 42rem; }
.hero--video :is(h1, h2, .hero-sub, .hero-eyebrow) { color: #fff; }
.hero--video.hero--light::after { background: linear-gradient(180deg, rgba(255,255,255,.5), rgba(255,255,255,.75)); }
.hero--video.hero--light :is(h1, h2, .hero-sub, .hero-eyebrow) { color: var(--ink); }

/* nav submenu — CSS-only dropdown (desktop, hover/focus-within) + native <details> accordion
   (mobile). The desktop rules are harmless on mobile: .site-nav--desktop is display:none there,
   so .nav-group/.nav-dropdown inside it never render. */
.nav-group { position: relative; display: inline-flex; }
.nav-group__link { display: inline-flex; align-items: center; gap: .25rem; color: var(--muted); padding: .5rem .9rem; font-size: 1rem; font-weight: 600; border-radius: var(--radius-sm, .5rem); text-decoration: none; }
.nav-group.is-active .nav-group__link, .nav-group:hover .nav-group__link, .nav-group:focus-within .nav-group__link { color: var(--ink); background: color-mix(in srgb, var(--ink) 5%, transparent); }
.nav-group__link svg { width: .8em; height: .8em; transition: transform .15s; }
.nav-group:hover .nav-group__link svg, .nav-group:focus-within .nav-group__link svg { transform: rotate(180deg); }
.nav-dropdown { position: absolute; top: 100%; left: 0; z-index: 45; display: none; min-width: 12rem; flex-direction: column; gap: .125rem; margin-top: .5rem; padding: .4rem; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius, .75rem); box-shadow: var(--shadow-card, 0 8px 30px rgba(15,26,48,.14)); }
/* transparent hover bridge across the visual gap so the pointer can travel link→menu
   without the :hover dropping (the "menu vanishes before I reach it" problem) */
.nav-dropdown::before { content: ""; position: absolute; top: -.6rem; left: 0; right: 0; height: .6rem; }
.nav-group:hover .nav-dropdown, .nav-group:focus-within .nav-dropdown { display: flex; }
.nav-dropdown a { color: var(--ink); padding: .55rem .75rem; border-radius: var(--radius-sm, .5rem); font-size: 1rem; font-weight: 600; text-decoration: none; white-space: nowrap; min-height: auto; }
.nav-dropdown a:hover { background: color-mix(in srgb, var(--ink) 6%, transparent); }
.nav-dropdown a[aria-current="page"] { background: color-mix(in srgb, var(--accent) 14%, transparent); }
.nav-subgroup > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; color: var(--ink); font-weight: 600; padding: .85rem .75rem; min-height: 3rem; border-radius: var(--radius-sm, .5rem); }
.nav-subgroup > summary::-webkit-details-marker { display: none; }
.nav-subgroup > summary svg { width: 1em; height: 1em; transition: transform .15s; }
.nav-subgroup[open] > summary svg { transform: rotate(180deg); }
.nav-subgroup a { padding-left: 1.5rem; }

@media (prefers-reduced-motion: reduce) { .hero--video .hero-media video { display: none; } }

/* hours */
.hours-table { border-collapse: collapse; min-width: 16rem; width: 100%; max-width: 22rem; }
.hours-table td { padding: .4rem 1.25rem .4rem 0; border-bottom: 1px solid var(--line); }
.hours-table td:first-child { font-weight: 600; }

/* click-to-load map facade (checklist B5) */
.pw-map { max-width: 44rem; }
.pw-map-facade {
  display: flex; align-items: center; gap: .9rem; text-decoration: none; color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--radius);
  background: color-mix(in srgb, var(--accent) 8%, var(--paper));
  padding: 1.1rem 1.25rem; min-height: 6rem;
}
.pw-map-facade:hover { border-color: var(--accent); }
.pw-map-pin { color: var(--primary); flex: none; }
.pw-map-text { display: flex; flex-direction: column; gap: .1rem; }
.pw-map-text strong { font-size: 1.05rem; }
.pw-map-hint { color: var(--muted); font-size: 1rem; margin-top: .2rem; }
.pw-map-frame { width: 100%; height: clamp(15rem, 50vw, 24rem); border: 0; border-radius: var(--radius); }
.pw-map-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: .9rem 0 0; }

/* announcement strip: accent-tinted, hairline; semantic color only for urgent */
.announcement { padding: .6rem 0; text-align: center; font-weight: 600; font-size: 1rem;
  background: color-mix(in srgb, var(--accent) 10%, var(--paper)); color: var(--ink);
  border-bottom: 1px solid var(--line); }
.announcement a { color: inherit; }
.announcement-urgent { background: #fbe9e9; color: #8a1f1f; }
.announcement-success { background: color-mix(in srgb, #1f6b3a 10%, var(--paper)); color: #1f6b3a; }

/* service-area chips */
.area-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.area-chips li {
  border: 1px solid color-mix(in srgb, var(--accent) 25%, var(--line)); border-radius: 999px; padding: .4rem .95rem;
  background: color-mix(in srgb, var(--accent) 10%, var(--paper)); font-size: 1rem;
}

/* before/after */
.ba-pair { margin: 0 0 1.75rem; }
.ba-grid { display: grid; gap: .75rem; grid-template-columns: 1fr 1fr; }
.ba-cell { position: relative; }
.ba-cell img { border-radius: var(--radius-img); width: 100%; object-fit: cover; }
.ba-label {
  position: absolute; top: .5rem; left: .5rem; background: var(--ink); color: #fff;
  font-size: 1rem; font-weight: 600; text-transform: uppercase; padding: .15rem .55rem; border-radius: .25rem;
}
.ba-pair figcaption { color: var(--muted); margin-top: .4rem; font-size: 1rem; }

/* Comparison slider: the two photos stack and a clip reveals the second. Only applies once
   the range input is present (i.e. with JS); without it the pair stays side by side. */
/* --split lives on the .ba-slider (where the script sets it) and inherits down. It must NOT
   be re-declared on .ba-grid — a local declaration there shadows the inherited value, which
   is exactly why the divider used to stay frozen at 50%. */
.ba-slider:has(.ba-range) { --split: 50%; }
.ba-slider:has(.ba-range) .ba-grid { position: relative; grid-template-columns: 1fr; gap: 0; }
.ba-slider:has(.ba-range) .ba-cell { grid-area: 1 / 1; }
.ba-slider:has(.ba-range) .ba-cell img { aspect-ratio: 4 / 3; }
.ba-slider:has(.ba-range) .ba-cell--after { clip-path: inset(0 0 0 var(--split)); }
.ba-slider:has(.ba-range) .ba-cell--after .ba-label { left: auto; right: .5rem; }
.ba-handle { position: absolute; top: 0; bottom: 0; left: var(--split); width: 2px; background: #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.25); pointer-events: none; }
.ba-handle::after { content: ""; position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: 2.5rem; height: 2.5rem; border-radius: 999px; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.3); }
.ba-range { position: absolute; inset: auto 0 0; width: 100%; margin: 0; padding: 0; height: 100%; opacity: 0; cursor: ew-resize; }
.ba-range:focus-visible { opacity: .01; outline-offset: -3px; }

/* forms (§4.11): rounded inputs, accent focus ring, thin progress bar */
.contact-form { max-width: 34rem; }
.contact-form label { display: block; font-weight: 600; font-size: 1rem; margin-bottom: .9rem; }
.contact-form input, .contact-form textarea,
.form-q input[type="text"], .form-q input[type="email"], .form-q input[type="tel"],
.form-q select, .form-q textarea {
  display: block; width: 100%; font: inherit; font-size: 1rem;
  padding: .8rem .95rem; margin-top: .3rem; min-height: 2.875rem;
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper);
  transition: border-color .15s;
}
.contact-form input:focus-visible, .contact-form textarea:focus-visible,
.form-q input:focus-visible, .form-q select:focus-visible, .form-q textarea:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--accent) 35%, transparent); outline-offset: 0; border-color: var(--accent);
}
.form-status { font-weight: 600; color: var(--primary); min-height: 1.4em; }
.honeypot { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.proweb-form { max-width: 34rem; }
.form-step { border: 0; border-top: 1px solid var(--line); border-radius: 0; padding: 1.25rem 0; margin: 0 0 .5rem; }
.form-step legend { font-weight: 600; padding: 0 .4rem 0 0; }
.form-q { margin-bottom: .9rem; }
.form-q > label { display: block; font-weight: 600; font-size: 1rem; margin-bottom: .25rem; }
.form-choice { display: block; font-weight: 400; margin: .2rem 0; min-height: 2.5rem; }
.form-help { color: var(--muted); font-size: 1rem; margin: 0 0 .3rem; }
.form-progress { font-weight: 600; font-size: 1rem; color: var(--muted); margin-bottom: .4rem; }
.form-bar { height: 3px; border-radius: 99px; background: var(--line); margin-bottom: 1rem; overflow: hidden; }
.form-bar span { display: block; height: 100%; border-radius: 99px; background: var(--accent); transition: width .2s; }
.form-nav { display: flex; gap: .6rem; }

/* ---- per-section overrides (Block.Section → SectionLayout.CssClass) ---- */
/* width: overriding --container on the section cascades into the child .container */
.sec--contained { --container: 78rem; }
.sec--wide { --container: 92rem; }
.sec--full { --container: 100%; }
/* background bands span full width; inner .container stays centred. Qualified with .block
   so a section-background override beats a layout's own section rule (e.g. .quotes-band). */
.block.sec--tint { background: var(--tint); }
/* a dark band is SELF-CONTAINED: light text throughout, and card/chip/facade surfaces
   become translucent panels — never a white card left holding inherited white text. */
.block.sec--dark { background: var(--primary-deep); color: #fff; }
.block.sec--dark :is(h1, h2, h3, h4, .page-title) { color: #fff; }
.block.sec--dark :is(.sec-eyebrow, .sec-index, .menu-section h3, .price, .form-status) { color: color-mix(in srgb, var(--accent) 66%, #fff); }
.block.sec--dark :is(p, li, td, .menu-item .desc, .faq-list summary, .faq-list details p, .iwt-text p) { color: rgba(255,255,255,.86); }
.block.sec--dark a:not(.btn) { color: #fff; text-decoration-color: rgba(255,255,255,.5); }
.block.sec--dark :is(.card, .faq-list details, .pw-map-facade, .area-chips li) { background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.16); box-shadow: none; }
.block.sec--dark :is(.menu-item, .hours-table td) { border-color: rgba(255,255,255,.18); }
/* vertical rhythm */
.sec--compact { --section-y: clamp(1.75rem, 4vw, 2.75rem); }
.sec--roomy { --section-y: clamp(4rem, 9vw, 7rem); }
/* arrangement — reverse flips the image side either way (composes with ImageWithTextBlock.ImageLeft) */
@media (min-width: 48rem) {
  /* a column count applies to whatever the section lays out — cards, photos or videos */
  .sec--cols-2 :is(.grid, .gallery, .video-grid) { grid-template-columns: repeat(2, 1fr); }
  .sec--cols-3 :is(.grid, .gallery, .video-grid) { grid-template-columns: repeat(3, 1fr); }
  .sec--cols-4 :is(.grid, .gallery, .video-grid) { grid-template-columns: repeat(4, 1fr); }
  .sec--reverse.image-left .iwt-image { order: 2; }
  .sec--reverse.image-right .iwt-image { order: 0; }
}

.error-page { text-align: center; padding: 5rem 1rem; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
/* generous, tightly-tracked display type — the "premium" half of quiet premium */
h1 { letter-spacing: -.028em; line-height: 1.04; font-size: clamp(2.25rem, 5vw, 3.5rem); }
h2 { letter-spacing: -.022em; line-height: 1.08; }
h3 { letter-spacing: -.012em; font-weight: 600; }
/* eyebrows: small caps in the brand blue, no dot/tick chrome */
.sec-eyebrow, .hero-eyebrow { font-size: 1rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--primary); }
.hero-eyebrow .eyebrow-dot, .hero-eyebrow .eyebrow-tick, .sec-eyebrow::before, .sec-eyebrow::after { display: none; }

/* CENTRED hero over a wide photo band (design's "Hero A") */
.hero { background: var(--tint); border-bottom: 1px solid var(--line); padding-top: clamp(2.5rem, 6vw, 4.5rem); }
.hero .container { text-align: center; }
.hero h1, .hero .hero-sub { margin-inline: auto; }
.hero .hero-sub { max-width: 54ch; }
.hero-lede { display: flex; flex-direction: column; align-items: center; gap: 0; margin-top: clamp(1rem, 2.5vw, 1.5rem); }
.hero-cta { justify-content: center; }
/* the photo sits INSIDE the page gutter as a rounded panel, not edge-to-edge */
.hero-band { margin: clamp(2rem, 4.5vw, 3.25rem) auto 0; position: relative; width: 100%; max-width: var(--container); padding: 0 var(--gutter); }
.hero-band img { width: 100%; height: clamp(220px, 36vw, 480px); object-fit: cover; border-radius: var(--radius); }

/* pill buttons; the primary carries a warm glow, the ghost is a hairline outline */
.btn { border-radius: 999px; padding: .95rem 1.75rem; box-shadow: 0 8px 20px -6px color-mix(in srgb, var(--accent) 45%, transparent); }
.btn:hover { transform: translateY(-1px); }
.btn--ghost { box-shadow: none; border-color: color-mix(in srgb, var(--ink) 22%, transparent); }
.btn--ghost:hover { border-color: var(--primary); color: var(--primary); }
.header-cta { border-radius: 999px; background: var(--primary); color: #fff; }
.header-cta:hover { color: #fff; }

/* softly elevated cards on the warm paper */
.card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-card); }
.card:hover { box-shadow: 0 20px 44px -22px rgba(22,50,77,.38); transform: translateY(-2px); }
.card-icon { border-radius: 14px; background: color-mix(in srgb, var(--primary) 10%, #fff); color: var(--primary); }

/* section heads centred by default (the design's "What can we help you with?" rhythm) */
.sec-head { text-align: center; }
.sec-head h2 { margin-inline: auto; max-width: 24ch; }
.sec-head p { margin-inline: auto; max-width: 56ch; }

/* announcement = the seasonal sand strip, not a shouty banner */
.announcement-info { background: var(--sand); color: var(--ink); border-block: 1px solid color-mix(in srgb, var(--ink) 8%, transparent); }
.announcement a { color: var(--primary); text-decoration: underline; }

/* testimonials: quiet cards on the warm tint */
.quotes-band { background: var(--tint); border-block: 1px solid var(--line); }
.quotes-band blockquote.card { background: var(--paper); }
.quotes-band blockquote.card footer { color: var(--muted); }

/* roomier menu — the design's header breathes, and the phone has moved up to the top bar */
.site-nav--desktop { gap: .25rem; }
.site-nav--desktop a, .nav-group__link { padding: .5rem 1.05rem; font-size: 1rem; letter-spacing: -.005em; }
.site-header .container { gap: .75rem 2.25rem; }
.topbar { background: var(--ink); }
.topbar__note { letter-spacing: .01em; }

/* A hero with no photo is just a title and a line of text; the full-height treatment leaves
   it stranded in whitespace. Inner pages get a compact band instead. */
.hero:not(:has(.hero-band)) { padding-top: clamp(2rem, 4vw, 3rem); padding-bottom: clamp(2rem, 4vw, 3rem); }
.hero:not(:has(.hero-band)) h1 { font-size: clamp(2rem, 4vw, 2.875rem); }
.hero:not(:has(.hero-band)) .hero-sub { max-width: 60ch; }
.hero:not(:has(.hero-band)) .hero-lede { margin-top: .875rem; }

/* CTA + footer close the page on the deep navy */
.cta-banner { background: var(--ink); }
.cta-banner h2, .cta-banner p { color: #fff; }
.cta-banner .btn { background: var(--accent); color: var(--accent-ink); }
.site-header { background: color-mix(in srgb, var(--paper) 92%, transparent); }
.logo-strip img { filter: none; }

/* ---- owner overrides: header chrome + per-section colours ---- */
.header-cta { background: var(--header-cta-bg); color: var(--header-cta-ink); }
.site-nav--desktop a, .nav-group__link { color: var(--nav-color); font-size: var(--nav-size); }
.site-nav--desktop a[aria-current="page"], .nav-group.is-active .nav-group__link { color: var(--ink); }
/* per-section background / text colour (Section layout → Background & Text colour) */
.sec--paint { background: var(--sec-bg); }
.sec--ink, .sec--ink :is(h1, h2, h3, h4, p, li, blockquote, figcaption, summary, .hero-sub, .sec-eyebrow, .hero-eyebrow, .price, .footer-label) { color: var(--sec-fg); }

/* ---- owner custom CSS (Settings → Custom CSS) ---- */
/* Korean wraps on word boundaries, not mid-word. Without this every heading and
   paragraph breaks in the middle of a word, which is the fastest way to make a
   Korean page look machine-made. */
html, body, h1, h2, h3, p, li, blockquote, figcaption { word-break: keep-all; overflow-wrap: anywhere; }

/* the brand-pretendard preset self-hosts Pretendard as unicode-range subsets and
   supplies the font stack — nothing to override here */
:root {
  --radius: 8px; --radius-img: 8px; --radius-sm: 6px;   /* the comps use soft corners, not pills */
  --tint: #EEF3F7;                                       /* the comps' pale blue mat */
  --surface: #FCFBF8;                                    /* the warm gallery wall */
  --muted: #4A6076;                                      /* the comps' label grey-blue */
  --line: #E2E9EF;                                       /* structure is hairlines, not boxes */
  --section-y: clamp(4rem, 10vw, 7rem);                  /* 64-112px between bands; whitespace does the luxury */
  --nav-color: var(--ink);                               /* nav links are ink in the comps, not grey */
  --nav-size: .9375rem;
}

/* the comps set body copy at 18px/1.7 — roomier than the platform default */
body { font-size: 1.125rem; line-height: 1.7; }

/* square-ish buttons, per the comps; no glow under the terracotta */
.btn, .header-cta, .nav-cta { border-radius: 6px; }
.btn { box-shadow: none; }

/* the topbar is off; the phone pill it leaves behind is not in the comps —
   the nav CTA and the hero carry the action */
.header-cta { display: none; }

/* the current page is marked in terracotta, not a grey pill */
.site-nav--desktop a[aria-current="page"] { color: var(--accent-text); background: none; }

/* ---- hero: the art wall -------------------------------------------------- */
/* Full-bleed photo under a left-to-right navy scrim; white type sits over the
   darkest part. .hero.hero--overlay everywhere on purpose — at (0,2,0)+ it TIES the
   quiet layout's .hero:not(:has(.hero-band)) compacting rules and wins only because
   this sheet is appended last. Don't shorten the selectors: a bare .hero--overlay
   drops to (0,1,0) and loses those fights. */
.hero.hero--overlay { padding: 0; border-bottom: 0; background: var(--primary); }
.hero.hero--overlay .hero-media { margin: 0; }
.hero.hero--overlay::after { background: linear-gradient(90deg, rgba(22,50,79,.78), rgba(22,50,79,.22)); }
.hero.hero--overlay .container {
  text-align: left;
  padding-top: clamp(4.5rem, 11vw, 8rem);
  padding-bottom: clamp(4rem, 9vw, 7rem);
}
/* the comps use a 48x3 terracotta tick above the headline, never a small-caps label */
.hero-eyebrow, .sec-eyebrow { display: none; }
.hero.hero--overlay h1, .hero.hero--overlay h2 {
  margin: 0; color: var(--surface);
  font-size: clamp(2.25rem, 5vw, 3.25rem); line-height: 1.25; letter-spacing: -0.01em; text-wrap: pretty;
}
.hero.hero--overlay h1::before, .hero.hero--overlay h2::before {
  content: ""; display: block; width: 48px; height: 3px; background: var(--accent); margin-bottom: 1.5rem;
}
.hero.hero--overlay .hero-sub {
  margin: 1.25rem 0 0; max-width: 34ch;
  font-size: 1.3125rem; line-height: 1.7; color: rgba(252, 251, 248, .88);
}
.hero.hero--overlay .hero-cta { justify-content: flex-start; align-items: center; margin-top: 2.5rem; gap: 1.5rem; }
.hero.hero--overlay .btn { font-size: 1.0625rem; padding: .9375rem 1.75rem; }
/* the second CTA is a plain white phone line in the comps, not a bordered button */
.hero.hero--overlay .btn--ghost { background: none; border: 0; padding-inline: 0; color: var(--surface); font-weight: 600; }
/* hover stays light: raw terracotta over the scrim measures ~2.6:1 and the link vanishes */
.hero.hero--overlay .btn--ghost:hover { background: none; color: var(--sand); text-decoration: underline; text-underline-offset: .2em; }

/* ---- section heads: wall labels ------------------------------------------ */
/* the 48x3 accent rule the comps put above every section heading */
.sec-head { position: relative; padding-top: 1.25rem; text-align: left; }
.sec-head::before {
  content: ""; position: absolute; top: 0; left: 0; width: 48px; height: 3px; background: var(--accent);
}
/* margin-top 0: the tick-to-heading gap is the 1.25rem padding — same rhythm as the
   markdown wall labels below (the base .5rem margin only existed to clear the eyebrow,
   which this sheet hides) */
.sec-head h2 { margin: 0; font-size: clamp(1.625rem, 3vw, 2rem); line-height: 1.25; }
.sec-head h2, .sec-head p { margin-inline: 0; }
/* markdown sections carry their own h2 — give it the same wall label */
.markdown-block .container > h2 { position: relative; padding-top: 1.25rem; margin: 0 0 2.25rem; font-size: clamp(1.625rem, 3vw, 2rem); line-height: 1.25; }
.markdown-block .container > h2::before {
  content: ""; position: absolute; top: 0; left: 0; width: 48px; height: 3px; background: var(--accent);
}

/* ---- cards: flat mats, not floating panels ------------------------------- */
.card { background: var(--tint); border: 0; box-shadow: none; border-radius: var(--radius); padding: 2.25rem 2rem; }
.card:hover { box-shadow: none; transform: none; }
/* re-assert base: the .card padding above would otherwise beat .card--photo's flush
   photo (equal specificity, this sheet comes later in the file) */
.card--photo { padding: 0; }
.card h3 { margin: 0; font-size: 1.375rem; font-weight: 600; line-height: 1.35; }
.card p { margin: .875rem 0 0; font-size: 1.125rem; line-height: 1.7; color: var(--ink); }
/* icons are a quiet navy line drawing, not a chip */
.card-icon { width: 30px; height: 30px; border-radius: 0; background: none; color: var(--primary); margin-bottom: 1.125rem; }
.card-icon svg { width: 30px; height: 30px; }
/* the price is the artifact: 44px terracotta, on its own line */
.card .price { margin-top: .5rem; font-size: 2.75rem; line-height: 1.1; color: var(--accent); }

/* ---- .wi-steps: bare numbered columns on the tint band ------------------- */
/* the band is the surface, so the cards go transparent and the icons go away;
   CSS counters paint the terracotta 01/02/03 — the seed drops the literal
   "01 · " prefixes so the numbers aren't doubled */
.wi-steps .grid { counter-reset: wi-step; gap: 2.5rem; }
.wi-steps .card { background: none; padding: 0; counter-increment: wi-step; }
.wi-steps .card-icon { display: none; }
.wi-steps .card h3 { font-weight: 600; }
.wi-steps .card h3::before {
  content: "0" counter(wi-step); display: block;
  font-size: 1rem; font-weight: 600; letter-spacing: .08em; color: var(--accent); margin-bottom: .625rem;
}
.wi-steps .card p { color: var(--muted); }

/* ---- .wi-rows: hairline ledger rows -------------------------------------- */
.wi-rows .container > p {
  margin: 0; padding: 1.5rem 0; border-top: 1px solid var(--line);
  font-size: 1.25rem; line-height: 1.7; max-width: 60ch;
}
.wi-rows .container > p:last-child { padding-bottom: 0; }

/* ---- .wi-stat: the one big number gets the color and the room ------------ */
.wi-stat .container > h3 { margin: 0; font-size: clamp(2.5rem, 5vw, 3.25rem); line-height: 1; color: var(--accent); }
.wi-stat .container > p { margin: .875rem 0 0; font-size: 1rem; color: var(--muted); }

/* ---- gallery: museum labels ---------------------------------------------- */
/* artifact first, plaque second: a quiet 15px label, not a bold caption */
.gallery figcaption {
  margin-top: .625rem; font-weight: 400; font-size: 1rem; line-height: 1.5;
  color: var(--muted); text-align: left; text-wrap: pretty;
}

/* ---- plans table: hairlines and dots, not boxes -------------------------- */
.markdown-block table { width: 100%; max-width: 45rem; border-collapse: collapse; }
.markdown-block th { padding: .75rem 0; border-bottom: 2px solid var(--ink); font-size: 1rem; text-align: left; }
.markdown-block td { padding: 1rem 0; border-bottom: 1px solid var(--line); font-size: 1.0625rem; }
.markdown-block :is(th, td):not(:first-child) { width: 4.25rem; text-align: center; }
/* the ● inclusion marks read as small ink dots. NOTE: this assumes non-first columns
   only ever hold ● / empty — real text in those cells would render 12px */
.markdown-block td:not(:first-child) { font-size: 1rem; color: var(--primary); }

/* ---- pre-footer contact band: flat tint, question left, action right ----- */
/* the band sits flush between the last section and the footer. The second selector
   matches base's `main > .block.cta-block { padding-bottom: var(--section-y) }`
   (0,2,1) — a bare .cta-block loses that fight and leaves a pale strip above the footer */
.cta-block, main > .block.cta-block { padding: 0; }
.cta-banner { background: var(--tint); border-radius: 0; text-align: left; padding: clamp(3.5rem, 8vw, 5.5rem) 0; }
.cta-content {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.75rem;
  max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter);
}
.cta-banner h2 { margin: 0; max-width: none; color: var(--ink); font-size: 1.5rem; font-weight: 600; }
/* quiet paints .cta-banner p white — invisible on the tint if a subtitle ever appears */
.cta-banner p { color: var(--muted); margin: 0; }
.cta-banner .btn { margin-top: 0; }

/* ---- footer: the exit wall is the comps' navy, not near-black ------------ */
/* a lighter wall than the default deep navy, so the low-alpha whites need a nudge
   to stay AA (the stock .45/.5 alphas measure ~3.9:1 / ~4.4:1 on #16324F) */
.site-footer { background: var(--primary); }
.footer-label { color: rgba(255,255,255,.55); }
.footer-bottom { color: rgba(255,255,255,.62); }
.footer-bottom a { color: rgba(255,255,255,.72); }

/* ---- small screens ------------------------------------------------------- */
/* the scrim deepens so white type stays readable when the photo crowds it */
@media (max-width: 47.9375rem) {
  .hero.hero--overlay::after { background: linear-gradient(90deg, rgba(22,50,79,.88), rgba(22,50,79,.52)); }
  .hero.hero--overlay .container { padding-top: clamp(3.5rem, 16vw, 5rem); padding-bottom: clamp(3rem, 14vw, 4.5rem); }
}

/* ---- header CTA: the button says the offer, like the comps ---------------- */
/* 2026-08: 라벨을 CSS ::after 로 갈아끼우던 방식은 화면에 보이는 이름과 스크린리더가
   읽는 이름을 갈라놓았다(보이는 것은 진단 CTA, 읽히는 것은 "문의"). C-1 은 방문자가
   같은 이름 하나만 만나게 하는 규칙이므로, 라벨을 링크 텍스트로 되돌린다. */

/* ---- footer: one calm navy wall — brand, links, legal — like the comps ---- */
.footer-grid { display: flex; flex-direction: column; gap: 1.5rem; }
.footer-label, .footer-cta, .footer-brand .brand-mark { display: none; }
.footer-nav { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; }
.footer-grid > div:first-child { display: flex; flex-direction: column; gap: .375rem; }
.footer-grid > div:first-child p { margin: 0; }

/* ==========================================================================
   2026-08 홈 개편 — data/WI-홈페이지-개편-지시서-2026-08.md
   증거는 숫자·뱃지·화면으로. 읽을 것은 줄이고, 볼 것은 늘린다.
   ========================================================================== */

/* ---- C-1 · CTA 명칭 1종 --------------------------------------------------- */
/* 헤더 CTA 는 이제 링크 텍스트가 곧 라벨이다 — 좁은 데스크톱에서 줄바꿈만 막는다 */
.nav-cta { white-space: nowrap; }

/* ---- C-5 · 헤더 전화번호 -------------------------------------------------- */
/* 위 커스텀 블록이 .header-cta 를 숨겨 두었다 — 50~60대 한인 고객은 폼보다 전화를
   먼저 찾는다. 다시 켜되 액션 버튼(.nav-cta)과 경쟁하지 않도록 조용한 아웃라인으로.
   모바일에서는 번호를 떨어뜨리고 아이콘만 남긴다(C-5). */
.header-cta {
  display: inline-flex; background: none; color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--radius);
  padding: .55rem .85rem; font-weight: 600; min-width: 2.75rem; justify-content: center;
}
.header-cta:hover { border-color: var(--accent); color: var(--accent-text); }
.header-cta__short { display: none; }
/* 전화 아이콘이 들어오면서 360px 헤더가 좁아졌다 — "Menu" 가 두 줄로 깨지지 않게. */
.pw-nav > summary { white-space: nowrap; }
@media (max-width: 24rem) {
  .site-header .container { gap: .5rem; }
  .brand img { max-height: 3.25rem; }
}

/* ---- C-7 · CTA 마찰 제거 문구 --------------------------------------------- */
.cta-note { margin: .75rem 0 0; font-size: 1rem; line-height: 1.5; color: var(--muted); }

/* ---- ScanInput · URL 1필드 + 버튼 ----------------------------------------- */
/* 버튼은 결심을 요구하고, 입력창은 손가락만 요구한다. 히어로 / 스코어 / 최종 CTA
   3곳에서 같은 컴포넌트를 재사용한다. */
.scan-form { display: flex; flex-wrap: wrap; gap: .625rem; margin: 2.25rem 0 0; max-width: 34rem; }
.scan-form input {
  flex: 1 1 14rem; min-width: 0; font: inherit; font-size: 1rem;
  padding: .875rem 1rem; min-height: 3rem;
  border: 1px solid var(--line); border-radius: var(--radius);
  background: var(--paper); color: var(--ink);
}
.scan-form input::placeholder { color: var(--muted); opacity: 1; }
.scan-form input:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--accent) 45%, transparent); outline-offset: 2px;
  border-color: var(--accent);
}
.scan-form .btn { flex: 0 0 auto; min-height: 3rem; padding-block: .75rem; }
.scan-form .scan-error { flex: 1 0 100%; margin: 0; font-size: 1rem; font-weight: 600; color: var(--accent-text); }
/* 어두운 바탕(히어로 스크림 · 다크 밴드) 위에서는 입력창이 종이처럼 서야 보인다 */
.hero .scan-form input, .sec--dark .scan-form input { border-color: rgba(255,255,255,.55); }
.hero .cta-note, .sec--dark .cta-note { color: rgba(255,255,255,.86); }
.hero .scan-form .scan-error, .sec--dark .scan-form .scan-error { color: #FFD3C7; }

/* ---- 히어로: 입력창 + 전화 텍스트 링크 ------------------------------------ */
/* 버튼 2개를 나란히 두지 않는다 — secondary 는 텍스트 링크로 강등(원칙 3) */
.hero .cta-note { margin-top: .875rem; }
.hero-call { margin: 1.75rem 0 0; }
.hero-call a {
  color: #fff; font-weight: 600; text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,.45); padding-bottom: 2px;
}
.hero-call a:hover { border-bottom-color: #fff; }

/* ---- TrustStrip · 1줄 신뢰 스트립 ----------------------------------------- */
/* 아이콘 없음, 높이 1줄, 360px 에서는 가로 스크롤 대신 2줄 랩 */
.trust-strip { border-bottom: 1px solid var(--line); }
.trust-strip p { margin: 0; font-size: 1rem; line-height: 1.7; color: var(--muted); text-wrap: pretty; }

/* ---- PAIN --------------------------------------------------------------- */
.pain-qs { margin: 1.75rem 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: .5rem; max-width: 44rem; }
.pain-qs li { position: relative; padding-left: 1.15rem; font-size: 1.125rem; line-height: 1.7; }
.pain-qs li::before { content: ""; position: absolute; left: 0; top: .8em; width: 6px; height: 6px; border-radius: 999px; background: var(--accent); }
.pain-lede { margin: 1.5rem 0 0; max-width: 44rem; color: var(--muted); }
.pain-sub { margin: 2rem 0 0; font-size: 1.125rem; font-weight: 600; }

/* 섹션 안에 놓는 단일 CTA — 별도 섹션을 만들지 않고 섹션 수를 지킨다 */
.sec-cta { margin: 2.5rem 0 0; }
.sec-cta .cta-note { margin-top: .75rem; }

/* 카드가 밴드와 같은 색이면 카드가 사라진다 — tint 밴드 위 카드는 종이로 */
.pain-block .card, .pricing-block .card { background: var(--paper); border: 1px solid var(--line); }
.pain-block .grid, .outcome-block .grid, .solution-block .grid, .pricing-block .grid { margin-top: 2.5rem; }

/* ---- PROOF · 0 → 70 ------------------------------------------------------ */
.proof-grid { display: grid; gap: 2.25rem; grid-template-columns: 1fr; align-items: center; }
.proof-num { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; margin: 0;
  font-family: var(--font-display); font-weight: 600; letter-spacing: -.02em; line-height: 1; }
.proof-from { font-size: clamp(1.625rem, 4.5vw, 2.25rem); color: var(--muted); }
.proof-arrow { font-size: clamp(1.375rem, 3.5vw, 1.875rem); color: var(--muted); }
.proof-to { font-size: clamp(3.5rem, 11vw, 5.5rem); color: var(--accent); }
.proof-who { margin: 1.125rem 0 0; font-weight: 600; }
.proof-src { margin: .25rem 0 0; font-size: 1rem; color: var(--muted); }
.proof-line { margin: 1.25rem 0 0; font-size: 1.125rem; }
.proof-shot img { border-radius: var(--radius); }
.proof-shot figcaption { margin-top: .625rem; font-size: 1rem; color: var(--muted); }
.proof-block .gallery { margin-top: 3rem; }

.link-arrow { display: inline-block; margin: 1.25rem 0 0; font-weight: 600; color: var(--accent-text);
  text-decoration: none; padding-bottom: 2px; border-bottom: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); }
.link-arrow:hover { border-bottom-color: var(--accent); }

/* ---- SCORE · 홈에서 유일한 다크 밴드 -------------------------------------- */
/* 흰색/연한 파랑이 끝까지 이어지면 중반부터 리듬이 평평해진다. 다크 섹션은 1개만. */
.scoreboard { margin: 1.75rem 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: .75rem 2.25rem; }
.scoreboard li { font-size: 1.125rem; font-weight: 600; }
.scoreboard li::before { content: ""; display: inline-block; width: 22px; height: 2px; background: var(--accent); vertical-align: middle; margin-right: .625rem; }

/* ---- SOLUTION ----------------------------------------------------------- */
.solution-close { margin: 2.5rem 0 0; font-size: 1.125rem; max-width: 48rem; }

/* ---- PRICING ------------------------------------------------------------ */
.card .card-badge {
  display: inline-block; margin: 0 0 .875rem; padding: .25rem .7rem; border-radius: 999px;
  background: var(--accent); color: #fff; font-size: 1rem; font-weight: 600; line-height: 1.5;
}
/* 그림자 대신 테두리 — 가이드라인 §4/§6. 인기 카드는 액센트 테두리와 뱃지로 구분한다 */
.card.is-popular { border-color: var(--accent); }
.card .price--text { font-size: 1.75rem; }
.card .price .price-per { font-size: 1.125rem; font-weight: 600; color: var(--muted); }
.pricing-own { margin: 2.25rem 0 0; color: var(--muted); }

/* ---- FAQ ---------------------------------------------------------------- */
.faq-list { max-width: 52rem; }

/* ---- 최종 CTA ----------------------------------------------------------- */
/* .cta-content 는 flex row — 왼쪽 문구, 오른쪽 입력창.
   .cta-banner p (0,1,1) 가 .cta-note (0,1,0) 의 margin 을 이기므로 여기서 되돌린다. */
.cta-banner .cta-note { margin-top: .75rem; }
.final-cta__copy { flex: 1 1 20rem; }
.final-cta__copy p { margin: .625rem 0 0; max-width: 34ch; }
.final-cta__act { flex: 1 1 22rem; }
.final-cta__act .scan-form { margin: 0; }
.final-cta__act .hero-call { margin-top: 1rem; }
.final-cta__act .hero-call a { color: var(--ink); border-bottom-color: color-mix(in srgb, var(--ink) 30%, transparent); }
.final-cta__act .hero-call a:hover { border-bottom-color: var(--accent); }

/* ---- C-8 · 모바일 Sticky CTA -------------------------------------------- */
/* 히어로 통과 후 등장, 최종 CTA 구간에서 숨김 (JS 가 .is-hidden 을 토글) */
.pw-bottombar[data-sticky-cta] {
  grid-auto-flow: row; grid-template-columns: 1fr auto; gap: .5rem;
  padding: .5rem .75rem calc(.625rem + env(safe-area-inset-bottom));
}
.sticky-cta__btn {
  display: flex; align-items: center; justify-content: center; text-align: center;
  min-height: 3rem; padding: .5rem 1rem; border-radius: var(--radius);
  background: var(--accent); color: #fff; font-size: 1rem; font-weight: 600;
  text-decoration: none; line-height: 1.25;
}
.sticky-cta__btn:hover { color: #fff; }
.pw-bottombar__item.sticky-cta__call {
  flex-direction: row; min-width: 3rem; min-height: 3rem; padding: .5rem .875rem;
  border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink);
}
/* 위 §reduced-motion 블록이 .pw-bottombar.is-hidden 의 숨김을 되돌린다 — 그 규칙은
   "스크롤 방향에 따라 깜빡이는 바"를 위한 것이다. 이 바는 상태가 애니메이션이 아니라
   위치이므로, 모션 없이 그대로 숨는다. */
@media (prefers-reduced-motion: reduce) {
  .pw-bottombar[data-sticky-cta].is-hidden { transform: translateY(110%); visibility: hidden; }
}

/* ---- 데스크톱 ----------------------------------------------------------- */
@media (min-width: 48rem) {
  .proof-grid { grid-template-columns: 1.05fr .95fr; gap: 3.5rem; }
}

/* ==========================================================================
   브랜드 가이드라인 정합 — data/design-guideline/DESIGN.md · tokens.css
   로고는 "차가운 몸통 + 뜨거운 끝". 그래서 UI 액센트는 블루 하나뿐이고,
   빨강·주황은 마크와 오류 신호에만 쓴다. 따뜻함이 허락된 곳은 리본 룰 1개다.
   ========================================================================== */

/* 새 토큰은 여기서도 정의한다 — 인라인 <style> 이 없는 404.html 까지 커버 */
:root {
  --accent-bright:  #00BBF2;  /* blue-400 · 어두운 면 위 그래픽 전용, 흰 배경 텍스트 금지 */
  --accent-on-dark: #8FD8F5;  /* blue-200 · 네이비 위 텍스트 9.46:1 */
  --focus:          #003A5C;  /* blue-800 */
  --ribbon: linear-gradient(90deg,#002A41 0%,#0079B0 34%,#00BBF2 58%,#F68422 88%,#C21B17 100%);
}

/* ---- 시그니처: 리본 룰 (§6) ---------------------------------------------
   페이지당 정확히 1개. 헤더 바로 아래 또는 푸터 상단 중 한 곳 — 헤더를 택했다.
   가이드라인상 주황·빨강이 등장할 수 있는 유일한 자리다. */
.site-header { border-bottom: 0; }
.site-header::after { content: ""; display: block; height: 3px; background: var(--ribbon); }

/* ---- 어두운 면 위의 액센트 (§2) -----------------------------------------
   #0079B0 은 네이비 위에서 가라앉는다. 가이드라인이 어두운 면에 배정한 색은
   그래픽 blue-400, 텍스트 blue-200 이다. */
.hero.hero--overlay :is(h1, h2)::before,
.block.sec--dark .sec-head::before,
.scoreboard li::before { background: var(--accent-bright); }
.block.sec--dark :is(.sec-eyebrow, .sec-index, .price, .form-status) { color: var(--accent-on-dark); }
.hero.hero--overlay .btn--ghost:hover { color: var(--accent-on-dark); }
.site-footer a:hover { text-decoration-color: var(--accent-on-dark); }

/* ---- 밝은 면 위의 액센트 텍스트 ------------------------------------------
   #0079B0 은 채움색(흰 라벨 4.81:1)이고, 텍스트는 #005A8C(7.39:1)가 맡는다. */
.card .price,
.wi-stat .container > h3,
.wi-steps .card h3::before { color: var(--accent-text); }

/* ---- 포커스 링 (§4) ------------------------------------------------------
   2px blue-800, 2px 오프셋. 어두운 면에서는 링도 blue-200 으로 올린다. */
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
.scan-form input:focus-visible,
.contact-form :is(input, textarea):focus-visible,
.form-q :is(input, select, textarea):focus-visible {
  outline: 2px solid var(--focus); outline-offset: 2px; border-color: var(--accent);
}
:is(.hero, .sec--dark, .site-footer, .pw-bottombar) :focus-visible { outline-color: var(--accent-on-dark); }

/* ---- 굵기 상한 600 (§3) --------------------------------------------------
   브라우저 기본 <strong>/<b> 는 700 이라 여기서 눌러 준다. 600 보다 강조가
   필요하면 굵기가 아니라 여백으로 해결한다는 것이 이 시스템의 규칙이다. */
strong, b, th { font-weight: 600; }

/* ---- 고객 GA4 집계 (포트폴리오) -----------------------------------------
   숫자는 크게, 출처는 바로 아래에. 출처 없는 통계는 이 브랜드에서 쓰지 않는다. */
.metric-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin: 2.5rem 0 0; }
.metric-grid > div { border-top: 1px solid var(--line); padding-top: 1.25rem; }
.metric-grid dt { font-size: 1rem; line-height: 1.5; color: var(--muted); }
.metric-grid dd {
  margin: .5rem 0 0; font-family: var(--font-display); font-weight: 600;
  font-size: clamp(2.25rem, 6vw, 3.25rem); line-height: 1; letter-spacing: -.02em;
  color: var(--accent-text);
}
.metric-src { margin: 2.25rem 0 0; font-size: 1rem; line-height: 1.7; color: var(--muted); max-width: 62ch; }
/* 갤러리 캡션에 붙는 한 줄 — 사진이 먼저, 숫자가 그 다음 */
.gallery .metric-note { display: block; margin-top: .25rem; font-size: 1rem; font-weight: 600; color: var(--accent-text); }
@media (min-width: 48rem) {
  .metric-grid { grid-template-columns: repeat(3, 1fr); gap: 2.5rem; }
}

/* ==========================================================================
   v2 시안 적용 — "Korean Desktop and Mobile Audit/Website Innovator KR v2.dc.html"
   히어로는 손대지 않는다. 그 아래 전 구간과 나머지 페이지를 이 시안의
   밴드 · 카드 · 타이포 · 여백으로 맞춘다.
   ========================================================================== */

:root {
  /* 시안의 잠긴 뉴트럴 (가이드라인 tokens.css 와 동일) */
  --ink:          #231F20;
  --ink-2:        #4B4749;
  --muted:        #6E6A6C;
  --line:         #E2E0E1;
  --line-strong:  #C9C6C7;
  --surface:      #FFFFFF;
  --paper:        #FFFFFF;
  --tint:         #F5F8FA;
  --shell:        #EDF2F5;   /* 스크린샷 프레임의 툴바 */
  --wash:         #EAF6FC;   /* 콜아웃 · 아이콘 칩 · 최종 CTA 밴드 */
  --primary-deep: #002A41;

  /* 시안의 리듬 */
  --container:  72rem;                    /* 1152px */
  --gutter:     clamp(1rem, 2vw, 1.5rem); /* 16–24px */
  --section-y:  clamp(3rem, 7vw, 6rem);   /* 48–96px */
  --radius:     12px;
  --radius-img: 12px;
  --radius-sm:  8px;
}

body { font-size: 1.0625rem; line-height: 1.65; background: var(--surface); color: var(--ink); }

/* ---- 헤더: 흰 바탕 + 리본 룰이 경계선을 대신한다 ------------------------- */
.site-header { background: var(--surface); border-bottom: 0; }
.site-header::after {
  max-width: calc(var(--container) - 2 * var(--gutter));
  margin: 0 auto; border-radius: 2px;
}
.site-nav--desktop { gap: clamp(14px, 2vw, 30px); }
.site-header .container { gap: .75rem clamp(16px, 2.2vw, 24px); }
.site-nav--desktop a {
  font-size: 1rem; font-weight: 500; letter-spacing: .04em; color: var(--ink-2);
  background: none; padding: 0 0 4px; border-bottom: 2px solid transparent; border-radius: 0;
}
.site-nav--desktop a:hover { color: var(--accent-text); border-bottom-color: var(--line-strong); }
.site-nav--desktop a[aria-current="page"] { color: var(--ink); border-bottom-color: var(--accent); }
.nav-cta { font-size: 1rem; font-weight: 600; padding: 12px 18px; min-height: 44px; border-radius: var(--radius-sm); }
.header-cta { font-size: 1rem; font-weight: 500; color: var(--ink-2); border-radius: var(--radius-sm); }

/* ---- 섹션 밴드: 흰색과 #F5F8FA 를 번갈아 쌓는다 -------------------------- */
.block { background: var(--surface); }
.block.sec--tint { background: var(--tint); }
.block.sec--dark { background: var(--primary-deep); }

/* 섹션 머리: 32×3 룰이 제목 위에 흐름대로 놓인다 (절대배치 아님) */
.sec-head { position: static; padding-top: 0; margin: 0 0 clamp(1.75rem, 3.2vw, 2.5rem); }
.sec-head::before {
  position: static; display: block; width: 32px; height: 3px;
  border-radius: 2px; margin: 0 0 16px;
}
.sec-head h2, .markdown-block .container > h2 {
  font-size: clamp(1.625rem, 3vw, 2.25rem); font-weight: 600;
  line-height: 1.25; letter-spacing: -.015em; max-width: 18em; text-wrap: pretty;
}
/* 마크다운 섹션의 제목도 sec-head 와 같은 규칙을 따른다 — 위 base 에서 이 룰이
   absolute/top:0 이라, padding-top 을 0 으로 만든 순간 제목 글자 위에 겹쳐 그려졌다. */
.markdown-block .container > h2 { position: static; padding-top: 0; margin: 0 0 clamp(1.75rem, 3.2vw, 2.5rem); }
.markdown-block .container > h2::before {
  position: static; display: block; width: 32px; height: 3px;
  border-radius: 2px; margin: 0 0 16px;
}

/* ---- 마크다운 본문 리듬 (8px 배수로 통일) -------------------------------- */
.markdown-block .container > * + * { margin-top: 1rem; }
.markdown-block .container > :is(h2, h3) + * { margin-top: 0; }
.markdown-block .container > h3 { margin: 2rem 0 .5rem; font-size: 1.25rem; font-weight: 600; line-height: 1.35; }
.markdown-block .container > p { line-height: 1.65; max-width: 44em; }
.markdown-block ul, .markdown-block ol { margin: 1rem 0 0; padding-left: 1.25rem; max-width: 44em; }
.markdown-block li { margin-top: .5rem; line-height: 1.65; }
.markdown-block li:first-child { margin-top: 0; }
/* 인용은 홈의 콜아웃과 같은 형태로 — 같은 뜻은 같은 모양이어야 한다 */
.markdown-block blockquote {
  margin: 1.5rem 0 0; padding: 16px 20px; max-width: 44em;
  background: var(--wash); border-left: 3px solid var(--accent); border-radius: 0 8px 8px 0;
}
.markdown-block blockquote p { margin: 0; }
.markdown-block table { margin-top: 1.5rem; }

/* ---- 리드 섹션(문의 페이지)의 폼 ---------------------------------------- */
.scan-lead { max-width: 34rem; }
.scan-lead label { display: block; font-weight: 600; margin-bottom: 1rem; }
.scan-lead input { border-color: var(--line-strong); border-radius: var(--radius-sm); min-height: 50px; padding: 13px 14px; }
.scan-lead .btn { margin-top: .5rem; }
.scan-lead .cta-note { margin-top: .75rem; }
.scan-lead .form-status { margin: 1rem 0 0; }

/* ---- 지도 ---------------------------------------------------------------- */
.pw-map-frame { width: 100%; aspect-ratio: 16 / 10; height: auto; border: 1px solid var(--line); border-radius: var(--radius); display: block; }
.map-caption { margin: 0 0 1.5rem; color: var(--muted); }
.pw-map-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.5rem 0 0; }

/* ---- 카드: 밴드와 반대색 + 하이라인 테두리 ------------------------------- */
.card {
  background: var(--tint); border: 1px solid var(--line); border-radius: var(--radius);
  padding: clamp(1.25rem, 2.2vw, 1.75rem); box-shadow: none;
}
.sec--tint .card { background: var(--paper); }
.card > :first-child { margin-top: 0; }
.card h3 { font-size: 1.25rem; font-weight: 600; line-height: 1.35; margin: 1rem 0 0; letter-spacing: 0; }
.card p { font-size: 1.0625rem; line-height: 1.65; color: var(--ink-2); margin: .5rem 0 0; }
/* 아이콘은 40px 칩 안의 22px 라인 드로잉 — 카드마다 서로 다른 아이콘일 때만 쓴다 */
.card-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; margin: 0; background: var(--wash);
  border-radius: var(--radius-sm); color: var(--accent);
}
.card-icon svg { width: 22px; height: 22px; stroke-width: 1.8; }

/* ---- PAIN: 질문 목록과 콜아웃 -------------------------------------------- */
.pain-qs { gap: .625rem; max-width: 44em; }
.pain-qs li { padding-left: 1.125rem; font-size: 1.0625rem; line-height: 1.65; }
.pain-qs li::before { top: .78em; width: 6px; height: 6px; }
.pain-lede { font-size: 1.0625rem; line-height: 1.65; color: var(--muted); max-width: 44em; }
.pain-sub {
  background: var(--wash); border-left: 3px solid var(--accent); border-radius: 0 8px 8px 0;
  padding: 16px 20px; margin-top: clamp(1.75rem, 3.2vw, 2.5rem); max-width: 44em;
  font-size: 1.0625rem; font-weight: 400; line-height: 1.65; color: var(--ink);
}

/* ---- 신뢰 스트립: 흰 밴드 + 청록 사각 불릿 ------------------------------- */
.trust-strip { background: var(--surface); border-bottom: 1px solid var(--line); }
.trust-strip .container { display: flex; flex-wrap: wrap; gap: 12px clamp(1.25rem, 2.6vw, 2.25rem); }
.trust-strip span {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: 1rem; font-weight: 500; color: var(--ink-2);
}
.trust-strip span::before {
  content: ""; flex: 0 0 auto; width: 7px; height: 7px;
  border-radius: 2px; background: var(--accent-bright);
}

/* ---- PROOF: 큰 숫자와 브라우저 프레임 ------------------------------------ */
.proof-from { font-size: clamp(1.25rem, 2.2vw, 1.625rem); font-weight: 500; color: var(--muted); }
.proof-arrow { font-size: clamp(1.25rem, 2.2vw, 1.625rem); color: var(--line-strong); }
.proof-to { font-size: clamp(3.25rem, 6.4vw, 5.25rem); font-weight: 600; letter-spacing: -.025em; color: var(--accent-text); }
.proof-who { font-size: clamp(1.0625rem, 1.8vw, 1.25rem); font-weight: 600; margin-top: 1.5rem; }
.proof-src { font-size: 1rem; color: var(--muted); margin-top: .375rem; }
.proof-line { font-size: 1.0625rem; line-height: 1.65; color: var(--ink-2); margin-top: 1rem; }

/* 스크린샷은 창틀 안에 놓는다 — 웹사이트라는 것이 한눈에 읽히도록 */
/* 창틀은 "웹사이트 화면"에만 붙인다 — 팀 인물 사진(.gallery--square)에 브라우저
   툴바가 얹히면 그건 그냥 오류로 읽힌다 */
.shot, .gallery--landscape figure > a {
  display: block; border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; background: var(--paper);
}
.shot::before, .gallery--landscape figure > a::before {
  content: ""; display: block; height: 28px; border-bottom: 1px solid var(--line);
  background:
    radial-gradient(circle 3.5px at 14px 50%, var(--line-strong) 99%, transparent 0),
    radial-gradient(circle 3.5px at 28px 50%, var(--line-strong) 99%, transparent 0),
    radial-gradient(circle 3.5px at 42px 50%, var(--line-strong) 99%, transparent 0),
    var(--shell);
}
.shot img, .gallery--landscape figure > a img { border-radius: 0; }
.gallery--square figure > a { display: block; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.gallery figcaption { margin-top: 10px; font-size: 1rem; font-weight: 400; line-height: 1.5; color: var(--muted); }
.gallery .metric-note { margin-top: 4px; font-size: 1rem; font-weight: 500; color: var(--accent-text); }
.proof-shot figcaption { margin-top: 10px; font-size: 1rem; color: var(--muted); }

/* ---- SCORE (다크 밴드): 지표는 알약 칩으로 ------------------------------- */
.block.sec--dark .sec-head h2 { color: #fff; }
.scoreboard { gap: 8px; margin-top: 1.5rem; }
.scoreboard li {
  background: #003A5C; color: var(--accent-on-dark); border-radius: 999px;
  font-size: 1rem; font-weight: 500; padding: 6px 14px;
}
.scoreboard li::before { display: none; }
.block.sec--dark .cta-note { color: rgba(255,255,255,.72); }
.sec--dark .scan-form .btn:hover { background: #0092CC; }

/* ---- SOLUTION ----------------------------------------------------------- */
.solution-close { font-size: 1.0625rem; line-height: 1.65; color: var(--muted); margin-top: 1.5rem; max-width: 44em; }

/* ---- PRICING: 플랜 이름은 아이브로우, 금액이 주인공 ---------------------- */
.plan-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pricing-block .card { padding: clamp(1.5rem, 2.6vw, 2rem); }
.pricing-block .card h3 {
  font-size: 1rem; font-weight: 500; letter-spacing: .08em;
  text-transform: uppercase; color: var(--muted); margin: 0;
}
.pricing-block .card .price {
  font-size: clamp(2.25rem, 3.8vw, 2.75rem); font-weight: 600; letter-spacing: -.02em;
  line-height: 1; color: var(--ink); margin: 14px 0 0;
}
.pricing-block .card.is-popular .price { color: var(--accent-text); }
.pricing-block .card .price .price-per { font-size: 1.0625rem; font-weight: 400; color: var(--muted); }
.pricing-block .card .price--text { font-size: clamp(1.75rem, 3vw, 2.25rem); letter-spacing: -.015em; line-height: 1.15; }
.pricing-block .card p:not(.price):not(.card-badge) { margin-top: 1rem; }
.card.is-popular { border-color: var(--accent); border-top: 3px solid var(--accent); }
.card .card-badge {
  margin: 0; padding: 4px 10px; background: var(--wash); color: var(--accent-text);
  font-size: 1rem; font-weight: 500; line-height: 1.5;
}
.pricing-own { font-size: 1.0625rem; line-height: 1.65; color: var(--muted); margin-top: 1.5rem; }

/* ---- FAQ ---------------------------------------------------------------- */
.faq-list { gap: 8px; max-width: 50rem; }
.faq-list details { background: var(--tint); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
.faq-list summary { padding: 18px 20px; min-height: 56px; font-size: 1.0625rem; font-weight: 500; gap: 16px; }
.faq-list details p { margin: 0; padding: 0 20px 20px; font-size: 1.0625rem; line-height: 1.65; color: var(--ink-2); max-width: none; }
.faq-chip { width: auto; height: auto; background: none; color: var(--accent-text); }
.faq-chip svg { width: 18px; height: 18px; }

/* ---- 링크 화살표 -------------------------------------------------------- */
.link-arrow {
  font-size: 1.0625rem; font-weight: 500; color: var(--accent-text);
  border-bottom: 0; text-decoration: underline; text-underline-offset: .12em; padding-bottom: 0;
}
.link-arrow:hover { color: #003A5C; }

/* ---- 최종 CTA: 연한 하늘색 밴드, 왼쪽 문구 · 오른쪽 입력 ----------------- */
.cta-banner { background: var(--wash); border-radius: 0; padding: var(--section-y) 0; }
.cta-content {
  display: grid; grid-template-columns: 1fr; gap: clamp(1.5rem, 3vw, 3rem);
  align-items: start; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter);
}
.cta-banner h2 {
  font-size: clamp(1.625rem, 3.2vw, 2.375rem); font-weight: 600; line-height: 1.25;
  letter-spacing: -.015em; color: var(--ink); max-width: 16em; text-wrap: pretty;
}
.final-cta__copy p { font-size: 1.0625rem; line-height: 1.65; color: var(--ink-2); max-width: 30em; margin-top: 1rem; }
.final-cta__act .hero-call { margin-top: 1rem; font-size: 1.0625rem; font-weight: 500; color: var(--ink); }

/* ---- 버튼 · 입력 -------------------------------------------------------- */
.btn { font-size: 1.0625rem; font-weight: 600; padding: 14px 24px; min-height: 50px; border-radius: var(--radius-sm); }
.btn:hover { background: var(--accent-text); filter: none; transform: none; }
.scan-form input {
  padding: 13px 14px; min-height: 50px; font-size: 1.0625rem; line-height: 1.4;
  border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
}
.scan-form .btn { min-height: 50px; }
.cta-note { font-size: 1rem; color: var(--muted); }

/* ---- 모바일 하단 바 ----------------------------------------------------- */
.pw-bottombar { background: rgba(255,255,255,.95); border-top: 1px solid var(--line); }
.sticky-cta__btn { font-size: 1rem; min-height: 48px; border-radius: var(--radius-sm); }
.pw-bottombar__item.sticky-cta__call { border-color: var(--line-strong); border-radius: var(--radius-sm); min-height: 48px; }

/* ---- 푸터: 브랜드 네이비 + 녹아웃 로고 ---------------------------------- */
/* 가이드라인 §1a — #6E6A6C 보다 어두운 면에는 반드시 녹아웃 변형을 쓴다 */
.site-footer { background: var(--primary-deep); color: rgba(255,255,255,.72); font-size: 1rem; }
.footer-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: clamp(1.75rem, 3.4vw, 3.5rem);
}
/* 세 번째 칸(Visit)은 라벨과 링크가 모두 숨겨져 빈 칸으로 남는다 — 격자에서 뺀다 */
.footer-grid > div:nth-child(3) { display: none; }
.footer-brand { gap: 0; margin-bottom: 1.25rem; }
.footer-brand img { width: 164px; max-width: 100%; height: auto; }
.footer-slogan, .site-footer p { font-size: 1rem; line-height: 1.7; }
.footer-nav { flex-direction: column; gap: 12px; }
.footer-nav a { font-size: 1rem; text-decoration: none; color: rgba(255,255,255,.82); }
.footer-nav a:hover { color: #fff; text-decoration: underline; }
.footer-bottom { margin-top: clamp(2rem, 4vw, 3.5rem); padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.16); font-size: 1rem; }
/* 소셜 — 네이비 위 blue-200, 호버는 흰색. 44px 은 가이드라인 §8 의 터치 타깃 하한 */
.footer-social { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.25rem 0 0; }
.footer-social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; padding: 0; text-decoration: none;
  border: 1px solid rgba(255,255,255,.22); border-radius: var(--radius-sm);
  color: var(--accent-on-dark); transition: color .15s, border-color .15s;
}
.footer-social a:hover { color: #fff; border-color: var(--accent-on-dark); }
.footer-social svg { width: 20px; height: 20px; display: block; }

/* ---- 데스크톱 배치 ------------------------------------------------------ */
@media (min-width: 48rem) {
  .cta-content { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
  .grid { gap: 1rem; }
  .sec--cols-2 :is(.grid, .gallery), .sec--cols-3 :is(.grid, .gallery), .sec--cols-4 :is(.grid, .gallery) { gap: 1rem; }
}
