/* ============================================================
   황금곳간 테마 스타일 (greenmall 시안 기반)
   theme/basic 커스텀 - 헤더/GNB/메인배너/띠배너/상품그리드/푸터
   ============================================================ */
:root{
  --point:#6fb02e;
  --point-dark:#5a9422;
  --bg:#fcfcfc;
  --txt:#343434;
  --txt-sub:#888;
  --line:#e8e8e8;
}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--txt);
  font-family:'Pretendard','Malgun Gothic','Apple SD Gothic Neo',sans-serif;
  -webkit-font-smoothing:antialiased;
}
.gm-header a,.gm-gnb a,.gm-footer a,.gm-section a,.gm-strip a{text-decoration:none;color:inherit;}
.gm-header button,.gm-gnb button{font-family:inherit;cursor:pointer;border:none;background:none;}
.gm-inner{max-width:1200px;margin:0 auto;padding:0 20px;}

/* 기존 고정폭 레이아웃 반응형 보정 */
#wrapper{width:auto;max-width:1240px;margin:0 auto;padding:0 20px;}
#container{width:auto;}
#container img{max-width:100%;height:auto;}

/* ================= HEADER ================= */
.gm-header{background:var(--bg);border-bottom:1px solid var(--line);}
.gm-utilbar{max-width:1200px;margin:0 auto;padding:8px 20px 0;display:flex;align-items:center;justify-content:flex-end;gap:14px;}
/* 예치금 배지가 다른 링크보다 높아 텍스트 높이가 어긋나던 문제 — 링크도 같은 높이 박스로 맞춘다 (2026-07-27) */
.gm-utilbar a{font-size:12px;color:var(--txt-sub);display:inline-flex;align-items:center;height:24px;line-height:1;}
.gm-utilbar a:hover{color:var(--point-dark);}
.gm-header-top{
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;padding:14px 20px 22px;max-width:1200px;margin:0 auto;
}
.gm-logo{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.gm-logo-mark{
  width:38px;height:38px;border-radius:12px;
  background:linear-gradient(135deg,var(--point),#8ecf4d);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:900;font-size:19px;
}
.gm-logo-text{font-size:24px;font-weight:900;letter-spacing:-0.5px;color:var(--txt);}
.gm-logo-text em{font-style:normal;color:var(--point);}

/* 검색영역 */
.gm-search-area{
  display:flex;align-items:center;gap:18px;flex:1;justify-content:center;min-width:0;
}
.gm-search-box{
  display:flex;align-items:center;
  width:100%;max-width:420px;height:48px;
  border:2px solid var(--point);border-radius:24px;
  background:#fff;padding:0 6px 0 20px;
}
.gm-search-box input{
  flex:1;border:none;outline:none;font-size:15px;background:transparent;min-width:0;
  height:auto;line-height:normal;
}
.gm-search-box input::placeholder{color:#bbb;}
/* 특이도 주의 : .gm-header button{background:none} (0-1-1) 보다 높아야 초록 원이 살아남 */
.gm-search-box .gm-search-btn,
.gm-header .gm-search-btn{
  width:38px;height:38px;border-radius:50%;
  background:var(--point);color:#fff;
  display:flex;align-items:center;justify-content:center;
  transition:background .2s;flex-shrink:0;
}
.gm-search-box .gm-search-btn:hover,
.gm-header .gm-search-btn:hover{background:var(--point-dark);}
.gm-search-btn svg{width:18px;height:18px;display:block;}

/* 롤링 검색순위 */
.gm-rank-roll{
  width:190px;height:48px;overflow:hidden;position:relative;flex-shrink:0;
}
.gm-rank-list{transition:transform .45s ease;}
.gm-rank-item{
  height:48px;display:flex;align-items:center;gap:8px;
  font-size:14px;white-space:nowrap;overflow:hidden;cursor:pointer;color:var(--txt);
}
.gm-rank-num{color:var(--point);font-weight:800;font-size:15px;width:16px;flex-shrink:0;}
.gm-rank-word{overflow:hidden;text-overflow:ellipsis;}

/* 우측 아이콘 */
.gm-util-icons{display:flex;gap:6px;flex-shrink:0;}
.gm-util-icon{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:6px 10px;border-radius:10px;position:relative;
  transition:background .2s;color:var(--txt);
}
.gm-util-icon:hover{background:#f1f6ea;color:var(--point-dark);}
.gm-util-icon svg{width:24px;height:24px;}
.gm-util-icon span{font-size:11px;}
.gm-cart-badge{
  position:absolute;top:2px;right:4px;
  min-width:17px;height:17px;border-radius:9px;
  background:var(--point);color:#fff;
  font-size:10px;font-weight:700;
  display:flex;align-items:center;justify-content:center;padding:0 4px;
}

/* ================= GNB ================= */
.gm-gnb{background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:100;}
.gm-gnb-wrap{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;align-items:flex-start;}
.gm-gnb-toggle{display:none;}
.gm-gnb-list{
  display:flex;gap:8px;flex:1;min-width:0;
  list-style:none;overflow-x:auto;scrollbar-width:none;margin:0;padding:0;
}
.gm-gnb-list::-webkit-scrollbar{display:none;}
.gm-gnb-list>li{position:relative;}
.gm-gnb-list>li>a{
  display:block;padding:16px 16px;
  font-size:16px;font-weight:700;color:var(--txt);
  position:relative;white-space:nowrap;transition:color .2s;
}
.gm-gnb-list>li>a::after{
  content:'';position:absolute;left:16px;right:16px;bottom:0;
  height:3px;background:var(--point);border-radius:2px 2px 0 0;
  transform:scaleX(0);transition:transform .25s;
}
.gm-gnb-list>li.gm-gnb-on>a,.gm-gnb-list>li.gm-sub-open>a{color:var(--point-dark);}
.gm-gnb-list>li.gm-gnb-on>a::after,.gm-gnb-list>li.gm-sub-open>a::after{transform:scaleX(1);}
@media (hover:hover) and (pointer:fine){
  .gm-gnb-list>li:hover>a{color:var(--point-dark);}
  .gm-gnb-list>li:hover>a::after{transform:scaleX(1);}
}
.gm-gnb-list>li>a.hot{color:var(--point);}
/* 2차 메뉴 */
.gm-gnb-sub{
  display:none;position:absolute;left:0;top:100%;min-width:160px;
  background:#fff;border:1px solid var(--line);border-radius:0 0 12px 12px;
  box-shadow:0 8px 18px rgba(0,0,0,.08);padding:8px 0;list-style:none;margin:0;z-index:110;
}
/* 2차 메뉴 노출 : 마우스 기기만 hover, 터치 기기는 탭으로 .gm-sub-open 토글
   (터치에서 hover 가 남아 서브메뉴가 본문을 덮으면 다음 탭이 그 메뉴를 닫는 데 소비돼
    "버튼이 한 번에 안 눌린다"는 증상이 된다 — 2026-07-28) */
@media (hover:hover) and (pointer:fine){
  .gm-gnb-list>li:hover .gm-gnb-sub{display:block;}
}
.gm-gnb-list>li.gm-sub-open .gm-gnb-sub{display:block;}
.gm-gnb-sub a{display:block;padding:9px 18px;font-size:14px;color:var(--txt);white-space:nowrap;}
.gm-gnb-sub a:hover,.gm-gnb-sub li.gm-gnb-on>a{background:#f1f6ea;color:var(--point-dark);font-weight:700;}
.gm-gnb-empty{padding:15px 5px;font-size:14px;color:var(--txt-sub);list-style:none;}
.gm-gnb-empty a{color:var(--point-dark);text-decoration:underline;}

/* ================= 메인 롤링배너 ================= */
/* #wrapper(최대 1240px) 안에서도 화면 전체 폭을 쓰는 센터모드 슬라이더 */
.gm-slider{
  margin:28px 0 0;overflow:hidden;position:relative;
  width:100vw;margin-left:calc(50% - 50vw);
}
.gm-slider-track{
  display:flex;gap:20px;
  transition:transform .55s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.gm-slide{
  flex:0 0 var(--gm-slide-w,1000px);
  height:340px;border-radius:20px;overflow:hidden;
  position:relative;color:#fff;
  display:flex;flex-direction:column;justify-content:center;
  padding:0 60px;
  transition:opacity .4s, transform .4s;
  opacity:.45;transform:scale(.96);
  background-size:cover;background-position:center;
}
.gm-slide.active{opacity:1;transform:scale(1);}
.gm-slide.has-img{padding:0;}
.gm-slide.has-img a{display:block;width:100%;height:100%;}
.gm-slide .tag{
  display:inline-block;width:fit-content;
  background:rgba(255,255,255,.25);backdrop-filter:blur(4px);
  padding:6px 14px;border-radius:16px;font-size:13px;font-weight:600;margin-bottom:16px;
}
.gm-slide h2{font-size:34px;font-weight:900;line-height:1.25;margin-bottom:10px;letter-spacing:-1px;}
.gm-slide p{font-size:16px;opacity:.92;}
.gm-slide.ph1{background:linear-gradient(120deg,#5a9422,#8ecf4d 60%,#b8e086);}
.gm-slide.ph2{background:linear-gradient(120deg,#2c6e49,#4c956c 60%,#7bc99a);}
.gm-slide.ph3{background:linear-gradient(120deg,#e07b39,#f2a65a 60%,#f7c983);}
.gm-slide .deco{
  position:absolute;right:-40px;bottom:-60px;
  width:280px;height:280px;border-radius:50%;
  background:rgba(255,255,255,.14);
}
.gm-slide .deco::before{
  content:'';position:absolute;top:-50px;left:-70px;
  width:180px;height:180px;border-radius:50%;
  background:rgba(255,255,255,.12);
}

/* 배너 컨트롤 */
.gm-slider-ctrl{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px;}
.gm-ctrl-btn{
  width:38px;height:38px;border-radius:50%;
  border:1px solid var(--line);background:#fff;color:var(--txt);
  display:flex;align-items:center;justify-content:center;transition:all .2s;
}
.gm-ctrl-btn:hover{background:var(--point);border-color:var(--point);color:#fff;}
.gm-ctrl-btn svg{width:16px;height:16px;}
.gm-slide-count{
  font-size:14px;color:var(--txt-sub);
  background:#fff;border:1px solid var(--line);
  padding:8px 18px;border-radius:19px;min-width:80px;text-align:center;
}
.gm-slide-count b{color:var(--txt);font-weight:800;}
.gm-play-btn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;transition:all .2s;color:var(--txt);cursor:pointer;}
.gm-play-btn:hover{background:var(--point);border-color:var(--point);color:#fff;}
.gm-play-btn svg{width:14px;height:14px;}

/* ================= 가로 띠배너 ================= */
.gm-strip{margin:40px auto 0;max-width:1200px;padding:0 20px;}
.gm-strip a,.gm-strip .gm-strip-box{display:block;}
.gm-strip img{display:block;width:100%;height:auto;border-radius:16px;}
.gm-strip + .gm-strip{margin-top:14px;}
.gm-strip-ph{
  border-radius:16px;
  background:linear-gradient(90deg,#343434,#4a4a4a 70%,#5c5c5c);
  color:#fff;display:flex;align-items:center;justify-content:space-between;
  padding:28px 44px;overflow:hidden;position:relative;
}
.gm-strip-ph::after{
  content:'';position:absolute;right:120px;top:-30px;
  width:170px;height:170px;border-radius:50%;
  background:radial-gradient(circle,rgba(111,176,46,.5),transparent 70%);
}
.gm-strip-ph b{font-size:22px;font-weight:800;display:block;margin-bottom:4px;}
.gm-strip-ph b em{font-style:normal;color:#a5e06a;}
.gm-strip-ph span{font-size:14px;opacity:.75;}

/* ================= 상품 섹션 ================= */
.gm-section{max-width:1200px;margin:56px auto 0;padding:0 20px;}
.gm-section-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;}
.gm-section-head h3{
  font-size:26px;font-weight:900;letter-spacing:-0.5px;
  display:flex;align-items:center;gap:10px;margin:0;color:var(--txt);
}
.gm-section-head h3::before{content:'';width:6px;height:24px;border-radius:3px;background:var(--point);}
.gm-more-link{font-size:14px;color:var(--txt-sub);display:flex;align-items:center;gap:4px;transition:color .2s;}
.gm-more-link:hover{color:var(--point-dark);}

.gm-prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px 20px;}
.gm-prod-card{display:block;transition:transform .25s;}
.gm-prod-card:hover{transform:translateY(-5px);}
.gm-prod-thumb{
  aspect-ratio:1/1;border-radius:16px;overflow:hidden;position:relative;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:#f4f6f1;
}
.gm-prod-thumb img{width:100%;height:100%;object-fit:cover;}
.gm-prod-thumb .badge{
  position:absolute;top:10px;left:10px;
  font-size:11px;font-weight:700;color:#fff;
  padding:4px 10px;border-radius:12px;background:var(--point);z-index:2;
}
.gm-prod-thumb .badge.sale{background:#e0501e;}
.gm-prod-info{padding:12px 4px 0;}
.gm-prod-name{
  font-size:15px;line-height:1.45;color:var(--txt);
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  margin:0 0 8px;
}
.gm-prod-price{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.gm-prod-price .dc{color:var(--point);font-weight:900;font-size:17px;}
.gm-prod-price .price{font-weight:900;font-size:17px;color:var(--txt);}
.gm-prod-price .price small{font-size:13px;font-weight:600;}
.gm-prod-price .origin{color:#bbb;font-size:13px;}
.gm-prod-meta{margin-top:6px;font-size:12px;color:var(--txt-sub);display:flex;gap:8px;}
.gm-prod-meta .star{color:#f5a623;}
.gm-prod-empty{
  grid-column:1/-1;padding:52px 20px;text-align:center;color:var(--txt-sub);
  border:1px dashed var(--line);border-radius:16px;font-size:14px;background:#fff;
}

/* ================= FOOTER ================= */
.gm-footer{margin-top:80px;background:#f4f4f2;border-top:1px solid var(--line);padding:40px 20px 50px;}
.gm-footer-inner{max-width:1200px;margin:0 auto;}
.gm-footer-menu{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:20px;}
.gm-footer-menu a{font-size:13px;color:#555;font-weight:600;}
.gm-footer-menu a:hover{color:var(--point-dark);}
.gm-footer-menu a.privacy{color:var(--point-dark);font-weight:800;}
.gm-footer-info{font-size:12.5px;color:#999;line-height:1.9;}
.gm-footer-copy{margin-top:18px;font-size:12px;color:#aaa;padding-top:18px;border-top:1px solid #e2e2e0;}
.gm-footer-copy b{color:var(--point);}

/* 모바일 검색 */
.gm-m-search{display:none;}

/* TOP 버튼 */
.gm-top-btn{
  position:fixed;right:22px;bottom:26px;z-index:150;
  width:46px;height:46px;border-radius:50%;
  background:#fff;border:1px solid var(--line);color:var(--txt);
  box-shadow:0 4px 14px rgba(0,0,0,.12);
  font-size:12px;font-weight:800;cursor:pointer;
  opacity:0;pointer-events:none;transition:all .3s;
}
.gm-top-btn.show{opacity:1;pointer-events:auto;}
.gm-top-btn:hover{background:var(--point);color:#fff;border-color:var(--point);}

/* ================= 반응형 ================= */
@media (max-width:1024px){
  .gm-rank-roll{display:none;}
  .gm-slide{height:300px;padding:0 44px;}
  .gm-slide.has-img{padding:0;}
  .gm-slide h2{font-size:28px;}
  .gm-prod-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:768px){
  #wrapper{padding:0 12px;}
  .gm-header-top{padding:10px 16px 14px;gap:10px;}
  .gm-utilbar{padding:8px 16px 0;}
  .gm-logo-text{font-size:20px;}
  .gm-logo-mark{width:32px;height:32px;font-size:16px;border-radius:10px;}
  .gm-search-area{display:none;}
  .gm-util-icon span{display:none;}
  .gm-util-icon{padding:6px;}

  .gm-gnb-wrap{padding:0 16px;}
  .gm-gnb-toggle{
    display:flex;align-items:center;justify-content:center;
    width:32px;height:32px;border-radius:50%;flex-shrink:0;
    border:1.5px solid var(--line);background:#fff;color:var(--txt);
    margin:8px 10px 8px 0;transition:all .25s;
  }
  .gm-gnb-toggle svg{width:15px;height:15px;transition:transform .3s;}
  .gm-gnb-toggle.open{background:var(--point);border-color:var(--point);color:#fff;}
  .gm-gnb-toggle.open svg{transform:rotate(180deg);}
  .gm-gnb-list.expanded{flex-wrap:wrap;overflow:visible;}
  .gm-gnb-sub{display:none !important;} /* 모바일에서는 1차 메뉴만 */

  .gm-m-search{display:block;padding:0 16px 14px;}
  .gm-m-search .gm-search-box{max-width:none;height:44px;}

  .gm-gnb-list>li>a{padding:13px 12px;font-size:15px;}
  .gm-gnb-list>li>a::after{left:12px;right:12px;}

  .gm-slider{margin-top:16px;}
  .gm-slide{height:210px;padding:0 26px;border-radius:14px;}
  .gm-slide.has-img{padding:0;}
  .gm-slide .tag{font-size:11px;padding:4px 10px;margin-bottom:10px;}
  .gm-slide h2{font-size:21px;margin-bottom:6px;}
  .gm-slide p{font-size:13px;}
  .gm-slide .deco{width:170px;height:170px;right:-50px;bottom:-70px;}
  .gm-slider-ctrl{gap:10px;margin-top:14px;}
  .gm-ctrl-btn,.gm-play-btn{width:34px;height:34px;}
  .gm-slide-count{padding:6px 14px;font-size:13px;min-width:68px;}

  .gm-strip{margin-top:28px;padding:0 16px;}
  .gm-strip img{border-radius:12px;}
  .gm-strip-ph{flex-direction:column;align-items:flex-start;gap:12px;padding:20px 22px;}
  .gm-strip-ph b{font-size:17px;}
  .gm-strip-ph span{font-size:12.5px;}

  .gm-section{margin-top:40px;padding:0 16px;}
  .gm-section-head h3{font-size:20px;}
  .gm-section-head h3::before{height:19px;width:5px;}
  .gm-prod-grid{grid-template-columns:repeat(2,1fr);gap:20px 12px;}
  .gm-prod-thumb{border-radius:12px;}
  .gm-prod-name{font-size:13.5px;}
  .gm-prod-price .dc,.gm-prod-price .price{font-size:15px;}

  .gm-footer{margin-top:52px;padding:30px 16px 80px;}
}
@media (prefers-reduced-motion:reduce){
  .gm-slider-track,.gm-slide,.gm-rank-list{transition:none!important;}
}

/* ===== default_shop.css 구조 오버라이드 (레이아웃 깨짐 방지) ===== */
#hd,#wrapper,#ft{min-width:0;}
#wrapper{background:transparent;}
#container .is_index{margin-left:0;}
#container{width:auto;max-width:none;}

/* ===== 코어 #hd/#ft 다크 테마 무력화 (ID 특이도 대응 — 시안은 라이트 톤) ===== */
#hd.gm-header{background:var(--bg);}
#ft.gm-footer{background:#f4f4f2;text-align:left;color:inherit;}
#ft.gm-footer a{color:inherit;}
#ft.gm-footer .gm-footer-menu a{color:#555;}
#ft.gm-footer .gm-footer-menu a:hover{color:var(--point-dark);}
#ft.gm-footer .gm-footer-menu a.privacy{color:var(--point-dark);}
#ft.gm-footer .gm-footer-info{color:#999;}
#ft.gm-footer .gm-footer-copy{color:#aaa;border-top:1px solid #e2e2e0;}

/* ============================================================
   공통 페이지 타이틀 (#wrapper_title)
   - 코어가 출력하는 페이지명을 마이페이지 .page-title 과 동일한 톤으로 통일
   - 페이지가 자체 .page-title 을 출력하면 코어 타이틀은 숨겨 중복을 막는다
   ============================================================ */
.shop-content > #wrapper_title{
  font-size:28px;font-weight:900;letter-spacing:-.5px;line-height:1.25;
  display:flex;align-items:center;gap:10px;
  padding:34px 0 0;margin:0 0 26px;
}
.shop-content > #wrapper_title::before{
  content:'';flex:0 0 auto;width:6px;height:26px;border-radius:3px;background:var(--point);
}
.shop-content:has(.page-title) #wrapper_title{display:none;}
@media (max-width:768px){
  .shop-content > #wrapper_title{font-size:22px;padding-top:20px;margin-bottom:18px;}
  .shop-content > #wrapper_title::before{height:20px;width:5px;}
}

/* ── 상단 유틸바 예치금 표시 (2026-07-27) ── */
.gm-utilbar .gm-util-deposit{
  display:inline-flex;align-items:center;gap:4px;height:24px;
  padding:0 10px;border-radius:12px;background:#f1f6ea;border:1px solid #e0ecd0;
  color:var(--point-dark);font-weight:700;line-height:1;
}
.gm-utilbar .gm-util-deposit b{font-weight:900;}
.gm-utilbar .gm-util-deposit:hover{background:#e8f2da;color:var(--point-dark);}
@media (max-width:768px){
  .gm-utilbar{gap:10px;flex-wrap:wrap;}
  .gm-util-icons{gap:2px;}
}

/* ── 분류 위치표시(#sct_location) 전역 통일 (extend/gm.location.extend.php 가 wrapper_title 위로 이동) ── */
.shop-content #sct_location,
#sct_location{
  position:static !important;float:none !important;clear:both;
  display:flex;align-items:center;flex-wrap:wrap;gap:6px;
  width:auto;top:auto;right:auto;left:auto;
  margin:22px 0 -8px;padding:0;border:0;background:none;
  font-size:12.5px;color:#aaa;height:auto;line-height:1.6;letter-spacing:0;
}
#sct_location .go_home{display:inline-block;padding:0;color:#aaa;font-size:13px;line-height:1.6;vertical-align:baseline;}
#sct_location .go_home:hover{color:var(--point-dark);}
#sct_location i.dividing-line{margin:0;color:#d5d5d5;font-size:11px;line-height:1.6;vertical-align:baseline;}
#sct_location select,
#sct_location .shop_select_to_html{
  float:none;margin:0;height:auto;padding:0;border:0;background:none;
  font-family:inherit;font-size:12.5px;color:var(--point-dark);font-weight:700;
}
.shop-content > #sct_location + #wrapper_title{padding-top:10px;}


/* ============================================================
   터치 기기 대응 (2026-07-28) — "버튼이 한 번에 안 눌린다" 대응
   1) touch-action:manipulation : 더블탭 확대 판정 대기(약 300ms) 제거
   2) hover 로 모양이 바뀌면 첫 탭이 hover 상태를 만드는 데만 쓰이는 브라우저가 있어
      주요 버튼은 터치 기기에서 hover 효과를 되돌리고 :active 로 피드백을 준다
   ============================================================ */
a, button, label, summary,
input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"],
.btn, .oc-copy, .oc-cart, .ww-btn, .ww-del, .gm-sel-btn, .rv-btn, .rv-add,
.gm-line-del, .gm-code-open, .stepper button, .gm-util-icon, .gm-src-tabs button{
  touch-action:manipulation;
}
a, button, .btn, .oc-copy, .oc-cart, .ww-btn, .ww-del{
  -webkit-tap-highlight-color:rgba(111,176,46,.16);
}

/* 눌림 피드백 (터치·마우스 공통) */
.oc-copy:active, .oc-cart:active, .ww-btn:active, .ww-del:active,
.gm-sel-btn:active, .rv-btn:active, .rv-add:active, .gm-line-del:active,
.stepper button:active, .btn:active{
  transform:scale(.97);
}

@media (hover:none){
  /* 터치 기기 : hover 로 색이 바뀌지 않게 기본 모양 유지 */
  .oc-copy:hover:not(.done){background:#fff;color:var(--point-dark);}
  .oc-cart:hover:not([disabled]){background:var(--point);border-color:var(--point);}
  .gm-wish-card .ww-btn.code:hover:not(:disabled){background:#fff;}
  .gm-wish-card .ww-btn.order:hover:not(:disabled){background:var(--point);border-color:var(--point);}
  .gm-wish-card .ww-del:hover{background:#fff;border-color:var(--line);color:#9a9a95;}
  .gm-wish-card:hover .ww-thumb img{transform:none;}
  .cart-select-bar .gm-sel-btns .gm-sel-btn:hover{border-color:var(--line);color:#6b6b66;background:#fff;}
  .cart-select-bar .gm-sel-btns .gm-sel-btn.point:hover{background:#f7faf2;color:var(--point-dark);}
  .cart-select-bar .gm-sel-btns .gm-sel-btn.danger:hover{border-color:var(--line);color:#6b6b66;background:#fff;}
  .ci-recv .rv-btn:hover{border-color:var(--line);color:#6d6d68;}
  .ci-recv .rv-add:hover{border-color:var(--line);color:#6d6d68;background:#fff;}
  .gm-line-del:hover{border-color:var(--line);color:#9a9a95;background:#fff;}
  #sod_bsk .stepper button:hover{background:#fbfcf8;color:#7d8a70;}
  .gm-qa-item:hover{background:none;}
  .gm-qa-item:hover .qa-go{background:none;color:#c0c0bb;}
}

/* 모달 열림 중 배경 스크롤만 잠금 (sticky GNB 를 깨뜨리지 않도록 position 은 건드리지 않는다) */
html.gm-modal-open,
body.gm-modal-open{overflow:hidden;}

/* 모달이 열려 있는 동안에는 sticky 메뉴바·플로팅 버튼이 모달 위로 올라올 수 없게 한다.
   (z-index 만으로는 조상 스태킹 컨텍스트에 따라 뒤집힐 수 있어 position 까지 해제 — 2026-07-28) */
body.gm-modal-open .gm-gnb{position:static;z-index:0;}
body.gm-modal-open .gm-top-btn,
body.gm-modal-open #side_menu,
body.gm-modal-open #hd_pop{display:none !important;}
body.gm-modal-open .my-side,
body.gm-modal-open .summary{position:static;}

/* ── 터치 타깃 확대 (2026-07-28) ──
   26~34px 짜리 작은 버튼은 손가락으로 빗맞기 쉬워 "한 번에 안 눌린다"로 느껴진다.
   보이는 크기는 유지하고 ::after 로 히트 영역만 44px 로 넓힌다. */
@media (hover:none){
  .oc-cart, .oc-copy, .ww-del, .rv-btn, .gm-line-del,
  .gm-code-modal .oc-cart, .gm-code-modal .oc-copy,
  .gm-recv-modal .rm-close, .gm-code-modal .cm-close,
  .gm-recv-modal .rm-zip-close{
    position:relative;
  }
  .oc-cart::after, .oc-copy::after, .ww-del::after, .rv-btn::after, .gm-line-del::after,
  .gm-code-modal .oc-cart::after, .gm-code-modal .oc-copy::after,
  .gm-recv-modal .rm-close::after, .gm-code-modal .cm-close::after,
  .gm-recv-modal .rm-zip-close::after{
    content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    width:max(100%,44px);height:max(100%,44px);
  }
  /* 실제 크기도 조금 키운다 */
  .oc-cart{width:40px;height:38px;}
  .oc-copy{height:38px;}
  .gm-wish-card .ww-del{width:32px;height:32px;font-size:17px;right:-6px;top:-6px;}
  .ci-recv .rv-btn{height:38px;}
  .gm-line-del{width:40px;height:40px;}
  .gm-wish-card .ww-btn{min-height:42px;}
  .gm-recv-modal .rm-close,.gm-code-modal .cm-close{width:38px;height:38px;}
}

/* ============================================================
   자체 대화상자 gmAlert / gmConfirm (2026-07-28)
   브라우저 기본 alert/confirm 의 "대화상자 숨기기" 때문에 안내가 사라지는 문제 대응
   ============================================================ */
.gm-dlg-dim{
  position:fixed;inset:0;background:rgba(28,30,24,.5);
  z-index:200010;touch-action:none;
}
.gm-dlg{
  position:fixed;z-index:200011;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(400px,calc(100vw - 40px));
  background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(0,0,0,.28);
  padding:26px 22px 18px;text-align:center;
}
.gm-dlg[hidden],.gm-dlg-dim[hidden]{display:none;}
.gm-dlg-msg{
  margin:0 0 20px;font-size:14.5px;line-height:1.65;color:var(--txt);
  white-space:pre-line;word-break:break-word;max-height:52vh;overflow-y:auto;
}
.gm-dlg-btns{display:flex;gap:8px;}
.gm-dlg-btns button{
  flex:1;height:48px;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:15px;font-weight:800;transition:background .15s;
  touch-action:manipulation;
}
.gm-dlg-btns button[hidden]{display:none;}
.gm-dlg-ok{border:0;background:var(--point);color:#fff;}
.gm-dlg-ok:hover{background:var(--point-dark);}
.gm-dlg-cancel{border:1.5px solid var(--line);background:#fff;color:#6b6b66;}
.gm-dlg-cancel:hover{border-color:var(--point);color:var(--point-dark);}
.gm-dlg-btns button:active{transform:scale(.98);}

@media (max-width:768px){
  .gm-dlg{width:calc(100vw - 32px);padding:22px 16px 16px;border-radius:16px;}
  .gm-dlg-msg{font-size:14px;margin-bottom:18px;}
  .gm-dlg-btns button{height:50px;}
}
@media (hover:none){
  .gm-dlg-ok:hover{background:var(--point);}
  .gm-dlg-cancel:hover{border-color:var(--line);color:#6b6b66;}
}
