﻿/* =====================================================
 COMMON RENEW STYLES
 리뉴얼된 모든 페이지가 공유하는 디자인 토큰 / 리셋 / 버튼 /
 GNB / Footer / 상담모달 / 공용 섹션 헤딩 패턴.
 페이지별 전용 스타일(Hero, 업종선택, 각 섹션 등)은
 main.css 등 개별 페이지 CSS에 둔다.
===================================================== */

/* =====================================================
 TOKENS
===================================================== */
:root { 
 --colors-primary: #306AFF; 
 --colors-primary-hover: #164BD3; 
 --colors-primary-light: #ECF1FF; 
 --colors-secondary: #80A1FF; 
 --colors-accent: #7900D9; 
 --colors-accent-btn: #7C3AED; 
 --colors-accent-light: #EFE3FF; 

 --colors-surface: #FFFFFF; 
 --colors-background: #FCFCFC; 
 --colors-dark: #242424; 

 --colors-border: #E5E5EC; 
 --colors-border-strong: #AEB1B9; 
 --colors-border-light: rgba(0, 0, 0, 0.06); 
 --colors-border-dark: rgba(255, 255, 255, 0.08); 

 --colors-text-heading: #111827; 
 --colors-text-body: #374151; 
 --colors-text-muted: #6B7280; 
 --colors-text-primary: #25252C; 
 --colors-text-secondary: #50505A; 
 --colors-text-tertiary: #ADAFB4; 
 --colors-text-disable: #8A8A9A; 

 --colors-success: #04B014; 
 --colors-warning: #FFAA00; 
 --colors-error: #EF4444; 
 --colors-button-disabled: #E5E5EC; 
 --colors-green: #00840C; /* 부가서비스 "게이트웨이" 탭 테마 색상 (탭 활성 배경/뱃지 글자/강조텍스트에서 재사용) */

 --border-radius-xs: 3px; 
 --border-radius-md: 8px; 
 --border-radius-lg: 12px; 
 --border-radius-xl: 24px; 
 --border-radius-full: 9999px; 

 --ease-smooth: cubic-bezier(0.16, 1, 0.3, 1); 

 /* 상담모달 등이 스크롤을 잠글 때(overflow:hidden) 사라지는 스크롤바 폭만큼
 JS(main.js의 refreshScrollLock)가 채워 넣는 값. 기본은 0.
 뷰포트 우측 기준으로 배치되는 요소는 padding-right든 right offset이든
 이 변수를 참조하기만 하면, 화면 폭 변화로 인한 흔들림이 자동으로 없어진다. */
 --scroll-lock-offset: 0px; 
 } 

/* =====================================================
 RESET / BASE
 리뉴얼된 페이지는 <body class="page-renew">로 감싼다.
 :where() 로 스코프를 감싸 특정도(specificity)를 0으로 만든다.
 그래야 .btn--* 같은 단일 클래스 컴포넌트 규칙이 이 리셋보다 항상 우선한다.
===================================================== */
:where(.page-renew, .page-renew *, .page-renew *::before, .page-renew *::after) { 
 box-sizing: border-box; 
 margin: 0; 
 padding: 0; 
 } 

.page-renew { 
 font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; 
 background: var(--colors-background); 
 color: var(--colors-text-primary); 
 letter-spacing: -0.025em; 
 -webkit-font-smoothing: antialiased; 
 padding-right: var(--scroll-lock-offset); 
 } 

:where(.page-renew) a { 
 text-decoration: none; 
 color: inherit; 
 } 

:where(.page-renew) button { 
 font-family: inherit; 
 cursor: pointer; 
 border: none; 
 background: none; 
 } 

:where(.page-renew) input,
:where(.page-renew) select,
:where(.page-renew) textarea { 
 font-family: inherit; 
 } 

.page-renew.no-scroll { 
 overflow: hidden; 
 height: 100vh; 
 } 

.wrap { 
 max-width: 1200px; 
 margin: 0 auto; 
 padding: 0 32px; 
 } 

.thin_txt { 
 font-weight: 200; 
 } 

/* 강조 텍스트 - 어떤 제목/문구 안에서든 <span class="accent">로 감싸면 primary color가 된다.
 카드별로 다른 강조색을 써야 하는 특수한 경우(예: .bento-card__title .accent)는 그 자리에서
 더 구체적인 선택자로 이 기본값을 오버라이드한다. */
:where(.page-renew) .accent { color: var(--colors-primary); } 

/* =====================================================
 SECTION HEADING (공용 섹션 타이틀 패턴)
===================================================== */
section.sec { background: #fff; padding: 160px 0; } 
.sec { padding: 96px 0; } 
.sec-header { margin: 0 auto 56px; text-align: center; } 
.sec-header.align-left { margin: 0 0 56px; text-align: left; max-width: 800px; } 
.sec-title { 
 font-size: 2.25rem; 
 font-weight: 800; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-primary); 
 line-height: 1.28; 
 } 
.sec-sub { 
 font-size: 1.25rem; 
 color: var(--colors-text-secondary); 
 margin-top: 10px; 
 line-height: 1.5; 
 } 
.sec-sub.tertiary { color: var(--colors-text-tertiary); } 

/* =====================================================
 BUTTONS
===================================================== */
.btn { 
 display: inline-flex; 
 align-items: center; 
 justify-content: center; 
 gap: 8px; 
 white-space: nowrap; 
 text-align: center; 
 cursor: pointer; 
 border: 1px solid transparent; 
 border-radius: var(--border-radius-full); 
 padding: 8px 20px; 
 font-family: inherit; 
 font-weight: 700; 
 font-size: 0.875rem; 
 line-height: 24px; 
 letter-spacing: -0.025em; 
 transition: background-color .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease, color .2s ease; 
 } 
/* gap은 자식이 1개뿐인 텍스트 전용 버튼엔 영향이 없으므로 기본값으로 둔다 */

.btn--primary-lg { 
 background: var(--colors-primary); 
 border-radius: var(--border-radius-full); 
 padding: 14px 28px; 
 font-weight: 600; 
 font-size: 1.125rem; 
 color: #fff; 
 } 
.btn--primary-lg:hover { background: var(--colors-primary-hover); transform: translateY(-2px); } 

.btn--outline-lg { 
 border-color: var(--colors-text-tertiary); 
 border-radius: var(--border-radius-full); 
 padding: 15px 29px; 
 font-weight: 600; 
 font-size: 1.125rem; 
 color: #fff; 
 background: none; 
 } 
.btn--outline-lg:hover { background: rgba(255, 255, 255, 0.08); transform: translateY(-2px); } 

.btn--ghost-primary-lg { 
 background: transparent; 
 border: 1px solid var(--colors-primary); 
 border-radius: var(--border-radius-full); 
 padding: 13px 29px; 
 font-weight: 600; 
 font-size: 1.05rem; 
 color: var(--colors-primary); 
 } 
.btn--ghost-primary-lg:hover { background: var(--colors-primary-light); } 

.btn--solid-primary { 
 background: var(--colors-primary); 
 color: #fff; 
 border-radius: var(--border-radius-lg); 
 padding: 12px 20px; 
 font-weight: 700; 
 font-size: 1rem; 
 width: 100%; 
 justify-content: center; 
 } 
.btn--solid-primary:hover { background: var(--colors-primary-hover); } 

.btn--solid-accent { 
 background: var(--colors-accent); 
 color: #fff; 
 border-radius: var(--border-radius-lg); 
 padding: 12px 20px; 
 font-weight: 700; 
 font-size: 1rem; 
 width: 100%; 
 justify-content: center; 
 } 
.btn--solid-accent:hover { opacity: .9; } 

/* =====================================================
 BUTTON 컴포넌트 (Figma: Button, node 51:135)
 home/comp/button.html 에서 전체 변형을 확인할 수 있다.
 family(색상) + .btn--icon(아이콘 유무) 조합으로 11개 변형을 구성.
 예) <button class="btn btn--primary btn--icon"><i class="fa-solid fa-headset"></i> 상담 신청</button>
===================================================== */
.btn--icon { padding-left: 18px; } 
.btn--bordered { padding: 8px 20px; } 
.btn--bordered.btn--icon { padding-left: 18px; } 

.btn--primary { background: var(--colors-primary); color: var(--colors-background); } 
.btn--primary:hover { background: var(--colors-primary-hover); } 

.btn--white { background: var(--colors-background); color: var(--colors-text-primary); } 
.btn--white:hover { background: var(--colors-border); } 

.btn--white-outline { 
 background: #fff; 
 border-color: var(--colors-border); 
 color: var(--colors-text-secondary); 
 } 
.btn--white-outline:hover { border-color: var(--colors-primary); color: var(--colors-primary); } 

.btn--ghost-primary { background: transparent; border-color: var(--colors-primary); color: var(--colors-primary); } 
.btn--ghost-primary:hover { background: var(--colors-primary-light); } 

.btn--ghost-white { background: transparent; border-color: var(--colors-text-tertiary); color: var(--colors-background); } 
.btn--ghost-white:hover { background: rgba(255, 255, 255, 0.1); } 

.btn--disabled,
.btn:disabled { 
 background: var(--colors-button-disabled); 
 color: var(--colors-text-disable); 
 cursor: not-allowed; 
 pointer-events: none; 
 } 
.btn--disabled.btn--icon,
.btn:disabled.btn--icon { color: var(--colors-text-secondary); } 

