@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css');

* { 
    font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif;

    word-break: keep-all;
}
/* ── [2026-09-08 2단계] 타이포그래피 토큰 ────────────────────────────────
   값은 도입 시점의 기존 값 그대로다(시각 변화 없음). 크기 위계를 바꿀 때는
   개별 선택자가 아니라 여기만 고친다. 이름은 크기가 아니라 '역할'이다.
     display  h1(미사용)     screen   h3               header   화면 제목(.location, h1)
     heading  h4 항목 제목   body-lg  h5               body     h6 / 기본 본문
     btn      버튼 라벨      caption  p · 단위 · 약관 pre
   html{font-size} 가 rem 의 기준이므로 전체 배율은 그쪽에서 조절한다. */
:root {
    --fs-display: 4rem;
    --lh-display: 5.2rem;
    --fs-h2: 3.2rem;
    --lh-h2: 4rem;
    --fs-screen: 2.4rem;
    --lh-screen: 3rem;
    --fs-header: 2rem;
    --lh-header: 3rem;
    --fs-heading: 1.8rem;
    --lh-heading: 2.2rem;
    --fs-body-lg: 1.6rem;
    --lh-body-lg: 2rem;
    --fs-body: 1.4rem;
    --lh-body: 1.8rem;
    --fs-btn: 1.3rem;
    --fs-caption: 1.2rem;
    --lh-caption: 1.6rem;
}

html {
    font-size: 11px; /* [2026-09-08] 10px→11px. rem 기준 +10%. h1~h6/p 와 그 line-height 가 전부 rem 이라 폰트·행간이 함께 커진다 */
    -webkit-text-size-adjust: 100%; /* iOS Safari 자동 텍스트 확대 방지 */
    text-size-adjust: 100%;
}
body{
    height: 100%;
    touch-action: pan-y;
}

*::-webkit-scrollbar {
    width: 8px;
}

*::-webkit-scrollbar-thumb {
    background-color: #ccc;
    border-radius: 10px;
}

*::-webkit-scrollbar-track {
    background-color: transparent;
    border-radius: 10px;
}

.js-btn-link {
  -webkit-touch-callout: none;
}

.js-btn-link[href] {
  pointer-events: none; /* 실수로 남은 href도 실제 링크로 동작 못하게 */
}

body.type-device.layerON{
    overflow: hidden !important;      /* body{overflow:hidden} 과 같은 특이도(0-0-1)를 이겨야 한다 */
    pointer-events: none !important;  /* .popupItem 예외를 아래에서 되살리므로 쌍으로 필요 */
    -webkit-touch-callout: none;
    -webkit-user-select: none;
}
body.type-device.layerON .popupItem{
    pointer-events: auto;
}

body.type-device.layerON #fullpage{
    touch-action: none;
}
body{
    background-color: #111;
    height: calc((var(--vh, 1vh) * 100) - 0px);
    overflow: hidden;
}
body > .wrap{
    background-color: #f5f5f5;
    width: 100%;
    height: 100%;
    /* max-width: 393px;
    max-height: 852px; */
    margin: 0 auto;
    margin-top: calc((var(--vh, 1vh) * 50) - 0px);
    transform: translateY(-50%);
    overflow: hidden;
    position: relative;
    border-radius: 30px;
    box-shadow: 0 12px 20px rgba(0,0,0,.3);

    padding-top: 65px;
}



h1 {font-size: var(--fs-display); line-height: var(--lh-display);}
h2 {font-size: var(--fs-h2); line-height: var(--lh-h2);}
h3 {font-size: var(--fs-screen); line-height: var(--lh-screen);}
h4 {font-size: var(--fs-heading); line-height: var(--lh-heading);}
h5 {font-size: var(--fs-body-lg); line-height: var(--lh-body-lg);}
h6 {font-size: var(--fs-body); line-height: var(--lh-body);}
p {font-size: var(--fs-caption); line-height: var(--lh-caption);}


/* ── [2026-09-08 2단계] 역할별 크기 고정 ──────────────────────────────────
   같은 역할인데 화면마다 h4/h5 가 섞여 쓰여 크기가 들쭉날쭉했다
   (.programName h4×23·h5×11 / .textBox .title h4×14·h5×2 / .infoBox .Num h4×10·h5×4).
   역할 클래스에 크기를 고정해 태그와 무관하게 맞춘다. 앞으로 새 화면이 어떤
   h 태그를 쓰든 이 규칙이 이긴다(클래스 0-2-0 > 태그 0-0-1).
   layout/contents 가 아니라 common.css 에 두는 이유: iOS 사본과 이중 관리하지
   않기 위해서다. 이 파일은 두 분기 모두에서 로드된다. */
