/* GENERATED by scripts/build-css.js — 직접 고치지 마세요. 원본은 같은 폴더의 개별 파일입니다.
   build: 2026-09-08 · sources: inquiry-widget.css, login-modal.css, search-overlay.css, map-links.css, footer.css, reveal.css, typography.css, mobile.css, mobile-overlays.css, mobile-pages.css, header-utils.css */

/* ===== inquiry-widget.css ===== */
/* ===== 플로팅 상담 버튼 (전 페이지 공통) =====
   body 끝에 직접 붙는다 — x-dc 가 다시 그리는 서브트리 밖이라 재렌더에 영향받지 않는다.
   2026-09: 토글 없이 카카오톡 상담 · 전화 문의 · 견적 문의 3개가 항상 펼쳐져 보인다. */

.iw-root{
  position:fixed;right:24px;bottom:24px;z-index:9999;
  display:flex;flex-direction:column;align-items:flex-end;gap:12px;
  font-family:'Manrope',system-ui,sans-serif;
}

/* ── 항목 (항상 표시) ─────────────────────────────────── */
.iw-item{
  display:flex;align-items:center;gap:12px;
  text-decoration:none;background:none;border:none;padding:0;cursor:pointer;
}
.iw-item:focus-visible{outline:2px solid #BF8E5A;outline-offset:3px;border-radius:8px}

/* 왼쪽 흰색 라벨 말풍선 */
.iw-label{
  background:#fff;color:#1B2A4A;
  font:600 13px/1 'Manrope',system-ui,sans-serif;white-space:nowrap;
  padding:9px 14px;border-radius:8px;
  box-shadow:0 2px 12px rgba(0,0,0,.12);
}

.iw-btn{
  width:46px;height:46px;border-radius:50%;flex-shrink:0;
  display:grid;place-items:center;
  box-shadow:0 3px 14px rgba(0,0,0,.16);
  transition:transform .2s ease;
}
.iw-item:hover .iw-btn{transform:scale(1.08)}
.iw-btn svg{width:22px;height:22px;display:block}

.iw-btn--kakao{background:#FEE500;color:#000}
.iw-btn--tel{background:#fff;color:#1B2A4A}
.iw-btn--quote{background:#BF8E5A;color:#fff}

/* ── 모바일 하단 고정 CTA 바 (inquiry-widget.js 가 body 에 주입) ──
   ≤768 에서 플로팅 위젯을 대신한다. 층위: 메뉴 오버레이(9500) 아래,
   본문·헤더(30) 위. 검색(10001)·로그인(10000)보다도 아래라 모달을
   가리지 않는다. */
.es-ctabar{
  position:fixed;left:0;right:0;bottom:0;z-index:9000;
  display:none;grid-template-columns:1fr 1fr;
  font-family:'Manrope',system-ui,sans-serif;
  box-shadow:0 -10px 34px rgba(10,15,25,.16);
}
.es-ctabar a{
  display:flex;align-items:center;justify-content:center;gap:9px;
  min-height:58px;
  padding-bottom:env(safe-area-inset-bottom,0px);
  font:600 14px 'Manrope',system-ui,sans-serif;letter-spacing:.06em;
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.es-ctabar svg{width:17px;height:17px;flex-shrink:0}
.es-ctabar-tel{background:#0e2440;color:#f6f2ea}
.es-ctabar-kakao{background:#c9a24b;color:#12233c}
.es-ctabar a:active{filter:brightness(1.12)}

@media (max-width:768px){
  /* 플로팅 위젯 → 하단 CTA 바로 교대 */
  .iw-root{display:none}
  .es-ctabar{display:grid}
}

@media (prefers-reduced-motion:reduce){
  .iw-btn{transition:none}
  .iw-item:hover .iw-btn{transform:none}
}

/* ===== login-modal.css ===== */
/* ===== LOGIN MODAL (common across all pages) =====
   Mirrors the inquiry-widget approach: the markup is appended straight to
   <body>, outside the x-dc-managed subtree, so an async re-render never
   wipes it. Palette follows the site system — cream #fbfaf8, navy #0e2440,
   gold #bf8e5a, Noto Serif KR for the Korean title. */

/* ===== 헤더 로그인 상태 (person 아이콘 자리) =====
   .nav-right 안, person 아이콘 바로 뒤에 삽입된다. 7개 페이지 헤더가 모두
   크림 배경 + #0e2440 텍스트라 한 벌로 충분하다. */
.lm-account{
  position:relative;display:flex;align-items:center;flex-shrink:0;
  font-family:'Manrope',system-ui,sans-serif;
}
.lm-account-btn{
  display:flex;align-items:center;gap:7px;height:34px;padding:0 11px 0 10px;
  border-radius:999px;border:1px solid rgba(14,36,64,.18);
  background:rgba(255,255,255,.35);color:#0e2440;cursor:pointer;
  font:600 12.5px/1 'Manrope',system-ui,sans-serif;transition:.25s;
}
.lm-account-btn:hover{background:#fff;border-color:rgba(191,142,90,.5)}
.lm-account-btn > svg{width:15px;height:15px;flex-shrink:0;opacity:.65}
.lm-account-name{max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-account-caret{width:11px;height:11px;opacity:.45;transition:transform .25s}
.lm-account.is-open .lm-account-caret{transform:rotate(180deg)}

.lm-account-menu{
  position:absolute;top:calc(100% + 10px);right:0;z-index:41;min-width:198px;
  padding:8px;border-radius:12px;
  background:rgba(251,250,250,.97);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(14,36,64,.08);
  box-shadow:0 26px 54px -22px rgba(14,36,64,.4);
  opacity:0;visibility:hidden;transform:translateY(6px);
  transition:opacity .25s ease,visibility .25s ease,transform .25s ease;
}
.lm-account.is-open .lm-account-menu{opacity:1;visibility:visible;transform:translateY(0)}
.lm-account-email{
  padding:7px 11px 10px;margin-bottom:6px;
  border-bottom:1px solid rgba(14,36,64,.08);
  font:400 11.5px/1.5 'Manrope',system-ui,sans-serif;
  color:rgba(14,36,64,.5);word-break:break-all;
}
.lm-account-logout{
  width:100%;display:flex;align-items:center;gap:9px;
  padding:10px 11px;border:none;border-radius:8px;background:none;cursor:pointer;
  font:600 12.5px/1 'Manrope',system-ui,sans-serif;color:#0e2440;
  text-align:left;transition:.22s;
}
.lm-account-logout:hover{background:rgba(201,162,75,.12);color:#a8763f}
.lm-account-logout svg{width:15px;height:15px;flex-shrink:0}

@media (max-width:480px){
  .lm-account-name{max-width:70px}
  .lm-account-btn{padding:0 9px 0 8px;font-size:12px}
}

.lm-overlay{
  position:fixed;inset:0;z-index:10000;
  display:flex;align-items:center;justify-content:center;padding:24px;
  background:rgba(14,36,64,.42);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .28s ease,visibility .28s ease;
  font-family:'Manrope',system-ui,sans-serif;
}
.lm-overlay.is-open{opacity:1;visibility:visible;pointer-events:auto}

.lm-card{
  position:relative;width:100%;max-width:404px;
  max-height:calc(100vh - 48px);overflow:hidden;
  border-radius:24px;
  border:1px solid rgba(14,36,64,.08);
  background:linear-gradient(180deg,#fbfaf8 0%,#fff 42%);
  box-shadow:0 46px 90px -30px rgba(14,36,64,.45),0 2px 10px rgba(14,36,64,.06);
  color:#0e2440;
  display:flex;flex-direction:column;
  transform:translateY(18px) scale(.97);
  transition:transform .3s cubic-bezier(.22,1,.36,1);
}
.lm-overlay.is-open .lm-card{transform:translateY(0) scale(1)}

/* Header stays put; only the form body scrolls, so the title and tabs remain
   reachable once the 회원가입 panel outgrows the viewport. */
.lm-head{
  flex-shrink:0;padding:38px 34px 0;
  display:flex;flex-direction:column;align-items:center;
}
.lm-body{
  flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  padding:0 34px 32px;
  display:flex;flex-direction:column;align-items:center;
  scrollbar-width:thin;scrollbar-color:rgba(14,36,64,.2) transparent;
}
.lm-body::-webkit-scrollbar{width:6px}
.lm-body::-webkit-scrollbar-track{background:transparent}
.lm-body::-webkit-scrollbar-thumb{background:rgba(14,36,64,.16);border-radius:3px}
.lm-body::-webkit-scrollbar-thumb:hover{background:rgba(14,36,64,.28)}

/* ---- close ---- */
.lm-close{
  position:absolute;top:16px;right:16px;
  width:32px;height:32px;border-radius:50%;
  display:grid;place-items:center;
  border:1px solid rgba(14,36,64,.1);background:rgba(255,255,255,.7);
  color:rgba(14,36,64,.5);cursor:pointer;padding:0;transition:.25s;
}
.lm-close:hover{background:rgba(14,36,64,.06);color:#0e2440}
.lm-close svg{width:15px;height:15px}

/* ---- header ---- */
.lm-badge{
  width:56px;height:56px;border-radius:18px;
  display:grid;place-items:center;margin-bottom:20px;
  background:#fff;border:1px solid rgba(191,142,90,.28);
  box-shadow:0 12px 26px -14px rgba(14,36,64,.4);
  color:#bf8e5a;
}
.lm-badge svg{width:26px;height:26px}

.lm-title{
  font:500 26px/1.3 'Noto Serif KR',serif;
  color:#0e2440;margin:0 0 8px;text-align:center;letter-spacing:-.01em;
}
.lm-sub{
  font:400 13px/1.7 'Manrope',system-ui,sans-serif;
  color:rgba(14,36,64,.5);margin:0 0 20px;text-align:center;
}

/* ---- tabs (로그인 / 회원가입) ---- */
.lm-tabs{
  width:100%;display:flex;gap:4px;margin-bottom:20px;
  padding:4px;border-radius:13px;background:rgba(14,36,64,.05);
}
.lm-tab{
  flex:1;padding:9px 8px;border:1px solid transparent;border-radius:10px;
  background:none;cursor:pointer;
  font:600 13px/1 'Manrope',system-ui,sans-serif;
  color:rgba(14,36,64,.48);transition:.25s;
}
.lm-tab:hover{color:#0e2440}
.lm-tab.is-active{
  background:#fff;color:#0e2440;
  border-color:rgba(191,142,90,.3);
  box-shadow:0 6px 14px -8px rgba(14,36,64,.45);
}

/* ---- panels ---- */
.lm-panel{width:100%;display:none;flex-direction:column;align-items:center}
.lm-panel.is-active{display:flex}

/* ---- fields ---- */
.lm-fields{width:100%;display:flex;flex-direction:column;gap:10px}
.lm-field{position:relative}
.lm-field-ic{
  position:absolute;left:13px;top:50%;transform:translateY(-50%);
  color:rgba(14,36,64,.34);display:grid;place-items:center;pointer-events:none;
}
.lm-field-ic svg{width:16px;height:16px}
.lm-input{
  width:100%;padding:12px 14px 12px 40px;
  border-radius:12px;border:1px solid rgba(14,36,64,.14);
  background:#fbfaf8;color:#0e2440;
  font:400 14px/1.4 'Manrope',system-ui,sans-serif;
  outline:none;transition:border-color .2s,box-shadow .2s,background .2s;
}
.lm-input::placeholder{color:rgba(14,36,64,.34)}
.lm-input:focus{
  background:#fff;border-color:#bf8e5a;
  box-shadow:0 0 0 3px rgba(191,142,90,.14);
}

/* ---- notice (error / 준비중) ---- */
.lm-notice{
  width:100%;margin-top:10px;padding:10px 13px;border-radius:10px;
  font:500 12.5px/1.55 'Manrope',system-ui,sans-serif;
  display:none;
}
.lm-notice.is-shown{display:block}
.lm-notice.is-error{background:rgba(190,60,60,.07);color:#a83a3a;border:1px solid rgba(190,60,60,.16)}
.lm-notice.is-info{background:rgba(191,142,90,.09);color:#8a6234;border:1px solid rgba(191,142,90,.24)}

/* ---- 주소 + 주소 검색 버튼 ---- */
.lm-field-row{width:100%;display:flex;gap:8px}
.lm-field-row .lm-field{flex:1;min-width:0}
.lm-addr-btn{
  flex-shrink:0;padding:0 15px;border-radius:12px;cursor:pointer;
  border:1px solid rgba(191,142,90,.45);background:#fff;color:#a8763f;
  font:600 12.5px/1 'Manrope',system-ui,sans-serif;white-space:nowrap;
  transition:.22s;
}
.lm-addr-btn:hover{background:rgba(191,142,90,.09);border-color:#bf8e5a;color:#8a6234}
.lm-input[readonly]{cursor:pointer;background:rgba(14,36,64,.03)}

/* ---- 가입 유형 ---- */
.lm-group-label{
  width:100%;margin:8px 0 0 3px;
  font:600 11.5px/1 'Manrope',system-ui,sans-serif;
  letter-spacing:.06em;color:rgba(14,36,64,.45);
}
.lm-seg{width:100%;display:flex;gap:8px}
.lm-seg-opt{flex:1;display:block;cursor:pointer;position:relative}
.lm-seg-opt input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.lm-seg-opt span{
  display:flex;align-items:center;justify-content:center;text-align:center;
  min-height:46px;padding:10px 8px;border-radius:12px;
  border:1px solid rgba(14,36,64,.14);background:#fbfaf8;
  font:600 12.5px/1.35 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.55);
  transition:.22s;
}
.lm-seg-opt:hover span{border-color:rgba(191,142,90,.45);color:#0e2440}
.lm-seg-opt input:checked + span{
  background:#fff;border-color:#bf8e5a;color:#0e2440;
  box-shadow:0 0 0 3px rgba(191,142,90,.12);
}
.lm-seg-opt input:focus-visible + span{box-shadow:0 0 0 3px rgba(191,142,90,.3)}

/* ---- 다음 우편번호 embed layer ---- */
.lm-daum{
  position:absolute;inset:0;z-index:6;background:#fff;
  border-radius:24px;overflow:hidden;
  display:none;flex-direction:column;
}
.lm-daum.is-shown{display:flex}
.lm-daum-bar{
  flex-shrink:0;display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-bottom:1px solid rgba(14,36,64,.08);
}
.lm-daum-bar strong{font:600 13.5px 'Manrope',system-ui,sans-serif;color:#0e2440}
.lm-daum-close{
  width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  border:1px solid rgba(14,36,64,.1);background:#fff;
  color:rgba(14,36,64,.5);cursor:pointer;padding:0;transition:.25s;
}
.lm-daum-close:hover{background:rgba(14,36,64,.06);color:#0e2440}
.lm-daum-close svg{width:13px;height:13px}
.lm-daum-box{flex:1;min-height:0}

/* ---- per-field hint (비밀번호 확인 일치 여부) ---- */
.lm-hint{
  display:none;margin:-2px 0 0 3px;
  font:500 11.5px/1.5 'Manrope',system-ui,sans-serif;
}
.lm-hint.is-shown{display:block}
.lm-hint.is-bad{color:#a83a3a}
.lm-hint.is-good{color:#3f7a4f}

/* ---- forgot ---- */
.lm-forgot-row{width:100%;display:flex;justify-content:flex-end;margin-top:12px}
.lm-forgot{
  background:none;border:none;padding:0;cursor:pointer;
  font:500 12px 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.5);
  transition:color .2s;
}
.lm-forgot:hover{color:#bf8e5a;text-decoration:underline}

/* ---- submit ---- */
.lm-submit{
  width:100%;margin-top:18px;padding:13px 16px;
  border:none;border-radius:12px;cursor:pointer;
  background:#0e2440;color:#fff;
  font:600 14.5px/1 'Manrope',system-ui,sans-serif;letter-spacing:.01em;
  box-shadow:0 14px 30px -14px rgba(14,36,64,.7);
  transition:background .25s,transform .2s,box-shadow .25s;
}
.lm-submit:hover{background:#16304f;transform:translateY(-1px);box-shadow:0 18px 36px -14px rgba(14,36,64,.75)}
.lm-submit:active{transform:translateY(0)}

/* ---- divider ---- */
.lm-divider{width:100%;display:flex;align-items:center;margin:22px 0 16px}
.lm-divider::before,.lm-divider::after{
  content:'';flex:1;border-top:1px dashed rgba(14,36,64,.16);
}
.lm-divider span{
  margin:0 12px;font:500 11px 'Manrope',system-ui,sans-serif;
  letter-spacing:.08em;color:rgba(14,36,64,.38);white-space:nowrap;
}

/* ---- social ---- */
.lm-social{width:100%;display:flex;gap:10px}
.lm-social button{
  flex:1;height:48px;border-radius:13px;cursor:pointer;padding:0;
  display:grid;place-items:center;
  border:1px solid rgba(14,36,64,.12);background:#fff;
  transition:transform .2s,box-shadow .25s,background .25s;
}
.lm-social button:hover{transform:translateY(-2px);box-shadow:0 12px 24px -12px rgba(14,36,64,.45)}
.lm-social button:active{transform:translateY(0)}
.lm-social svg{width:21px;height:21px;display:block}
.lm-social .lm-kakao{background:#FEE500;border-color:rgba(0,0,0,.06);color:#3C1E1E}
.lm-social .lm-kakao:hover{background:#f5dd00}

/* ---- "이미 계정이 있으신가요? 로그인" ---- */
.lm-swap{
  width:100%;margin-top:18px;text-align:center;
  font:400 12.5px/1.6 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.5);
}
.lm-swap button{
  background:none;border:none;padding:0;margin-left:5px;cursor:pointer;
  font:600 12.5px 'Manrope',system-ui,sans-serif;color:#bf8e5a;
  text-decoration:underline;text-underline-offset:2px;transition:color .2s;
}
.lm-swap button:hover{color:#a8763f}

@media (max-width:480px){
  .lm-overlay{padding:16px}
  .lm-card{border-radius:20px}
  .lm-head{padding:34px 22px 0}
  .lm-body{padding:0 22px 26px}
  .lm-daum{border-radius:20px}
  .lm-title{font-size:23px}
  .lm-addr-btn{padding:0 12px;font-size:12px}
  .lm-social{gap:8px}
  .lm-social button{height:44px;border-radius:11px}
  .lm-social svg{width:19px;height:19px}
}

/* ===== search-overlay.css ===== */
/* ===== SEARCH OVERLAY (common across all pages) =====
   헤더 돋보기 아이콘으로 열린다. 상단에서 슬라이드 다운.
   팔레트는 로그인 모달과 동일 — 크림 #fbfaf8, 네이비 #0e2440, 골드 #bf8e5a. */

.so-overlay{
  position:fixed;inset:0;z-index:10001;
  display:flex;justify-content:center;align-items:flex-start;
  padding:0 20px;
  background:rgba(14,36,64,.42);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .28s ease,visibility .28s ease;
  font-family:'Manrope',system-ui,sans-serif;
}
.so-overlay.is-open{opacity:1;visibility:visible;pointer-events:auto}

.so-panel{
  width:100%;max-width:760px;
  max-height:min(80vh,720px);
  display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(180deg,#fbfaf8 0%,#fff 38%);
  border:1px solid rgba(14,36,64,.08);border-top:none;
  border-radius:0 0 20px 20px;
  box-shadow:0 40px 90px -30px rgba(14,36,64,.5);
  color:#0e2440;
  transform:translateY(-26px);opacity:0;
  transition:transform .34s cubic-bezier(.22,1,.36,1),opacity .3s ease;
}
.so-overlay.is-open .so-panel{transform:translateY(0);opacity:1}

/* ---- 검색 바 ---- */
.so-bar{
  flex-shrink:0;display:flex;align-items:center;gap:13px;
  padding:20px 22px;border-bottom:1px solid rgba(14,36,64,.09);
}
.so-bar-ic{width:20px;height:20px;flex-shrink:0;color:rgba(14,36,64,.34)}
.so-input{
  flex:1;min-width:0;border:none;background:none;outline:none;padding:0;
  font:500 18px/1.4 'Manrope',system-ui,sans-serif;color:#0e2440;
}
.so-input::placeholder{color:rgba(14,36,64,.32);font-weight:400}
.so-close{
  flex-shrink:0;width:32px;height:32px;border-radius:50%;
  display:grid;place-items:center;padding:0;cursor:pointer;
  border:1px solid rgba(14,36,64,.1);background:rgba(255,255,255,.7);
  color:rgba(14,36,64,.5);transition:.25s;
}
.so-close:hover{background:rgba(14,36,64,.06);color:#0e2440}
.so-close svg{width:15px;height:15px}

/* ---- 결과 영역 ---- */
.so-body{
  flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  padding:6px 10px 14px;
  scrollbar-width:thin;scrollbar-color:rgba(14,36,64,.2) transparent;
}
.so-body::-webkit-scrollbar{width:6px}
.so-body::-webkit-scrollbar-track{background:transparent}
.so-body::-webkit-scrollbar-thumb{background:rgba(14,36,64,.16);border-radius:3px}

.so-sec{
  padding:15px 12px 7px;
  font:700 10px 'Manrope',system-ui,sans-serif;
  letter-spacing:.2em;color:#bf8e5a;
}
.so-item{
  display:flex;align-items:center;gap:13px;
  padding:10px 12px;border-radius:10px;
  text-decoration:none;color:inherit;transition:background .18s;
}
.so-item:hover,.so-item.is-active{background:rgba(191,142,90,.11)}
.so-thumb{
  width:44px;height:44px;flex-shrink:0;border-radius:8px;object-fit:cover;
  background:rgba(14,36,64,.06);border:1px solid rgba(14,36,64,.07);
}
.so-thumb.is-broken{visibility:hidden}
.so-ic{
  width:44px;height:44px;flex-shrink:0;border-radius:8px;
  display:grid;place-items:center;
  background:rgba(191,142,90,.1);color:#a8763f;
}
.so-ic svg{width:18px;height:18px}
.so-txt{display:block;min-width:0;flex:1}
.so-name{display:block;font:600 14.5px/1.4 'Manrope',system-ui,sans-serif;color:#0e2440;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.so-meta{display:block;font:400 12px/1.5 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.5);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.so-more{
  display:block;padding:11px 12px 4px;
  font:500 12.5px 'Manrope',system-ui,sans-serif;color:#a8763f;text-decoration:none;
}
.so-more:hover{text-decoration:underline}

/* ---- 안내 / 결과 없음 ---- */
.so-hint{
  padding:34px 20px 40px;text-align:center;
  font:400 13.5px/1.8 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.45);
}
.so-empty{padding:34px 20px 38px;text-align:center}
.so-empty-t{font:600 15px/1.6 'Manrope',system-ui,sans-serif;color:#0e2440}
.so-empty-s{font:400 13px/1.7 'Manrope',system-ui,sans-serif;color:rgba(14,36,64,.5);margin-top:7px}
.so-empty-btn{
  display:inline-block;margin-top:18px;padding:11px 22px;border-radius:10px;
  background:#0e2440;color:#fff;text-decoration:none;
  font:600 13px 'Manrope',system-ui,sans-serif;transition:.25s;
}
.so-empty-btn:hover{background:#16304f;color:#fff}

@media (max-width:640px){
  .so-overlay{padding:0 10px}
  .so-panel{max-height:88vh;border-radius:0 0 16px 16px}
  .so-bar{padding:16px 16px;gap:10px}
  .so-input{font-size:16px}
  .so-thumb,.so-ic{width:38px;height:38px}
}

/* ===== map-links.css ===== */
/* ===== 길찾기 버튼 (네이버지도 · 카카오맵) =====

   구글 지도 임베드만으로는 국내 사용자가 실제 길찾기를 하기 어렵다.
   임베드 바로 아래에 네이버·카카오 길찾기 링크를 나란히 둔다.

   두 가지 배경에서 쓰인다 —
   .maplinks           밝은 배경(contact.html): 네이비 테두리 + 네이비 글자
   .maplinks--on-dark  어두운 배경(index.html 오시는 길): 골드 테두리 + 골드 글자

   모바일에서는 폭을 꽉 채워 두 줄로 떨어지고, 높이 48px 로 탭 영역을 확보한다. */

.maplinks {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
}

.maplink {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 20px;
  border-radius: 25px;
  border: 1px solid rgba(14, 36, 64, .22);
  background: transparent;
  color: #0e2440;
  font: 500 14px 'Noto Serif KR', serif;
  letter-spacing: .02em;
  text-decoration: none;
  transition: background-color .25s ease, border-color .25s ease, color .25s ease;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.maplink svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
}

.maplink:hover,
.maplink:focus-visible {
  border-color: #a8763f;
  color: #a8763f;
}

/* 어두운 배경(오시는 길 섹션) */
.maplinks--on-dark .maplink {
  border-color: rgba(201, 162, 75, .45);
  color: #c9a24b;
}

.maplinks--on-dark .maplink:hover,
.maplinks--on-dark .maplink:focus-visible {
  border-color: #c9a24b;
  background: rgba(201, 162, 75, .1);
  color: #e3c789;
}

/* 좁은 화면 — 두 버튼이 각각 한 줄을 차지하게 해서 오탭을 줄인다 */
@media (max-width: 560px) {
  .maplinks { gap: 8px; }
  .maplink { flex: 1 1 100%; }
}

/* ===== footer.css ===== */
/* ===== 다크 푸터 링크 (전 페이지 공통) =====
   기존에는 각 <a> 가 인라인 style 로 색을 갖고 있어 hover 를 줄 수 없었고,
   페이지마다 흰색/골드가 섞여 있었다. 한 클래스로 모아 평상시는 흰 계열,
   hover 에서만 골드가 되게 통일한다. */
.ft-link{
  font:400 13px 'Manrope',system-ui,sans-serif;
  color:rgba(255,255,255,.6);
  text-decoration:none;
  transition:color .25s ease;
}
.ft-link:hover,
.ft-link:focus-visible{ color:#c9a24b; }

/* ===== reveal.css ===== */
/* ===== 스크롤 등장 애니메이션 (전 페이지 공통) =====

   .reveal 이 붙은 요소는 뷰포트에 들어올 때 아래에서 위로 떠오른다.
   한 그룹 안에서는 assets/js/reveal.js 가 --reveal-d 에 80ms 간격을 넣어
   금색 라벨 → 제목 → 본문 → 카드 순으로 시차를 준다.

   최초 1회만 실행한다 — 되감기지 않으므로 다시 올라갔다 내려와도 조용하다. */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity .7s cubic-bezier(.22, 1, .36, 1) var(--reveal-d, 0ms),
    transform .7s cubic-bezier(.22, 1, .36, 1) var(--reveal-d, 0ms);
  will-change: opacity, transform;
}

.reveal.is-revealed {
  opacity: 1;
  transform: none;
}

/* 애니메이션이 끝나면 will-change 를 놓아 준다 (합성 레이어를 계속 잡고 있지 않게) */
.reveal.is-settled { will-change: auto; }

/* JS 가 죽어 있어도 내용은 보여야 한다 — 관찰이 시작되면 js 훅이 붙는다 */
html:not(.reveal-ready) .reveal { opacity: 1; transform: none; }

/* 움직임을 줄이라고 설정한 사용자에게는 애니메이션 없이 즉시 표시 */
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* ===== typography.css ===== */
/* ===== 한국어 줄바꿈 (전 페이지 공통) =====

   기본값(word-break: normal)은 한글을 글자 단위로 끊는다. 그래서
   "정품 슬라브의 가치를 아는 곳" 같은 문장이 "가 / 치를" 처럼
   어절 중간에서 갈라진다. keep-all 로 어절(공백) 단위로만 끊게 바꾼다.

   대신 keep-all 은 띄어쓰기 없는 긴 문자열(URL·제품코드)을 끊지 못해
   좁은 화면에서 가로로 넘친다. overflow-wrap: break-word 가 그때만
   개입해서 넘치는 경우에 한해 강제로 끊어준다.

   두 속성 모두 상속되므로 body 하나면 대부분 덮인다. 아래 목록은
   폼 컨트롤처럼 상속이 끊기는 요소를 명시적으로 잡기 위한 것이다. */
body,
h1, h2, h3, h4, h5, h6,
p, li, dt, dd, blockquote, figcaption,
button, input, select, textarea {
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 모바일 전용 줄바꿈 — 데스크톱에서 한 줄로 흐르는 문장이 좁은 화면에서
   의미 단위가 깨진 채 꺾일 때, 1024px 미만에서만 나타나는 <br> 로 쓴다. */
.br-m { display: none; }
@media (max-width: 1023px) {
  .br-m { display: inline; }
}

/* ===== 줄바꿈 품질 유틸리티 =====

   [사용 규칙 — 이후 카피를 추가할 때 이 세 가지로 해결한다]

   .text-pretty   본문 단락에. 마지막 줄에 한 단어만 남는 오펀을 막는다.
                  p / li / 카드 설명 / 추천 문구에는 아래에서 이미 걸어뒀으니
                  새 단락이 그 셀렉터에 안 걸릴 때만 직접 붙인다.
   .text-balance  2~3줄짜리 짧은 문장에. 줄 길이를 고르게 나눈다.
                  섹션 헤드라인 · 히어로 카피 · 섹션 소개문이 대상이다.
                  긴 본문에는 쓰지 않는다(브라우저가 몇 줄 이상은 무시하고,
                  되레 줄 수가 들쭉날쭉해 보인다).
   .nowrap        중간에서 끊기면 뜻이 깨지는 덩어리에.
                  숫자+단위(1200°C · 3240×1620 · 93%), 전화번호, A/S,
                  가운뎃점 나열의 각 항목이 대상이다.

   text-wrap: pretty / balance 는 미지원 브라우저(현재 iOS Safari 등)에서
   선언 자체가 통째로 무시된다. 그래서 폴백을 따로 쓸 필요가 없고, 반대로
   이 두 속성에만 기대면 안 된다 — 반드시 지켜야 하는 묶음은 위 .nowrap 과
   &nbsp; 로 마크업에 박아둔다. */
.text-balance { text-wrap: balance; }
.text-pretty  { text-wrap: pretty; }
.nowrap       { white-space: nowrap; }

/* 라틴 본문에 자동 하이픈이 끼어들지 않게 못박는다.
   (keep-all 은 라틴에 영향이 없으므로 영문 블록은 그대로 둔다.) */
body { hyphens: none; -webkit-hyphens: none; }

/* 본문 단락 — 오펀 방지.
   이 사이트의 본문은 대부분 <p> 가 아니라 <div> 라서 태그로 집을 수 없다.
   그래서 body 에 걸고(상속) 제목만 아래에서 balance 로 되돌린다. */
body { text-wrap: pretty; }

/* 제목 · 소제목 — 줄 길이 균등화. letter-spacing 은 건드리지 않는다.
   body 의 pretty 를 덮어쓴다(둘 다 text-wrap 이라 나중 선언이 이긴다). */
h1, h2, h3, h4, h5, h6,
.text-balance {
  text-wrap: balance;
}

/* 태그(pill)는 안에서 끊기면 알약 모양이 깨진다 */
.mbanner-chip { white-space: nowrap; }

/* ===== 소재 카드 본문 =====
   문장 단위 줄바꿈. 마침표로 끝나는 문장마다 새 줄에서 시작하되,
   문장 사이 간격은 일반 줄 간격과 같아야 한다 — 그래서 margin 없이
   display:block 만 준다(<br> 을 쓰면 문장이 두 줄로 넘칠 때 들여쓰기가
   어긋나고, 문장 단위로 pretty 를 걸 수도 없다). */
.mbanner-desc-ko .sentence { display: block; }

/* 한 줄 32~40자에 들어오도록 본문 폭을 잡는다.
   13.5px 한글 기준 1자 ≈ 13.5px 이므로 36자 ≈ 486px, 카드 패널
   안쪽 폭(372px)이 이미 그보다 좁아 실제로는 28자 안팎으로 떨어진다.
   패널을 넓혀 32자 하한을 맞춘다 — 이미지:텍스트 비율은 그대로 두고
   상한만 460px → 500px 로 올린다. */
.mbanner-desc-ko { max-width: 40em; }

/* ===== 푸터 사업자 정보 =====
   "상호 (주)은성" "전화 031-544-7272 · 010-5430-2580" 처럼 각 <span> 이
   그 자체로 한 항목이다. 항목 안에서 끊기면(특히 전화번호가 하이픈에서
   갈리면) 무슨 정보인지 읽히지 않으므로, 줄바꿈은 항목 사이에서만
   일어나게 한다. 항목 간격(gap 22px)이 사실상 구분자 역할을 한다. */
.ft-info > span { white-space: nowrap; }
/* 주소도 한 덩어리로 둔다. 360px 에서 실측 207px 이라 컨테이너(324px)에
   여유 있게 들어가고, 번지수 "356-39" 가 하이픈에서 갈리는 것도 함께 막힌다. */

/* ===== mobile.css ===== */
/* ===== 모바일 / 태블릿 대응 (전 페이지 공통) =====

   원칙: 데스크톱(1280px 이상)은 이 파일이 전혀 개입하지 않는다.
   모든 규칙은 max-width 미디어쿼리 안에만 있다.

   본문 대부분이 인라인 style 이라 일반 선택자로는 덮이지 않는다.
   [style*="..."] + !important 로 잡는다. 인라인 스타일을 직접 고치면
   데스크톱까지 바뀌므로, 이 방법이라야 "데스크톱 무변경" 을 지킬 수 있다.

   ⚠ 선택자 작성 규칙
   x-dc 가 재렌더하면서 인라인 스타일을 정규화한다.
     원본  style="padding:120px 5vw;font:400 13.5px/1.8 'Manrope'"
     정규화 style="padding: 120px 5vw; font: 400 13.5px / 1.8 Manrope"
   그래서 "padding:120px" 처럼 콜론을 낀 문자열로는 매칭이 안 된다.
   양쪽에 공통으로 남는 "값" 조각으로만 매칭한다. (예: "120px 5vw")
   letter-spacing 은 ".42em" 이 "0.42em" 의 부분 문자열이라 그대로 통한다.

   ⚠ 브레이크포인트가 769/1025/431 인 이유
   서브픽셀 스케일링 환경에서 뷰포트가 768.0x px 로 잡히면서
   max-width:768px 가 정확히 768 기기에서 거짓이 된다. 1px 씩 올려
   경계값(360/390/430/768/1024)을 확실히 포함시킨다. */

/* ════════ 전역 방어 (전 폭 공통) ════════ */

/* 삼성 인터넷 "글자 크기 확대(가가)" · iOS 가로 회전 시 폰트 부스팅으로
   레이아웃이 틀어지는 것을 막는다. 사용자의 브라우저 확대(핀치줌)는
   막지 않는다 — 텍스트 자동 인플레이션만 끈다. */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* 시스템의 동작 줄이기 설정을 존중한다 — 장식성 애니메이션·전환을 즉시
   완료 상태로 보낸다. reveal/메뉴 스태거는 상태 클래스 기반이라 기능은
   그대로 동작하고 연출만 생략된다. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
  }
  html { scroll-behavior: auto !important; }
}

/* ════════ 태블릿 가로 (≤1279px) ════════
   1280 미만은 전부 터치 기기로 본다. 터치 타겟 44px 는 여기서부터 적용. */
@media (max-width: 1279px) {
  [style*="repeat(4"] { grid-template-columns: repeat(2, 1fr) !important; }

  .nav-ic, .nav-burger { width: 44px !important; height: 44px !important; }
  .lang { gap: 3px !important; }
  .lang b { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; }
  footer a { min-height: 44px; display: inline-flex; align-items: center; }
  .brand-logo { min-height: 44px; align-items: center !important; }
  /* 플로팅 위젯 항목 — 터치 타깃 44px 확보 */
  .iw-btn { min-width: 44px !important; min-height: 44px !important; }

  /* facility 타임라인 사진: 78vw/90vw 가 좌측 레일 오프셋과 겹쳐 넘친다.
     페이지 자체 대응이 ≤860px 뿐이라 그 위 구간(861~1279)이 비어 있었다. */
  .ft-photo-wrap, .ft-row-lg .ft-photo-wrap { width: 100% !important; max-width: none !important; }
  .ft-content { max-width: none !important; }
}

/* ════════ 모바일 풀스크린 메뉴 ════════
   열림 상태는 body.nav-open 하나로 표현하고 mobile-nav.js 가 토글한다.
   오버레이(#esMnav)는 JS 가 body 끝에 만든다 — x-dc 재렌더 영역 밖.
   페이지 안에 남아 있는 구형 드롭다운 패널(.nav-mobile-panel)은 폐기:
   각 페이지의 인라인 helmet CSS 가 body.nav-open 에서 display:flex 를
   걸므로 모든 상태에서 !important 로 눌러둔다. */
.nav-mobile-panel,
body.nav-open .nav-mobile-panel { display: none !important; }

@media (max-width: 1080px) {
  /* 버튼으로 바뀌면서 기본 스타일이 붙는다. 기존 원형 아이콘 모양을 유지한다. */
  button.nav-burger {
    -webkit-appearance: none; appearance: none;
    padding: 0; color: inherit; font: inherit; line-height: 0;
    -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  }
}

/* ── 오버레이 골격 ──
   닫힌 상태에선 visibility:hidden 이라 어떤 폭에서도 화면에 영향이 없다.
   버거가 없는 데스크톱(>1080)에서는 열릴 일 자체가 없고, 리사이즈로
   1080을 넘으면 JS 가 자동으로 닫는다. */
.mnav {
  position: fixed; inset: 0; z-index: 9500;
  display: flex; flex-direction: column; overflow: hidden;
  background: #ffffff; color: #0e2440;
  visibility: hidden; opacity: 0;
  transition: opacity .45s cubic-bezier(.22,1,.36,1), visibility 0s linear .45s;
}
body.nav-open .mnav {
  visibility: visible; opacity: 1;
  transition: opacity .45s cubic-bezier(.22,1,.36,1);
}

.mnav-head {
  flex: none; display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px 8px;
  padding-top: calc(12px + env(safe-area-inset-top, 0px));
  border-bottom: 1px solid #eee;
}
.mnav-brand { display: flex; align-items: baseline; gap: .5em; text-decoration: none; color: #0e2440; min-height: 44px; align-items: center; }
.mnav-brand-en { font: 600 1.15rem 'Cormorant Garamond', serif; letter-spacing: .14em; }
.mnav-brand-kr { font: 400 .66rem 'Noto Serif KR', serif; opacity: .55; }
/* 닫기 — 헤더 아이콘과 같은 어휘(2026-09 v2): 정지 땐 베어, hover 에 12px 틴트 */
.mnav-close {
  width: 44px; height: 44px; margin-right: -10px; border-radius: 12px;
  border: 0; background: transparent; color: #0e2440;
  display: grid; place-items: center; cursor: pointer;
  -webkit-appearance: none; appearance: none; padding: 0;
  transition: background-color .2s ease;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.mnav-close:hover { background: rgba(14, 36, 64, .06); }
.mnav-close svg { width: 22px; height: 22px; stroke-width: 1.75; stroke-linecap: round; }
.mnav-close:focus-visible { outline: 2px solid #2f6fed; outline-offset: -3px; }

.mnav-body {
  flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 28px 28px calc(36px + env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column;
}

/* ── 메뉴 항목 ──
   리듬(2026-09 정돈): 섹션 간격 36px · 섹션 머리(아이브로우/캡션) 아래 12px · 구분선 아래 24px.
   한글은 예외 없이 Noto Serif KR 400 — 상단 메뉴와 소재 하위 메뉴는 크기로만 위계를 준다. */
.mnav-eyebrow {
  font: 600 10px 'Manrope', sans-serif; letter-spacing: .3em;
  color: #a8763f; margin: 0 0 12px;
}
.mnav-eyebrow--sub { margin-top: 36px; }
/* 영문 소제목은 Manrope 를 유지하되, 뒤에 붙는 한글은 Noto Serif KR 로 —
   Manrope 에는 한글 글리프가 없어 그대로 두면 기기별 시스템 폰트로 떨어진다. */
.mnav-ko {
  font-family: 'Noto Serif KR', serif; font-weight: 400;
  letter-spacing: .04em;
}
.mnav-list { display: flex; flex-direction: column; }
.mnav-link, .mnav-sublink {
  display: flex; align-items: baseline; gap: 14px;
  text-decoration: none; color: #0e2440; min-height: 44px;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.mnav-link { padding: 7px 0; }
.mnav-idx {
  font: italic 400 12px 'Cormorant Garamond', serif;
  color: #c9a24b; letter-spacing: .08em; min-width: 22px;
}
.mnav-link .mnav-link-t {
  font: 400 clamp(23px, 6.2vw, 30px)/1.35 'Noto Serif KR', serif;
  transition: color .25s ease;
}
.mnav-sublink { padding: 6px 0 6px 36px; align-items: center; }
.mnav-sublink .mnav-link-t {
  font: 400 17px/1.5 'Noto Serif KR', serif;
  color: rgba(14, 36, 64, .78);
  transition: color .25s ease;
}
.mnav-link.is-current .mnav-link-t,
.mnav-sublink.is-current .mnav-link-t { color: #a8763f; }
.mnav-link:active .mnav-link-t,
.mnav-sublink:active .mnav-link-t { color: #c9a24b; }

/* ── 유틸(검색·로그인·언어) ── */
/* ── 유틸 줄(검색 · 로그인 · KO/EN) — 헤더와 같은 어휘(2026-09 v2):
   보더 없는 옅은 틴트 필 버튼, 언어는 흰색 필이 미끄러지는 세그먼트 토글 ── */
.mnav-utils {
  display: flex; align-items: center; gap: 8px;
  margin-top: 36px; padding-top: 20px;
  border-top: 1px solid #eee;
}
.mnav-util {
  display: inline-flex; align-items: center; gap: 8px;
  height: 40px; padding: 0 16px 0 14px; margin: 0;
  border: 0; border-radius: 999px;
  background: rgba(14, 36, 64, .06); color: #0e2440;
  /* 한글 라벨(검색·로그인) — 오버레이 안의 한글은 예외 없이 Noto Serif KR 400 */
  font: 400 14px 'Noto Serif KR', serif; cursor: pointer;
  -webkit-appearance: none; appearance: none;
  transition: background-color .2s ease;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.mnav-util:hover { background: rgba(14, 36, 64, .10); }
.mnav-util svg { width: 17px; height: 17px; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.mnav-util:focus-visible { outline: 2px solid #2f6fed; outline-offset: 2px; }
.mnav-lang {
  position: relative; margin-left: auto; margin-right: 0;
  display: inline-flex; align-items: stretch; gap: 0;
  height: 36px; padding: 3px; box-sizing: border-box;
  border-radius: 999px; background: rgba(14, 36, 64, .06);
  font: 600 12px/1 'Manrope', sans-serif; letter-spacing: .02em; text-transform: uppercase; color: #0e2440;
}
.mnav-lang::before {
  content: ''; position: absolute; top: 3px; left: 3px;
  width: calc(50% - 3px); height: calc(100% - 6px); border-radius: 999px;
  background: #fff; box-shadow: 0 1px 2px rgba(14, 36, 64, .14), 0 0 0 .5px rgba(14, 36, 64, .05);
  transition: transform .35s cubic-bezier(.22, 1, .36, 1);
}
:root[lang="en"] .mnav-lang::before { transform: translateX(100%); }
.mnav-lang b {
  position: relative; z-index: 1; flex: 1 0 0;
  min-width: 0; min-height: 0; font-weight: inherit; opacity: .5;
  display: inline-grid; place-items: center; cursor: pointer;
  transition: opacity .25s ease;
}
:root:not([lang="en"]) .mnav-lang b:nth-of-type(1),
:root[lang="en"] .mnav-lang b:nth-of-type(2) { opacity: 1 !important; }
.mnav-lang .lang-btn { min-width: 50px; height: 100%; margin: 0; padding: 0 12px; }
.mnav-lang .lang-btn::after { top: -4px; bottom: -4px; }

/* ── 상담 블록 — 유틸 줄과 같은 하이라인·같은 여백으로 한 리듬 ── */
.mnav-contact { margin-top: 36px; padding-top: 24px; border-top: 1px solid #eee; }
.mnav-contact-cap {
  font: 600 10px 'Manrope', sans-serif; letter-spacing: .3em;
  color: #a8763f; margin-bottom: 12px;
}
/* 대표번호(위) + 휴대폰(아래) 두 줄 — 각각 개별 tel: 링크 */
.mnav-tels { display: flex; flex-direction: column; align-items: flex-start; }
.mnav-tel {
  display: inline-flex; align-items: center; min-height: 44px;
  font: 500 clamp(26px, 7vw, 34px) 'Cormorant Garamond', serif;
  letter-spacing: .04em; color: #0e2440; text-decoration: none;
}
.mnav-tel--sub {
  font-size: clamp(20px, 5.4vw, 26px);
  color: rgba(14, 36, 64, .68);
}
.mnav-kakao {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 12px; min-height: 46px; padding: 0 20px; border-radius: 24px;
  background: #0e2440; color: #ffffff;
  font: 400 14px 'Noto Serif KR', serif; letter-spacing: .02em; text-decoration: none;
}
.mnav-kakao svg { width: 15px; height: 15px; }

/* ── 열림 스태거 — 항목이 아래에서 순차로 떠오른다 ──
   지연(--d)은 JS 가 인라인으로 심는다. 닫힐 때는 지연 없이 즉시 사라져
   오버레이 페이드와 어긋나지 않는다. */
.mnav-eyebrow, .mnav-link, .mnav-sublink, .mnav-utils, .mnav-contact {
  opacity: 0; transform: translateY(16px);
  transition: opacity .5s cubic-bezier(.22,1,.36,1), transform .5s cubic-bezier(.22,1,.36,1);
}
body.nav-open .mnav-eyebrow,
body.nav-open .mnav-link,
body.nav-open .mnav-sublink,
body.nav-open .mnav-utils,
body.nav-open .mnav-contact {
  opacity: 1; transform: none;
  transition-delay: var(--d, 0ms);
}

/* ════════ 태블릿 세로 (≤1024px) ════════ */
@media (max-width: 1025px) {
  [style*="repeat(3"] { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ════════ 모바일 · 태블릿 세로 이하 (≤768px) ════════ */
@media (max-width: 769px) {

  /* ── 1-2 가로 스크롤 차단: 다단 그리드를 1열로 ── */
  [style*="grid-template-columns"] {
    grid-template-columns: 1fr !important;
    gap: 26px !important;
  }

  /* 세로 여백 축소 */
  [style*="120px 5vw"], [style*="130px 5vw"], [style*="110px 5vw"], [style*="100px 5vw"] {
    padding-top: 64px !important; padding-bottom: 64px !important;
  }
  [style*="76px 5vw 110px"] { padding-top: 44px !important; padding-bottom: 64px !important; }

  /* 데스크톱 기준 큰 고정 높이 완화 */
  [style*="460px"][style*="height"], [style*="420px"][style*="height"] {
    height: auto !important; min-height: 230px !important; aspect-ratio: 4 / 3;
  }

  /* ── 1-4 타이포: 본문 16px 이상 ── */
  body { font-size: 16px; }
  [style*="400 13px"], [style*="400 13.5px"], [style*="400 14px"], [style*="400 14.5px"],
  [style*="400 15px"], [style*="400 15.5px"], [style*="400 12.5px"] {
    font-size: 16px !important; line-height: 1.75 !important;
  }
  [style*="500 13px"], [style*="500 14px"], [style*="600 14px"], [style*="600 14.5px"],
  [style*="500 13.5px"], [style*="500 12.5px"] { font-size: 16px !important; }
  /* 오버라인·라벨은 의도적으로 작은 글자다. 위 규칙보다 뒤에 둬서 되돌린다.
     ".42em" 은 정규화된 "0.42em" 의 부분 문자열이라 양쪽 모두 잡힌다. */
  [style*=".42em"], [style*=".34em"], [style*=".32em"], [style*=".3em"],
  [style*=".28em"], [style*=".２em"], [style*=".2em"], [style*=".18em"],
  [style*=".16em"], [style*=".14em"], [style*=".12em"] {
    font-size: 11px !important; line-height: 1.5 !important;
  }

  /* ── 1-5 이미지 ── */
  img { max-width: 100% !important; height: auto; }
  img[style*="absolute"] { height: 100% !important; }

  /* ── 1-3 헤더: 로고 + KO/EN + 버거만 ──
     검색·로그인 아이콘은 풀스크린 메뉴 안으로 옮겼다(mobile-nav.js).
     360px 에서 터치 타겟 5개가 몰려 로고("은성")와 겹치던 문제의 해법이다. */
  .nav-right .nav-ic { display: none !important; }
  .nav-right { gap: 4px !important; }
  /* 헤더가 좌우로 꽉 차므로 상하 패딩을 줄여 높이를 유지한다.
     backdrop blur 는 고정 헤더에서 스크롤 프레임마다 다시 계산되는
     가장 무거운 효과라 모바일에선 끄고, 대신 배경 불투명도를 올려
     가독성을 유지한다. */
  body > div[style*="z-index: 30"], body > div[style*="z-index:30"] {
    padding-top: 8px !important; padding-bottom: 8px !important;
    backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
    background: rgba(251, 250, 250, .95) !important;
  }

  /* ── 1-3 푸터: 세로 스택 ──
     푸터는 grid 가 아니라 flex 라 전역 grid 규칙에 안 잡힌다.
     바깥(브랜드 ↔ 링크 묶음)은 세로로, 링크 3그룹은 2열 그리드로. */
  footer > div:first-of-type { flex-direction: column !important; gap: 40px !important; }
  footer div[style*="64px"] {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 30px 20px !important;
  }
  footer [style*="grid-template-columns"] { grid-template-columns: 1fr !important; gap: 30px !important; }
  footer a { min-height: 44px; display: inline-flex; align-items: center; }
  /* 하단 고정 CTA 바(≤768 전용, inquiry-widget.js)에 가리지 않을 여유 */
  footer { padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px)) !important; }
  /* 사업자 정보 한 줄 나열 → 줄바꿈 */
  footer [style*="flex-wrap"] { gap: 6px 14px !important; }
}

/* ════════ 좁은 모바일 (≤430px) ════════ */
@media (max-width: 431px) {
  [style*="120px 5vw"], [style*="130px 5vw"], [style*="110px 5vw"], [style*="100px 5vw"],
  [style*="76px 5vw 110px"] { padding-left: 20px !important; padding-right: 20px !important; }
  [style*="grid-template-columns"] { gap: 18px !important; }
  /* 헤더가 로고+KO/EN+버거 3요소로 줄어 360px(폴드 커버 320px 포함)에도
     여유가 생겼다 — 로고는 640px 블록의 1.35rem 을 그대로 쓰고,
     KO/EN 도 가로 44px 터치 타겟을 온전히 지킨다. */
}

/* ════════ 플로팅 문의 위젯 ════════
   ≤768 에서는 하단 고정 CTA 바(전화·카톡)가 역할을 대신하므로 위젯을
   숨긴다 — 규칙은 위젯과 같은 파일(inquiry-widget.css)에 있다.
   태블릿(769~1279)은 위젯을 그대로 쓴다. */

/* ===== mobile-overlays.css ===== */
/* ===== 모바일 오버레이/모달 대응 =====
   로그인·회원가입 모달과 검색 오버레이는 login-modal.css / search-overlay.css
   에 클래스 기반으로 정의돼 있어 인라인 스타일 문제는 없다. 여기서는
   모바일 특유의 문제만 다룬다 — iOS 자동 확대, 키보드 가림, 안전영역.

   데스크톱(≥1280)에는 개입하지 않는다. */

@media (max-width: 1279px) {

  /* ── 2-1 / 2-2 iOS 입력 자동 확대 방지 ──
     iOS Safari 는 폰트가 16px 미만인 입력에 포커스하면 화면을 확대한다.
     확대되면 레이아웃이 어긋나고 되돌아오지 않아, 모든 입력을 16px 로 올린다. */
  .lm-input, .so-input,
  .ct-input, .ct-select, .ct-textarea {
    font-size: 16px !important;
  }
}

@media (max-width: 769px) {

  /* ── 2-1 로그인 / 회원가입 모달 ── */
  .lm-overlay {
    padding: 0 !important;
    align-items: flex-end !important;      /* 하단 시트 형태가 엄지에 가깝다 */
  }
  .lm-card {
    max-width: 100% !important;
    width: 100% !important;
    /* 오버레이(inset:0) 기준 % 로 잡는다. dvh 는 iOS 주소창·iframe 환경에서
       실제 컨테이너 높이와 어긋나 하단이 몇 px 잘리는 경우가 있었다. */
    max-height: 92% !important;
    margin-top: auto !important;
    border-radius: 20px 20px 0 0 !important;
    /* 홈 인디케이터 영역만큼 아래 여백 확보 */
    padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px)) !important;
    /* 데스크톱의 진입 연출(translateY(18px) scale(.97))을 그대로 두면
       scale 때문에 카드가 뷰포트 아래로 몇 px 밀려난다. 모바일에서는
       하단 시트 슬라이드로 바꿔 어긋남 없이 화면 안에 정확히 수납한다. */
    transform: translateY(100%) !important;
  }
  .lm-overlay.is-open .lm-card { transform: translateY(0) !important; }
  .lm-head { padding: 30px 20px 0 !important; }
  .lm-body {
    padding: 0 20px 12px !important;
    /* 키보드가 올라와도 입력칸이 가려지지 않도록 스크롤 여유를 둔다 */
    scroll-padding-bottom: 120px;
    overscroll-behavior: contain;
  }
  .lm-title { font-size: 22px !important; }
  .lm-close { top: 12px !important; right: 12px !important; width: 40px !important; height: 40px !important; }
  .lm-input { padding: 14px 14px 14px 42px !important; }
  .lm-submit { padding: 15px 16px !important; font-size: 15px !important; }
  .lm-social button { height: 50px !important; }
  .lm-tab { min-height: 44px; font-size: 14px !important; }
  .lm-seg-opt span { min-height: 50px !important; }
  .lm-addr-btn { min-height: 46px; padding: 0 14px !important; }
  .lm-forgot { min-height: 44px; display: inline-flex; align-items: center; }
  .lm-account-btn { min-height: 44px; }

  /* 다음 우편번호 embed — 모바일에서 세로 공간을 충분히 준다 */
  .lm-daum { border-radius: 20px 20px 0 0 !important; }
  .lm-daum-box { min-height: 60vh; min-height: 60dvh; }

  /* ── 2-2 검색 오버레이 ── */
  .so-overlay { padding: 0 !important; }
  .so-panel {
    max-width: 100% !important;
    width: 100% !important;
    max-height: 100% !important;
    border-radius: 0 !important;
    border-left: none !important; border-right: none !important;
  }
  .so-bar { padding: 14px 14px !important; }
  .so-input { font-size: 16px !important; }
  .so-close { width: 44px !important; height: 44px !important; }
  .so-body {
    padding: 4px 8px calc(16px + env(safe-area-inset-bottom, 0px)) !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
  }
  .so-item { padding: 12px 10px !important; min-height: 56px; }
  .so-empty-btn { min-height: 46px; display: inline-flex; align-items: center; }
}

/* ===== mobile-pages.css ===== */
/* ===== 페이지별 모바일 대응 (3단계) =====
   데스크톱(≥1280)에는 개입하지 않는다. */

/* ──────────── 3-1 index: 히어로 ────────────
   (2026-09) index.html 의 <style> 로 옮겼다 — 데스크톱(≥1024, 스크롤 확장)과
   모바일(≤1023, 100svh 단순 재생) 구조가 거기서 미디어쿼리로 완전히 나뉜다.
   예전의 !important 덮어쓰기 블록은 더 이상 필요 없다. */

/* ──────────── 3-1b index: 히어로 밖 섹션 (≤768 모바일만) ──────────── */
@media (max-width: 769px) {
  /* 소재 4카드 — 이미지 위, 텍스트 아래 (페이지 자체 규칙 보강) */
  .mbanner { flex-direction: column !important; height: auto !important; }
  .mbanner-image { height: 210px !important; order: 1 !important; }
  .mbanner-panel { order: 2 !important; flex: none !important; width: 100% !important; padding: 26px 22px !important; }
  .mbanner-title { font-size: 26px !important; }
  .mbanner-chips { gap: 6px !important; }
  .mbanner-chip { font-size: 10.5px !important; }

  /* 다크 몽타주 — 히어로와 같은 이유로 vh 폴백을 앞세운다 */
  .story-montage-section {
    min-height: 78vh !important;
    min-height: 78svh !important;
    min-height: 78dvh !important;
  }
  .story-montage-text { left: 22px !important; right: 22px !important; bottom: 9% !important; }
  .story-montage-headline { font-size: clamp(22px, 6.2vw, 30px) !important; }
}

/* ──────────── 3-2 about ──────────── */
@media (max-width: 769px) {
  /* 숫자·통계형 4열 카드는 1열보다 2×2 가 읽기 좋다.
     1단계의 전역 1열 규칙을 이 경우에만 되돌린다. */
  [style*="repeat(4"] { grid-template-columns: 1fr 1fr !important; gap: 22px !important; }
}

/* ──────────── 3-3 showroom / 소재 4종 ────────────
   .pgrid 는 페이지 자체에 4→3(≤960)→2(≤640) 규칙이 이미 있다.
   768px 구간이 3열이라 카드가 좁아 2열로 당기고, 터치 타겟만 보완한다. */
@media (max-width: 1279px) {
  /* 정렬 셀렉트·페이지 버튼·컬러 스와치는 태블릿 가로에서도 터치 대상 */
  .pgbtn { width: 44px !important; height: 44px !important; }
  /* 컬러 스와치는 22px 원형이 디자인이다. 원은 그대로 두고 히트 영역만
     투명 가상요소로 44px 까지 넓힌다. */
  .swatch { position: relative !important; }
  .swatch::after {
    content: ''; position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%); width: 44px; height: 44px;
  }
  .swatch-wrap { min-height: 44px !important; display: inline-grid !important; place-items: center !important; }
  .style-pill { min-height: 44px !important; }
  /* 쇼룸 필터 바의 컨트롤은 종류가 많고 일부는 클래스가 없다.
     스와치(원형 디자인 유지)만 빼고 일괄로 44px 을 보장한다. */
  .filter-bar button:not(.swatch), .filter-bar select, .filter-bar input,
  .filter-sheet button:not(.swatch), .filter-sheet select, .filter-sheet input,
  select, .filter-search, .filter-open-btn, .filter-reset { min-height: 44px !important; }
}
@media (max-width: 769px) {
  .pgrid { grid-template-columns: repeat(2, 1fr) !important; gap: 28px 14px !important; }
  /* 카테고리 탭이 360px 에서 가로로 넘친다. 페이지를 밀지 않고
     탭 줄 안에서만 가로 스크롤되게 한다. */
  .ctab { min-height: 44px !important; padding: 12px 4px !important; white-space: nowrap; }
  /* 탭 줄 컨테이너에는 클래스가 없어 :has() 로 잡는다 */
  div:has(> .ctab), .filter-bar-group {
    overflow-x: auto !important; flex-wrap: nowrap !important;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
  }
  div:has(> .ctab)::-webkit-scrollbar, .filter-bar-group::-webkit-scrollbar { display: none; }
  .filter-open-btn, .filter-reset, .filter-sheet-apply, .filter-sheet-close { min-height: 44px !important; }
  .filter-search { font-size: 16px !important; min-height: 44px !important; }
  /* 페이지 버튼이 9개라 360px 에서 폭이 29px 로 눌린다.
     줄을 가로 스크롤로 바꿔 각 버튼이 44px 을 지키게 한다. */
  div:has(> .pgbtn) {
    overflow-x: auto !important; flex-wrap: nowrap !important;
    justify-content: flex-start !important; scrollbar-width: none;
  }
  div:has(> .pgbtn)::-webkit-scrollbar { display: none; }
  .pgbtn { min-width: 44px !important; flex: 0 0 auto !important; }
}

/* ──────────── 3-4 제품 상세 ──────────── */
@media (max-width: 769px) {
  /* 상세정보 표: 라벨-값 2열 그리드를 세로 스택으로 */
  [style*="96px 1fr"], [style*="110px 1fr"] {
    grid-template-columns: 1fr !important;
    gap: 4px !important;
  }
  /* 견적/카카오 버튼 풀와이드 스택 */
  .btn-gold, .btn-line { width: 100% !important; min-height: 52px !important; }
}
/* 브레드크럼 링크는 글자만 있어 세로 14px 이다. 태블릿 가로까지 44px 확보 */
@media (max-width: 1279px) {
  [style*="106px 4vw 0"] a { min-height: 44px; display: inline-flex; align-items: center; }
}

/* ──────────── 3-5 portfolio ──────────── */
/* 필터 탭·페이지네이션은 태블릿 가로에서도 터치라 ≤1279 부터 44px */
@media (max-width: 1279px) {
  .pf-tab { min-height: 44px !important; padding: 10px 16px !important; }
}
@media (max-width: 1025px) {
  .pf-grid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 769px) {
  .pf-grid { grid-template-columns: 1fr !important; gap: 20px !important; }
  .pf-card-img { height: 220px !important; }
  .pf-tab { min-height: 44px !important; padding: 10px 16px !important; }
  .pdetail-hero { height: 260px !important; }
  .pdetail-title { font-size: clamp(20px, 5.6vw, 28px) !important; }
  .pdetail-main-img { height: min(52vh, 380px) !important; }
  .pdetail-arrow { width: 44px !important; height: 44px !important; }
  .pdetail-viewer { padding: 0 14px !important; }
}

/* ──────────── 3-6 facility ──────────── */
@media (max-width: 769px) {
  /* 하단 CTA 버튼 풀와이드 */
  .ft-cta-row a, section[style*="130px 5vw"] a {
    display: block !important; width: 100% !important;
    text-align: center !important; min-height: 52px !important;
    line-height: 22px !important;
  }
  section[style*="130px 5vw"] [style*="display:flex"],
  section[style*="130px 5vw"] [style*="display: flex"] { flex-direction: column !important; }
}

/* ──────────── 3-7 contact ──────────── */
/* 연락처·이메일 링크는 태블릿 가로에서도 터치 대상이다 */
@media (max-width: 1279px) {
  .ct-info-value a { min-height: 44px; display: inline-flex; align-items: center; }
  /* 동의 체크박스는 18px 사각형이 디자인이다. 모양은 두고 히트 영역만 넓힌다 */
  .ct-agree input { position: relative; }
  .ct-agree input::after {
    content: ''; position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%); width: 44px; height: 44px;
  }
}
@media (max-width: 940px) {
  /* 폼이 먼저 오도록 순서를 바꾼다 (데스크톱은 좌 정보 / 우 폼) */
  .ct-body > div:nth-child(1) { order: 2 !important; }
  .ct-body > div:nth-child(2) { order: 1 !important; }
  .ct-body { display: flex !important; flex-direction: column !important; }
}
@media (max-width: 769px) {
  .ct-hero { padding-top: 110px !important; }
  .ct-form-wrap { padding: 28px 18px 26px !important; }
  .ct-input, .ct-select, .ct-textarea { font-size: 16px !important; }
  .ct-submit { width: 100% !important; min-height: 54px !important; }
  .ct-info-value { font-size: 18px !important; }
  .ct-info-value a { min-height: 44px; display: inline-flex; align-items: center; }
  /* 영업시간: 라벨과 값이 붙지 않게 최소 간격 확보 */
  .ct-hours { gap: 12px !important; font-size: 15px !important; }
}

/* ===== header-utils.css ===== */
/* ===== 헤더 유틸리티 내비 (검색 · KO/EN · 계정 · 버거) — 2026-09 v2 "fresh" =====
   v1(골드 헤어라인 · 넓은 자간 대문자 · 78% 아이콘)은 구식이라는 피드백 →
   밝고 선명한 방향으로 재설계:
     - 아이콘 20px · 1.75 스트로크 · 둥근 캡 · 네이비 100% (흐리게 두지 않는다)
     - 정지 상태엔 컨테이너 없음, hover/active 에만 12px 라운드 틴트
     - KO/EN 은 흰색 필이 미끄러지는 세그먼트 토글(iOS/모던 SaaS 관용구).
       활성 상태는 i18n.js 가 쓰는 <html lang> 값으로 CSS 만으로 그린다.
     - 골드는 쓰지 않는다. 밝기는 흰색 + 아주 옅은 네이비 틴트로 낸다.

   각 페이지 helmet <style> 의 .nav-ic / .lang / .nav-burger 규칙(단일 클래스)이
   <body> 안에 있어 site.css 보다 늦게 적용된다 → .nav-right 하위 선택자로
   특이성을 올려 덮는다. 터치 타겟은 44px 상자 + 상하 -5px 마진으로, 레이아웃
   높이(34px)와 헤더 높이는 이전과 동일하게 유지한다. */

:root{
  --hu-ink:#0e2440;
  --hu-tint:rgba(14,36,64,.06);
  --hu-tint-strong:rgba(14,36,64,.10);
  --hu-pill:#fff;
  --hu-pill-shadow:0 1px 2px rgba(14,36,64,.14),0 0 0 .5px rgba(14,36,64,.05);
  --hu-focus:#2f6fed;
}

div.nav-right{
  display:flex;align-items:center;gap:2px;flex-shrink:0;color:var(--hu-ink);
}

/* ── 아이콘 버튼(검색 · 계정) ── */
.nav-right .nav-ic{
  -webkit-appearance:none;appearance:none;
  width:44px;height:44px;margin:-5px 0;padding:0;
  border:0;border-radius:12px;background:transparent;
  display:inline-grid;place-items:center;
  color:inherit;cursor:pointer;
  transition:background-color .2s ease,transform .2s ease;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.nav-right .nav-ic svg{
  width:20px;height:20px;display:block;
  stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;
}
.nav-right .nav-ic:hover{background:var(--hu-tint)}
.nav-right .nav-ic:active{background:var(--hu-tint-strong);transform:scale(.96)}

/* ── 버거(모바일) — display 는 helmet 규칙(≤1080 inline-flex)에 맡긴다 ── */
.nav-right .nav-burger{
  -webkit-appearance:none;appearance:none;
  width:44px;height:44px;margin:-5px -8px -5px 0;padding:0;
  border:0;border-radius:12px;background:transparent;
  align-items:center;justify-content:center;
  color:inherit;cursor:pointer;
  transition:background-color .2s ease;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.nav-right .nav-burger svg{
  width:22px;height:22px;display:block;
  stroke-width:1.75;stroke-linecap:round;
}
.nav-right .nav-burger:hover{background:var(--hu-tint)}

/* ── 언어 세그먼트 토글 KO / EN ──
   i18n.js 는 .lang b 클릭을 위임으로 받고 paintToggle 이 b 의 inline opacity 를
   1 / .5 로 칠한다(활성/비활성). 키보드 접근을 위해 b 안에 <button> 을 두었다:
   Enter 로 발생한 click 의 target 이 button 이므로 closest('.lang b') 가 잡힌다.
   흰색 필(::before)은 <html lang> 값에 따라 왼쪽/오른쪽으로 미끄러진다. */
.nav-right .lang{
  position:relative;display:inline-flex;align-items:stretch;gap:0;
  height:30px;padding:3px;margin:0 8px;box-sizing:border-box;
  border-radius:999px;background:var(--hu-tint);
  font:600 11.5px/1 'Manrope',system-ui,sans-serif;letter-spacing:.02em;
  text-transform:uppercase;color:inherit;
}
.nav-right .lang::before{
  content:'';position:absolute;top:3px;left:3px;
  width:calc(50% - 3px);height:calc(100% - 6px);border-radius:999px;
  background:var(--hu-pill);box-shadow:var(--hu-pill-shadow);
  transition:transform .35s cubic-bezier(.22,1,.36,1);
}
:root[lang="en"] .nav-right .lang::before{transform:translateX(100%)}
.nav-right .lang b{
  position:relative;z-index:1;flex:1 0 0;
  display:inline-grid;place-items:center;
  min-width:0;min-height:0;font-weight:inherit;opacity:.5;cursor:pointer;
  transition:opacity .25s ease;
}
.nav-right .lang b:hover{opacity:.8 !important}
:root:not([lang="en"]) .nav-right .lang b:nth-of-type(1),
:root[lang="en"] .nav-right .lang b:nth-of-type(2){opacity:1 !important}
.lang .lang-btn{
  -webkit-appearance:none;appearance:none;
  position:relative;display:inline-grid;place-items:center;
  width:100%;min-width:40px;height:100%;margin:0;padding:0 10px;
  border:0;border-radius:999px;background:transparent;color:inherit;cursor:pointer;
  font:inherit;letter-spacing:inherit;text-transform:inherit;line-height:1;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
/* 터치 타겟: 트랙(30~36px)보다 큰 44px 히트 영역을 보이지 않게 확장 */
.lang .lang-btn::after{content:'';position:absolute;left:0;right:0;top:-7px;bottom:-7px}

/* ── 키보드 포커스 — 선명한 블루 링 ── */
.nav-right .nav-ic:focus-visible,
.nav-right .nav-burger:focus-visible,
.nav-right .lm-account-btn:focus-visible{
  outline:2px solid var(--hu-focus);outline-offset:-3px;
}
.lang .lang-btn:focus-visible{outline:2px solid var(--hu-focus);outline-offset:-2px}

/* ── 로그인 상태 칩(.lm-account, login-modal.js 가 계정 아이콘 자리에 끼움) ──
   보더 없는 옅은 틴트 필 + 이름 + 캐럿 */
.nav-right .lm-account-btn{
  height:30px;margin:0 0 0 2px;padding:0 10px 0 8px;gap:7px;
  border:0;border-radius:999px;background:var(--hu-tint);
  font:600 12px/1 'Manrope',system-ui,sans-serif;letter-spacing:.01em;text-transform:none;
  color:var(--hu-ink);transition:background-color .2s ease;
}
.nav-right .lm-account-btn:hover{background:var(--hu-tint-strong)}
.nav-right .lm-account-btn > svg{width:18px;height:18px;opacity:1;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.nav-right .lm-account-caret{width:11px;height:11px;opacity:.6}

/* ── 터치 기기(≤1279): mobile.css 가 .nav-ic/.nav-burger 를 44px !important,
   .lang b 를 44px 그리드로 키운다 → 트랙은 36px 로 두고 b 의 44px 강제는 푼다. ── */
@media (max-width:1279px){
  .nav-right .nav-ic,.nav-right .nav-burger{margin:0}
  .nav-right .nav-burger{margin-right:-10px}
  .nav-right .lang{height:32px;margin:0 6px 0 0;font-size:11.5px}
  .nav-right .lang b{min-width:0;min-height:0}
  .lang .lang-btn{min-width:44px;padding:0 10px}
  .lang .lang-btn::after{top:-6px;bottom:-6px}
}