/* "자세히 보기" 류 링크형 버튼 공통 구조:
 <div class="btn_wrap"><a class="btn--pill-outline"><span>텍스트 <i>아이콘</i></span></a></div>
 겉은 div.btn_wrap, 그 안에 a(또는 button), 그 안에 텍스트/아이콘을 담는 span 순서로 구성한다.
 home/comp/button.html 에 예시가 있다. */
.btn_wrap { display: inline-block; } 
.btn_wrap .btn--pill-outline { 
 display: inline-flex; 
 align-items: center; 
 gap: 6px; 
 border: 1px solid var(--colors-border); 
 border-radius: var(--border-radius-full); 
 padding: 8px 16px; 
 font-size: 0.875rem; 
 color: var(--colors-text-secondary); 
 width: fit-content; 
 align-items: center; 
 transition: color .2s ease, border-color .2s ease; 
 } 
.btn--pill-outline.is-active,
.btn--pill-outline:hover { 
 border-color: var(--colors-primary); 
 color: var(--colors-primary); 
 } 
.btn--pill-outline i { 
 font-size: 0.7rem; 
 line-height: normal; 
 } 

.btn--cta-tel { 
 background: #fff; 
 color: var(--colors-primary); 
 border-radius: var(--border-radius-full); 
 padding: 14px 28px; 
 font-weight: 600; 
 font-size: 1rem; 
 } 
.btn--cta-outline { 
 background: rgba(255, 255, 255, 0.15); 
 border: 1px solid rgba(255, 255, 255, 0.25); 
 color: rgba(255, 255, 255, 0.9); 
 border-radius: var(--border-radius-full); 
 padding: 15px 29px; 
 font-weight: 600; 
 font-size: 1rem; 
 } 
.btn--cta-outline:hover { background: rgba(255, 255, 255, 0.22); } 

/* =====================================================
 FAB (플로팅 액션 버튼) 컴포넌트
 home/comp/button.html 의 "FAB" 그룹 참고.
 원형 아이콘 전용 버튼. 색상은 기본(.btn--fab)과 .btn--fab-primary 중 하나.
 예) <button type="button" class="btn--fab btn--fab-primary"><i class="fa-solid fa-headset"></i></button>
===================================================== */
.btn--fab { 
 display: inline-flex; 
 align-items: center; 
 justify-content: center; 
 width: 52px; 
 height: 52px; 
 border-radius: 50%; 
 background: #fff; 
 color: var(--colors-primary); 
 border: 1px solid var(--colors-border); 
 box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); 
 font-size: 1.1rem; 
 cursor: pointer; 
 transition: transform .25s var(--ease-smooth), box-shadow .25s ease, background .25s ease, color .25s ease; 
 } 
.btn--fab:hover { transform: scale(1.08); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); } 
.btn--fab.btn--fab-primary { 
 background: var(--colors-primary); 
 color: #fff; 
 border-color: transparent; 
 box-shadow: 0 6px 24px rgba(48, 106, 255, 0.4); 
 } 
.btn--fab.btn--fab-primary:hover { 
 background: var(--colors-primary-hover); 
 box-shadow: 0 10px 32px rgba(48, 106, 255, 0.5); 
 } 
.btn--fab.js-kakao-btn {
    background: #ffdd00;
    border: 1px solid #edce00;
}
.btn--fab.js-kakao-btn img { border-radius: 50%; }
.btn--kakao {
    background: #ffdd00;
    color: #3a1d1d;
    border: 1px solid #edce00;
}
.btn--fab.js-kakao-btn.blue-type {
    background: var(--colors-primary); 
     border: 1px solid var(--colors-primary); 
}
.floating-actions { 
 position: fixed; 
 right: calc(32px + var(--scroll-lock-offset)); 
 bottom: 42px; 
 z-index: 2; 
 display: flex; 
 flex-direction: column; 
 gap: 12px; 
 } 

/* 호버 시 버튼 왼쪽에 라벨 툴팁 - data-tooltip 값을 그대로 보여준다.
 예) <button class="btn--fab" data-tooltip="원격 지원">...</button> */
.btn--fab[data-tooltip] { position: relative; } 
.btn--fab[data-tooltip]::after { 
 content: attr(data-tooltip); 
 position: absolute; 
 right: calc(100% + 12px); 
 top: 50%; 
 transform: translateY(-50%) translateX(4px); 
 background: var(--colors-dark); 
 color: #fff; 
 font-size: 0.8125rem; 
 font-weight: 600; 
 letter-spacing: -0.025em; 
 white-space: nowrap; 
 padding: 6px 12px; 
 border-radius: var(--border-radius-md); 
 box-shadow: 0 4px 12px rgba(0, 0, 0, .15); 
 opacity: 0; 
 visibility: hidden; 
 pointer-events: none; 
 transition: opacity .2s ease, transform .2s ease, visibility .2s ease; 
 } 
.btn--fab[data-tooltip]:hover::after { 
 opacity: 1; 
 visibility: visible; 
 transform: translateY(-50%) translateX(0); 
 } 
@media (max-width: 768px) { 
 .floating-actions { right: calc(16px + var(--scroll-lock-offset)); bottom: 16px; } 
 } 

/* =====================================================
 FLOATING CHATBOT PANEL
 .floating-actions 안의 #chatbotTrigger(.btn--fab)가 토글하는 대화창.
 실제 대화 로직은 없고(추후 연동 예정), "부가서비스 안내"/"제품 소개 보기"는
 goToSection() 재사용, "상담 신청하기"는 기존 [data-consult-open] 위임을 그대로 재사용한다.
===================================================== */
.chatbot-panel { 
 position: fixed; 
 right: calc(32px + var(--scroll-lock-offset)); 
 bottom: 230px; 
 z-index: 46; 
 width: 380px; 
 max-width: calc(100vw - 32px); 
 max-height: 600px; 
 display: flex; 
 flex-direction: column; 
 background: var(--colors-background); 
 border: 1px solid var(--colors-border); 
 border-radius: 12px; 
 box-shadow: 0 16px 48px rgba(0, 0, 0, 0.16), 0 2px 12px rgba(0, 0, 0, 0.06); 
 overflow: hidden; 
 opacity: 0; 
 visibility: hidden; 
 transform: translateY(16px) scale(.97); 
 transform-origin: bottom right; 
 transition: opacity .15s ease, visibility .15s ease, transform .15s var(--ease-smooth); 
 } 
.chatbot-panel.show { opacity: 1; visibility: visible; transform: translateY(0) scale(1); } 

.chatbot-panel__header { 
 flex-shrink: 0; 
 display: flex; 
 align-items: center; 
 justify-content: space-between; 
 padding: 12px 10px 13px 20px; 
 background: #fff; 
 border-bottom: 1px solid var(--colors-border); 
 } 
.chatbot-panel__title { font-weight: 600; font-size: 1rem; line-height: 26px; letter-spacing: -0.025em; color: var(--colors-text-primary); } 
.chatbot-panel__close { 
 width: 28px; 
 height: 28px; 
 border-radius: 50%; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: none; 
 color: var(--colors-text-secondary); 
 cursor: pointer; 
 } 
.chatbot-panel__close:hover { background: var(--colors-border); color: var(--colors-text-primary); } 

.chatbot-panel__body { 
 height: 460px; 
 overflow-y: auto; 
 padding: 20px 14px; 
 display: flex; 
 flex-direction: column; 
 gap: 22px; 
 background: #E3EAFF; 
 } 
.chatbot-msg.chatbot-msg--bot { display: flex; align-items: flex-start; gap: 10px; } 
.chatbot-msg__avatar { 
 flex-shrink: 0; 
 width: 32px; 
 height: 32px; 
 border-radius: 50%; 
 background: var(--colors-primary); 
 color: var(--colors-background); 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 font-size: 0.9rem; 
 } 
.chatbot-msg--bot .chatbot-msg__bubble { 
 background: #fff; 
 border-radius: 4px 8px 8px 8px; 
 padding: 16px 18px; 
 font-size: 0.9rem; 
 font-weight: 400; 
 line-height: 1.6; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-primary); 
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); 
 max-width: 287px; 
 } 
.chatbot-msg__options { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; } 
.chatbot-msg__option { 
 width: 100%; 
 padding: 11px 14px; 
 background: var(--colors-primary-light); 
 border-radius: var(--border-radius-md); 
 font-family: inherit; 
 font-size: 0.875rem; 
 font-weight: 700; 
 letter-spacing: -0.025em; 
 color: var(--colors-primary); 
 text-align: center; 
 cursor: pointer; 
 transition: background .15s; 
 } 
.chatbot-msg__option:hover { background: #DCE7FF; } 
.chatbot-msg__notice { 
 font-size: 0.8rem; 
 font-weight: 400; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-disable); 
 line-height: 1.6; 
 margin-top: 22px; 
 max-width: 252px; 
 } 
.chatbot-msg.chatbot-msg--user { display: flex; justify-content: flex-end; } 
.chatbot-msg--user .chatbot-msg__bubble { 
 display: inline-block; 
 max-width: 85%; 
 background: var(--colors-primary); 
 color: #fff; 
 border-radius: 8px 4px 8px 8px; 
 padding: 12px 18px; 
 font-size: 0.9rem; 
 font-weight: 400; 
 line-height: 1.6; 
 letter-spacing: -0.025em; 
 text-align: right; 
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); 
 } 