.textBox .programName,
.textBox .title,
.infoBox .Num {
    font-size: var(--fs-heading);
    line-height: var(--lh-heading);
}

/************************     BUTTON      ************************/


.btn {display: inline-block; vertical-align: middle; font-size: inherit; }
.btn.style-line{border:1px solid var(--colorWhite);color: var(--colorWhite);}
.btn.style-line-b{border:1px solid #333;color: #000;font-weight: 600;}
.btn.style-line-blue{border:1px solid var(--colorBlue);color: var(--colorBlue);}
.btn.style-line-gray200{border:1px solid var(--colorGray200);}
.btn.style-line-gray600{border:1px solid var(--colorGray600);}
.btn.style-lineB-gray600{border-bottom:1px solid var(--colorGray600); color: var(--colorGray600);}
.btn.style-fill{background-color:var(--colorWhite) ;color: var(--colorMain);font-weight: 600;}
.btn.style-fill-white{background-color:var(--colorWhite) ;color: var(--colorBlue);font-weight: 600;}
.btn.style-fill-blue{background-color:var(--colorBlue) ;color: var(--colorWhite);font-weight: 600;}
.btn.style-fill-dark{background-color:var(--colorGray800) ;color: var(--colorWhite);font-weight: 600;}
.btn.style-fill-navy{background-color:var(--colorMain) ;color: var(--colorWhite);}
.btn.style-fill-gray{background-color:var(--colorGray200) ;color: var(--colorBlack);}
.btn.style-fill-blueM{background-color:var(--colorBlue) ;color: var(--colorWhite);font-weight: 600;}

.size-sm{
    height: 45px;
    line-height: 45px;
    padding: 0 25px;

    border-radius: 30px !important;
}
.size-m{
    height: 55px;
    line-height: 55px;
    padding: 0 25px;
    border-radius: 20px !important;
}

[class*="type-circle"]{
    border-radius: 50% !important;
}
.type-circleS{
    width: 35px;
    height: 35px;
}
.type-circleM{
    width: 50px;
    height: 50px;
}
    .type-circleM .icon{
        width: 22px;
        height: 22px;
    }
.btnBox .btn {
    border-radius: 16px;
    font-size: var(--fs-btn);
    font-weight: 600;
}
.btnBox.set-sqauretoAuto{
    white-space: nowrap;
}
.btnBox.set-sqauretoAuto .btn {
    height: 50px;
    min-width: 50px;
    margin-right: 6px;
}
.btnBox.set-sqauretoAuto .btn:nth-child(1) {
    width: 50px;
}
.btnBox.set-sqauretoAuto .btn:nth-child(1).icon-wrap .icon{
    width: 20px;
    height: 20px;
}
.btnBox.set-sqauretoAuto .btn:nth-child(2) {
    width: calc(100% - 50px - 7px);
}


.btnBox.set-half{
    white-space: nowrap;
}
.btnBox.set-half .btn {
    margin-right: 6px;
    width: calc(50% - 3px);
    text-align: center;
}
.btnBox.set-full .btn {
    display: block;
    margin-top: 6px;
    margin-left: unset !important;
    width: 100%;
    text-align: center;
}
.btnBox.set-full .btn:first-child {
    margin-top: unset;
}


.btnBox.set-1to2{
    white-space: nowrap;
}
.btnBox.set-1to2 .btn {
    display: inline-block;
    margin:0 !important;
    width: 100%;
    text-align: center;
}
.btnBox.set-1to2 .btn:first-child {
    width: calc((100%/3*1) - 8px);
    margin-right: 8px !important;
}
.btnBox.set-1to2 .btn:last-child {
    width: calc(100%/3*2);
}

.btnBox.pos-bottom + div {
    max-height: calc(100% - 100px);
    overflow-y: auto;
}
.btnBox.pos-bottom{
    z-index: 9;
    position: fixed;
    bottom: 0;
    padding: 20px;
    width: 100%;
    background-color: var(--colorWhite);
}
section .btnBox.pos-bottom ~ div:last-child{
    padding-bottom: 40px;
}
header.head-main ~ section .btnBox.pos-bottom ~ div:last-child{
    padding-bottom: 120px;
}



/************************     icon      ************************/
.icon-wrap {
    position: relative;
}
.icon-wrap .icon{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.icon{
    display: inline-block;
    background-position: center;
    background-size: contain;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
    -webkit-mask-repeat:no-repeat;
    background-repeat: no-repeat;
    width: 100%;
    height: 100%;
}
/* .icon[class*="ic-"], */
.icon[class*="icM-"] {background-color: #ddd;}
.ic-hamburger {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
  }
  
  .ic-hamburger div {
    position: relative;
    width: 25px;
    height: 2px;
    border-radius: 1px;
    background-color: #333;
    margin-top: 6px;
    transition: all 0.3s ease-in-out;
  }
  .ic-hamburger div:first-child{
    margin-top: unset;
  }

  .ic-hamburger.ON div {
    background-color: #aaa;
  }
  .ic-hamburger.ON .top-bun {
    transform: rotate(-45deg) translateX(-4px) translateY(4.5px);
    margin-top: 0;
  }
  .ic-hamburger.ON .bottom-bun {
    opacity: 0;
  }
  .ic-hamburger.ON .meat {
    transform: rotate(45deg) translateX(3px) translateY(3px);
    margin-top: 0;
  }
  
  .ic-hamburger.ON + .nav {
    top: 0;
    transform: scale(1);
  }


.ic-home {    -webkit-mask-image: url(../resources/icon/icon-home.png);}
.ic-calendar {    -webkit-mask-image: url(../resources/icon/icon-calendar.png);}
.ic-my {    -webkit-mask-image: url(../resources/icon/icon-my.png);}
  
.icM-arrow {    -webkit-mask-image: url(../resources/icon/icon-arrow.png);}
.icB-arrow {    background-image: url(../resources/icon/icon-arrow.png);}
.icM-linkArrow {    -webkit-mask-image: url(../resources/icon/icon-linkArrow.png);}
.icB-linkArrow {    background-image: url(../resources/icon/icon-linkArrow.png);}
.icM-refresh {    -webkit-mask-image: url(../resources/icon/icon-refresh.png);}
.icB-refresh {    background-image: url(../resources/icon/icon-refresh.png);}
.icM-list {    -webkit-mask-image: url(../resources/icon/icon-list.png);}
.icB-list {    background-image: url(../resources/icon/icon-list.png);}
.icM-setting {    -webkit-mask-image: url(../resources/icon/icon-setting.png);}

.icB-naver {    background-image: url(../resources/icon/icon-loginNaver.png);}
.icB-kakao {    background-image: url(../resources/icon/icon-loginKakao.png);}
.icB-google {    background-image: url(../resources/icon/icon-google.png);}
.icB-apple {    background-image: url(../resources/icon/icon-apple.png);}

.icM-camera {    -webkit-mask-image: url(../resources/icon/icon_camera.png);}
.icM-scan {    -webkit-mask-image: url(../resources/icon/icon-scan.png);}
.icM-check {    -webkit-mask-image: url(../resources/icon/icon-scanCheck.png);}
.icM-faq {    -webkit-mask-image: url(../resources/icon/icon-faq.png);}
.icM-notice {    -webkit-mask-image: url(../resources/icon/icon-notice.png);}
.icM-info {    -webkit-mask-image: url(../resources/icon/icon-info.png);}
.icM-logout {    -webkit-mask-image: url(../resources/icon/icon-logout.png);}
.icM-sad {    -webkit-mask-image: url(../resources/icon/icon-sad.png);}

/* 하단 nav 탭 아이콘 — 벡터. 단색이라 마스크로 쓰고 색은 CSS 가 입힌다
   (활성/비활성 두 상태를 파일 하나로 처리). */
.ic-nav-home    {    -webkit-mask-image: url(../resources/icon/nav-home.svg);    mask-image: url(../resources/icon/nav-home.svg);}
.ic-nav-program {    -webkit-mask-image: url(../resources/icon/nav-program.svg); mask-image: url(../resources/icon/nav-program.svg);}
.ic-nav-history {    -webkit-mask-image: url(../resources/icon/nav-history.svg); mask-image: url(../resources/icon/nav-history.svg);}
.ic-nav-my      {    -webkit-mask-image: url(../resources/icon/nav-my.svg);      mask-image: url(../resources/icon/nav-my.svg);}

.icM-qrin {    -webkit-mask-image: url(../resources/icon/icon-qrin.png);}
.icB-qrin {    background-image: url(../resources/icon/icon-qraScan.svg);}
.icM-qrout {    -webkit-mask-image: url(../resources/icon/icon-qrout.png);}
.icB-qrout {    background-image: url(../resources/icon/icon-qrout.png);}

.ic-alert {    -webkit-mask-image: url(../resources/icon/icon-alert.png);}
.ic-siren {    -webkit-mask-image: url(../resources/icon/ic-siren.svg);}
.ic-dots {    -webkit-mask-image: url(../resources/icon/icon-dots.png);}
.ic-gym {    -webkit-mask-image: url(../resources/icon/icon-gym.png);}
.ic-program {    -webkit-mask-image: url(../resources/icon/icon-program.png);}
.ic-pt {    -webkit-mask-image: url(../resources/icon/icon-pt.png);}
/* [2026-09-30] 큐 AL — 메인 수강 카드 아이콘. 덤벨(ic-pt)·헬스(ic-gym)는 피트니스 전용이라
   종목과 무관한 '출석 달력'으로 바꿨다. 벡터 마스크라 색은 bg-* 가 입힌다. */
.ic-class {    -webkit-mask-image: url(../resources/icon/icon-class.svg); mask-image: url(../resources/icon/icon-class.svg);}
/* [2026-09-30] 큐 AT — 메인 헤더 '내 QR' 버튼 아이콘. */
.ic-myqr {    -webkit-mask-image: url(../resources/icon/icon-myqr.svg); mask-image: url(../resources/icon/icon-myqr.svg);}
.icM-heartOFF {    -webkit-mask-image: url(../resources/icon/icon-heartOFF.png); background-color: var(--colorBlue) !important;}
.icB-heartOFF {    background-image: url(../resources/icon/icon-heartOFF.png);}
    .ON > .icM-heartOFF {    -webkit-mask-image: url(../resources/icon/icon-heartON.png);}
    .ON > .icB-heartOFF {    background-image: url(../resources/icon/icon-heartON.png);}

.ic-mailCheck {    background-image: url(../resources/icon/ic-mailCheck.png);}
.ic-close {    -webkit-mask-image: url(../resources/icon/ic-close.svg);}
.ic-success {    background-image: url(../resources/icon/ic-success.png);}

.icM-checked {   -webkit-mask-image: url(../resources/icon/ic-checkedW.svg);}



/************************     COLOR      ************************/
:root {
    --colorMain: #1A1C4A;
    /* [2026-09-08] --colorSub-blue(#4F709C) 제거 — '활성' 과 '비활성' 양쪽에
       쓰이며 역할이 뒤섞여 있었다. 활성 용도는 --colorBlue 로 합치고,
       비활성(하단 nav 아이콘)은 --colorNavIconOff 로 분리했다. */
    /* --colorBlue 의 옅은 톤(색상각 236° vs 238° 로 사실상 같은 색조)이다.
       별도의 강조색이 아니라 같은 색의 배경용 계조임을 이름으로 못박는다. */
    --colorBlueSoft: #d7d9ff;
    --colorSub-brown: #D8C4B6;
    --colorGray050: #f5f5f5;
    --colorGray100: #eee;
    --colorGray200: #ddd;
    --colorGray500: #aaa;
    --colorGray600: #999;
    --colorGray800: #444;
    --colorWhite: #fff;
    --colorBlack: #000;
    --colorBlue: #5257DA;
    --colorRed: #E70000;

    /* [2026-09-08] 하단 nav 상태색 (디자이너 시안 기준)
       아이콘 비활성은 디자이너 값 #DCE2EB 을 그대로 쓰되, 같은 색을 라벨 글자에
       쓰면 흰 배경 대비가 1.30:1 로 WCAG 최소 4.5:1 에 한참 못 미쳐 읽히지 않는다.
       글자만 4.5:1 을 넘기는 가장 밝은 회색(#767676, 4.54:1)으로 분리한다. */
    --colorNavIconOff: #DCE2EB;
    --colorNavLabelOff: #767676;
}

/* 색 유틸리티 — 여기의 !important 는 지우면 안 된다.
   이 클래스들은 특이도 0-1-0 인데, 같은 property 를 0-2-0 이상으로 지정하는 규칙이
   color 34건 · background-color 78건 있고 최대 0-8-0 까지 간다(선택자 57%가 3단계 이상).
   !important 를 빼면 유틸리티가 그 규칙들에 져서 무력화된다 —
   2026-09-08 실측에서 .bg-white/.bg-sub1/.bg-sub2 는 18개 화면 중 16개에서
   실제로 이겨 주고 있었다(대표 사례: nav 가운데 버튼의 아이콘 색).
   근본 해결은 !important 를 세는 것이 아니라 선택자 깊이를 줄이는 것이다. */
.cl-white{      color: var(--colorWhite) !important;}
.cl-gray200{    color: #ddd !important;}
.cl-gray400{    color: #b5b5b5 !important;}
.cl-gray600{    color: #999 !important;}
.cl-black{    color: #000 !important;}
.cl-blue{    color: var(--colorBlue) !important;}
.cl-main{       color: var(--colorMain) !important;}
.cl-sub1{       color: var(--colorSub-brown) !important;}
.cl-sub2{       color: var(--colorBlue) !important;}

.bg-white{      background-color: var(--colorWhite) !important;}
.bg-gray200{    background-color: #ddd !important;}
.bg-gray600{    background-color: #999 !important;}
.bg-gray900{    background-color: #222 !important;}
.bg-black{      background-color: #000 !important;}
.bg-main{       background-color: var(--colorMain) !important;}
.bg-sub1{       background-color: var(--colorSub-brown) !important;}
.bg-sub2{       background-color: var(--colorBlue) !important;}
.bg-blue{       background-color: var(--colorBlue) !important; color: var(--colorWhite) !important;}
.bg-red{       background-color: var(--colorRed) !important;}
.bg-whiteGra{      background:linear-gradient(0deg, transparent,rgba(255,255,255,1));}
.bg-whiteGra180{      background:linear-gradient(180deg, transparent,rgba(255,255,255,1));}
.bg-blueGra{      background:linear-gradient(-45deg, #343899,#5257DA);}


/************************     Design      ************************/
.br-full{    border-radius: 30px; padding-top: 30px !important;}
.br-top{    border-radius: 30px 30px 0 0; padding-top: 30px !important;}
.br-bottom{    border-radius: 0 0 30px 30px ; padding-bottom: 30px !important;}

.p-20 {padding: 20px !important;}

.divide{
    font-size: 0;
}
.divide > * {
    font-size: initial;
    display: inline-block;
    vertical-align: top;
}
.divide.col-2 > * {
    width: 50% !important;
}
/************************     POPUP      ************************/

.toast {
    z-index: 99;
    position: fixed;
    bottom: 20px;
    left: 0;
    width: 100%;
    padding: 0 20px;
}
.toast .toastItem{
    width: fit-content;
    padding: 8px 15px;
    background-color: rgba(0,0,0,.9);
    color: var(--colorWhite);
    opacity: 0;
    transform: translateY(10px);
    transition: all .5s;
    border-radius: 12px;
    margin: 2px auto 0;
}

.toast .toastItem.SHOW{
    opacity: 1;
    transform: translateY(0);

}


.alert {
    z-index: 100001;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    text-align: center;
    display: none;
}
.alert [class*="alert-"]{
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: 30px auto 0;
    min-width: 320px;
    position: absolute;
    background-color: var(--colorWhite);
    padding: 40px 40px 30px;
    border-radius: 16px;
    margin-bottom: 6px;
    width: fit-content;
    display: none;
}
.alert [class*="alert-"] .icon-wrap{
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background-color: #ddd;
}
.alert [class*="alert-"] .icon-wrap .icon{
    width: 22px;
    height: 22px;
    background-color: unset;
}
.alert [class*="alert-"] .textBox * {
    line-height: unset;
    margin-bottom: 35px;
}
.alert [class*="alert-"] .textBox .title {
    font-weight: 800;
}
.alert [class*="alert-"] .textBox .detail{
    font-weight: 600;
    opacity: .8;
    margin-top: 6px;
}

.alert [class*="alert-"].alert-yellow { background-color:var(--colorWhite)9E3 ;}
.alert [class*="alert-"].alert-yellow .icon-wrap { background-color:#FEC93F ;}


.alert .btnBox .btn {
    border-radius: 16px;
    font-size: var(--fs-btn);
    font-weight: 600;
    text-align: center;
}

.size-s {
    height: 35px;
    line-height: 35px;
    padding: 0 15px;
    border-radius: 30px !important;
}
.size-sm{
    height: 45px;
    line-height: 45px;
    padding: 0 25px;

    border-radius: 30px !important;
}
.btnBox .btn {
    border-radius: 16px;
    font-size: var(--fs-btn);
    font-weight: 600;
}
body.alertON .dim {
    z-index: 100000;
}

.alert [class*="alert-"] .textBox .detail{
    font-weight: 500;
    opacity: .8;
    margin-top: 12px;
    line-height: 2rem;
}

.popup {
    z-index: 999;
    position: fixed;
    width: 100%;
    height: 100%;
    top:100%;
    left: 0;
    display: none;
}

body.layerON {
    overflow: hidden !important;
}
body.layerON .popup{
    top: 0;
}
.popup .popupItem {
    display: none;
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 100%;    
    transform: translateX(-50%);
    background-color: var(--colorWhite);
    box-shadow: 0 8px 30px rgba(0,0,0,.3);
    border-radius: 20px 20px 0 0;
    
}
.popup .popupItem > * {
    z-index: 5;
}
.popup .popupItem.depth-1{
    z-index: 3;
}
.popup .popupItem.depth-2{
    z-index: 5;
}
.popup .popupItem.depth-3{
    z-index: 7;
}
.popup .popupItem.depth-9{
    z-index: 100;
}

.popup .popupItem > .btn {
    z-index: 15;
    position: absolute;
    right: 50px;
    top: 50px;
    width: 40px;
    height: 40px;
}

.dim {
    display: none;
    position: fixed;
    width: 100%;
    height: 100%;
    z-index: 11;
    background-color: #000;
    opacity: 0;
    top: 0;
    left: 0;
    transition: opacity .5s;
    pointer-events: none;
}
body.layerDepth2 .dim {
    z-index: 13;
}
body.layerON .dim,
body.alertON .dim{
    opacity: .3;
}
.popup > .dim {
    position: fixed;
    width: 100%;
    height: 100%;
    z-index: 1;
    background-color: #000;
    opacity: 0;
    top: 0;
    left: 0;
}
body.layerDepth2 .popup > .dim {
    z-index: 4;
}
body.layerON .popup > .dim {
    opacity: .6;
}
.popup .popupItem .popup-cont {
    z-index: 10;
    max-height:  calc((var(--vh, 1vh) * 100) - 75px - 110px);
    position: relative;
    overflow-x: hidden;
    overflow-y: auto;
    /* padding: 20px 20px 25px; */
}
.popup .popupItem .btnBox{
    margin-top: 30px;
    text-align: right;
}
.popup .popupItem .btnBox .btn {
    display: inline-block;
    vertical-align: middle;
    text-align: center;
    margin-left: 5px;
}


.popup .popupItem .popup-head{
    position: relative;
}
.popup .popupItem .popup-head .title {
    font-weight: 800;
    text-align: center;
    height: 65px;
    line-height: 64px;
}
.popup .popupItem .popup-head .btn {
    z-index: 15;
    position: absolute;
    line-height: 99px;
    right: 15px;
    top: 50%;
    width: 40px;
    height: 40px;
    transform: translateY(-50%);
}
.popup .popupItem .popup-head .btn .icon {
    mask-size: 14px;
    mask-position: center;
    background-color: var(--colorGray600);
}
.popup .popupItem.type-layer {
    height: 100%;
    border-radius: unset;
    left: 0;
    top: 0;
    width:100%;
    transform: unset;
    padding: 0;
    background-size: cover;
    background-position: center top;
}
.popup .popupItem.type-layer > *{
    padding: 0 !important;
}

.popup .popupItem.type-layer> .btn{
    z-index: 11;
}

.popup .popupItem .popup-foot{
    position: relative;
    width: 100%;
    padding: 0 20px 20px;
    text-align: center;
}

.popup .popupItem .popup-foot .btnBox {
    margin-top: unset;
}

.popup .popupItem .btnBox{
    margin-top: 30px;
}
.popup .popupItem .btnBox .btn {
    display: inline-block;
    vertical-align: middle;
    text-align: center;
    margin-left: 5px;
}




/************************     FORM      ************************/

.formArea{
    padding: 20px;
}   

.formArea .formItem {
    margin-top: 16px;
}
.formArea .formItem:first-child {    margin-top: unset;}
.formArea .formItem > label{
    position: relative;
    display: block;
    margin-bottom: 6px;
    color: var(--colorGray600);
}

.formArea .formItem > label span.required {
    position: relative;
}
.formArea .formItem > label span.required::after {
    content: '*';
    position: absolute;
    right: 0;
    top: 1px;
    color: var(--colorRed);
    transform: translateX(120%);
    font-size: var(--fs-body-lg);
}
.formArea .formItem input[type="text"],
.formArea .formItem input[type="password"]{
    height: 50px;
    padding: 16px 0;
    width: 100%;
    border-bottom: 1px solid var(--colorGray200);
}

.formArea .formItem input[type="text"]:disabled,
.formArea .formItem input[type="password"]:disabled{
    background-color: var(--colorGray100);
    border: unset;
    border-radius: 12px;
    padding: 16px;
}
.formArea .formItem input::placeholder{
    color: var(--colorGray600);
}

.formArea .formItem input[type="checkbox"] {
    opacity: 0;
    width: 1px;
    height: 1px;
}
.formArea .formItem input[type="checkbox"] + label{
    display: inline-block;
    vertical-align: middle;
    padding-left: 24px;
    line-height: 18px;
}
.formArea .formItem input[type="checkbox"] + label button {
    text-decoration: underline;
    font-size: inherit;
    color: inherit;
}
.formArea .formItem input[type="checkbox"] + label::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 18px;
    height: 18px;
    border-radius: 4px;
    border: 1px solid var(--colorGray200);
    display: inline-block;
    vertical-align: middle;
    mask-size: contain;
}
.formArea .formItem input[type="checkbox"]:checked + label::before {
    background-image: url(../resources/icon/ic-checkedW.svg);
    background-repeat: no-repeat;
    background-size: 10px auto;
    background-position: center;
    border: unset;
    background-color: var(--colorBlue);
}

.formArea .formItem input[type="checkbox"].design2 + label::before {
    content: '';
    border: unset;
    background-color: var(--colorGray500);
    -webkit-mask-image: url(../resources/icon/ic-uncheck.svg);
    width: 20px;
}
.formArea .formItem input[type="checkbox"].design2:checked + label::before {
    background-color: var(--colorBlue);
    background-image: unset;
}


.formArea .formItem input[type="checkbox"].design3 + label{
    background-color: var(--colorGray500);
    border-radius: 20px;
    height: 20px;
    width: 36px;
    position: relative;
    transition: all .3s;
}
.formArea .formItem input[type="checkbox"].design3 + label::before {
    content: '';
    border: unset;
    background-color: var(--colorWhite);
    width: 16px;
    height: 16px;
    border-radius: 50%;
    position: absolute;
    left: 2px;
    top: 2px;
    transition: all .3s;
}
.formArea .formItem input[type="checkbox"].design3:checked + label {
    background-color: var(--colorBlue);
}
.formArea .formItem input[type="checkbox"].design3:checked + label::before {
    left: 18px;
}




.formArea .formItem .guideBox {
    position: relative;
    height: 0;
}
.formArea .formItem .guideBox.SHOW {
    display: block;
    min-height: 22px;
    padding: 8px 0;
}
.formArea .formItem .guideBox .rightContent {
    position: absolute;
    right: 0;
    top: 8px;
}

.formArea hr {
    margin: 20px 0;
    border: 0;
    border-top: 1px solid var(--colorGray200);
}

.formArea .formItem .formInp {
    position: relative;
}
.formArea .formItem  .unit{
    z-index: 2;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    font-size: var(--fs-caption);
    color: var(--colorGray600);
    border-bottom: 1px solid var(--colorGray600);
}



/************************     INFO      ************************/
.infoArea .imgBox{
    padding: 60px 0 20px;
    text-align: center;
}
.infoArea .imgBox.type-fit{
    padding: 50px 0 20px;
}
.infoArea .imgBox.type-fit .icon{
    height: 80px;
}
.popup .popupItem .popup-cont > .infoArea{
    padding: 0 20px 60px;
}
.infoArea .imgBox .icon{
    height: 90px;

}
.infoArea .textBox {
    text-align:center;
    padding: 0 20px;
}

.infoArea .textBox > h3,
.infoArea .textBox > h4,
.infoArea .textBox > h5 {
    font-weight: 700;
}
.infoArea .textBox > h6 {
    margin: 20px 0 0;
    color: var(--colorGray600);
}
.popup .popupItem .popup-cont > .infoArea > h6{
    margin-top: 16px;
}

.infoArea .textBox .memoBox .memoList{
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px solid var(--colorGray200);
    color: var(--colorGray600);
    text-align: left;

}

.infoArea .textBox .memoBox .memoList li{
    padding-left: 16px;
    position: relative;
    width: fit-content;
    margin-bottom: 4px;
    line-height: 1.8rem;
}
.infoArea .textBox .memoBox .memoList li .icon {
    position: absolute;
    left: 5px;
    top: 6px;
    width: 3px;
    height: 3px;
    border-radius: 3px;
    background-color: var(--colorGray600);
    
}

.infoArea .textBox .memoBox.type-fill{
    margin-top: 20px;
    border-radius: 12px;
    padding: 10px;
    background-color: var(--colorGray100);
    width: 100%;
    margin-bottom: 6px;
}

.infoArea .termBox pre {
    white-space: pre-wrap;
    word-break: break-all;
    font-size: var(--fs-caption);
    line-height: var(--lh-body);
    color: var(--colorGray600);
}

/* confirm 버튼 영역 */
.alert .alert-btn2 .btnBox{
  display: flex;
  gap: 12px;            /* 👈 버튼 사이 여백 (원하는 값으로 조절) */
}

/* 버튼이 반반 차지하게 하고 싶으면 */
.alert .alert-btn2 .btnBox .btn{
  flex: 1 1 0;
}

/* alert (확인 1개) 전용 */
.alert .alert-btn1 .btnBox{
  display: flex;
  justify-content: center;
}

/* alert의 확인 버튼만 크게 & 중앙 */
.alert .alert-btn1 .btnBox .btn{
  min-width: 160px;
  height: 44px;
  line-height: 44px;
  border-radius: 10px;
  font-weight: 600;
  padding: 0 24px;
}
/************************     UTIL      ************************/
/* libery */
    /* swiper */
    
    .swiper .swiper-wrapper{
        height: fit-content;
    }
    .swiper .swiper-slide{
        transition: .3s;
    }
    .swiper .swiper-slide > .wrap{
        width: 100%;
        height: 100%;
        position: relative;
    }

    /* moreToggle */
    .moreBox{
        height: 0;
        transition: all .5s;
        overflow: hidden;
    }
    .moreBox.SHOW{
        height: 50px;
        padding-top: 10px;
    }
    .moreBox.searchBox{
        position: relative;
    }
    .moreBox.searchBox input {
        width: 100%;
        height: 100%;
        border-radius: 20px;
        border: 1px solid var(--colorGray200);
        padding: 0 16px;
    }
    
    .moreBox.searchBox .btn {
        position: absolute;
        width: 40px;
        height: 40px;
        bottom: 1px;
        right: 1px
    }


    @supports (padding-top: constant(safe-area-inset-top)) {
        body {
          padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
        }
      }
      
      @media (display-mode: fullscreen) {
        body {
          padding: 0;
        }
      }
      
      @media (display-mode: standalone) {
        body {
          padding: 0;
        }
      }
      
      /* Older browsers (which don't support CSS variables) */
      body {
        height: 100%;
      }
      
      /* Browsers which partially support CSS variables (iOS 11.0 – 11.2)
      @supports (padding-top: constant(safe-area-inset-top)) {
        body {
          --safe-area-inset-top: constant(safe-area-inset-top);
          height: calc(100% + var(--safe-area-inset-top));
        }
      }
      /* Adapted from https://medium.com/@draganeror/iphone-x-layout-features-with-css-environment-variables-d57423433dec */
      /* [2026-09-05 수정] 이 여는 주석이 닫히지 않아 파일 끝까지(1041~1058행)가 통째로
         주석으로 삼켜져 있었다. 아래 height 기반 세이프에어리어 보정은 위 1010행의
         padding 기반 처리로 대체되어 폐기된 코드이므로 '살리지 않고' 주석을 명시적으로
         닫는다(동작 변화 없음). 닫지 않으면 이 파일 끝에 추가되는 CSS가 전부 무시된다.
         Browsers which fully support CSS variables (iOS 11.2+).
      @supports (padding-top: env(safe-area-inset-top)) {
        body {
          --safe-area-inset-top: env(safe-area-inset-top);
          height: calc(100% + var(--safe-area-inset-top));
        }
      }
      
      @media (display-mode: fullscreen) {
        body {
          height: 100%;
        }
      }
      
      @media (display-mode: standalone) {
        body {
          height: 100%;
        }
      }
      */