.chatbot-panel__reset { display: flex; justify-content: flex-end; } 
.chatbot-panel__reset-btn { 
 display: inline-flex; 
 align-items: center; 
 gap: 8px; 
 padding: 6px 16px; 
 background: #fff; 
 color: var(--colors-primary); 
 border-radius: var(--border-radius-md); 
 font-family: inherit; 
 font-size: 0.875rem; 
 font-weight: 700; 
 letter-spacing: -0.025em; 
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); 
 cursor: pointer; 
 } 
.chatbot-panel__reset-btn i { font-size: 0.7rem; } 
.chatbot-panel__reset-btn:hover { background: var(--colors-primary-light); } 

.chatbot-panel__footer { 
 flex-shrink: 0; 
 display: flex; 
 align-items: center; 
 gap: 10px; 
 padding: 16px; 
 background: var(--colors-background); 
 } 
.chatbot-panel__input-wrap { 
 flex: 1; 
 min-width: 0; 
 padding: 11px 15px; 
 background: #fff; 
 border: 1px solid var(--colors-primary); 
 border-radius: var(--border-radius-md); 
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); 
 } 
.chatbot-panel__input { 
 width: 100%; 
 border: none; 
 outline: none; 
 background: none; 
 font-family: inherit; 
 font-size: 0.8125rem; 
 font-weight: 500; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-primary); 
 } 
.chatbot-panel__input::placeholder { color: var(--colors-text-tertiary); } 
.chatbot-panel__send { 
 flex-shrink: 0; 
 width: 43px; 
 height: 43px; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: var(--colors-primary); 
 color: var(--colors-background); 
 border-radius: var(--border-radius-md); 
 cursor: pointer; 
 } 
.chatbot-panel__send:hover { background: var(--colors-primary-hover); } 

@media (max-width: 768px) { 
 .chatbot-panel { right: calc(16px + var(--scroll-lock-offset)); bottom: 190px; width: 340px; } 
 } 

/* =====================================================
 BADGE 컴포넌트
 home/comp/badge.html 에서 전체 변형을 확인할 수 있다.
 size(.badge--sm/.badge--md/.badge--lg/.badge--xl) + color(.badge--primary/.badge--purple/.badge--amber/.badge--accent/.badge--green/.badge--solid-primary/.badge--red)
 조합으로 사용한다. 유료/무료 안내처럼 상태를 나타낼 때는 .badge--red(유료) /
 .badge--primary(무료, 기존 기본색) / .badge--amber(일부 유료)를 쓴다.
 예) <span class="badge badge--md badge--primary"><i class="fa-solid fa-check"></i> 기본 패키지</span>
===================================================== */
.badge { 
 display: inline-flex; 
 align-items: center; 
 gap: 4px; 
 border-radius: var(--border-radius-full); 
 font-weight: 700; 
 white-space: nowrap; 
 } 
.badge--sm { font-size: 0.8rem; padding: 5px 13px; } 
.badge--md { font-size: 0.8rem; padding: 8px 13px; } 
.badge--lg { 
 font-size: 1rem; 
 font-weight: 600; 
 padding: 8px 18px; 
 gap: 6px; 
 } 
/* 섹션 헤더 위에 크게 얹는 배지(예: bento-header) 전용 - Figma node 383:1146 */
.badge--xl { 
 font-size: 1.125rem; 
 font-weight: 600; 
 padding: 10px 24px; 
 gap: 5px; 
 } 

.badge--primary { background: var(--colors-primary-light); color: var(--colors-primary); } 
.badge--purple { background: #F1E0FF; color: #AB41FF; } 
.badge--amber { background: #FFEFCC; color: #F38100; } 
.badge--accent { background: var(--colors-accent-light); color: #AB41FF; } 
.badge--green { background: #DAF4D1; color: var(--colors-green); } 
.badge--solid-primary { background: var(--colors-primary); color: #fff; } 
.badge--red { background: #FDE2E2; color: var(--colors-error); } 

/* =====================================================
 CHECKBOX 컴포넌트
 home/comp/checkbox.html 에서 전체 상태를 확인할 수 있다.
 실제 <input type="checkbox">는 화면에서 숨기고(시각적으로만 감춤, 포커스는 유지),
 옆의 label 안 .checkbox-icon(span)이 체크 모양을 그린다. 체크마크는 SVG <use>로
 그리므로, 이 컴포넌트를 쓰는 페이지에는 #check 심볼 스프라이트가 한 번 있어야 한다
 (main.html 의 <body> 시작 부분 참고).
 예)
 <div class="checkbox-style-common">
 <input type="checkbox" class="checkbox-input" id="agree">
 <label class="checkbox-label" for="agree">
 <span class="checkbox-icon"><svg viewBox="0 0 12 10"><use href="#check"></use></svg></span>
 동의합니다
 </label>
 </div>
===================================================== */
.checkbox-style-common { display: inline-flex; align-items: center; } 
.checkbox-style-common .checkbox-input { 
 position: absolute; 
 width: 1px; 
 height: 1px; 
 margin: -1px; 
 overflow: hidden; 
 clip: rect(0, 0, 0, 0); 
 white-space: nowrap; 
 border: 0; 
 padding: 0; 
 } 
.checkbox-style-common .checkbox-label { 
 display: inline-flex; 
 align-items: center; 
 gap: 6px; 
 cursor: pointer; 
 user-select: none; 
 } 
.checkbox-style-common .checkbox-icon { 
 display: inline-flex; 
 align-items: center; 
 justify-content: center; 
 width: 16px; 
 height: 16px; 
 flex-shrink: 0; 
 border: 1px solid var(--colors-border); 
 border-radius: 4px; 
 background: #fff; 
 transition: background .15s ease, border-color .15s ease; 
 } 
.checkbox-style-common .checkbox-icon svg { 
 width: 10px; 
 height: 8px; 
 fill: none; 
 stroke: #fff; 
 stroke-width: 2; 
 stroke-linecap: round; 
 stroke-linejoin: round; 
 stroke-dasharray: 16; 
 stroke-dashoffset: 16; 
 transition: stroke-dashoffset .2s ease .05s; 
 } 

/* checked */
.checkbox-style-common .checkbox-input:checked + .checkbox-label .checkbox-icon { 
 background: var(--colors-primary); 
 border-color: var(--colors-primary); 
 animation: checkbox-wave .4s ease; 
 } 
.checkbox-style-common .checkbox-input:checked + .checkbox-label .checkbox-icon svg { stroke-dashoffset: 0; } 

/* focus */
.checkbox-style-common .checkbox-input:focus-visible + .checkbox-label .checkbox-icon { 
 outline: 2px solid var(--colors-primary); 
 outline-offset: 2px; 
 } 

/* disabled */
.checkbox-style-common .checkbox-input:disabled + .checkbox-label { opacity: 0.5; cursor: not-allowed; } 
.checkbox-style-common .checkbox-input:disabled + .checkbox-label .checkbox-icon { background: var(--colors-border); } 

/* svg 심볼 스프라이트는 눈에 보이지 않아야 한다 */
.checkbox-svg-symbol { position: absolute; width: 0; height: 0; overflow: hidden; } 

@keyframes checkbox-wave { 
 0% { transform: scale(1); } 
 50% { transform: scale(0.92); } 
 100% { transform: scale(1); } 
 } 

/* =====================================================
 GNB (header.html)
===================================================== */
.gnb { 
 position: fixed; 
 top: 0; left: 0; right: 0; 
 z-index: 3; 
 height: 76px; 
 display: flex; 
 align-items: center; 
 padding-right: var(--scroll-lock-offset); 
 transition: background .35s ease, box-shadow .35s ease, border-color .35s ease; 
 } 
.gnb.gnb--transparent { background: transparent; } 
.gnb.gnb--dark { 
 background: rgba(0, 0, 0, 0.78); 
 backdrop-filter: blur(20px); 
 -webkit-backdrop-filter: blur(20px); 
 } 
.gnb.gnb--light { 
 background: rgba(255, 255, 255, 0.92); 
 backdrop-filter: blur(20px); 
 -webkit-backdrop-filter: blur(20px); 
 } 

.gnb-inner { 
 max-width: 1280px; 
 margin: 0 auto; 
 padding: 0 32px; 
 width: 100%; 
 display: flex; 
 align-items: center; box-sizing: border-box; 
 } 

.gnb__logo { 
 display: flex; 
 align-items: center; 
 margin-right: 48px; 
 font-weight: 800; 
 font-size: 1.2rem; 
 letter-spacing: -0.5px; 
 flex-shrink: 0; 
 } 
.gnb__logo-text { font-size: inherit; font-weight: inherit; line-height: inherit; color: #fff; transition: color .3s; } 
.gnb.gnb--light .gnb__logo-text { color: var(--colors-text-primary); } 
.gnb__logo-accent { color: var(--colors-primary); } 
/* logo_wh_2.svg는 흰색으로 만들어진 파일이라 기본(transparent/dark 헤더)에는 필터 없이 그대로 쓰고,
 light 헤더(밝은 배경)에서만 invert로 검은색으로 뒤집는다 - 검은색 로고 파일을 따로 안 둬도 된다. */
.gnb__logo-text img { height: 22px; width: auto; display: block; transition: filter .3s; } 
.gnb.gnb--light .gnb__logo-text img { filter: invert(1); } 

.gnb__nav { display: flex; align-items: center; gap: 30px; flex: 1; min-width: 0; } 
.gnb__menu-item { 
 padding: 8px 14px; 
 border-radius: var(--border-radius-md); 
 font-size: 1rem; 
 font-weight: 400; 
 letter-spacing: -0.025em; 
 color: var(--colors-background); 
 transition: color .2s, background .2s; 
 } 
.gnb__menu-item:hover { background: rgba(255, 255, 255, 0.1); } 
.gnb.gnb--light .gnb__menu-item { color: var(--colors-text-primary); } 
.gnb.gnb--light .gnb__menu-item:hover { color: var(--colors-primary); background: var(--colors-primary-light); } 

/* GNB 드롭다운 - 마우스 호버 시 노출되는 서브메뉴 */
.gnb__nav-item { position: relative; } 
.gnb__nav-item .gnb__dropdown { 
 position: absolute; 
 top: calc(100% + 10px); 
 left: 50%; 
 transform: translateX(-50%) translateY(-6px); 
 background: #fff; 
 border: 1px solid var(--colors-border); 
 border-radius: var(--border-radius-lg); 
 box-shadow: 0 16px 48px rgba(0, 0, 0, 0.14); 
 padding: 10px; 
 min-width: 150px; 
 z-index: 2; 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .2s ease, visibility .2s ease, transform .2s ease; 
 } 
.gnb__nav-item:hover .gnb__dropdown { 
 opacity: 1; 
 visibility: visible; 
 transform: translateX(-50%) translateY(0); 
 } 
.gnb__dropdown .gnb__dropdown-item a { 
 display: block; 
 padding: 9px 14px; 
 border-radius: var(--border-radius-md); 
 font-size: 0.875rem; 
 color: var(--colors-text-secondary); 
 white-space: nowrap; 
 transition: color .2s, background .2s; 
 } 
.gnb__dropdown .gnb__dropdown-item a:hover { 
 color: var(--colors-primary); 
 background: var(--colors-primary-light); 
 } 
/* 지금 보고 있는 서브페이지에 해당하는 드롭다운 항목 표시 (데스크톱+모바일 드로어 공용,
 sub_common.js가 페이지별로 .is-current를 붙인다) */
.gnb__dropdown-item a.is-current { color: var(--colors-primary); font-weight: 700; } 
.gnb__mobile-dropdown .gnb__dropdown-item a.is-current { color: var(--colors-primary); font-weight: 700; } 

.gnb__actions { display: flex; align-items: center; gap: 16px; margin-left: auto; } 
/* 전체 서비스(사이트맵) 바로가기 - 옅은 primary 배경의 필(pill) 링크라
 gnb--transparent/--dark/--light 어떤 헤더 모드 위에서도 별도 색상 재정의 없이
 항상 같은 대비로 보인다 (원격지원/상담신청처럼 모드별 override가 필요 없다). */
.gnb__sitemap-link { 
 display: inline-flex; 
 align-items: center; 
 gap: 6px; 
 padding: 8px 16px; 
 border-radius: var(--border-radius-full); 
 background: var(--colors-primary-light); 
 color: var(--colors-primary); 
 font-size: 0.875rem; 
 font-weight: 700; 
 letter-spacing: -0.025em; 
 transition: background .2s, color .2s; 
 } 
.gnb__sitemap-link:hover { background: var(--colors-primary); color: #fff; } 
/* 원격지원(.btn--ghost-white)은 라이트 헤더 위에서는 보더/배경 없이
 텍스트만 어둡게 바뀐다 (Figma Header, node 51:176 white 변형 기준) */
.gnb.gnb--light .btn--ghost-white { 
 background: transparent; 
 border-color: transparent; 
 color: var(--colors-text-primary); 
 padding: 8px 20px; 
 } 
.gnb.gnb--light .btn--ghost-white.btn--icon { padding-left: 18px; } 
.gnb.gnb--light .btn--ghost-white:hover { background: var(--colors-primary-light); color: var(--colors-primary); } 

/* =====================================================
 GNB MOBILE (반응형 햄버거 버튼 + 좌측 슬라이드 드로어)
 768px 이하에서 .gnb__nav가 사라지는 대신 이 드로어로 전체 메뉴에 접근한다.
===================================================== */
.gnb__hamburger { 
 display: none; 
 align-items: center; 
 justify-content: center; 
 width: 40px; 
 height: 40px; 
 margin-right: 8px; 
 flex-shrink: 0; 
 font-size: 1.2rem; 
 color: #fff; 
 } 
.gnb.gnb--light .gnb__hamburger { color: var(--colors-text-primary); } 
.gnb__hamburger:hover { opacity: .75; } 

/* .gnb--light/--dark에 backdrop-filter가 걸려 있어서(필터는 fixed 자손의 containing block을
 자기 자신으로 만들어버린다) 이 두 엘리먼트는 header 로드 직후 JS(main.js)가
 body 바로 아래로 appendTo 해서 옮긴다 - .gnb 안에 남아있으면 스크롤로 gnb--light가
 붙는 순간 드로어 높이가 76px로 줄어들고 z-index도 .gnb 로컬 스택 안에 갇힌다.
 z-index는 페이지에서 가장 높은 챗봇 패널(46)보다 위에 두어 항상 최상단에 뜨게 한다. */
.gnb__mobile-overlay { 
 position: fixed; 
 inset: 0; 
 z-index: 48; 
 background: rgba(15, 23, 42, 0.45); 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .3s ease, visibility .3s ease; 
 } 
.gnb__mobile-overlay.show { opacity: 1; visibility: visible; } 

.gnb__mobile-nav { 
 position: fixed; 
 top: 0; left: 0; bottom: 0; 
 z-index: 49; 
 width: 300px; 
 max-width: 84vw; 
 background: #fff; 
 box-shadow: 8px 0 40px rgba(0, 0, 0, 0.16); 
 display: flex; 
 flex-direction: column; 
 transform: translateX(-100%); 
 transition: transform .35s var(--ease-smooth); 
 } 
.gnb__mobile-nav.show { transform: translateX(0); } 
/* 768px 이하에서만 쓰는 드로어/오버레이라 transform·opacity로 평소엔 안 보이지만,
 .show가 실수로 붙는 경우까지 대비해 768px 초과에서는 display까지 완전히 꺼둔다. */
@media (min-width: 769px) { 
 .gnb__mobile-nav,
 .gnb__mobile-overlay { display: none; } 
 } 

.gnb__mobile-nav-header { 
 display: flex; 
 align-items: center; 
 justify-content: space-between; 
 height: 76px; 
 padding: 0 7px 0 20px; 
 border-bottom: 1px solid var(--colors-border); 
 flex-shrink: 0; 
 } 
.gnb__mobile-nav-header .gnb__logo-text { color: var(--colors-text-primary); font-weight: bold; } 
/* 모바일 nav 배경은 항상 흰색 — 흰색 SVG 로고를 검정으로 고정 */
.gnb__mobile-nav-header .gnb__logo-text img { filter: invert(1); } 

.gnb__mobile-close { 
 width: 36px; height: 36px; 
 display: flex; align-items: center; justify-content: center; 
 color: var(--colors-text-secondary); 
 font-size: 1.15rem; 
 } 
.gnb__mobile-close:hover { color: var(--colors-text-primary); } 

.gnb__mobile-nav-body { flex: 1; overflow-y: auto; padding: 12px 12px 24px; } 

.gnb__mobile-nav-item + .gnb__mobile-nav-item { border-top: 1px solid var(--colors-border-light); } 
.gnb__mobile-menu-item { 
 display: flex; 
 align-items: center; 
 justify-content: space-between; 
 width: 100%; 
 padding: 16px 8px; 
 font-size: 1rem; 
 font-weight: 600; 
 color: var(--colors-text-primary); 
 text-align: left; 
 } 
.gnb__mobile-menu-item i { font-size: 0.8rem; color: var(--colors-text-tertiary); transition: transform .25s ease; } 
.gnb__mobile-nav-item.is-open .gnb__mobile-menu-item i { transform: rotate(180deg); } 

.gnb__mobile-dropdown { max-height: 0; overflow: hidden; transition: max-height .3s ease; } 
.gnb__mobile-nav-item.is-open .gnb__mobile-dropdown { max-height: 320px; } 
.gnb__mobile-dropdown .gnb__dropdown-item a { 
 display: block; 
 padding: 12px 8px 12px 20px; 
 font-size: 0.9rem; 
 color: var(--colors-text-secondary); 
 } 
.gnb__mobile-dropdown .gnb__dropdown-item a:hover { color: var(--colors-primary); } 

.gnb__mobile-nav-footer { 
 display: flex; 
 flex-direction: column; 
 gap: 10px; 
 padding: 20px 16px 20px; 
 border-top: 1px solid var(--colors-border); 
 flex-shrink: 0; 
 } 
.gnb__mobile-nav-footer .btn { width: 100%; } 
.gnb__mobile-nav-footer .gnb__sitemap-link { width: 100%; justify-content: center; } 
.gnb__mobile-nav-footer .btn.js-kakao-btn {
    gap: 4px;
}

@media (max-width: 768px) { 
 .gnb__hamburger { display: flex; } 
 } 

/* =====================================================
 FOOTER (footer.html)
===================================================== */
.footer { background: #1C1C24; padding: 52px 0 32px; } 
.footer__inner { max-width: 1200px; margin: 0 auto; padding: 0 32px; } 
.footer__top { 
 display: flex; 
 justify-content: space-between; 
 align-items: flex-start; 
 padding-bottom: 24px; 
 border-bottom: 1px solid rgba(255, 255, 255, 0.08); 
 margin-bottom: 24px; 
 gap: 24px; 
 } 
.footer__links { display: flex; gap: 20px; flex-wrap: wrap; } 
.footer__link { font-size: 0.9rem; color: rgba(255, 255, 255, 0.4); } 
.footer__link:hover { color: rgba(255, 255, 255, 0.75); } 
.footer__link--strong { font-weight: 700; color: rgba(255, 255, 255, 0.75); } 
.footer__brand { 
 text-align: right; 
 display: flex; 
 flex-wrap: wrap; justify-content: flex-end; 
 } 
.footer__brand-row { 
 display: flex; 
 align-items: center; 
 justify-content: flex-end; 
 gap: 8px; 
 width: 20%; 
 opacity: 0.3; 
 } 
.footer__brand-row img { 
 width: 100%; 
 } 
.footer__brand-sub { font-size: 0.75rem; color: rgba(255, 255, 255, 0.25); margin-top: 4px; width: 100%; } 
.footer__info p { font-size: 0.8rem; color: rgba(255, 255, 255, 0.25); line-height: 1.85; } 
.footer__copy { 
 font-size: 0.75rem; 
 color: rgba(255, 255, 255, 0.2); 
 text-align: center; 
 margin-top: 24px; 
 padding-top: 20px; 
 border-top: 1px solid rgba(255, 255, 255, 0.08); 
 } 

/* =====================================================
 INPUT 컴포넌트 (Figma node 217:2843 Text Input / 217:2861 Label / 217:2846 Label+Input)
 home/comp/input.html 에서 전체 변형을 확인할 수 있다.
 겉은 div.input-group(라벨+필드 세로 배치), 라벨은 label.input-label, 실제 입력은
 input/select/textarea에 공통으로 .input-field를 붙인다.
 예)
 <div class="input-group">
 <label class="input-label" for="name">성함 <span class="input-label__required">*</span></label>
 <input class="input-field" type="text" id="name" placeholder="이름을 입력해주세요">
 </div>
===================================================== */
.input-group { display: flex; flex-direction: column; gap: 6px; width: 100%; } 
.input-label { 
 font-size: 0.875rem; 
 font-weight: 700; 
 line-height: 24px; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-secondary); 
 } 
.input-label .input-label__optional { font-weight: 500; color: var(--colors-text-tertiary); } 
.input-label .input-label__required { font-weight: 500; color: var(--colors-error); } 

.input-field { 
 width: 100%; 
 height: 48px; 
 padding: 13px 17px; 
 border: 1px solid var(--colors-border); 
 border-radius: var(--border-radius-md); 
 background: #fff; 
 font-family: inherit; 
 font-weight: 500; 
 font-size: 0.875rem; 
 line-height: 24px; 
 letter-spacing: -0.025em; 
 color: var(--colors-text-primary); 
 outline: none; 
 resize: none; 
 transition: border-color .2s ease; 
 } 
.input-field::placeholder { color: var(--colors-text-tertiary); } 
.input-field:focus { border-color: var(--colors-primary); } 
.input-field:disabled { background: var(--colors-background); color: var(--colors-text-disable); cursor: not-allowed; } 
.input-field.is-invalid { border-color: var(--colors-error); } 
textarea.input-field { height: auto; min-height: 96px; padding-top: 13px; } 

/* -------------------------------------------------------
 SELECT FIELD — .input-field와 함께 쓰는 공통 셀렉트 컴포넌트
 사용법: <select class="input-field select-field">
------------------------------------------------------- */
.select-field { 
 appearance: none; 
 -webkit-appearance: none; 
 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M1 1l4.5 4.5L10 1' stroke='%236B7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E"); 
 background-repeat: no-repeat; 
 background-position: right 14px center; 
 padding-right: 40px; 
 cursor: pointer; 
 } 
.select-field:focus { outline: 2px solid var(--colors-primary-light); outline-offset: 0; } 

/* 필드 하단 에러 문구 - 기본은 숨김, JS가 .show를 붙이면 보인다(검증되면 다시 뗀다) */
.input-group .input-error { display: none; font-size: 0.8125rem; color: var(--colors-error); margin-top: -2px; } 
.input-group .input-error.show { display: block; } 

/* =====================================================
 CONSULT MODAL - 여러 페이지에서 공유하는 상담신청 모달 (실제 전송 연동은 TODO)
===================================================== */
.consult-modal { 
 position: fixed; 
 inset: 0; 
 z-index: 4; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: rgba(15, 23, 42, 0.45); 
 backdrop-filter: blur(8px); 
 -webkit-backdrop-filter: blur(8px); 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .3s ease, visibility .3s ease; 
 padding: 20px; 
 } 
.consult-modal.show { opacity: 1; visibility: visible; } 

/* 닫기 버튼 + 패널을 세로로 쌓고 우측 정렬한다 (Figma: 닫기 버튼이 패널 밖 우상단에 있음) */
.consult-modal__inner { 
 display: flex; 
 flex-direction: column; 
 align-items: flex-end; 
 gap: 10px; 
 max-width: 860px; 
 width: 100%; 
 transform: translateY(30px); 
 transition: transform .3s var(--ease-smooth); 
 } 
.consult-modal.show .consult-modal__inner { transform: translateY(0); } 

.consult-modal__close { 
 width: 36px; 
 height: 36px; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: none; 
 border: none; 
 color: #fff; 
 font-size: 1.4rem; 
 cursor: pointer; 
 } 
.consult-modal__close:hover { opacity: .8; } 

.consult-modal__panel { 
 background: #fff; 
 border-radius: var(--border-radius-lg); 
 width: 100%; 
 display: grid; 
 grid-template-columns: 1.1fr 1fr; 
 overflow: hidden; 
 box-shadow: 0 0 50px rgba(0, 0, 0, 0.15); 
 position: relative; 
 } 
.consult-modal__left { 
 background: var(--colors-primary-light) url('../img/renew/main_pop_back_01.png') center / cover no-repeat; 
 padding: 48px; 
 display: flex; 
 flex-direction: column; 
 gap: 20px; 
 position: relative; 
 } 
.consult-modal__left .main-tit { 
 font-size: 2.25rem; 
 font-weight: 800; 
 letter-spacing: -0.025em; 
 line-height: 1.28; 
 color: var(--colors-text-primary); 
 } 
.consult-modal__left .main-tit span { color: var(--colors-primary); } 
.consult-modal__left .sub_tit { font-size: 1.125rem; letter-spacing: -0.025em; color: var(--colors-text-secondary); line-height: 1.55; } 
.consult-modal__illustration { 
 display: flex; 
 align-items: flex-end; 
 justify-content: center; 
 overflow: hidden; 
 position: absolute; 
 bottom: 0px; 
 right: -50px; 
 } 
.consult-modal__illustration img { max-width: 100%; max-height: 100%; object-fit: contain; } 

.consult-modal__right { padding: 48px; } 
.consult-form { display: flex; flex-direction: column; gap: 32px; } 
.consult-form__fields { display: flex; flex-direction: column; gap: 12px; } 
.consult-form__footer { display: flex; flex-direction: column; gap: 10px; } 
.consult-form__agree-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; } 
/* 체크박스 자체 스타일은 .checkbox-style-common 공통 컴포넌트가 담당한다 */
.consult-form__agree .checkbox-label { font-size: 0.95rem; color: var(--colors-text-secondary); } 
.consult-form__agree-view { font-size: 0.95rem; color: var(--colors-text-tertiary); text-decoration: underline; } 
/* .btn.btn--solid-primary 공통 컴포넌트 기반. 배경/글자색/hover/:disabled 회색 처리는
 전부 .btn 계열 공통 규칙이 담당하고, 여기서는 Figma 팝업 디자인에 맞는
 radius/font-weight/padding 차이만 얹는다. */
.consult-form__submit { 
 padding: 14px 20px; 
 border-radius: var(--border-radius-md); 
 font-weight: 600; 
 margin-top: 8px; 
 } 

/* =====================================================
 CONSULT CHOICE MODAL - 헤더/floating 상담신청 버튼 → 유형 선택 팝업
 오버레이 셸 패턴(fixed/blur/opacity-visibility/translateY 트랜지션)은
 alert-modal · sales-modal과 동일하다. 새 모달 추가 시 이 패턴을 따른다.
===================================================== */
.consult-choice {
  position: fixed;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s ease, visibility .3s ease;
  padding: 20px;
}
.consult-choice.show { opacity: 1; visibility: visible; }
.consult-choice__inner {
  position: relative;
  background: #fff;
  border-radius: var(--border-radius-lg);
  width: 100%;
  max-width: 360px;
  padding: 40px 28px 28px;
  box-shadow: 0 0 50px rgba(0, 0, 0, 0.15);
  transform: translateY(30px);
  transition: transform .3s var(--ease-smooth);
}
.consult-choice.show .consult-choice__inner { transform: translateY(0); }
.consult-choice__close {
  position: absolute;
  top: 12px; right: 12px;
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  background: none; border: none;
  color: var(--colors-text-tertiary);
  font-size: 1.1rem;
  cursor: pointer;
}
.consult-choice__close:hover { color: var(--colors-text-primary); }
.consult-choice__title {
  font-size: 1.25rem;
  font-weight: 800;
  text-align: center;
  color: var(--colors-text-primary);
  margin: 0 0 20px;
}
.consult-choice__btns {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.consult-choice__btn {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  padding: 18px 20px;
  border: 1px solid var(--colors-border);
  border-radius: var(--border-radius-md);
  background: none;
  text-align: left;
  cursor: pointer;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.consult-choice__btn-icon {
  width: 44px; height: 44px;
  flex-shrink: 0;
  border-radius: 12px;
  background: var(--colors-primary-light);
  display: flex; align-items: center; justify-content: center;
  transition: background .2s ease;
}
.consult-choice__btn-icon i { font-size: 1.25rem; color: var(--colors-primary); transition: color .2s ease; }
.consult-choice__btn-text { display: flex; flex-direction: column; gap: 8px; }
.consult-choice__btn-label { font-size: 1rem; font-weight: 700; color: var(--colors-text-primary); }
.consult-choice__btn-desc {
    font-size: 0.9rem;
    color: var(--colors-text-secondary);
    line-height: 1.4;
}
.consult-choice__btn:hover {
  border-color: var(--colors-primary);
  box-shadow: 0 0 20px rgba(48, 106, 255, 0.2);
}
.consult-choice__btn:hover .consult-choice__btn-icon { background: var(--colors-primary); }
.consult-choice__btn:hover .consult-choice__btn-icon i { color: #fff; }
.consult-choice__btn:hover .consult-choice__btn-label { color: var(--colors-primary); }
@media (min-width: 769px) {
  .consult-choice__inner { max-width: 560px; }
  .consult-choice__btns { flex-direction: row; }
  .consult-choice__btn { flex: 1; flex-direction: column; align-items: center; justify-content: flex-start; padding: 28px 16px 22px; text-align: center; }
  .consult-choice__btn-icon {  }
  .consult-choice__btn-text { align-items: center; }
}

/* =====================================================
 IMAGE MODAL - 이미지를 크게 보여주는 공용 확대 모달. CONSULT MODAL과 동일한
 오버레이 셸(고정 전체화면 + 블러 배경 + .show 토글 + 우상단 닫기 버튼)을
 그대로 쓴다. 마크업은 AtpCommon.initImageModal()이 <body> 끝에 직접
 붙이므로(별도 include 불필요), 페이지에는 아무 것도 두지 않아도 된다 -
 클릭 트리거가 될 엘리먼트에 data-image-modal 속성만 붙이면 된다.
===================================================== */
.image-modal { 
 position: fixed; 
 inset: 0; 
 z-index: 3; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: rgba(15, 23, 42, 0.45); 
 backdrop-filter: blur(8px); 
 -webkit-backdrop-filter: blur(8px); 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .3s ease, visibility .3s ease; 
 padding: 20px; 
 } 
.image-modal.show { opacity: 1; visibility: visible; } 
.image-modal .image-modal__inner { 
 display: flex; 
 flex-direction: column; 
 align-items: flex-end; 
 gap: 10px; 
 max-width: 550px; 
 max-height: 90vh; 
 width: 100%; 
 transform: translateY(30px); 
 transition: transform .3s var(--ease-smooth); 
 } 
.image-modal.show .image-modal__inner { transform: translateY(0); } 
.image-modal .image-modal__close { 
 width: 36px; 
 height: 36px; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: none; 
 border: none; 
 color: #fff; 
 font-size: 1.4rem; 
 cursor: pointer; 
 } 
.image-modal .image-modal__close:hover { opacity: .8; } 
.image-modal .image-modal__img { 
 width: 100%; 
 max-height: calc(90vh - 46px); 
 object-fit: contain; 
 border-radius: var(--border-radius-lg); 
 background: #fff; 
 box-shadow: 0 0 50px rgba(0, 0, 0, 0.15); 
 } 

/* =====================================================
 ALERT MODAL - 개인정보 수집 안내, 폼 제출 완료 메시지처럼 짧은 안내 문구를
 보여주는 공용 팝업. CONSULT/IMAGE MODAL과 같은 오버레이 셸을 쓰지만 좌우
 분할 없이 가운데 정렬된 단일 카드다. 아이콘/타이틀은 선택 사항이라 JS가
 비워두면 :empty로 자동 숨김, 본문은 내용이 길면 스크롤된다. 마크업은
 AtpCommon.initAlertModal()이 <body> 끝에 직접 붙이므로 페이지에는 아무 것도
 두지 않아도 된다 - AtpCommon.openAlertModal( { title, body, icon } )로 연다.
 상담모달 안에서도 띄울 수 있어야 해서(개인정보 안내) z-index를 상담/이미지
 모달보다 한 단계 높게 둔다.
===================================================== */
.alert-modal { 
 position: fixed; 
 inset: 0; 
 z-index: 4; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: rgba(15, 23, 42, 0.45); 
 backdrop-filter: blur(8px); 
 -webkit-backdrop-filter: blur(8px); 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .3s ease, visibility .3s ease; 
 padding: 20px; 
 } 
.alert-modal.show { opacity: 1; visibility: visible; } 
.alert-modal .alert-modal__inner { 
 position: relative; 
 background: #fff; 
 border-radius: var(--border-radius-lg); 
 width: 100%; 
 max-width: 420px; 
 max-height: 90vh; 
 padding: 40px 26px 26px; 
 display: flex; 
 flex-direction: column; 
 align-items: center; 
 text-align: center; 
 gap: 16px; 
 box-shadow: 0 0 50px rgba(0, 0, 0, 0.15); 
 transform: translateY(30px); 
 transition: transform .3s var(--ease-smooth); 
 } 
.alert-modal.show .alert-modal__inner { transform: translateY(0); } 
.alert-modal .alert-modal__close { 
 position: absolute; 
 top: 12px; 
 right: 12px; 
 width: 32px; 
 height: 32px; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: none; 
 border: none; 
 color: var(--colors-text-tertiary); 
 font-size: 1.125rem; 
 cursor: pointer; 
 } 
.alert-modal .alert-modal__close:hover { color: var(--colors-text-primary); } 
.alert-modal .alert-modal__icon { font-size: 2.5rem; color: var(--colors-primary); } 
.alert-modal .alert-modal__icon:empty { display: none; } 
.alert-modal .alert-modal__title { font-size: 1.25rem; font-weight: 800; color: var(--colors-text-primary); } 
.alert-modal .alert-modal__title:empty { display: none; } 
.alert-modal .alert-modal__body { 
 width: 100%; 
 max-height: 45vh; 
 overflow-y: auto; 
 font-size: 0.9375rem; 
 color: var(--colors-text-secondary); 
 line-height: 1.7; 
 text-align: center; 
 white-space: pre-line; 
 } 
.alert-modal .alert-modal__confirm { width: 100%; margin-top: 4px; } 

/* =====================================================
 SALES MODAL - GNB "고객지원 > 매출관리" 클릭 시 뜨는 공용 팝업. 정사각형 버튼
 3개(파트너사/가맹점(이지샵)/부가세 조회)를 눌러 외부 페이지로 이동한다.
 CONSULT/IMAGE/ALERT MODAL과 같은 오버레이 셸을 쓰며, 마크업은 헤더/푸터처럼
 include/sales_modal.html을 AtpCommon.initSalesModal()이 fetch해
 <body> 끝에 붙인다 - GNB가 모든 페이지에서 로드되므로 이 팝업도 페이지마다
 따로 마크업을 두지 않아도 어디서나 열 수 있다.
===================================================== */
.sales-modal { 
 position: fixed; 
 inset: 0; 
 z-index: 4; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: rgba(15, 23, 42, 0.45); 
 backdrop-filter: blur(8px); 
 -webkit-backdrop-filter: blur(8px); 
 opacity: 0; 
 visibility: hidden; 
 transition: opacity .3s ease, visibility .3s ease; 
 padding: 20px; 
 } 
.sales-modal.show { opacity: 1; visibility: visible; } 
.sales-modal .sales-modal__inner { 
 position: relative; 
 background: #fff; 
 border-radius: var(--border-radius-lg); 
 width: 100%; 
 max-width: 800px; 
 max-height: calc(100dvh - 40px); 
 overflow-y: auto; 
 padding: 40px 32px 32px; 
 text-align: center; 
 box-shadow: 0 0 50px rgba(0, 0, 0, 0.15); 
 transform: translateY(30px); 
 transition: transform .3s var(--ease-smooth); 
 } 
.sales-modal.show .sales-modal__inner { transform: translateY(0); } 
.sales-modal .sales-modal__close { 
 position: absolute; 
 top: 12px; 
 right: 12px; 
 width: 32px; 
 height: 32px; 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 background: none; 
 border: none; 
 color: var(--colors-text-tertiary); 
 font-size: 1.1rem; 
 cursor: pointer; 
 } 
.sales-modal .sales-modal__close:hover { color: var(--colors-text-primary); } 
.sales-modal .sales-modal__title { font-size: 1.6rem; font-weight: 800; color: var(--colors-text-primary); margin: 0 0 8px; } 
.sales-modal .sales-modal__desc { font-size: 1.1rem; color: var(--colors-text-secondary); margin: 0 0 24px; } 
.sales-modal .sales-modal__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } 
.sales-modal .sales-modal__item { display: flex; } 
.sales-modal .sales-modal__item a { 
 display: flex; 
 flex-direction: column; 
 align-items: center; 
 width: 100%; 
 padding: 28px 16px 22px; 
 border: 1px solid var(--colors-border); 
 border-radius: var(--border-radius-md); 
 color: var(--colors-text-primary); 
 transition: border-color .2s ease, background .2s ease; 
 } 
.sales-modal .sales-modal__item-icon { 
 width: 52px; 
 height: 52px; 
 border-radius: 14px; 
 background: var(--colors-primary-light); 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 margin-bottom: 16px; 
 transition: background .2s ease; 
 } 
.sales-modal .sales-modal__item-icon i { font-size: 1.4rem; color: var(--colors-primary); } 
.sales-modal .sales-modal__item-name { 
 font-size: 1.2rem; 
 font-weight: 700; 
 color: var(--colors-text-primary); 
 margin: 0 0 8px; 
 } 
.sales-modal .sales-modal__item-content { 
 display: flex; 
 flex-direction: column; 
 flex: 1; 
 width: 100%; 
 } 
.sales-modal .sales-modal__item-body { 
 flex: 1; 
 margin-bottom: 18px; 
 } 
.sales-modal .sales-modal__item-desc { 
 font-size: 0.9rem; 
 color: var(--colors-text-secondary); 
 line-height: 1.4; 
 margin: 0; 
 word-break: keep-all; 
 } 
.sales-modal .sales-modal__item-link { 
 display: inline-block; 
 font-size: 0.8rem; 
 font-weight: 600; 
 color: var(--colors-text-secondary); 
 border: 1px solid var(--colors-border); 
 border-radius: 6px; 
 padding: 6px 16px; 
 transition: border-color .2s ease, color .2s ease;     width: fit-content;
    margin: auto;
 } 
.sales-modal .sales-modal__item a:hover { 
 border-color: var(--colors-primary); 
 box-shadow: 0px 0px 20px rgba(48, 106, 255, 0.2); 
 } 
.sales-modal .sales-modal__item a:hover .sales-modal__item-link { 
 color: var(--colors-primary); 
 background: #dae4ff; 
 border-color: #dae4ff; 
 } 

/* 태블릿: 3열 유지하되 내부 여백·타이포 축소 */

/* 모바일: 1열 + 가로 카드 (아이콘 좌 · 텍스트 우) */
@media (max-width: 768px) { 
 .sales-modal { padding: 12px; } 
 .sales-modal .sales-modal__inner { padding: 36px 16px 20px; border-radius: var(--border-radius-md); } 
 .sales-modal .sales-modal__title { font-size: 1.1rem; } 
 .sales-modal .sales-modal__desc { font-size: 0.875rem; margin-bottom: 16px; } 
 .sales-modal .sales-modal__grid { grid-template-columns: 1fr; gap: 10px; } 
 /* grid 2열: [icon][content(body+link)] */
.sales-modal .sales-modal__item a { 
display: grid; 
grid-template-columns: 44px 1fr; 
column-gap: 9px; 
text-align: left; 
padding: 10px 10px; 
 } 
 .sales-modal .sales-modal__item-icon { 
 align-self: center; 
 width: 44px; 
 height: 44px; 
 margin-bottom: 0; 
 border-radius: 10px; 
 } 
 .sales-modal .sales-modal__item-icon i { font-size: 1.1rem; } 
 .sales-modal .sales-modal__item-content { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; } 
 .sales-modal .sales-modal__item-body { flex: 1; margin-bottom: 0; } 
 .sales-modal .sales-modal__item-name { font-size: 0.9rem; margin-bottom: 4px; } 
 .sales-modal .sales-modal__item-desc { font-size: 0.8rem; } 
 .sales-modal .sales-modal__item-link { 
 font-size: 0.75rem; 
 padding: 4px 7px; 
 } 
 } 

/* =====================================================
 PACKAGE CARD 컴포넌트 (추천 조합 카드)
 main.html(#section-package, PACKAGE_CONTENT로 업종별 렌더)과
 업종별 서브페이지(예: pharm.html의 추천 조합 섹션)가 공용으로 쓴다.
 예) <div class="package-grid"><div class="package-card">...</div></div>
===================================================== */
.wrap .package-grid, .inner .package-grid { display: flex; justify-content: center; gap: 30px; flex-wrap: wrap; } 
.package-grid .package-card { 
 background: #fff; 
 border: 1px solid var(--colors-border); 
 border-radius: 20px; 
 padding: 25px; 
 width: 100%; 
 max-width: 440px; 
 display: flex; 
 flex-direction: column; 
 } 
.package-card.package-card--featured { border-color: #B65BFF; box-shadow: 0 10px 16px #EFDBFF; } 
.package-card .package-card__badges { display: flex; gap: 8px; } 
.package-card .package-card__badges .badge--md { 
 font-size: 0.9rem; 
 } 
.package-card .package-card__title { font-size: 1.5rem; font-weight: 800; color: var(--colors-text-primary); margin-top: 10px; } 
.package-card .package-card__img { 
 border-radius: var(--border-radius-lg); 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 overflow: hidden; 
 margin-top: 20px; 
 } 
.package-card__img img { max-width: 100%; max-height: 100%; object-fit: contain; } 
.package-card .package-card__note { font-size: 1rem; color: var(--colors-text-tertiary); margin: 20px 0 20px; } 
.package-card--featured .package-card__note { color: rgba(171, 65, 255, 0.8); } 
.package-card .package-card__list { display: flex; flex-direction: column; gap: 14px; margin-bottom: 24px; height: 190px; } 
.package-card__list .package-card__list-item { display: flex; align-items: center; gap: 6px; font-size: 1rem; font-weight: 600; color: var(--colors-text-secondary); } 
.package-card__list-item i { color: var(--colors-primary); font-size: 1.125rem; } 
.package-card--featured .package-card__list-item i { color: var(--colors-accent); } 

/* =====================================================
 CTA SECTION 컴포넌트 (상담 신청 유도 섹션)
 main.html(#section-cta)과 업종별 서브페이지(예: pharm.html)가 공용으로 쓴다.
 예) <section id="section-cta" class="section-cta">
 <span class="cta-decor cta-decor--1"></span>
 <span class="cta-decor cta-decor--2"></span>
 <div class="wrap cta-inner">...</div>
 </section>
===================================================== */
section.section-cta { background: var(--colors-primary); padding: 80px 0; position: relative; overflow: hidden; } 
section.section-cta .cta-decor { position: absolute; border-radius: 50%; pointer-events: none; } 
.cta-decor.cta-decor--1 { width: 300px; height: 300px; background: rgba(255, 255, 255, 0.04); left: -93px; top: 123px; } 
.cta-decor.cta-decor--2 { width: 674px; height: 674px; background: rgba(255, 255, 255, 0.06); right: -150px; bottom: -200px; } 
.wrap.cta-inner { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; position: relative; z-index: 1; } 
.cta-inner .cta-eyebrow { font-size: 1.375rem; font-weight: 500; color: rgba(255, 255, 255, 0.7); } 
.cta-inner .cta-title { font-size: 2.5rem; font-weight: 700; color: #fff; letter-spacing: -0.5px; line-height: 1.3; margin-top: 12px; } 
.cta-title .cta-title__thin { font-weight: 300; } 
.cta-inner .cta-actions { display: flex; gap: 11px; flex-wrap: wrap; } 
.cta-actions.cta-actions--stack { display: grid; grid-template-columns: max-content; justify-items: stretch; justify-content: flex-end; gap: 11px; } 

/* =====================================================
 RESPONSIVE (공용 요소)
===================================================== */
/* br 태그 반응형 표시/숨김 유틸리티
 .show_N : 기본 숨김 → 뷰포트가 Npx 이하일 때만 보임(줄바꿈 추가)
 .hide_N : 기본 보임 → 뷰포트가 Npx 이하일 때 숨김(줄바꿈 제거)
 예) <br class="show_768"> 는 768px 이하에서만 줄바꿈을 만든다

 주의: .hide_N은 "보이는 상태"의 display 값을 절대 지정하지 않는다(과거엔 기본값으로
 display:block을 줬었는데, .gnb__actions처럼 display:flex가 필요한 컴포넌트에 이 클래스를
 같이 쓰면 동일 특정도(specificity)에서 그 flex를 덮어써버리는 문제가 있었다). "보이는 상태"는
 항상 컴포넌트 자신의 CSS(.gnb__actions { display:flex } 등)가 결정하게 두고, .hide_N은 오직
 "숨길 때 display:none"만 담당한다 - 그리고 그 none은 어떤 컴포넌트의 display보다도 반드시
 이겨야 하는 유틸리티이므로 !important를 쓴다(이 프로젝트에서 !important를 쓰는 유일한 예외).
 .show_N은 주로 <br>에만 쓰여서(그 자체로는 display 값이 무엇이든 줄바꿈이 살아있으면 되므로)
 기존 방식을 유지하되, 혹시라도 flex/grid가 필요한 요소에 쓰지 않도록 주의한다 - 그런 요소는
 이 공용 유틸리티 대신 그 컴포넌트 전용 CSS에서 미디어쿼리로 직접 처리한다. */
.show_1200, .show_992, .show_768, .show_576, .show_365 { display: none; } 


/* =====================================================
 BANNER POPUP
 광고·공지 배너 이미지 팝업. 최대 2개 동시 노출.
 data-banner-id 속성으로 쿠키 키를 분리하여 팝업별
 독립적인 "오늘 하루 보지 않기" 동작을 지원한다.
 이미지만 교체하면 재활용 가능.
===================================================== */
.banner-popup-bg { 
 position: fixed; 
 inset: 0; 
 background: rgba(0, 0, 0, 0.6); 
 z-index: 5; 
 } 
.banner-popup-bg.is-hidden { display: none; } 

/* 래퍼: 데스크톱에서 팝업을 가로 flex로 배치 */
.banner-popup-wrap { 
 position: fixed; 
 inset: 0; 
 display: flex; 
 flex-direction: row; 
 gap: 16px; 
 align-items: center; 
 justify-content: center; 
 z-index: 6; 
 padding: 20px; 
 box-sizing: border-box; 
 pointer-events: none; 
 } 
.banner-popup-wrap.is-hidden { display: none; } 

/* 개별 팝업 카드 */
.banner-popup { 
 pointer-events: auto; 
 position: relative; 
 background: #fff; 
 border-radius: 12px; 
 overflow: hidden; 
 width: 380px; 
 max-width: calc(50vw - 44px); 
 box-shadow: 0 12px 48px rgba(0, 0, 0, 0.28); 
 flex-shrink: 0; 
 } 
.banner-popup.is-hidden { display: none; } 

/* 상단 헤더 (닫기 버튼 영역) */
.banner-popup__header { 
 display: flex; 
 align-items: center; 
 justify-content: flex-end; 
 padding: 10px 12px; 
 border-bottom: 1px solid var(--colors-border); 
 min-height: 44px; 
 gap: 4px; 
 } 

/* "오늘 하루 보지 않기" 버튼 */
.banner-popup__today { 
 margin-right: auto; 
 background: none; 
 border: none; 
 font-size: 12px; 
 color: var(--colors-text-muted); 
 cursor: pointer; 
 padding: 5px 8px; 
 border-radius: 6px; 
 transition: background 0.15s, color 0.15s; 
 line-height: 1.4; 
 white-space: nowrap; 
 } 
.banner-popup__today:hover { 
 background: var(--colors-primary-light); 
 color: var(--colors-primary); 
 } 

/* X 닫기 버튼 */
.banner-popup__close { 
 display: flex; 
 align-items: center; 
 justify-content: center; 
 width: 30px; 
 height: 30px; 
 background: none; 
 border: none; 
 font-size: 16px; 
 color: var(--colors-text-muted); 
 cursor: pointer; 
 border-radius: 6px; 
 transition: background 0.15s, color 0.15s; 
 padding: 0; 
 flex-shrink: 0; 
 } 
.banner-popup__close:hover { 
 background: var(--colors-border); 
 color: var(--colors-dark); 
 } 

/* 이미지 영역 */
.banner-popup__img { 
 display: block; 
 line-height: 0; 
 } 
.banner-popup__img img { 
 width: 100%; 
 height: auto; 
 display: block; 
 } 
.banner-popup__img a { 
 display: block; 
 line-height: 0; 
 } 


/* 1300px 이하(노트북/작은 데스크탑)에서는 로고+네비(드롭다운 4개)+액션 버튼이
 .gnb-inner 폭을 넘어서 튀어나갈 수 있어서, 완전히 숨기기 전에 간격/패딩을
 먼저 좁혀 최대한 넘치지 않게 한다. */
@media (max-width: 1300px) { 
 .gnb__logo { margin-right: 24px; } 
 .gnb__nav { gap: 12px; } 
 .gnb__menu-item { padding: 8px 10px; font-size: 0.9375rem; } 
 .gnb__actions { gap: 10px; } 
 } 

@media (max-width: 1200px) { 
 section.sec { overflow: hidden; } 
 .gnb-inner { 
 padding: 0 2%; max-width: inherit
 } 

.wrap { 
 padding: 0 2%; 
 } 

 .show_1200 { display: block; } 
 .hide_1200 { display: none !important; } 

 .wrap .package-grid, .inner .package-grid { gap: 2%; } 

 .cta-inner .cta-title { font-size: 2rem; } 
 } 

@media (max-width: 992px) { 
.badge--lg { 
 padding: 8px 14px; 
 } 

 .show_992 { display: block; } 
 .hide_992 { display: none !important; } 

 .floating-actions { display: none; } 

 .package-grid .package-card { padding: 3%; width: 49%; } 

 .consult-modal__left { 
 padding: 8%; 
 gap: 10px; 
 } 
.consult-modal__illustration { 
 right: -2%; 
 width: 90%; 
 } 
 .consult-modal__right { 
 padding: 8%; 
 } 

 } 




@media (max-width: 768px) { 
 section.sec { 
 padding: 16% 0; 
 } 
 .sec-title { font-size: 2.2rem; } 
.sec-sub { 
 font-size: 1.1rem; 
 } 
 .sec-header { 
 margin: 0 auto 8%; 
 } 

 .show_768 { display: block; } 
 .hide_768 { display: none !important; } 

 .badge--lg { 
 padding: 6px 14px; 
 } 
 .badge--md { 
 font-size: 0.8rem; 
 padding: 5px 11px; 
 } 

 .gnb__nav { display: none; } 
 .consult-modal__panel { grid-template-columns: 1fr; max-height: 90vh; overflow-y: auto; } 

.footer { 

 padding: 7% 0 9%; 
 } 
.footer__inner { 

 padding: 0 3%; 
 } 

 .consult-modal__left { 
 padding: 6%; 
 } 
 .consult-modal__left .main-tit { 
 font-size: 1.8rem; 
 } 
.consult-modal__left .sub_tit { 
 font-size: 1rem; 
 } 
 .consult-modal__illustration { 
 right: 1%; 
 width: 50%; 
 } 
 .consult-modal__right { 
 padding: 6%; 
 } 

 .wrap .package-grid, .inner .package-grid { gap: 10px; } 
 .package-grid .pack_con_box { display: flex; margin-bottom: 7%; margin-top: 6%; gap: 10px; } 
 .package-grid .package-card { width: 100%; max-width: inherit; border-radius: 12px; } 
 .package-card .package-card__img { margin-top: 0px; width: 54%; } 
 .package-card .package-card__note { margin: 0px 0 11%; } 
 .package-card .package-card__list { gap: 10px; margin-bottom: 0%; height: inherit; } 
 .package-card .package-card__badges .badge--md { font-size: 0.8rem; } 

 .wrap.cta-inner { justify-content: center; } 
 .cta-inner .cta-eyebrow { text-align: center; } 
 .cta-inner .cta-title { text-align: center; font-size: 1.85rem; } 
 .cta-actions.cta-actions--stack { justify-content: center; } 


/* 모바일: 팝업 2개를 겹쳐서 쌓기 (앞·뒤 레이어 효과) */
 .banner-popup-wrap { 
 padding: 0; 
 } 
 .banner-popup { 
 position: absolute; 
 width: calc(100vw - 40px); 
 max-width: 340px; 
 top: 50%; 
 left: 50%; 
 transform: translate(-50%, -50%); 
 } 
 /* 첫 번째 팝업이 위에 */
 .banner-popup:nth-child(1) { z-index: 2; } 
 .banner-popup:nth-child(2) { z-index: 1; } 
 } 

@media (max-width: 576px) { 
 .gnb__logo-text img { 
 height: 18px; 
 } 

 .show_576 { display: block; } 
 .hide_576 { display: none !important; } 

 .package-grid .pack_con_box { display: block; } 
 .package-card .package-card__img { width: 100%; } 
 .package-card .package-card__note { margin: 5% 0 3%; } 
 .package-card .package-card__list { flex-wrap: wrap; flex-direction: inherit; } 
 .package-card__list .package-card__list-item { width: 48%; } 

 .input-field { 
 height: 38px; 
 padding: 8px 12px; 
 } 

 .btn--primary-lg,.btn--outline-lg, .btn--cta-outline,.btn--cta-tel { 
 padding: 11px 22px; 
 font-size: 1rem; 
 line-height: 18px; 
 } 
 .btn--ghost-primary-lg { 
 padding: 10px 24px; 
 font-size: 1rem; 
 } 


.badge--sm { 
 padding: 5px 10px; 
 } 
 .badge--xl { 
 font-size: 1rem; 
 font-weight: 600; 
 padding: 9px 17px; 
 gap: 5px; 
 } 

.gnb { 
 height: 54px; 
 } 

 .sec-title { 
 font-size: 1.6rem; 
 } 
 .sec-sub { 
 font-size: 1rem; 
 } 

 .consult-modal__inner { gap: 0px; } 

 .consult-modal__left .main-tit { 
 font-size: 1.4rem; 
 } 
 .consult-modal__left .sub_tit { 
 font-size: 0.9rem; 
 } 

 .consult-form { 
 gap: 18px; 
 } 
 .consult-form__submit { 
 padding: 10px 20px; 
 margin-top: 0px; 
 } 

 .package-card__list .package-card__list-item { font-size: 0.9rem; } 

 .cta-inner .cta-title { 
 text-align: center; 
 font-size: 1.6rem; 
 } 

 .consult-choice__btn-desc {
    font-size: 0.8rem;
}
 } 

@media (max-width: 365px) { 
 .show_365 { display: block; } 
 .hide_365 { display: none !important; } 
 } 

