@charset "utf-8";

/* ── Pretendard self-hosted ─────────────────────────────────────────────── */
@font-face { font-family:"Pretendard"; font-weight:100; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Thin.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:200; font-style:normal; font-display:swap; src:url("fonts/Pretendard-ExtraLight.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:300; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Light.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:400; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Regular.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:500; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Medium.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:600; font-style:normal; font-display:swap; src:url("fonts/Pretendard-SemiBold.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:700; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Bold.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:800; font-style:normal; font-display:swap; src:url("fonts/Pretendard-ExtraBold.woff") format("woff"); }
@font-face { font-family:"Pretendard"; font-weight:900; font-style:normal; font-display:swap; src:url("fonts/Pretendard-Black.woff") format("woff"); }

/* ── Fraunces (campaign / editorial only) ───────────────────────────────── */
@import url("https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400&display=swap");

/* ── Design tokens ──────────────────────────────────────────────────────── */
:root {
  --grovi-green-900: #1f3d2a;
  --grovi-green-800: #2a5738;
  --grovi-green-700: #33683f;
  --grovi-green-600: #3f7a4a;
  --grovi-green-500: #4f8b5a;
  --grovi-green-400: #7ba785;
  --grovi-green-300: #aac4b0;
  --grovi-green-200: #d2e0d5;
  --grovi-green-100: #eaf0ea;
  --grovi-green-50:  #f5f8f4;

  --ivory:        #fbf9f4;
  --cream:        #f5f1e8;
  --sand:         #ece6d8;
  --stone-100:    #e8e4dc;
  --stone-200:    #d9d4c8;
  --stone-300:    #b8b2a4;
  --stone-400:    #8e8878;
  --stone-500:    #6b6658;
  --charcoal-700: #3a3730;
  --charcoal-800: #26231e;
  --charcoal-900: #15130f;

  --rose-500: #b5594e;
  --rose-400: #c97a6f;
  --rose-100: #f1dcd6;

  --bg:            var(--ivory);
  --bg-subtle:     var(--cream);
  --bg-elevated:   #ffffff;
  --fg:            var(--charcoal-800);
  --fg-muted:      var(--stone-500);
  --fg-subtle:     var(--stone-400);
  --border:        var(--stone-100);
  --border-strong: var(--stone-200);
  --primary:       var(--grovi-green-700);
  --primary-hover: var(--grovi-green-800);
  --on-primary:    var(--ivory);

  --font-sans:    "Pretendard","Noto Sans KR",system-ui,-apple-system,Helvetica,Arial,sans-serif;
  --font-display: "Fraunces","Noto Serif KR",Georgia,serif;

  --shadow-xs: 0 1px 2px rgba(38,35,30,.04);
  --shadow-sm: 0 2px 6px rgba(38,35,30,.06);
  --shadow-md: 0 8px 20px rgba(38,35,30,.08);
  --shadow-lg: 0 18px 40px rgba(38,35,30,.12);

  /* 콘텐츠 폭·좌우 여백: 헤더 / Trust / 푸터 동일 */
  --gv-container-max: 1280px;
  --gv-gutter: 40px;

  --ease-standard:   cubic-bezier(.4,0,.2,1);
  --ease-emphasized: cubic-bezier(.2,.7,.1,1);
  --dur-fast: 120ms;
  --dur-base: 220ms;
  --dur-slow: 420ms;
}

/* ── Reset ──────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-y: scroll; }
body {
  margin: 0; padding: 0;
  font-family: var(--font-sans);
  font-size: 15px; line-height: 1.6;
  color: var(--fg); background: var(--ivory);
  -webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4,h5,h6 { margin: 0; padding: 0; font-family: var(--font-sans); }
ul, dl, dt, dd { margin: 0; padding: 0; list-style: none; }
p { margin: 0; padding: 0; }
a { color: inherit; text-decoration: none; cursor: pointer; }
button { font-family: var(--font-sans); cursor: pointer; }
img { display: block; max-width: 100%; }
input, select, textarea { font-family: var(--font-sans); font-size: inherit; color: inherit; }
hr { display: none; }
legend {
  position: absolute; margin: 0; padding: 0;
  font-size: 0; line-height: 0;
  text-indent: -9999em; overflow: hidden;
}
.sound_only {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0,0,0,0);
}

/* ── Layout shell ───────────────────────────────────────────────────────── */
#hd, #wrapper, #ft { min-width: 1200px; }
#hd_pop { display: none; }   /* JS로 팝업 있을 때만 표시 */
.gv-container {
  max-width: var(--gv-container-max);
  margin: 0 auto;
  padding: 0 var(--gv-gutter);
}
#wrapper { background: var(--ivory); }
#container { padding: 0; }
.shop-content { padding: 0; }
#hd_login_msg, #wrapper_title, #text_size, #aside { display: none; }

/* ── Typography ─────────────────────────────────────────────────────────── */
.gv-eyebrow {
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--primary);
}
.gv-display {
  font-family: var(--font-sans); font-weight: 800;
  font-size: 60px; line-height: 1.05;
  letter-spacing: -0.02em; color: var(--charcoal-800); margin: 0;
}
.gv-display-sm {
  font-family: var(--font-sans); font-weight: 700;
  font-size: 36px; line-height: 1.15;
  letter-spacing: -0.02em; color: var(--charcoal-800); margin: 0;
}
.gv-h2 {
  font-family: var(--font-sans); font-weight: 700;
  font-size: 32px; letter-spacing: -0.02em;
  color: var(--charcoal-800); margin: 8px 0 0; line-height: 1.2;
}
.grovi-campaign .gv-display    { font-family: var(--font-display); font-weight: 500; }
.grovi-campaign .gv-display-sm { font-family: var(--font-display); font-weight: 500; }
.grovi-campaign .gv-h2         { font-family: var(--font-display); font-weight: 500; }
.gv-link {
  font-size: 13px; color: var(--charcoal-800);
  border-bottom: 1px solid transparent;
  transition: border-color var(--dur-base);
}
.gv-link:hover { border-color: var(--charcoal-800); }

/* ── Sections ───────────────────────────────────────────────────────────── */
.gv-section        { padding: 88px 0; }
.gv-section--band  { background: var(--cream); }
.gv-section--tight { padding: 56px 0; }
.gv-section-head   { margin-bottom: 36px; }
.gv-section-head-row {
  display: flex; justify-content: space-between;
  align-items: flex-end; margin-top: 8px;
}

/* ── Utility bar ────────────────────────────────────────────────────────── */
.gv-utility {
  background: var(--charcoal-900);
  color: var(--stone-300);
  font-size: 11px; letter-spacing: 0.04em;
}
.gv-utility-inner {
  display: flex; justify-content: space-between;
  height: 36px; align-items: center;
}
.gv-utility-left  { display: flex; gap: 12px; align-items: center; }
.gv-utility-right { display: flex; gap: 18px; }
.gv-utility-right a { color: var(--stone-300); }
.gv-utility-right a:hover { color: #fbf9f4; }
.gv-utility .sep  { opacity: 0.4; }

/* ── Header ─────────────────────────────────────────────────────────────── */
.gv-header,
#hd.gv-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(251,249,244,.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}
.gv-header-main {
  display: flex; align-items: center;
  gap: 32px; height: 78px;
}
.gv-logo img { height: 30px; }
.gv-nav { display: flex; gap: 28px; margin-left: 20px; }
.gv-nav-item {
  font-size: 14px; font-weight: 500;
  color: var(--charcoal-800); padding: 6px 0;
  position: relative;
}
.gv-nav-item.on { color: var(--primary); }
.gv-nav-item.on::after {
  content: ''; position: absolute;
  bottom: -2px; left: 0; right: 0;
  height: 2px; background: var(--primary);
}
.gv-nav-item.muted { color: var(--stone-500); }
.gv-nav-item:hover { color: var(--primary); }
.gv-header-tools {
  margin-left: auto; display: flex;
  align-items: center; gap: 14px;
}
.gv-search {
  display: flex; align-items: center; gap: 8px;
  background: #fff; border: 1px solid var(--border);
  border-radius: 999px; padding: 0 16px;
  height: 40px; width: 240px; color: var(--stone-500);
}
.gv-search input {
  border: 0 !important; outline: 0;
  background: transparent; width: 100%;
  font-size: 13px; color: var(--charcoal-800);
  box-shadow: none !important;
}
.gv-icon-btn {
  position: relative; width: 40px; height: 40px;
  border: 0; background: transparent; border-radius: 999px;
  color: var(--charcoal-800); font-size: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background var(--dur-base);
}
.gv-icon-btn:hover { background: var(--stone-100); }
.gv-count {
  position: absolute; top: 4px; right: 4px;
  background: var(--primary); color: #fbf9f4;
  font-size: 10px; font-weight: 700;
  border-radius: 999px; min-width: 16px; height: 16px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 5px;
}

/* ── Side quick panel ───────────────────────────────────────────────────── */
#side_menu {
  position: fixed; right: 0; top: 50%;
  transform: translateY(-50%);
  z-index: 100;
}
#quick { display: flex; flex-direction: column; gap: 0; list-style: none; margin: 0; padding: 0; }
#quick li { display: block; }
.btn_sm {
  width: 48px; height: 48px;
  background: var(--charcoal-900); border: 0;
  color: #fbf9f4; font-size: 15px;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 2px;
  transition: background var(--dur-base);
}
.btn_sm:hover, .btn_sm_on { background: var(--primary) !important; }
.btn_sm .qk_tit { font-size: 8px; font-family: var(--font-sans); }
#top_btn {
  width: 48px; height: 48px; background: var(--stone-300);
  border: 0; color: var(--charcoal-800); font-size: 16px;
  display: flex; align-items: center; justify-content: center;
  transition: background var(--dur-base);
}
#top_btn:hover { background: var(--stone-400); }
#tabs_con {
  display: none;
  position: absolute; right: 56px; top: 0;
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; box-shadow: var(--shadow-lg);
  width: 280px;
}
.qk_con { display: none; }
.qk_con_wr { padding: 16px; }
.con_close {
  display: block; width: 100%;
  background: transparent; border: 0;
  border-top: 1px solid var(--border);
  padding: 10px; font-size: 12px;
  color: var(--stone-500); text-align: center;
}
.side_tnb { margin-top: 8px; }
.side_tnb li { padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.side_tnb li:last-child { border-bottom: 0; }
.side_tnb a:hover { color: var(--primary); }

/* ── Buttons ────────────────────────────────────────────────────────────── */
.gv-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 8px; height: 48px; padding: 0 26px; border-radius: 4px;
  font-family: var(--font-sans); font-weight: 600; font-size: 14px;
  border: 0; cursor: pointer;
  transition: all var(--dur-base) var(--ease-standard);
}
.gv-btn-primary              { background: var(--primary); color: #fbf9f4; }
.gv-btn-primary:hover        { background: var(--primary-hover); }
.gv-btn-secondary            { background: #fff; color: var(--charcoal-800); border: 1px solid var(--charcoal-800); }
.gv-btn-secondary:hover      { background: var(--charcoal-800); color: #fbf9f4; }
.gv-btn-ghost                { background: transparent; color: var(--charcoal-800); border: 1px solid var(--border-strong); }
.gv-btn-ghost:hover          { background: var(--stone-100); }
.gv-btn-ghost-light          { background: transparent; color: #fbf9f4; border: 1px solid rgba(251,249,244,.5); }
.gv-btn-ghost-light:hover    { background: rgba(251,249,244,.12); }
.gv-btn-sm                   { height: 34px; padding: 0 14px; font-size: 12px; }
.gv-btn-block                { width: 100%; }

/* ── Hero ───────────────────────────────────────────────────────────────── */
.gv-hero { position: relative; height: 640px; overflow: hidden; }
/* 배너 슬라이더가 hero 높이를 꽉 채우도록 */
.gv-hero .gv-banner,
.gv-hero .gv-banner-stage,
.gv-hero .gv-banner-track,
.gv-hero .gv-banner-slide { height: 100%; }
.gv-hero .gv-banner-slide img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.gv-hero-img {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
}
.gv-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg,rgba(38,35,30,.32) 0%,rgba(38,35,30,.1) 45%,rgba(38,35,30,.62) 100%);
}
.gv-hero-copy {
  position: relative; height: 100%;
  display: flex; flex-direction: column;
  justify-content: flex-end; padding-bottom: 88px;
}
.gv-hero-copy .gv-display { font-size: 72px; line-height: 1; }
.gv-hero-actions { margin-top: 32px; display: flex; gap: 12px; }
.gv-hero-dots {
  position: absolute; bottom: 40px; right: 40px;
  display: flex; gap: 8px;
}
.gv-hero-dots span {
  width: 8px; height: 8px;
  background: rgba(251,249,244,.4);
  border-radius: 50%;
  transition: background var(--dur-base), width var(--dur-base), border-radius var(--dur-base);
}
.gv-hero-dots span.on { background: #fbf9f4; width: 20px; border-radius: 4px; }

/* ── Category tiles ─────────────────────────────────────────────────────── */
.gv-cat-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: 16px; height: 420px;
}
.gv-cat-tile {
  position: relative; overflow: hidden;
  border-radius: 8px; cursor: pointer; display: block;
}
.gv-cat-tile:first-child { grid-row: 1 / span 2; }
.gv-cat-img {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 600ms ease;
}
.gv-cat-tile:hover .gv-cat-img { transform: scale(1.04); }
.gv-cat-tile::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg,transparent 50%,rgba(38,35,30,.6));
}
.gv-cat-label {
  position: absolute; left: 20px; bottom: 18px;
  color: #fbf9f4; z-index: 2;
}
.gv-cat-label .gv-cat-ko {
  display: block; font-size: 20px;
  font-weight: 700; letter-spacing: -0.01em;
}
.grovi-campaign .gv-cat-label .gv-cat-ko {
  font-family: var(--font-display); font-weight: 500;
  font-size: 22px; letter-spacing: 0;
}
.gv-cat-label .gv-cat-en {
  font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; opacity: 0.8;
}

/* ── Product grid + card ────────────────────────────────────────────────── */
.gv-grid-4 { display: grid; grid-template-columns: repeat(4,1fr); gap: 24px; }
.gv-grid-5 { display: grid; grid-template-columns: repeat(5,1fr); gap: 20px; }

.gv-pcard {
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden; cursor: pointer;
  transition: box-shadow var(--dur-base), transform var(--dur-base);
  display: block;
}
.gv-pcard:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }

/* 1:1 박스 — 썸네일에 HTML width/height(원본 비율)가 있어도 꽉 채움 */
.gv-pcard-img {
  position: relative;
  width: 100%;
  aspect-ratio: 1/1;
  background-color: var(--sand);
  overflow: hidden;
}
.gv-pcard-img > a {
  position: absolute;
  inset: 0;
  display: block;
  z-index: 1;
}
/* list.20: a>img / relation.10: img 직접(링크는 부모) 모두 1:1 꽉 채움 */
.gv-pcard-img > a > img,
.gv-pcard-img > img {
  position: absolute;
  top: 0; left: 0;
  width: 100% !important;
  height: 100% !important;
  min-width: 100%;
  min-height: 100%;
  max-width: none;
  object-fit: cover !important;
  object-position: center;
  display: block;
  transition: transform 400ms ease;
  z-index: 0;
}
.gv-pcard:hover .gv-pcard-img > a > img,
.gv-pcard:hover .gv-pcard-img > img { transform: scale(1.03); }

.gv-tag {
  position: absolute; top: 12px; left: 12px;
  padding: 4px 8px; font-size: 10px;
  letter-spacing: 0.1em; font-weight: 700;
  border-radius: 2px; color: #fbf9f4;
  z-index: 2;
}
.gv-tag-dark    { background: var(--charcoal-800); }
.gv-tag-new     { background: var(--primary); }
.gv-tag-sale    { background: var(--rose-500); }
.gv-tag-soft    { background: var(--grovi-green-100); color: var(--primary); }
.gv-tag-soldout { background: var(--stone-200); color: var(--stone-500); }

.gv-wish {
  position: absolute; top: 10px; right: 10px; left: auto;
  width: 32px; height: 32px;
  background: #fff; border: 0;
  box-shadow: 0 1px 4px rgba(0,0,0,.18);
  border-radius: 999px; color: var(--charcoal-800);
  cursor: pointer; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; transition: color var(--dur-fast), box-shadow var(--dur-fast);
}
.gv-wish:hover, .gv-wish.on { color: var(--rose-500); box-shadow: 0 2px 8px rgba(0,0,0,.22); }

.gv-pcard-body { padding: 16px 18px 20px; }
.gv-pcard-ey {
  font-size: 10px;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--stone-400);
  margin: 0 0 6px;
  line-height: 1.2;
  min-height: 14px;
  font-weight: 600;
}
.gv-pcard-ey--img { text-transform: none; letter-spacing: 0; }
.gv-pcard-ey--img img {
  max-height: 15px; max-width: 160px; width: auto;
  object-fit: contain; object-position: 0 50%;
  display: block;
}
.gv-pcard-name {
  font-size: 14px; color: var(--charcoal-800);
  margin-top: 0; line-height: 1.45; min-height: 40px;
}
.gv-pcard-prow {
  display: flex; align-items: baseline;
  gap: 8px; margin-top: 10px;
}
.gv-pcard-was  { font-size: 12px; color: var(--stone-300); text-decoration: line-through; }
.gv-pcard-now  { font-size: 17px; font-weight: 700; color: var(--charcoal-800); letter-spacing: -0.01em; }
.gv-pcard-off  { font-size: 13px; font-weight: 700; color: var(--rose-500); }
.gv-pcard-meta {
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px;
  font-size: 11px; color: var(--stone-500); margin-top: 8px;
}
.gv-pcard-meta--ship-only { justify-content: flex-end; }
.gv-pcard-rating { display: inline-flex; align-items: center; gap: 4px; }
.gv-pcard-rating .bi-star-fill { color: var(--stone-300); font-size: 10px; }
.gv-pcard-rating--empty { min-width: 0; }
.gv-pcard-free {
  background: var(--grovi-green-100); color: var(--primary);
  font-weight: 600; padding: 2px 6px; border-radius: 2px;
  font-size: 10px; letter-spacing: 0.04em;
  flex-shrink: 0; white-space: nowrap;
}
.sct_noitem { text-align: center; padding: 60px 0; color: var(--stone-500); font-size: 14px; }

/* ── Editorial split ────────────────────────────────────────────────────── */
.gv-split {
  display: grid; grid-template-columns: 1.1fr 1fr;
  gap: 72px; align-items: center;
}
.gv-split-img {
  aspect-ratio: 4/5; background-size: cover;
  background-position: center; border-radius: 8px;
}
.gv-split-actions { margin-top: 28px; }

/* ── Promo band ──────────────────────────────────────────────────────────── */
.gv-promo-band {
  background: var(--grovi-green-900, #1a3d22);
}
.gv-promo-inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; padding: 32px 0;
}
.gv-promo-title {
  font-size: 24px; font-weight: 700; color: #fbf9f4;
  margin: 6px 0 4px; line-height: 1.2;
}
.gv-promo-sub { font-size: 13px; color: rgba(251,249,244,.7); }

/* ── Trust strip ────────────────────────────────────────────────────────── */
/* 푸터(gv-container > gv-footer-top)와 동일: .gv-trust는 안쪽에만, 가로 40px은 바깥 .gv-container */
.gv-trust {
  display: grid; grid-template-columns: repeat(4,1fr); gap: 24px;
  border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
  padding-top: 32px; padding-bottom: 32px;
  width: 100%;
  box-sizing: border-box;
}
.gv-trust-item { display: flex; align-items: center; gap: 14px; }
.gv-trust-ic {
  width: 44px; height: 44px; border-radius: 999px;
  background: var(--cream);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--primary); font-size: 18px; flex-shrink: 0;
}
.gv-trust-t { font-size: 13px; font-weight: 600; color: var(--charcoal-800); }
.gv-trust-d { font-size: 12px; color: var(--stone-500); margin-top: 2px; }

/* ── Main banner (hero area) ────────────────────────────────────────────── */
#idx_banner { margin: 0; }
.mainbanner { margin: 0; }

/* ── Input focus override ───────────────────────────────────────────────── */
input[type=text]:focus,
input[type=password]:focus,
textarea:focus,
select:focus {
  box-shadow: 0 0 0 3px rgba(51,104,63,.14);
  border: 1px solid var(--primary) !important;
  outline: none;
}

/* ── Footer ─────────────────────────────────────────────────────────────── */
#ft {
  background: var(--charcoal-900);
  color: var(--stone-300);
  margin-top: 0;
  min-width: 0;
}
#ft > .gv-container { padding-top: 0; padding-bottom: 0; }
.gv-footer-top {
  display: grid; grid-template-columns: 1.3fr 2fr;
  gap: 64px;
  padding: 72px 0 56px;
  box-sizing: border-box;
}
.gv-news-form { margin-top: 18px; display: flex; gap: 8px; max-width: 380px; }
.gv-news-form input {
  flex: 1; height: 44px; padding: 0 14px;
  background: rgba(251,249,244,.08);
  border: 1px solid rgba(251,249,244,.12) !important;
  border-radius: 2px; color: #fbf9f4; outline: 0; font-size: 13px;
}
.gv-news-form input:focus {
  border-color: rgba(170,196,176,.6) !important;
  box-shadow: none !important;
}
.gv-news-form button {
  background: #fbf9f4; color: var(--charcoal-900);
  border: 0; padding: 0 20px; font-weight: 600;
  font-size: 13px; border-radius: 2px; cursor: pointer;
  white-space: nowrap;
  transition: background var(--dur-base);
}
.gv-news-form button:hover { background: var(--stone-100); }
.gv-footer-links { display: grid; grid-template-columns: repeat(3,1fr); gap: 40px; }
.gv-footer-links h5 { font-size: 13px; color: #fbf9f4; margin: 0 0 16px; }
.gv-footer-links a { display: block; font-size: 13px; color: var(--stone-400); padding: 4px 0; }
.gv-footer-links a:hover { color: #fbf9f4; }
.gv-footer-bottom {
  border-top: 1px solid rgba(251,249,244,.08);
  padding: 24px 0 36px;
  font-size: 11px; color: var(--stone-500); line-height: 1.8;
}

/* ── Font Awesome 4 compat ───────────────────────────────────────────────── */
.fa { font-size: inherit; }

/* ══════════════════════════════════════════════════════════════════════════
   PLP — 상품 목록 페이지
   ══════════════════════════════════════════════════════════════════════════ */

/* 카테고리 헤더 배너 */
.gv-cat-header {
  position: relative; height: 280px;
  background-size: cover; background-position: center;
  background-color: var(--sand);
}
.gv-cat-header-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(38,35,30,.35), rgba(38,35,30,.55));
}
.gv-cat-header-copy {
  position: relative; height: 100%;
  display: flex; flex-direction: column; justify-content: center;
}
.gv-breadcrumb { font-size: 12px; color: rgba(255,255,255,0.75); margin-top: 12px; }
.gv-breadcrumb a { color: rgba(255,255,255,0.75); }
.gv-breadcrumb a:hover { color: #fff; }
.gv-breadcrumb strong { color: #fff; font-weight: 500; }

/* PLP 레이아웃 — 사이드바 + 메인 그리드 */
.gv-plp-wrap {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 40px;
  padding: 48px 40px 80px;
  max-width: 1280px;
  margin: 0 auto;
}
.gv-plp-side { min-width: 0; }
.gv-plp-main { min-width: 0; }

/* 사이드바 섹션 */
.gv-side-group { border-bottom: 1px solid var(--border); padding: 20px 0; }
.gv-side-group:first-child { padding-top: 0; }
.gv-side-group h4 {
  font-size: 13px; font-weight: 600;
  margin: 0 0 14px; color: var(--charcoal-800);
}
.gv-side-group ul { list-style: none; margin: 0; padding: 0; }
.gv-side-group li {
  display: flex; justify-content: space-between;
  padding: 7px 0; font-size: 13px; color: var(--stone-500);
  cursor: pointer; border-radius: 4px;
  transition: color var(--dur-fast);
}
.gv-side-group li:hover { color: var(--charcoal-800); }
.gv-side-group li.on { color: var(--primary); font-weight: 600; }
.gv-side-group li .num { color: var(--stone-300); font-size: 11px; }
.gv-side-group label {
  display: flex; gap: 8px; align-items: center;
  cursor: pointer; font-size: 13px; color: var(--stone-500);
  padding: 6px 0; transition: color var(--dur-fast);
}
.gv-side-group label:hover { color: var(--charcoal-800); }
.gv-side-group input[type=checkbox],
.gv-side-group input[type=radio] { accent-color: var(--primary); }

/* 색상 스와치 */
.gv-colors { display: flex; gap: 8px; flex-wrap: wrap; }
.gv-color-dot {
  width: 22px; height: 22px; border-radius: 999px;
  border: 1px solid var(--border); cursor: pointer;
  transition: transform var(--dur-fast), box-shadow var(--dur-fast);
}
.gv-color-dot:hover { transform: scale(1.15); box-shadow: 0 0 0 2px var(--primary); }

/* 툴바 */
.gv-plp-toolbar {
  display: flex; justify-content: space-between; align-items: center;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 24px;
}
.gv-plp-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.gv-chip {
  background: #fff; border: 1px solid var(--border);
  padding: 7px 16px; border-radius: 999px;
  font-size: 13px; color: var(--stone-500); cursor: pointer;
  transition: all var(--dur-base);
}
.gv-chip:hover { border-color: var(--primary); color: var(--primary); }
.gv-chip.on { background: var(--primary); color: #fbf9f4; border-color: var(--primary); }
.gv-plp-right { display: flex; align-items: center; gap: 14px; }
.gv-plp-count { font-size: 13px; color: var(--stone-500); }
.gv-select {
  height: 36px; padding: 0 12px;
  border: 1px solid var(--border); background: #fff;
  border-radius: 2px; font-size: 13px;
  color: var(--charcoal-800); outline: 0; cursor: pointer;
}

/* 페이지네이션 */
.gv-pagination {
  display: flex; justify-content: center;
  gap: 6px; margin-top: 56px;
}
.gv-pagination a, .gv-pagination strong, .gv-pagination span {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  border: 1px solid var(--border); background: #fff;
  border-radius: 2px; font-size: 13px; color: var(--stone-500);
  text-decoration: none; transition: all var(--dur-base);
}
.gv-pagination a:hover { border-color: var(--primary); color: var(--primary); }
.gv-pagination strong, .gv-pagination .on {
  background: var(--charcoal-800); color: #fbf9f4;
  border-color: var(--charcoal-800); font-weight: 700;
}
/* 기존 그누보드 페이지네이션 오버라이드 */
#pg_wrap { text-align: center; padding: 0; margin-top: 56px; }
#pg_wrap a, #pg_wrap strong, #pg_wrap span.pg_current {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  border: 1px solid var(--border); background: #fff;
  border-radius: 2px; font-size: 13px; color: var(--stone-500);
  text-decoration: none; margin: 0 2px;
  transition: all var(--dur-base);
}
#pg_wrap a:hover { border-color: var(--primary); color: var(--primary); }
#pg_wrap strong, #pg_wrap span.pg_current {
  background: var(--charcoal-800); color: #fbf9f4;
  border-color: var(--charcoal-800);
}

/* ══════════════════════════════════════════════════════════════════════════
   PDP — 상품 상세 페이지
   ══════════════════════════════════════════════════════════════════════════ */

.gv-pdp { padding: 32px 0 80px; }
.gv-pdp-breadcrumb { font-size: 12px; color: var(--stone-500); margin-bottom: 24px; }
.gv-pdp-breadcrumb a { color: var(--stone-500); }
.gv-pdp-breadcrumb a:hover { color: var(--primary); }

/* 이미지 갤러리 */
.gv-pdp-top {
  display: grid; grid-template-columns: 1.05fr 1fr;
  gap: 56px; align-items: start;
}
.gv-pdp-gallery {}
.gv-pdp-main-img {
  position: relative; aspect-ratio: 1/1;
  border-radius: 8px; overflow: hidden;
  background-color: var(--sand);
}
.gv-pdp-main-img img,
.gv-pdp-main-img a { display: block; width: 100%; height: 100%; }
.gv-pdp-main-img img { object-fit: cover; }
.gv-pdp-main-img a.popup_item_image:not(:first-child) { display: none; }
.gv-pdp-main-img a.visible { display: block !important; }
.gv-pdp-thumbs {
  display: grid; grid-template-columns: repeat(5,1fr);
  gap: 8px; margin-top: 10px;
}
.gv-pdp-thumb {
  aspect-ratio: 1/1; overflow: hidden;
  border-radius: 4px; border: 1px solid var(--border);
  cursor: pointer; transition: border-color var(--dur-base);
}
.gv-pdp-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-pdp-thumb:hover { border-color: var(--stone-400); }
.gv-pdp-thumb.on { border: 2px solid var(--charcoal-800); }

/* 상품 정보 영역 */
.gv-pdp-info { padding-top: 4px; }
.gv-pdp-brand {
  font-size: 11px; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--stone-400);
}
.gv-pdp-name {
  font-family: var(--font-sans); font-size: 30px;
  font-weight: 700; margin: 10px 0 4px;
  line-height: 1.2; color: var(--charcoal-800);
  letter-spacing: -0.02em;
}
.gv-pdp-desc { font-size: 13px; color: var(--stone-500); line-height: 1.6; margin-top: 2px; }
.gv-pdp-rating {
  display: flex; gap: 10px; font-size: 13px;
  color: var(--stone-500); margin-top: 14px;
  align-items: center; flex-wrap: wrap;
}
.gv-pdp-rating .sep { opacity: 0.4; }
.gv-pdp-rating a {
  border-bottom: 1px solid var(--stone-300);
  padding-bottom: 1px; color: var(--stone-500);
}
.gv-pdp-rating a:hover { color: var(--primary); border-color: var(--primary); }

/* 가격 블록 */
.gv-pdp-price {
  margin: 24px 0;
  padding: 20px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.gv-pdp-was { font-size: 13px; color: var(--stone-300); text-decoration: line-through; }
.gv-pdp-now-row {
  display: flex; align-items: baseline;
  gap: 10px; margin-top: 4px;
}
.gv-pdp-off { font-size: 22px; font-weight: 700; color: var(--rose-500); }
.gv-pdp-now {
  font-size: 30px; font-weight: 700;
  color: var(--charcoal-800); letter-spacing: -0.02em;
}
.gv-pdp-save { font-size: 12px; color: var(--stone-500); margin-top: 4px; }

/* 메타 정보 테이블 */
.gv-pdp-meta-list { list-style: none; margin: 0 0 16px; padding: 0; }
.gv-pdp-meta-list li {
  display: grid; grid-template-columns: 70px 1fr;
  gap: 12px; padding: 10px 0;
  font-size: 13px; color: var(--charcoal-800);
  align-items: start;
  border-bottom: 1px solid var(--border);
}
.gv-pdp-meta-list li > span:first-child { color: var(--stone-500); padding-top: 1px; }

/* 수량 선택기 */
.gv-pdp-qty-row {
  display: flex; justify-content: space-between;
  align-items: center; padding: 16px 0;
}
.gv-qty {
  display: inline-flex;
  border: 1px solid var(--border-strong); border-radius: 2px;
}
.gv-qty button {
  width: 36px; height: 36px; background: transparent;
  border: 0; font-size: 16px; cursor: pointer;
  color: var(--charcoal-800);
  transition: background var(--dur-fast);
}
.gv-qty button:hover { background: var(--stone-100); }
.gv-qty span {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 48px; height: 36px;
  font-size: 14px; font-weight: 600; color: var(--charcoal-800);
  border-left: 1px solid var(--border-strong);
  border-right: 1px solid var(--border-strong);
}
.gv-qty input.num_input {
  width: 48px; height: 36px; text-align: center;
  border: 0 !important; border-left: 1px solid var(--border-strong) !important;
  border-right: 1px solid var(--border-strong) !important;
  font-size: 14px; font-weight: 600;
  outline: none; box-shadow: none !important;
  background: transparent;
}
.gv-pdp-total { font-size: 14px; }
.gv-pdp-total span { font-size: 12px; color: var(--stone-500); margin-right: 10px; }
.gv-pdp-total strong {
  font-family: var(--font-sans); font-size: 24px;
  font-weight: 700; color: var(--charcoal-800);
  letter-spacing: -0.01em;
}

/* 구매 버튼 영역 */
.gv-pdp-actions {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 8px; margin-top: 16px;
}
.gv-pdp-actions-wish {
  grid-column: 1 / -1;
}
.gv-pdp-trust {
  display: flex; gap: 18px; flex-wrap: wrap;
  margin-top: 18px; padding-top: 18px;
  border-top: 1px solid var(--border);
  font-size: 12px; color: var(--stone-500);
}
.gv-pdp-trust i { color: var(--primary); margin-right: 4px; }

/* 탭 영역 */
.gv-pdp-tabs {
  display: flex; margin-top: 80px;
  border-bottom: 2px solid var(--border);
}
.gv-pdp-tabs button {
  flex: 1; background: transparent; border: 0;
  padding: 18px 8px; font-size: 14px; font-weight: 500;
  color: var(--stone-400); cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color var(--dur-base), border-color var(--dur-base);
}
.gv-pdp-tabs button:hover { color: var(--charcoal-800); }
.gv-pdp-tabs button.on {
  color: var(--charcoal-800);
  border-bottom-color: var(--charcoal-800);
  font-weight: 600;
}
/* 기존 sit_tab 탭 오버라이드 */
#sit_tab .tab_tit { display: flex; border-bottom: 2px solid var(--border); margin: 80px 0 0; padding: 0; list-style: none; }
#sit_tab .tab_tit li { flex: 1; }
#sit_tab .tab_tit button {
  width: 100%; background: transparent; border: 0;
  padding: 18px 8px; font-size: 14px; font-weight: 500;
  color: var(--stone-400); cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -2px;
  transition: color var(--dur-base);
  font-family: var(--font-sans);
}
#sit_tab .tab_tit button:hover { color: var(--charcoal-800); }
#sit_tab .tab_tit button.selected {
  color: var(--charcoal-800); border-bottom-color: var(--charcoal-800); font-weight: 600;
}
#sit_tab .tab_con { list-style: none; padding: 0; margin: 0; }
#sit_tab .tab_con > li { padding: 40px 0; display: none; }
#sit_tab .tab_con > li.selected { display: block; }
.gv-pdp-tab-body { padding: 40px 0; }

/* 리뷰 요약 */
.gv-review-summary {
  display: grid; grid-template-columns: 200px 1fr;
  gap: 48px; background: var(--cream); border-radius: 8px;
  padding: 32px; margin-bottom: 28px; align-items: center;
}
.gv-review-score { text-align: center; }
.gv-review-score-num {
  font-family: var(--font-sans); font-size: 48px;
  font-weight: 700; letter-spacing: -0.02em; color: var(--charcoal-800);
}
.gv-review-score-stars { color: #b8862a; font-size: 16px; letter-spacing: 2px; }
.gv-review-score-cnt { font-size: 12px; color: var(--stone-500); margin-top: 6px; }
.gv-review-bars { display: flex; flex-direction: column; gap: 8px; }
.gv-review-bar {
  display: grid; grid-template-columns: 16px 1fr 44px;
  gap: 12px; align-items: center;
  font-size: 12px; color: var(--stone-500);
}
.gv-bar { height: 6px; background: var(--stone-100); border-radius: 999px; overflow: hidden; }
.gv-bar-fill { display: block; height: 100%; background: var(--primary); }
.gv-review-item { padding: 20px 0; border-bottom: 1px solid var(--border); }
.gv-review-item:last-child { border-bottom: 0; }
.gv-review-head {
  display: flex; gap: 12px; align-items: center;
  font-size: 13px; color: var(--charcoal-800);
}
.gv-review-head .date { margin-left: auto; color: var(--stone-400); font-size: 12px; }
.gv-review-text { margin-top: 10px; font-size: 13px; color: var(--charcoal-700); line-height: 1.6; }

/* 배송/교환 탭 */
.gv-pdp-ship h4 { font-size: 14px; margin: 0 0 6px; color: var(--charcoal-800); }
.gv-pdp-ship h4 + h4 { margin-top: 20px; }
.gv-pdp-ship p { color: var(--stone-500); line-height: 1.7; margin: 0; font-size: 13px; }

/* 관련상품 */
.gv-pdp-related {
  margin-top: 0;
  padding: 64px 0;
  background: var(--cream);
  border-top: 1px solid var(--stone-100);
}
#sit_rel h2 { font-size: 11px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--primary); margin-bottom: 8px; }

/* 옵션 선택 */
.sit_option { margin-bottom: 16px; }
.sit_option h3 { font-size: 13px; font-weight: 600; color: var(--stone-500); margin: 0 0 8px; }
.sit_option select { width: 100%; }
.sit_opt_list {
  background: var(--cream); border-radius: 4px;
  padding: 12px 14px; margin-bottom: 8px;
  font-size: 13px; color: var(--charcoal-800);
}
.sit_qty_minus, .sit_qty_plus {
  width: 28px; height: 28px; background: #fff;
  border: 1px solid var(--border); border-radius: 2px;
  font-size: 14px; cursor: pointer;
}
.sit_opt_prc { font-size: 13px; color: var(--primary); margin-left: 8px; }
#sit_tot_price {
  text-align: right; padding: 16px 0;
  font-size: 14px; color: var(--charcoal-800);
  border-top: 1px solid var(--border);
}
#sit_ov_soldout {
  background: var(--rose-100); color: var(--rose-500);
  padding: 12px 16px; border-radius: 4px;
  font-size: 13px; margin-bottom: 16px;
}

/* ══════════════════════════════════════════════════════════════════════════
   장바구니 — 간략 박스 & 전체 Cart 페이지
   ══════════════════════════════════════════════════════════════════════════ */

/* 사이드 장바구니 박스 */
.gv-cart-box {}
.gv-cart-box h3 {
  font-size: 14px; font-weight: 600; color: var(--charcoal-800);
  padding-bottom: 12px; border-bottom: 1px solid var(--border); margin: 0 0 12px;
}
.gv-cart-box .gv-cart-count {
  font-size: 13px; color: var(--primary); font-weight: 700;
  background: var(--grovi-green-100); padding: 2px 8px; border-radius: 999px;
  margin-left: 4px;
}
.gv-cart-box ul { list-style: none; padding: 0; margin: 0; max-height: 320px; overflow-y: auto; }
.gv-cart-box li {
  display: grid; grid-template-columns: 56px 1fr 28px;
  gap: 10px; align-items: center;
  padding: 10px 0; border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.gv-cart-box li:last-child { border-bottom: 0; }
.gv-cart-box .prd_img img { width: 56px; height: 56px; object-fit: cover; border-radius: 4px; display: block; }
.gv-cart-box .prd_name { display: block; color: var(--charcoal-800); font-size: 12px; line-height: 1.4; margin-bottom: 4px; }
.gv-cart-box .prd_cost { font-size: 13px; font-weight: 600; color: var(--charcoal-800); display: block; }
.gv-cart-box .cart_del {
  background: transparent; border: 0; color: var(--stone-400);
  font-size: 14px; cursor: pointer; padding: 0;
  transition: color var(--dur-fast);
}
.gv-cart-box .cart_del:hover { color: var(--rose-500); }
.gv-cart-box .li_empty { font-size: 13px; color: var(--stone-400); padding: 20px 0; text-align: center; grid-column: 1/-1; }
.gv-cart-box-footer { padding-top: 12px; border-top: 1px solid var(--border); margin-top: 4px; }
.gv-cart-box-footer .btn_submit {
  display: block; width: 100%; background: var(--primary);
  color: #fbf9f4; border: 0; padding: 11px; border-radius: 4px;
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: background var(--dur-base);
}
.gv-cart-box-footer .btn_submit:hover { background: var(--primary-hover); }
.gv-cart-box-footer .go_cart {
  display: block; text-align: center;
  margin-top: 8px; font-size: 12px; color: var(--stone-500);
  border-bottom: 1px solid transparent; transition: border-color var(--dur-base);
}
.gv-cart-box-footer .go_cart:hover { border-color: var(--stone-500); }

/* ══════════════════════════════════════════════════════════════════════════
   마이페이지
   ══════════════════════════════════════════════════════════════════════════ */

#smb_my, .gv-mypage { padding: 56px 0 100px; }
.gv-mypage-layout {
  display: grid; grid-template-columns: 260px 1fr;
  gap: 40px; align-items: start;
}
.gv-mypage-side {
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; padding: 28px 24px;
  position: sticky; top: 130px;
}
.gv-profile {
  display: flex; gap: 12px; align-items: center;
  padding-bottom: 24px; border-bottom: 1px solid var(--border);
}
.gv-profile-avatar {
  width: 52px; height: 52px; border-radius: 999px;
  background: var(--primary); color: #fbf9f4;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 20px; font-weight: 700; flex-shrink: 0;
  overflow: hidden;
}
.gv-profile-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 999px; }
.gv-profile-name { font-size: 15px; font-weight: 600; color: var(--charcoal-800); }
.gv-profile-grade { font-size: 11px; color: var(--primary); letter-spacing: 0.08em; text-transform: uppercase; margin-top: 2px; }
.gv-profile-stats {
  display: grid; grid-template-columns: repeat(3,1fr); gap: 4px;
  text-align: center; padding: 24px 0;
  border-bottom: 1px solid var(--border);
}
.gv-profile-stats .v {
  font-family: var(--font-sans); font-size: 18px;
  font-weight: 700; color: var(--charcoal-800); letter-spacing: -0.01em;
}
.gv-profile-stats .l { font-size: 11px; color: var(--stone-500); margin-top: 2px; }
.gv-side-menu { list-style: none; margin: 8px 0 0; padding: 0; }
.gv-side-menu li {
  display: flex; gap: 10px; align-items: center;
  padding: 10px 12px; font-size: 13px; color: var(--stone-500);
  cursor: pointer; border-radius: 4px;
  transition: all var(--dur-base);
}
.gv-side-menu li:hover { background: var(--cream); color: var(--charcoal-800); }
.gv-side-menu li.on { background: var(--grovi-green-100); color: var(--primary); font-weight: 600; }
.gv-side-menu li i { font-size: 16px; color: var(--stone-400); width: 18px; }
.gv-side-menu li.on i { color: var(--primary); }
.gv-side-group-label {
  font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--stone-400); padding: 14px 12px 4px;
  font-weight: 600; display: block;
}
.gv-mypage-side .gv-side-group + .gv-side-group {
  margin-top: 12px; padding-top: 16px;
  border-top: 1px solid var(--border);
}
.gv-mypage-main {}
.gv-mypage-main .gv-review-item:last-child { border-bottom: 0; }

/* 주문 배송 현황 흐름 */
.gv-ship-flow {
  display: grid; grid-template-columns: repeat(5,1fr);
  gap: 8px; margin-top: 20px;
  background: var(--cream); border-radius: 8px; padding: 20px;
}
.gv-ship-step { text-align: center; position: relative; }
.gv-ship-step:not(:last-child)::after {
  content: ''; position: absolute; top: 18px; right: -50%;
  width: 100%; height: 1px; background: var(--border);
}
.gv-ship-step .num {
  width: 36px; height: 36px; margin: 0 auto; border-radius: 999px;
  background: #fff; border: 1px solid var(--border);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600; color: var(--stone-400);
  position: relative; z-index: 1;
}
.gv-ship-step.on .num { background: var(--primary); color: #fbf9f4; border-color: var(--primary); }
.gv-ship-step .s { font-size: 12px; color: var(--stone-500); margin-top: 10px; }
.gv-ship-step .v { font-size: 22px; font-weight: 700; color: var(--charcoal-800); margin-top: 4px; letter-spacing: -0.01em; }

/* 주문 목록 */
.gv-order-list { margin-top: 14px; }
.gv-order-list .tbl_head03 { width: 100%; font-size: 13px; }
.gv-order-list .tbl_head03 table { width: 100%; border-collapse: collapse; }
.gv-order-list .tbl_head03 caption { font-size: 0; }
.gv-order-list .tbl_head03 th { background: var(--sand); color: var(--stone-500); font-weight: 600; font-size: 12px; padding: 10px 12px; border-bottom: 1px solid var(--border); text-align: center; }
.gv-order-list .tbl_head03 td { padding: 12px; border-bottom: 1px solid var(--border); font-size: 13px; color: var(--charcoal-800); text-align: center; }
.gv-order-list .tbl_head03 tr:last-child td { border-bottom: none; }
.gv-order-list .tbl_head03 a { color: var(--primary); text-decoration: none; }
.gv-order-list .tbl_head03 a:hover { text-decoration: underline; }
.gv-order-row {
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; padding: 20px 24px; margin-bottom: 12px;
}
.gv-order-head {
  display: flex; justify-content: space-between;
  font-size: 13px; color: var(--stone-500); margin-bottom: 14px;
}
.gv-order-head strong { color: var(--charcoal-800); }
.gv-order-status {
  padding: 4px 10px; background: var(--stone-100);
  border-radius: 999px; font-size: 11px; font-weight: 600; color: var(--stone-500);
}
.gv-order-status.active, .gv-order-status.done   { background: var(--grovi-green-100); color: var(--primary); }
.gv-order-status.shipping  { background: #e7eff7; color: #4a6b7a; }
.gv-order-status.pending   { background: #fbf3e4; color: var(--warning, #b8862a); }
.gv-order-status i { margin-right: 4px; }
.gv-order-items { display: flex; flex-direction: column; gap: 10px; margin: 10px 0; }
.gv-order-item { display: flex; gap: 12px; align-items: center; }
.gv-ck-img {
  width: 56px; height: 56px;
  background-size: cover; background-position: center;
  border-radius: 4px; flex-shrink: 0;
  overflow: hidden;
}
.gv-ck-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-ck-name { font-size: 13px; color: var(--charcoal-800); line-height: 1.4; }
.gv-ck-qty  { font-size: 11px; color: var(--stone-500); margin-top: 2px; }
.gv-order-foot {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 14px; border-top: 1px solid var(--border);
  margin-top: 10px; font-size: 14px; color: var(--charcoal-800); font-weight: 600;
}
.gv-order-actions { display: flex; gap: 8px; }
.gv-chips { display: flex; gap: 8px; flex-wrap: wrap; }

/* 테이블 */
.gv-tbl { width: 100%; border-collapse: collapse; font-size: 13px; border: 1px solid var(--border); }
.gv-tbl th, .gv-tbl td { padding: 14px 16px; border-bottom: 1px solid var(--border); text-align: left; }
.gv-tbl tr:last-child th, .gv-tbl tr:last-child td { border-bottom: none; }
.gv-tbl th { background: var(--cream); font-size: 12px; color: var(--stone-500); font-weight: 600; border-right: 1px solid var(--border); }

/* 반품 도움말 배너 */
.gv-returns-help {
  display: flex; gap: 12px; align-items: flex-start;
  background: var(--cream); border: 1px solid var(--border);
  border-radius: 6px; padding: 16px 20px;
  color: var(--charcoal-700); font-size: 13px; line-height: 1.6; margin-bottom: 16px;
}
.gv-returns-help i { font-size: 18px; color: var(--primary); margin-top: 2px; flex-shrink: 0; }
.gv-returns-help strong { color: var(--charcoal-800); display: block; margin-bottom: 2px; font-weight: 600; }

/* 배송지 목록 */
.gv-address-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.gv-address-card {
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; padding: 22px 24px;
}
.gv-address-card.def { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
.gv-address-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.gv-address-body { font-size: 13px; color: var(--charcoal-800); line-height: 1.6; }
.gv-address-name { font-weight: 600; margin-bottom: 6px; }
.gv-address-addr { color: var(--charcoal-700); }
.gv-address-detail { color: var(--stone-500); }

/* 적립금 히어로 */
.gv-point-hero {
  display: flex; align-items: center; gap: 48px;
  background: var(--cream); border-radius: 8px; padding: 32px 40px; flex-wrap: wrap;
}
.gv-point-value {
  font-family: var(--font-sans); font-size: 36px;
  font-weight: 700; color: var(--charcoal-800);
  letter-spacing: -0.02em; margin-top: 6px;
}
.gv-point-meta { font-size: 12px; color: var(--stone-500); margin-top: 6px; }
.gv-point-sep { width: 1px; height: 64px; background: var(--border); flex-shrink: 0; }

/* 블록 컨테이너 */
.gv-block {
  background: #fff; border: 1px solid var(--border);
  border-radius: 8px; padding: 28px; margin-bottom: 16px;
}
.gv-block h3 { font-size: 16px; margin: 0 0 20px; color: var(--charcoal-800); }
.gv-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 20px; }
.gv-fld.gv-col-2 { grid-column: 1 / -1; }
.gv-fld label { display: block; font-size: 12px; color: var(--stone-500); margin-bottom: 6px; }

/* ═══════════════════════════════════════════════════════════════════
   PLP 레이아웃 alias + 추가 스타일
   ═══════════════════════════════════════════════════════════════════ */
.gv-plp-layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 40px;
  padding-top: 48px;
  padding-bottom: 80px;
}
.gv-side-group li a {
  display: flex;
  justify-content: space-between;
  color: inherit;
  text-decoration: none;
  width: 100%;
}
.gv-side-group li a:hover { color: var(--charcoal-800); }
.gv-side-group li.on a { color: var(--primary); font-weight: 600; }

/* PLP 카테고리 헤더 */
.gv-cat-header {
  position: relative;
  height: 220px;
  background-size: cover;
  background-position: center;
  display: flex;
  align-items: center;
}
.gv-cat-header-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(38,35,30,.5) 0%, rgba(38,35,30,.3) 100%);
}
.gv-cat-header-copy {
  position: relative;
  z-index: 1;
}
.gv-breadcrumb {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--stone-400, #a8a099);
  margin-top: 6px;
  flex-wrap: wrap;
}
.gv-breadcrumb a { color: inherit; text-decoration: none; }
.gv-breadcrumb a:hover { color: var(--primary, #3a5c44); }
.gv-breadcrumb strong { color: #fbf9f4; }
.gv-breadcrumb-home { display: flex; align-items: center; }
.gv-breadcrumb-sep { font-size: 10px; color: var(--stone-300, #c8c2b8); }
.gv-breadcrumb-cur { color: var(--charcoal-800, #26231e); font-weight: 500; }
.gv-breadcrumb-sel {
  appearance: none;
  -webkit-appearance: none;
  background: none;
  border: none;
  font-size: 12px;
  color: var(--stone-500, #8c8175);
  cursor: pointer;
  padding: 0;
  font-family: inherit;
}
.gv-breadcrumb-sel:focus { outline: none; }
/* navigation 스킨 — 기본 shop style.css 로딩 억제용 */
#sct_location { all: unset; box-sizing: border-box; display: flex; align-items: center; gap: 4px; font-size: 12px; color: var(--stone-400); flex-wrap: wrap; max-width: 1280px; margin: 8px auto; padding: 0 40px; }
/* 상품 상세 페이지: #sit_ov_from(제품 폼)이 있으면 #sct_location 중복이므로 숨김 */
.shop-content:has(#sit_ov_from) > #sct_location { display: none; }

/* ═══════════════════════════════════════════════════════════════════
   PDP 추가 스타일
   ═══════════════════════════════════════════════════════════════════ */
.gv-pdp { padding: 0; }
.gv-pdp-breadcrumb { padding: 20px 0 0; font-size: 12px; color: var(--stone-400); }
.gv-pdp-breadcrumb a { color: inherit; text-decoration: none; }
.gv-pdp-breadcrumb a:hover { color: var(--primary); }
.gv-pdp-breadcrumb strong { color: var(--charcoal-800); }

/* 관리자 입력 HTML — 상·하단(it_head/tail) 및 탭 본문 공통 래퍼 */
.gv-pdp-html-slot {
  clear: both;
}
.gv-pdp-html-slot:not(.gv-pdp-html-slot--tail) {
  margin-top: 20px;
  margin-bottom: 16px;
}
/* 상단 HTML 없이 본문만 있을 때도 헤더와 간격 (#sit 은 상품 상세만 사용) */
.shop-content > #sit:first-child {
  padding-top: 20px;
}
.gv-pdp-html-slot--tail {
  margin-top: 48px;
  padding-bottom: 24px;
}
.gv-pdp-user-html {
  font-size: 14px;
  line-height: 1.7;
  color: var(--stone-500);
}
.gv-pdp-user-html > *:first-child { margin-top: 0 !important; }
.gv-pdp-user-html > *:last-child { margin-bottom: 0 !important; }
.gv-pdp-user-html p { margin: 0 0 0.75em; }
.gv-pdp-user-html p:last-child { margin-bottom: 0; }
.gv-pdp-user-html img,
.gv-pdp-user-html video { max-width: 100%; height: auto; }
.gv-pdp-user-html iframe { max-width: 100%; }
.gv-pdp-user-html table { width: 100%; border-collapse: collapse; }

/* 갤러리 */
.gv-pdp-gallery { display: flex; flex-direction: column; gap: 10px; }
.gv-pdp-main-img {
  width: 100%;
  aspect-ratio: 1;
  border-radius: 8px;
  overflow: hidden;
  background-color: var(--sand);
  background-size: cover;
  background-position: center;
  position: relative;
}
.gv-pdp-main-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-pdp-zoom {
  position: absolute;
  bottom: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  background: rgba(255,255,255,.85);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--charcoal-800);
  font-size: 16px;
  text-decoration: none;
  transition: background .2s;
}
.gv-pdp-zoom:hover { background: #fff; }
.gv-pdp-thumbs { display: flex; gap: 8px; flex-wrap: wrap; }
.gv-pdp-thumb {
  width: 72px;
  height: 72px;
  border-radius: 4px;
  overflow: hidden;
  border: 2px solid transparent;
  cursor: pointer;
  background-size: cover;
  background-position: center;
}
.gv-pdp-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-pdp-thumb:hover { border-color: var(--stone-300); }
.gv-pdp-thumb.on { border-color: var(--charcoal-800); }

/* 상품명 */
.gv-pdp-name { font-size: 26px; font-weight: 700; color: var(--charcoal-800); margin: 8px 0 4px; line-height: 1.3; }
.gv-pdp-name-en { font-size: 13px; color: var(--stone-400); margin-bottom: 10px; }

/* 평점 */
.gv-pdp-rating { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--stone-500); margin-bottom: 16px; }
.gv-pdp-rating a { color: inherit; text-decoration: underline; }
.gv-pdp-rating .sep { color: var(--stone-300); }

/* 가격 */
.gv-pdp-price { margin-bottom: 20px; }
.gv-pdp-was { font-size: 13px; color: var(--stone-400); text-decoration: line-through; }
.gv-pdp-now-row { display: flex; align-items: baseline; gap: 8px; margin: 4px 0 2px; }
.gv-pdp-off { font-size: 20px; font-weight: 700; color: var(--rose-500, #c0392b); }
.gv-pdp-now { font-size: 28px; font-weight: 700; color: var(--charcoal-800); }
.gv-pdp-save { font-size: 12px; color: var(--stone-400); }

/* 메타 */
.gv-pdp-meta { list-style: none; padding: 0; margin: 0 0 20px; border-top: 1px solid var(--border); }
.gv-pdp-meta li {
  display: flex;
  gap: 16px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.gv-pdp-meta li > span:first-child { color: var(--stone-500); min-width: 40px; }
.gv-pdp-meta li > span:last-child { color: var(--charcoal-800); }

/* 옵션 */
.gv-pdp-option { margin-bottom: 12px; }
.gv-pdp-meta-label { font-size: 12px; color: var(--stone-500); margin-bottom: 6px; }
.gv-pdp-option .gv-select,
.gv-pdp-option select { width: 100%; }

/* 수량 + 총금액 행 */
.gv-pdp-qty-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 16px 0;
  padding: 16px;
  background: var(--sand);
  border-radius: 8px;
}
.gv-qty { display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.gv-qty button {
  width: 36px;
  height: 36px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 18px;
  color: var(--charcoal-800);
  display: flex;
  align-items: center;
  justify-content: center;
}
.gv-qty button:hover { background: var(--stone-100); }
.gv-qty-input,
.gv-qty input[type=text] {
  width: 44px;
  text-align: center;
  border: none;
  border-left: 1px solid var(--border);
  border-right: 1px solid var(--border);
  font-size: 14px;
  height: 36px;
  background: #fff;
  -moz-appearance: textfield;
}
.gv-pdp-total { text-align: right; }
.gv-pdp-total span { display: block; font-size: 11px; color: var(--stone-500); margin-bottom: 4px; }
.gv-pdp-total strong { font-size: 20px; font-weight: 700; color: var(--charcoal-800); }
.gv-pdp-total-row {
  margin: 12px 0;
  padding: 12px 16px;
  background: var(--sand);
  border-radius: 8px;
  font-size: 15px;
  font-weight: 600;
  text-align: right;
  color: var(--charcoal-800);
}

/* 액션 버튼 */
.gv-pdp-actions { display: flex; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.gv-pdp-actions .gv-btn { flex: 1; min-width: 0; }
.gv-pdp-soldout { padding: 14px 0; color: var(--stone-500); font-size: 14px; }

/* 신뢰 뱃지 */
.gv-pdp-trust {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  padding: 14px 0;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--stone-500);
}
.gv-pdp-trust i { margin-right: 4px; }

/* 탭 */
.gv-pdp-tabs {
  display: flex;
  border-bottom: 2px solid var(--border);
  margin: 48px 0 0;
  gap: 0;
}
.gv-pdp-tabs button {
  padding: 14px 24px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--stone-500);
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color .2s, border-color .2s;
}
.gv-pdp-tabs button:hover { color: var(--charcoal-800); }
.gv-pdp-tabs button.on { color: var(--charcoal-800); border-bottom-color: var(--charcoal-800); font-weight: 700; }

.gv-pdp-tab-body { padding: 32px 0 48px; }
.gv-pdp-detail img { max-width: 100%; border-radius: 4px; }
.gv-pdp-ship h4 { font-size: 15px; margin: 0 0 8px; }
.gv-pdp-ship p { font-size: 14px; color: var(--stone-500); line-height: 1.7; }

/* 리뷰 */
.gv-review-summary {
  display: flex;
  align-items: flex-start;
  gap: 32px;
  margin-bottom: 32px;
  padding: 24px;
  background: var(--sand);
  border-radius: 12px;
}
.gv-review-score { text-align: center; min-width: 80px; }

/* 관련상품 */
.gv-pdp-related { padding: 48px 0; }

/* 하단 고정 구매 바 */
.gv-pdp-fixed-bar {
  position: fixed;
  bottom: -100px;
  left: 0;
  right: 0;
  background: #fff;
  border-top: 1px solid var(--border);
  box-shadow: 0 -4px 20px rgba(0,0,0,.08);
  z-index: 200;
  transition: bottom .3s ease;
}
.gv-pdp-fixed-bar.visible { bottom: 0; }
.gv-pdp-fixed-inner {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-top: 12px;
  padding-bottom: 12px;
}
.gv-pdp-fixed-name { font-size: 14px; font-weight: 600; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gv-pdp-fixed-opts { flex-shrink: 0; }
.gv-pdp-fixed-btns { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.gv-pdp-naverpay { margin-top: 12px; }

/* ═══════════════════════════════════════════════════════════════════
   장바구니 빠른보기 박스 (boxcart)
   ═══════════════════════════════════════════════════════════════════ */
.gv-cart-box { font-size: 13px; }
.gv-cart-box-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 0 12px;
  border-bottom: 1px solid var(--border);
  font-weight: 600;
  margin-bottom: 8px;
}
.gv-cart-box-cnt {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  background: var(--primary);
  color: #fff;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 700;
}
.gv-cart-box-list { list-style: none; margin: 0; padding: 0; max-height: 300px; overflow-y: auto; }
.gv-cart-box-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.gv-cart-box-img img { width: 56px; height: 56px; object-fit: cover; border-radius: 4px; display: block; }
.gv-cart-box-body { flex: 1; min-width: 0; }
.gv-cart-box-name {
  display: block;
  color: var(--charcoal-800);
  font-size: 12px;
  line-height: 1.4;
  margin-bottom: 4px;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.gv-cart-box-price { font-size: 13px; font-weight: 600; color: var(--charcoal-800); white-space: nowrap; }
.gv-cart-box-qty { font-size: 11px; color: var(--stone-400); margin-top: 2px; }
.gv-cart-box-del {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--stone-400);
  font-size: 14px;
  padding: 4px;
  line-height: 1;
  flex-shrink: 0;
}
.gv-cart-box-del:hover { color: var(--rose-500, #c0392b); }
.gv-cart-box-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 24px 0;
  color: var(--stone-400);
  font-size: 12px;
  text-align: center;
}
.gv-cart-box-footer { padding-top: 12px; margin-top: 4px; }

/* ═══════════════════════════════════════════════════════════════════
   장바구니 페이지 — 주문 단계 표시
   ═══════════════════════════════════════════════════════════════════ */
.gv-steps {
  display: flex;
  gap: 16px;
  font-size: 12px;
  color: var(--stone-400);
  margin-top: 14px;
  align-items: center;
}
.gv-steps span.on { color: var(--charcoal-800); font-weight: 700; }
.gv-steps span + span::before { content: '→'; margin-right: 16px; }

/* ═══════════════════════════════════════════════════════════════════
   공통 — 빈 상태
   ═══════════════════════════════════════════════════════════════════ */
.gv-empty {
  text-align: center;
  padding: 40px 0;
  color: var(--stone-400);
  font-size: 14px;
}
.gv-empty-lg { padding: 80px 0; }
.gv-empty i { display: block; font-size: 40px; margin-bottom: 16px; }

/* ═══════════════════════════════════════════════════════════════════
   반응형 — PLP / PDP
   ═══════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
  .gv-plp-layout { grid-template-columns: 200px 1fr; gap: 24px; }
}
@media (max-width: 768px) {
  .gv-plp-layout { grid-template-columns: 1fr; }
  .gv-plp-side { display: none; }
  .gv-pdp-top { grid-template-columns: 1fr !important; }
  .gv-pdp-actions .gv-btn { flex: none; width: 100%; }
  .gv-pdp-fixed-bar .gv-pdp-fixed-name { display: none; }
  .gv-pdp-fixed-opts { display: none; }
}

/* 사이드메뉴 — 링크 지원 */
.gv-side-menu li a {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  color: inherit;
  text-decoration: none;
}
.gv-side-menu li a i { font-size: 16px; color: var(--stone-400); width: 18px; }
.gv-side-menu li.on a { color: var(--primary); }
.gv-side-menu li.on a i { color: var(--primary); }

/* 칩 — a 태그 지원 */
a.gv-chip {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
}

/* 위시 체크 영역 (마이페이지) */
.gv-wish-check { margin-top: 8px; }
.gv-wish-check .selec_chk { accent-color: var(--primary); }

/* ═══════════════════════════════════════════════════════════════════
   장바구니 페이지
   ═══════════════════════════════════════════════════════════════════ */
.gv-cart {
  padding: 24px 0 88px;
  box-sizing: border-box;
}
.gv-page-head { padding: 40px 0 28px; border-bottom: 2px solid var(--border); margin-bottom: 32px; }
.gv-page-head .gv-display-sm { margin-top: 6px; }

.gv-cart-layout {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 40px;
  align-items: start;
}
.gv-cart-items { min-width: 0; }
.gv-cart-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 0 14px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
  font-size: 13px;
}
.gv-cart-head label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.gv-cart-head label input { accent-color: var(--primary); }
.gv-cart-head-btns { display: flex; gap: 8px; align-items: center; }
.gv-linkb {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 12px;
  color: var(--stone-400);
  text-decoration: underline;
  padding: 0;
}
.gv-linkb:hover { color: var(--charcoal-800); }

.gv-cart-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px 0;
  border-bottom: 1px solid var(--border);
}
.gv-cart-chk { accent-color: var(--primary); flex-shrink: 0; margin-top: 4px; }
.gv-cart-img {
  flex-shrink: 0;
  width: 88px;
  height: 88px;
  border-radius: 6px;
  overflow: hidden;
  background: var(--sand);
  display: block;
}
.gv-cart-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-cart-body { flex: 1; min-width: 0; }
.gv-cart-brand { font-size: 11px; color: var(--stone-400); letter-spacing: .06em; text-transform: uppercase; margin-bottom: 4px; }
.gv-cart-name { display: block; font-size: 14px; color: var(--charcoal-800); text-decoration: none; line-height: 1.4; font-weight: 500; }
.gv-cart-name:hover { text-decoration: underline; }
.gv-cart-opt { font-size: 12px; color: var(--stone-500); margin-top: 4px; }
.gv-cart-qty { flex-shrink: 0; padding-top: 4px; }
.gv-cart-price { text-align: right; flex-shrink: 0; padding-top: 4px; }
.gv-cart-price strong { display: block; font-size: 16px; font-weight: 700; color: var(--charcoal-800); }
.gv-cart-point { display: block; font-size: 11px; color: var(--primary); margin-top: 3px; }
.gv-cart-x {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--stone-300);
  font-size: 14px;
  padding: 4px;
  flex-shrink: 0;
  margin-top: 2px;
  line-height: 1;
}
.gv-cart-x:hover { color: var(--rose-500, #c0392b); }

/* 결제 사이드바 */
.gv-cart-summary {
  position: sticky;
  top: 80px;
  background: var(--sand);
  border-radius: 12px;
  padding: 24px;
}
.gv-cart-summary h3 { font-size: 15px; font-weight: 700; margin: 0 0 18px; color: var(--charcoal-800); }
.gv-sum-row {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--stone-500);
  padding: 6px 0;
}
.gv-sum-row.total {
  font-size: 16px;
  font-weight: 700;
  color: var(--charcoal-800);
  padding: 10px 0 4px;
}
.gv-sum-divider { border-top: 1px solid var(--border); margin: 10px 0; }
.gv-cart-summary > .gv-btn-primary {
  margin-top: 24px;
}
.gv-cart-summary > .gv-btn-secondary.gv-btn-block {
  margin-top: 12px;
}
.gv-sum-notes {
  margin-top: 28px;
  padding-top: 4px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  color: var(--stone-400);
  line-height: 1.85;
}
.gv-sum-notes > div { padding: 3px 0; }
.gv-btn-block { width: 100%; justify-content: center; }

/* ═══════════════════════════════════════════════════════════════════
   주문서 (orderform) CSS 오버라이드
   ═══════════════════════════════════════════════════════════════════ */
#sod_frm {
  display: grid !important;
  grid-template-columns: 1fr 360px !important;
  gap: 40px !important;
  max-width: 1280px !important;
  margin: 0 auto !important;
  padding: 40px 20px 80px !important;
  align-items: start !important;
}
/* 단계 표시 - orderform 헤더 영역 */
#sod_frm::before {
  content: 'CHECKOUT';
  display: block;
  font-size: 10px;
  letter-spacing: .16em;
  color: var(--primary);
  font-weight: 600;
  grid-column: 1 / -1;
}

/* 왼쪽/오른쪽 컬럼 */
.sod_left { min-width: 0; }
.sod_right { position: sticky; top: 80px; }

/* 섹션 블록 */
#sod_frm_orderer,
#sod_frm_taker,
#sod_frm_pay,
.sod_left > .tbl_head03 {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 24px 28px;
  margin-bottom: 16px;
}
#sod_frm_orderer h2,
#sod_frm_taker h2,
#sod_frm_pay h2 {
  font-size: 15px;
  font-weight: 700;
  color: var(--charcoal-800);
  margin: 0 0 18px;
  padding: 0;
  border: none;
  background: none;
}

/* 기존 테이블 → 플렉스 형태로 재스타일 */
#sod_frm .tbl_head01,
#sod_frm .tbl_head03 {
  border: none;
  background: none;
}
#sod_frm .tbl_head01 td,
#sod_frm .tbl_head01 th,
#sod_frm .tbl_head03 td,
#sod_frm .tbl_head03 th {
  border-color: var(--border);
  font-size: 13px;
  padding: 10px 12px;
}
#sod_frm .tbl_head01 th,
#sod_frm .tbl_head03 th {
  background: var(--sand);
  color: var(--stone-500);
  font-weight: 500;
}

/* 입력 필드 */
#sod_frm input[type=text],
#sod_frm input[type=email],
#sod_frm input[type=tel],
#sod_frm input[type=password],
#sod_frm select:not(.gv-select) {
  height: 42px;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 0 12px;
  font-size: 13px;
  font-family: var(--font-sans);
  color: var(--charcoal-800);
  background: #fff;
  width: 100%;
  box-sizing: border-box;
  transition: border-color var(--dur-base);
}
#sod_frm input[type=text]:focus,
#sod_frm input[type=email]:focus,
#sod_frm input[type=tel]:focus,
#sod_frm select:not(.gv-select):focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px var(--grovi-green-100);
}

/* 결제수단 탭 */
#sod_frm_paysel {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 0 16px !important;
}
#sod_frm_paysel legend { display: none !important; }
#sod_frm_paysel label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 8px 16px !important;
  border: 1px solid var(--border) !important;
  border-radius: 20px !important;
  cursor: pointer !important;
  font-size: 13px !important;
  color: var(--stone-500) !important;
  transition: all var(--dur-base) !important;
  background: #fff !important;
}
#sod_frm_paysel label:has(input:checked),
#sod_frm_paysel label.selected {
  border-color: var(--primary) !important;
  color: var(--primary) !important;
  background: var(--grovi-green-100) !important;
  font-weight: 600 !important;
}
#sod_frm_paysel input[type=radio] { display: none !important; }

/* 주문 합계 사이드바 */
#sod_bsk_tot {
  background: var(--sand);
  border-radius: 12px;
  padding: 24px;
  margin-bottom: 16px;
}
#sod_bsk_tot h2 { font-size: 15px; font-weight: 700; margin: 0 0 16px; }
#sod_bsk_tot ul { list-style: none; padding: 0; margin: 0; }
#sod_bsk_tot li {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--stone-500);
  padding: 6px 0;
  border-bottom: 1px solid var(--border);
}
#sod_bsk_tot li:last-child { border-bottom: none; }
#sod_bsk_tot .sod_bsk_cnt {
  font-size: 15px;
  font-weight: 700;
  color: var(--charcoal-800);
  padding-top: 10px;
  margin-top: 4px;
}
#sod_bsk_tot strong { color: var(--charcoal-800); }

/* 주문서 제출 버튼 */
#sod_frm_submit,
#sod_frm button[type=submit],
#sod_frm .btn_submit,
.sod_right button[type=submit] {
  width: 100%;
  height: 52px;
  background: var(--primary);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  margin-top: 8px;
  transition: background var(--dur-base);
  font-family: var(--font-sans);
}
#sod_frm_submit:hover,
#sod_frm .btn_submit:hover { background: var(--primary-hover, var(--grovi-green-700)); }

/* 주문상품 테이블 */
#sod_list { border-collapse: collapse; width: 100%; }
#sod_list th { background: var(--sand); border-color: var(--border); font-size: 12px; color: var(--stone-500); }
#sod_list td { border-color: var(--border); font-size: 13px; }

/* 포인트 사용 영역 */
.sod_frm_point {
  background: var(--sand);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 12px;
  font-size: 13px;
}

/* 약관 동의 */
#sod_agree_wrap,
.sod_agree {
  font-size: 13px;
  color: var(--charcoal-800);
  margin: 16px 0;
}
#sod_agree_wrap input,
.sod_agree input { accent-color: var(--primary); }

/* ═══════════════════════════════════════════════════════════════════
   주문 완료 페이지 스타일
   ═══════════════════════════════════════════════════════════════════ */
.gv-order-done {
  text-align: center;
  padding: 80px 0;
}
.gv-done-ic {
  width: 80px;
  height: 80px;
  background: var(--grovi-green-100);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  color: var(--primary);
}
.gv-done-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 28px;
}

@media (max-width: 768px) {
  .gv-cart-layout { grid-template-columns: 1fr; }
  .gv-cart-summary { position: static; }
  #sod_frm { grid-template-columns: 1fr !important; }
  .sod_right { position: static; }
}

/* ═══════════════════════════════════════════════════════════════════
   검색 페이지 (#ssch)
   ═══════════════════════════════════════════════════════════════════ */
#ssch { max-width: 1280px; margin: 0 auto; padding: 40px 20px 80px; }
/* shop/search + item_list(list.10) — 검색 결과 카드 .gv-pcard-img(특이도 상승) */
#ssch_result .gv-pcard-img { position: relative; width: 100%; aspect-ratio: 1/1; background-color: var(--sand); overflow: hidden; }
#ssch_result .gv-pcard-img > a { position: absolute; inset: 0; display: block; z-index: 1; }
#ssch_result .gv-pcard-img > a > img,
#ssch_result .gv-pcard-img > img {
  position: absolute; top: 0; left: 0; width: 100% !important; height: 100% !important;
  min-width: 100%; min-height: 100%; max-width: none; object-fit: cover !important; object-position: center; display: block; z-index: 0;
}
#ssch h2 { font-size: 22px; font-weight: 700; color: var(--charcoal-800); margin-bottom: 24px; }
#ssch h2 strong { color: var(--primary); }
.ssch_result_total { font-size: 14px; font-weight: 400; color: var(--stone-500); margin-left: 10px; }
#ssch_frm {
  background: var(--sand);
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 32px;
}
.ssch_frm_inner form { display: flex; flex-direction: column; gap: 12px; }
.ssch_scharea {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ssch_input {
  height: 42px;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 0 12px;
  font-size: 13px;
  font-family: var(--font-sans);
  background: #fff;
}
.ssch_scharea .btn_submit {
  height: 42px;
  padding: 0 18px;
  background: var(--primary);
  color: #fff;
  border: none;
  border-radius: 6px;
  font-size: 13px;
  font-family: var(--font-sans);
  cursor: pointer;
}
.ssch_option {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--stone-500);
}
.ssch_option label { display: flex; align-items: center; gap: 4px; cursor: pointer; }
#ssch_sort ul {
  display: flex;
  gap: 6px;
  list-style: none;
  padding: 0;
  margin: 0 0 20px;
}
#ssch_sort li a {
  display: inline-block;
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: 20px;
  font-size: 12px;
  color: var(--stone-500);
  text-decoration: none;
}
#ssch_sort li a:hover, #ssch_sort li a.on {
  border-color: var(--primary);
  color: var(--primary);
  background: var(--grovi-green-100);
}

/* ═══════════════════════════════════════════════════════════════════
   사용후기 (#sit_use_list)
   ═══════════════════════════════════════════════════════════════════ */
#sit_use_list { padding: 0; }
.sit_use_top {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin-bottom: 20px;
}
.sit_use_top h4 { flex: 1; font-size: 13px; color: var(--stone-500); }
#sit_use_wbtn { display: flex; gap: 8px; }
#sit_use_wbtn a {
  display: inline-flex;
  align-items: center;
  padding: 8px 16px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 12px;
  color: var(--stone-500);
  text-decoration: none;
  transition: all var(--dur-base);
}
#sit_use_wbtn a:hover { border-color: var(--primary); color: var(--primary); }
#sit_use_wbtn .itemuse_form {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
#sit_use_ol { list-style: none; padding: 0; margin: 0; }
.sit_use_li {
  display: flex;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid var(--border);
}
.sit_thum img { width: 80px; height: 80px; object-fit: cover; border-radius: 6px; display: block; }
.sit_use_dl { flex: 1; font-size: 13px; }
.sit_use_dl dt { display: none; }
.sit_use_dl dd { margin: 0 0 4px; color: var(--stone-500); }
.sit_use_dl dd.sit_use_name { font-weight: 600; color: var(--charcoal-800); }
.sit_use_dl dd.sit_use_subj a { color: var(--charcoal-800); font-weight: 500; text-decoration: none; }
.sit_use_dl dd.sit_use_content { color: var(--stone-500); line-height: 1.6; }

/* ═══════════════════════════════════════════════════════════════════
   상품문의 (#sit_qa)
   ═══════════════════════════════════════════════════════════════════ */
#sit_qa_form .gv-btn,
#itemqa_write { margin-bottom: 16px; }
.sit_qa_li {
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.sit_qa_li .qa_subject a { color: var(--charcoal-800); font-weight: 500; text-decoration: none; }
.sit_qa_li .qa_name { color: var(--stone-500); font-size: 12px; margin-top: 4px; }

/* ═══════════════════════════════════════════════════════════════════
   주문조회 (orderinquiry / orderinquiryview)
   ═══════════════════════════════════════════════════════════════════ */
#sod_fin { max-width: 900px; margin: 0 auto; padding: 40px 20px 80px; }
#sod_fin_no {
  font-size: 14px;
  color: var(--stone-500);
  margin-bottom: 24px;
}
#sod_fin_no strong { color: var(--charcoal-800); font-weight: 700; }
#sod_fin_list h2, #sod_fin_od h2, #sod_fin_dvr h2, #sod_fin_buyer h2,
#sod_fin_pay h2, #sod_fin_pt h2, #sod_fin_memo h2 {
  font-size: 15px;
  font-weight: 700;
  color: var(--charcoal-800);
  margin: 0 0 14px;
  padding: 0 0 10px;
  border-bottom: 1px solid var(--charcoal-800);
}
#sod_fin section {
  margin-bottom: 32px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 24px;
}
#sod_fin .tbl_head01,
#sod_fin .tbl_head03 {
  border-color: var(--border);
  width: 100%;
  font-size: 13px;
}
#sod_fin .tbl_head01 th,
#sod_fin .tbl_head03 th {
  background: var(--sand);
  color: var(--stone-500);
  font-weight: 500;
  padding: 10px 12px;
  border-color: var(--border);
}
#sod_fin .tbl_head01 td,
#sod_fin .tbl_head03 td {
  padding: 10px 12px;
  border-color: var(--border);
}
#sod_fin .btn01, #sod_fin .btn02, #sod_fin .btn_submit {
  display: inline-flex;
  align-items: center;
  height: 36px;
  padding: 0 14px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
  text-decoration: none;
  border: 1px solid var(--border);
  color: var(--stone-500);
  background: #fff;
  font-family: var(--font-sans);
}
#sod_fin .btn_submit {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}

/* ═══════════════════════════════════════════════════════════════════
   리뷰 (itemuse.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-reviews { padding: 32px 0 0; }
.gv-reviews-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}
.gv-reviews-score { display: flex; align-items: center; gap: 4px; }
.gv-reviews-score .bi-star-fill { color: #f4b942; font-size: 16px; }
.gv-reviews-score .bi-star { color: var(--stone-300); font-size: 16px; }
.gv-reviews-cnt { font-size: 13px; color: var(--stone-500); margin-left: 6px; }
.gv-reviews-cnt-label { font-size: 14px; font-weight: 600; color: var(--charcoal-800); }
.gv-reviews-actions { display: flex; gap: 8px; }
.gv-review-list { list-style: none; margin: 0; padding: 0; }
.gv-review-item { border-top: 1px solid var(--border); }
.gv-review-item:last-child { border-bottom: 1px solid var(--border); }
.gv-review-top {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 0;
}
.gv-review-thumb { flex-shrink: 0; width: 64px; height: 64px; border-radius: 6px; overflow: hidden; }
.gv-review-thumb img { width: 100%; height: 100%; object-fit: cover; }
.gv-review-meta { flex: 1; min-width: 0; }
.gv-review-stars .bi-star-fill { color: #f4b942; font-size: 13px; }
.gv-review-stars .bi-star { color: var(--stone-300); font-size: 13px; }
.gv-review-subject { font-size: 14px; font-weight: 500; color: var(--charcoal-800); margin: 4px 0; }
.gv-review-info { font-size: 12px; color: var(--stone-400); display: flex; gap: 8px; }
.gv-review-date::before { content: '·'; margin-right: 4px; }
.gv-review-toggle {
  flex-shrink: 0;
  background: none; border: none;
  font-size: 14px; color: var(--stone-400);
  cursor: pointer; padding: 4px;
}
.gv-review-body { padding: 0 0 16px; }
.gv-review-content { font-size: 14px; line-height: 1.7; color: var(--charcoal-800); }
.gv-review-cmd { display: flex; gap: 12px; margin-top: 10px; font-size: 13px; }
.gv-review-reply {
  margin-top: 12px;
  background: var(--cream-50, #f5f2ec);
  border-radius: 8px;
  padding: 12px 14px;
}
.gv-review-reply-badge {
  display: inline-block;
  font-size: 11px; font-weight: 600;
  color: var(--primary);
  background: rgba(58,92,68,.1);
  padding: 2px 8px; border-radius: 20px;
  margin-bottom: 6px;
}
.gv-review-reply-tit { font-size: 13px; font-weight: 600; color: var(--charcoal-800); margin-bottom: 4px; }
.gv-review-reply-body { font-size: 13px; color: var(--stone-600); }
.gv-reviews-paging { margin-top: 20px; text-align: center; }

/* 모달 공통 (리뷰/Q&A 작성 팝업) */
.gv-modal-wrap { min-height: 100vh; background: #fff; }
.gv-modal { max-width: 760px; margin: 0 auto; padding: 0; }
.gv-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--border);
}
.gv-modal-title { font-size: 18px; font-weight: 700; margin: 0; }
.gv-modal-close { background: none; border: none; font-size: 18px; cursor: pointer; color: var(--stone-500); }
.gv-modal-body { padding: 24px; display: flex; flex-direction: column; gap: 20px; }
.gv-modal-foot { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 24px; border-top: 1px solid var(--border); }

/* 별점 선택기 */
.gv-star-pick { display: flex; flex-direction: row-reverse; gap: 4px; }
.gv-star-pick input { display: none; }
.gv-star-pick label { font-size: 28px; color: var(--stone-300); cursor: pointer; transition: color .15s; }
.gv-star-pick input:checked ~ label,
.gv-star-pick label:hover,
.gv-star-pick label.hovered { color: #f4b942; }

/* 폼 공통 */
.gv-form-row { display: flex; flex-direction: column; gap: 6px; }
.gv-form-row-inline { flex-direction: row; align-items: center; }
.gv-form-row-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.gv-form-label { font-size: 13px; font-weight: 500; color: var(--charcoal-800); }
.gv-req { color: var(--primary); }
.gv-checkbox-label { display: flex; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; }
.gv-checkbox-label input { width: 16px; height: 16px; accent-color: var(--primary); }

/* ═══════════════════════════════════════════════════════════════════
   상품문의 (itemqa.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-qa { padding: 32px 0 0; }
.gv-qa-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}
.gv-qa-cnt { font-size: 14px; font-weight: 600; color: var(--charcoal-800); }
.gv-qa-actions { display: flex; gap: 8px; }
.gv-qa-list { list-style: none; margin: 0; padding: 0; }
.gv-qa-item { border-top: 1px solid var(--border); }
.gv-qa-item:last-child { border-bottom: 1px solid var(--border); }
.gv-qa-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 14px 0;
  background: none; border: none;
  cursor: pointer;
  text-align: left;
}
.gv-qa-badge {
  flex-shrink: 0;
  font-size: 11px; font-weight: 600;
  padding: 2px 8px; border-radius: 20px;
  white-space: nowrap;
}
.gv-qa-badge.answered { background: rgba(58,92,68,.1); color: var(--primary); }
.gv-qa-badge.waiting { background: var(--cream-50, #f5f2ec); color: var(--stone-500); }
.gv-qa-subject { flex: 1; font-size: 14px; color: var(--charcoal-800); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gv-qa-info { flex-shrink: 0; display: flex; gap: 6px; font-size: 12px; color: var(--stone-400); white-space: nowrap; }
.gv-qa-date::before { content: '·'; margin-right: 4px; }
.gv-qa-arrow { font-size: 12px; color: var(--stone-400); flex-shrink: 0; }
.gv-qa-body { padding: 0 0 16px 0; }
.gv-qa-block { display: flex; gap: 12px; padding: 12px 0; }
.gv-qa-block + .gv-qa-block { border-top: 1px dashed var(--border); }
.gv-qa-alp {
  flex-shrink: 0;
  width: 24px; height: 24px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
}
.gv-qa-q .gv-qa-alp { background: var(--charcoal-800); color: #fff; }
.gv-qa-a .gv-qa-alp { background: var(--primary); color: #fff; }
.gv-qa-text { flex: 1; font-size: 14px; line-height: 1.7; color: var(--charcoal-800); }
.gv-qa-cmd { display: flex; gap: 12px; margin-top: 8px; margin-left: 36px; font-size: 13px; }
.gv-qa-paging { margin-top: 20px; text-align: center; }

/* ═══════════════════════════════════════════════════════════════════
   연관상품 (relation.10.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-related { padding: 40px 0 0; position: relative; }
.gv-related-title { font-size: 20px; font-weight: 700; color: var(--charcoal-800); margin: 4px 0 20px; }
.gv-related-track {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-width: none;
  padding-bottom: 4px;
}
.gv-related-track::-webkit-scrollbar { display: none; }
.gv-rel-card {
  flex: 0 0 220px;
  text-decoration: none;
  color: inherit;
}
.gv-rel-card .gv-pcard-img {
  width: 220px; height: 220px;
  position: relative;
  overflow: hidden; border-radius: 8px;
}
.gv-rel-card .gv-pcard-img img {
  width: 100% !important; height: 100% !important; min-width: 100%; min-height: 100%;
  object-fit: cover !important; transition: transform .3s;
}
.gv-rel-card:hover .gv-pcard-img img { transform: scale(1.04); }
.gv-rel-prev, .gv-rel-next {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 36px; height: 36px;
  background: #fff; border: 1px solid var(--border);
  border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; color: var(--charcoal-800);
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  z-index: 2; transition: box-shadow .2s;
}
.gv-rel-prev:hover, .gv-rel-next:hover { box-shadow: 0 4px 16px rgba(0,0,0,.14); }
.gv-rel-prev { left: -18px; }
.gv-rel-next { right: -18px; }

/* ═══════════════════════════════════════════════════════════════════
   전체 리뷰 목록 페이지 (itemuselist.skin.php / itemuse.php)
   ═══════════════════════════════════════════════════════════════════ */
#sps_sch {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 16px 0 24px;
  flex-wrap: wrap;
}
#sps_sch select,
#sps_sch .sch_wr { display: flex; align-items: center; gap: 4px; }
#sps_sch select { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-family: inherit; font-size: 14px; background: #fff; }
#sps_sch .sch_input { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-family: inherit; font-size: 14px; min-width: 220px; }
#sps_sch .sch_btn { padding: 8px 14px; background: var(--charcoal-800); color: #fff; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; }
#sps_sch a { font-size: 13px; color: var(--stone-500); text-decoration: none; margin-left: 8px; }

#sps ol { list-style: none; margin: 0; padding: 0; }
#sps li { border-top: 1px solid var(--border); padding: 20px 0; display: grid; grid-template-columns: 100px 1fr; gap: 20px; }
#sps li:last-child { border-bottom: 1px solid var(--border); }
#sps .sps_img { width: 100px; }
#sps .sps_img img { width: 100px; height: 100px; object-fit: cover; border-radius: 8px; }
#sps .sps_img span { display: block; font-size: 12px; color: var(--stone-500); margin-top: 4px; }
#sps .sps_section { display: flex; flex-direction: column; gap: 4px; }
#sps .sps_pd_name { font-size: 12px; color: var(--stone-500); }
#sps .sps_rv_tit { font-size: 14px; font-weight: 600; color: var(--charcoal-800); }
#sps .sps_dl { display: flex; gap: 12px; font-size: 12px; color: var(--stone-400); }
#sps .sps_dl dt { display: none; }
#sps .review_detail { display: inline-block; margin-top: 6px; padding: 4px 12px; font-size: 13px; border: 1px solid var(--border); border-radius: 20px; cursor: pointer; background: none; }
#sps .review_detail_cnt { display: none; margin-top: 12px; background: var(--cream-50, #f5f2ec); border-radius: 8px; padding: 16px; }
#sps_empty { text-align: center; padding: 60px 0; color: var(--stone-400); }

/* ═══════════════════════════════════════════════════════════════════
   1:1 문의 목록 페이지 (bbs/qalist.php)
   ═══════════════════════════════════════════════════════════════════ */
#bo_list {
  max-width: 1280px;
  margin: 56px auto 100px;
  padding: 0 40px;
  box-sizing: border-box;
}
#bo_list .tbl_head01 table, #bo_list .tbl_head03 table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
#bo_list .tbl_head01 th, #bo_list .tbl_head03 th {
  background: var(--sand); color: var(--stone-500); font-weight: 600; font-size: 12px;
  padding: 10px 14px; border-bottom: 1px solid var(--border); text-align: center;
}
#bo_list .tbl_head01 td, #bo_list .tbl_head03 td {
  padding: 14px; border-bottom: 1px solid var(--border);
  font-size: 13px; color: var(--charcoal-800); text-align: center;
}
#bo_list .tbl_head01 td.td_subject, #bo_list .tbl_head03 td.td_subject { text-align: left; }
#bo_list .tbl_head01 tr:last-child td, #bo_list .tbl_head03 tr:last-child td { border-bottom: none; }
#bo_list .tbl_head01 a, #bo_list .tbl_head03 a { color: var(--primary); text-decoration: none; }
#bo_list .tbl_head01 .empty_table, #bo_list .tbl_head03 .empty_table {
  text-align: center; color: var(--stone-400); padding: 40px 0;
}
#bo_list .tbl_head01 caption, #bo_list .tbl_head03 caption { font-size: 0; height: 0; }
/* 카테고리 탭 */
#bo_cate { margin-bottom: 24px; }
#bo_cate h2 { font-size: 0; }
#bo_cate_ul { display: flex; gap: 8px; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
#bo_cate_ul li a {
  display: inline-block;
  background: #fff; border: 1px solid var(--border);
  padding: 7px 16px; border-radius: 999px;
  font-size: 13px; color: var(--stone-500); cursor: pointer;
  transition: all var(--dur-base); text-decoration: none;
}
#bo_cate_ul li a:hover { border-color: var(--primary); color: var(--primary); }
#bo_cate_ul li a#bo_cate_on { background: var(--primary); color: #fbf9f4; border-color: var(--primary); }

#bo_btn_top {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 0 20px; border-bottom: 2px solid var(--charcoal-800);
}
#bo_list_total { font-size: 13px; color: var(--stone-500); }
.btn_bo_user { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; }
.btn_bo_user .btn,
.btn_bo_user .btn_admin,
.btn_bo_user .btn_b01,
.btn_bo_user a,
.btn_bo_user button {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  height: 36px; padding: 0 14px; border: 1px solid #ccc5b8; border-radius: 6px;
  font-size: 13px; color: #26231e; background: #fff;
  cursor: pointer; text-decoration: none; font-weight: 500;
  line-height: 1; vertical-align: middle;
}
.btn_bo_user .btn_admin { color: #26231e; }
.btn_bo_user .btn:hover,
.btn_bo_user .btn_admin:hover,
.btn_bo_user .btn_b01:hover,
.btn_bo_user a:hover,
.btn_bo_user button:hover { border-color: #3f7a4a; color: #3f7a4a; background: #fff; }
.txt_done { color: var(--primary); font-weight: 600; font-size: 12px; }
.txt_rdy  { color: var(--stone-400); font-size: 12px; }
.bo_fx { margin-top: 16px; }

/* ═══════════════════════════════════════════════════════════════════
   전체 Q&A 목록 페이지 (itemqalist.skin.php / itemqa.php)
   ═══════════════════════════════════════════════════════════════════ */
#sqa_sch {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 16px 0 24px;
  flex-wrap: wrap;
}
#sqa_sch select { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-family: inherit; font-size: 14px; background: #fff; }
#sqa_sch .sch_input { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-family: inherit; font-size: 14px; min-width: 220px; }
#sqa_sch .sch_btn { padding: 8px 14px; background: var(--charcoal-800); color: #fff; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; }
#sqa_sch a { font-size: 13px; color: var(--stone-500); text-decoration: none; margin-left: 8px; }

#sqa ol { list-style: none; margin: 0; padding: 0; }
#sqa li { border-top: 1px solid var(--border); }
#sqa li:last-child { border-bottom: 1px solid var(--border); }
#sqa .sit_qa_li_title {
  display: flex; align-items: center; gap: 10px;
  width: 100%; padding: 14px 0;
  background: none; border: none; cursor: pointer; text-align: left;
  font-size: 14px; color: var(--charcoal-800);
}
#sqa .sit_qaa_done { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 20px; background: rgba(58,92,68,.1); color: var(--primary); flex-shrink: 0; }
#sqa .sit_qaa_yet  { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 20px; background: var(--cream-50, #f5f2ec); color: var(--stone-500); flex-shrink: 0; }
#sqa .sit_qa_dl { display: flex; gap: 12px; font-size: 12px; color: var(--stone-400); padding: 0 0 10px; }
#sqa .sit_qa_dl dt { display: none; }
#sqa .sit_qa_con { padding: 0 0 16px; }
#sqa .sit_qa_p { background: var(--cream-50, #f5f2ec); border-radius: 8px; padding: 16px; }
#sqa .sit_qa_qaq, #sqa .sit_qa_qaa { display: flex; gap: 12px; }
#sqa .sit_qa_qaq + .sit_qa_qaa { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); }
#sqa .qa_alp { flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; }
#sqa .sit_qa_qaq .qa_alp { background: var(--charcoal-800); color: #fff; }
#sqa .sit_qa_qaa .qa_alp { background: var(--primary); color: #fff; }

/* ═══════════════════════════════════════════════════════════════════
   전체 페이지 공통 — 검색바 / 리뷰 리스트 / Q&A 리스트
   ═══════════════════════════════════════════════════════════════════ */
.gv-page-wrap { max-width: 860px; margin: 0 auto; padding: 0 0 60px; }

.gv-search-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 20px 0 24px;
  flex-wrap: wrap;
}
.gv-search-bar-input { display: flex; align-items: center; gap: 4px; flex: 1; min-width: 240px; }
.gv-search-bar-input .gv-input { flex: 1; }
.gv-select-sm { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-family: inherit; font-size: 13px; background: #fff; }

/* 전체 리뷰 리스트 */
.gv-rlist { list-style: none; margin: 0; padding: 0; }
.gv-rlist-item {
  display: grid;
  grid-template-columns: 80px 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 16px;
  row-gap: 0;
  padding: 20px 0;
  border-top: 1px solid var(--border);
  position: relative;
}
.gv-rlist-item:last-child { border-bottom: 1px solid var(--border); }
.gv-rlist-product {
  grid-column: 1; grid-row: 1;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  text-decoration: none;
}
.gv-rlist-product img { width: 80px; height: 80px; object-fit: cover; border-radius: 6px; }
.gv-rlist-product-name { font-size: 11px; color: var(--stone-400); text-align: center; line-height: 1.3; }
.gv-rlist-body { grid-column: 2; grid-row: 1; }
.gv-rlist-subject { font-size: 15px; font-weight: 600; color: var(--charcoal-800); margin: 4px 0; }
.gv-rlist-thumb { display: flex; gap: 6px; margin-top: 8px; }
.gv-rlist-thumb img { width: 60px; height: 60px; object-fit: cover; border-radius: 4px; }
.gv-rlist-detail {
  grid-column: 1 / -1; grid-row: 2;
  padding: 16px 0 0;
  border-top: 1px dashed var(--border);
  margin-top: 12px;
}

/* 전체 Q&A 리스트 */
.gv-qalist { list-style: none; margin: 0; padding: 0; }
.gv-qalist-item { border-top: 1px solid var(--border); }
.gv-qalist-item:last-child { border-bottom: 1px solid var(--border); }
.gv-qalist-product {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 0 0;
  text-decoration: none;
  font-size: 13px; color: var(--stone-500);
}
.gv-qalist-product img { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; flex-shrink: 0; }

/* 이벤트 박스 */
.gv-events { padding: 40px 0; }
.gv-event-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.gv-event-card { background: #fbf9f4; border-radius: 10px; overflow: hidden; border: 1px solid var(--border); }
.gv-event-banner { display: block; aspect-ratio: 2/1; overflow: hidden; }
.gv-event-banner img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.gv-event-banner:hover img { transform: scale(1.03); }
.gv-event-title-link { display: block; padding: 20px; font-size: 16px; font-weight: 700; color: var(--charcoal-800); text-decoration: none; background: var(--cream-50, #f5f2ec); }
.gv-event-items { padding: 12px; display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-start; }
.gv-event-item { display: flex; flex-direction: column; align-items: center; gap: 4px; text-decoration: none; width: 100px; }
.gv-event-item-img { position: relative; width: 100px; height: 100px; border-radius: 6px; overflow: hidden; }
.gv-event-item-img img { width: 100%; height: 100%; object-fit: cover; }
.gv-event-item-name { font-size: 12px; color: var(--charcoal-800); text-align: center; line-height: 1.3; }
.gv-event-item-price { font-size: 12px; font-weight: 600; color: var(--primary); }
.gv-event-more { align-self: flex-end; font-size: 12px; color: var(--stone-400); text-decoration: none; margin-left: auto; padding: 4px 8px; border: 1px solid var(--border); border-radius: 20px; white-space: nowrap; }

/* 페이지네이션 공통 */
.gv-paging { margin-top: 32px; text-align: center; }

/* ═══════════════════════════════════════════════════════════════════
   오늘 본 상품 (boxtodayview) 사이드 패널
   ═══════════════════════════════════════════════════════════════════ */
.gv-stv-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 8px 0;
  border-top: 1px solid var(--border);
}
.gv-stv-nav button {
  background: none; border: none; cursor: pointer;
  font-size: 14px; color: var(--stone-400);
  width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; transition: background .15s;
}
.gv-stv-nav button:hover { background: var(--cream-50); }
#stv_pg { font-size: 12px; color: var(--stone-400); }

/* ═══════════════════════════════════════════════════════════════════
   검색 결과 페이지 추가 스타일
   ═══════════════════════════════════════════════════════════════════ */
.ssch-header { padding: 0 0 20px; }
.ssch-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--stone-400); }
.ssch_scharea { position: relative; display: flex; align-items: center; gap: 8px; }
.ssch_scharea .ssch-icon { position: static; transform: none; }
.ssch_option {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding: 8px 0;
}
.ssch-price { display: flex; align-items: center; gap: 6px; }
.ssch-price-input { width: 100px; }
#ssch_cate ul { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0 0 16px; padding: 0; }
#ssch_cate ul li a {
  display: inline-flex; align-items: center;
  padding: 5px 14px;
  border: 1px solid var(--border);
  border-radius: 20px;
  font-size: 13px; color: var(--stone-500);
  text-decoration: none; background: #fff;
  transition: all .15s;
}
#ssch_cate ul li a span { font-size: 11px; margin-left: 4px; color: var(--stone-300); }
#ssch_cate ul li a.on,
#ssch_cate ul li a:hover { background: #26231e; color: #fff; border-color: #26231e; }
#ssch_sort_all {
  display: flex; flex-wrap: wrap; gap: 6px;
  list-style: none; margin: 0 0 24px; padding: 0;
}
#ssch_sort_all li a {
  display: inline-flex; align-items: center;
  padding: 5px 14px;
  border: 1px solid var(--border);
  border-radius: 20px;
  font-size: 13px; color: var(--stone-500);
  text-decoration: none; background: #fff;
  transition: all .15s;
}
#ssch_sort_all li a.on,
#ssch_sort_all li a:hover { background: var(--charcoal-800); color: #fff; border-color: var(--charcoal-800); }
.gv-admin-bar { padding: 8px 0; }

/* ═══════════════════════════════════════════════════════════════════
   이미지 확대 팝업 (largeimage.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-largeimg-wrap {
  display: flex; flex-direction: column;
  min-height: 100vh; background: #fff; padding: 16px;
  font-family: inherit;
}
.gv-largeimg-main { flex: 1; position: relative; min-height: 300px; }
.gv-largeimg-slide { display: none; }
.gv-largeimg-slide.visible { display: block; }
.gv-largeimg-slide img { max-width: 100%; height: auto; display: block; margin: 0 auto; }
.gv-largeimg-slide a { display: block; text-align: center; }
.gv-largeimg-thumbs {
  display: flex; gap: 8px; flex-wrap: wrap;
  padding: 12px 0;
  border-top: 1px solid var(--border);
  margin-top: 12px;
}
.gv-largeimg-thumb { opacity: .5; transition: opacity .15s; border: 2px solid transparent; border-radius: 4px; overflow: hidden; }
.gv-largeimg-thumb img { width: 60px; height: 60px; object-fit: cover; display: block; }
.gv-largeimg-thumb.on,
.gv-largeimg-thumb:hover { opacity: 1; border-color: var(--primary); }
.gv-largeimg-foot { padding-top: 12px; text-align: right; }

/* ═══════════════════════════════════════════════════════════════════
   메인 배너 슬라이더 (mainbanner.10.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-banner {
  position: relative;
  overflow: hidden;
  background: var(--charcoal-800);
  border-radius: 0;
}
/* 단일 이미지: 이전 flex 트랙 (가로 1탭) */
.gv-banner:not(.gv-banner--puzzle) .gv-banner-stage {
  display: flex;
  overflow: hidden;
  scroll-behavior: smooth;
}
.gv-banner:not(.gv-banner--puzzle) .gv-banner-slide {
  flex: 0 0 100%;
  width: 100%;
}
/* 2장 이상: 퍼즐/페이드 전환용 — 슬라이드 스택 */
.gv-banner--puzzle .gv-banner-stage {
  position: relative;
  z-index: 0;
  overflow: hidden;
  height: 100%;
  touch-action: pan-y;
}
.gv-banner--puzzle .gv-banner-slide {
  position: absolute;
  left: 0; top: 0; right: 0; bottom: 0;
  width: 100%; height: 100%;
  margin: 0; padding: 0;
  flex: none; opacity: 0;
  z-index: 0;
  transition: none;
  pointer-events: none;
  will-change: auto;
}
.gv-banner--puzzle .gv-banner-slide.is-active {
  opacity: 1;
  z-index: 2;
  pointer-events: auto;
}
.gv-banner--puzzle .gv-bn-copy {
  transition: opacity 0.35s var(--ease-standard, cubic-bezier(0.4, 0, 0.2, 1));
}
.gv-banner--puzzle .gv-bn-copy.is-out { opacity: 0; }
.gv-bn-puzzle {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  overflow: hidden;
}
.gv-bn-puzzle-tile {
  position: absolute;
  overflow: hidden;
  will-change: transform, opacity;
  backface-visibility: hidden;
  background-repeat: no-repeat;
  /* 기본(애님·지연 JS에서 덮어씀) */
  transition: transform 0.62s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.48s cubic-bezier(0.4, 0, 0.2, 1);
}
.gv-bn-puzzle-tile.gv-bn-tile--out {
  transform: scale(0.35) translateY(12px) rotate(1.2deg) !important;
  opacity: 0 !important;
}
.gv-banner--puzzle.is-anim { pointer-events: none; }
.gv-banner--puzzle.is-anim .gv-bn-arrow { pointer-events: none; opacity: 0.4; }
.gv-banner--puzzle .gv-banner-slide > a {
  display: block;
  height: 100%;
}
.gv-banner--puzzle .gv-banner-slide a,
.gv-banner--puzzle .gv-banner-slide img { height: 100%; }
/* 단일/멀티 공통 기본(멀티에서 is-active 쪽이 위 규칙) */
.gv-banner-slide {
  width: 100%;
}
.gv-banner-slide img,
.gv-banner-slide a img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
.gv-bn-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px; height: 44px;
  background: rgba(255,255,255,.75);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  font-size: 18px;
  color: var(--charcoal-800);
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
  z-index: 10;
}
.gv-bn-arrow:hover { background: #fff; }
.gv-bn-prev { left: 16px; }
.gv-bn-next { right: 16px; }
.gv-bn-dots {
  position: absolute;
  bottom: 14px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  z-index: 10;
}
.gv-bn-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.5);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background .2s, width .2s;
}
.gv-bn-dot.on { background: #fff; width: 20px; border-radius: 4px; }
.gv-bn-counter {
  position: absolute;
  bottom: 14px;
  right: 16px;
  font-size: 12px;
  color: rgba(255,255,255,.8);
  background: rgba(0,0,0,.3);
  padding: 2px 8px;
  border-radius: 20px;
  z-index: 10;
}

/* ── Banner overlay copy ────────────────────────────────────────── */
.gv-banner-slide { position: relative; }
.gv-bn-copy {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 0 80px 72px;
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, transparent 55%);
  pointer-events: none;
}
.gv-bn-title {
  color: #fff; font-size: 48px; font-weight: 700; line-height: 1.15;
  margin: 0 0 12px; max-width: 680px;
  text-shadow: 0 2px 10px rgba(0,0,0,.3);
  pointer-events: auto;
}
.gv-bn-sub {
  color: rgba(255,255,255,.85); font-size: 16px; line-height: 1.6;
  margin: 0 0 28px; max-width: 520px;
  text-shadow: 0 1px 4px rgba(0,0,0,.25);
  pointer-events: auto;
}
.gv-bn-btn {
  align-self: flex-start;
  pointer-events: auto;
}

/* ═══════════════════════════════════════════════════════════════════
   쿠폰존 (couponzone.10.skin.php)
   ═══════════════════════════════════════════════════════════════════ */
.gv-cz-section { padding: 32px 0; }
.gv-cz-section + .gv-cz-section { border-top: 1px solid var(--border); }
.gv-cz-head { font-size: 20px; font-weight: 700; margin-bottom: 6px; color: var(--charcoal-800); }
.gv-cz-desc { font-size: 14px; color: var(--stone-500); margin-bottom: 20px; }
.gv-cz-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 16px; }
.gv-cz-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fbf9f4;
}
.gv-cz-left { display: flex; align-items: flex-start; gap: 16px; flex: 1; min-width: 0; }
.gv-cz-img { width: 80px; height: 80px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.gv-cz-info { flex: 1; min-width: 0; }
.gv-cz-name { font-size: 15px; font-weight: 600; color: var(--charcoal-800); margin-bottom: 4px; }
.gv-cz-price { font-size: 18px; font-weight: 700; color: var(--primary); margin-bottom: 8px; }
.gv-cz-price strong { font-size: 22px; }
.gv-cz-meta { position: relative; display: inline-block; margin-bottom: 6px; }
.gv-cz-target-btn {
  font-size: 12px;
  color: var(--stone-500);
  background: none;
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 3px 10px;
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 4px;
  transition: border-color .15s;
}
.gv-cz-target-btn:hover { border-color: var(--primary); color: var(--primary); }
.gv-cz-popup {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 100;
  width: 260px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
}
.gv-cz-popup-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px 10px;
  font-size: 13px; font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.gv-cz-popup-cls {
  background: none; border: none; cursor: pointer;
  font-size: 14px; color: var(--stone-400);
}
.gv-cz-popup-body { list-style: none; padding: 12px 14px; margin: 0; font-size: 13px; color: var(--stone-600); line-height: 1.8; }
.gv-cz-period { font-size: 12px; color: var(--stone-400); }
.gv-cz-right { flex-shrink: 0; }
.gv-cz-right .gv-btn:disabled { opacity: .45; cursor: not-allowed; }

/* ═══════════════════════════════════════════════
   gv-pcard-h — 가로형 상품 카드 (list.30)
═══════════════════════════════════════════════ */
.gv-list-h { display: flex; flex-direction: column; gap: 12px; }
.gv-pcard-h {
  display: flex; gap: 16px; align-items: flex-start;
  padding: 16px; background: #fff;
  border: 1px solid var(--border); border-radius: 12px;
}
.gv-pcard-h-img {
  position: relative; flex-shrink: 0;
  width: 120px; height: 120px;
  border-radius: 8px; overflow: hidden;
  background: var(--stone-100, #f3f0eb);
}
.gv-pcard-h-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-pcard-h-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.gv-pcard-h-btns { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.gv-pcard-basic { font-size: 13px; color: var(--stone-500); line-height: 1.5; }

/* ═══════════════════════════════════════════════
   gv-pcard-hover-btns — 이미지 위 호버 버튼 (main.40)
═══════════════════════════════════════════════ */
.gv-pcard-hover-btns {
  position: absolute; bottom: 0; left: 0; right: 0;
  display: flex; justify-content: center;
  padding: 8px;
  transform: translateY(100%);
  transition: transform .2s ease;
}
.gv-pcard:hover .gv-pcard-hover-btns { transform: translateY(0); }
.gv-pcard-hover-btns .btn_cart {
  width: 100%;
  padding: 8px;
  background: rgba(58,92,68,.92);
  color: #fff; border: none; border-radius: 0 0 10px 10px;
  font-size: 13px; cursor: pointer;
}

/* ═══════════════════════════════════════════════
   gv-pcard-cart — 카드 하단 장바구니 버튼 (list.40)
═══════════════════════════════════════════════ */
.gv-pcard-cart { width: 100%; margin-top: 8px; }
.gv-pcard-sns { display: flex; gap: 6px; margin-top: 8px; }

/* ═══════════════════════════════════════════════
   롤링 상품 (main.20 / main.50)
═══════════════════════════════════════════════ */
.gv-sctrl { list-style: none; margin: 0 0 10px; padding: 0; display: flex; gap: 6px; }
.gv-sctrl button {
  padding: 3px 10px; font-size: 11px;
  border: 1px solid var(--border); border-radius: 4px;
  background: #fff; color: var(--stone-500); cursor: pointer; line-height: 1.6;
}
.gv-sctrl button:hover { background: var(--stone-100); color: var(--charcoal-800); }

.gv-smt-20 { position: relative; overflow: hidden; }
.gv-smt-20 .sct_ul {
  position: absolute; top: 0; left: 0; width: 100%;
  display: flex; gap: 20px;
  list-style: none; margin: 0; padding: 0;
}
.gv-smt-20 .sct_ul_first { position: relative; }

.gv-smt-item { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.gv-smt-img {
  display: block; flex-shrink: 0;
  width: 72px; height: 72px;
  overflow: hidden; border-radius: 6px;
  background: var(--stone-100);
}
.gv-smt-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s; }
.gv-smt-item:hover .gv-smt-img img { transform: scale(1.05); }
.gv-smt-body { flex: 1; min-width: 0; }
.gv-smt-name {
  display: block; font-size: 13px; color: var(--charcoal-800);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  line-height: 1.4;
}
.gv-smt-name:hover { color: var(--primary); }
.gv-smt-price { font-size: 13px; font-weight: 600; margin-top: 4px; color: var(--charcoal-900); }
.gv-smt-price s { font-weight: 400; color: var(--stone-400); margin-right: 4px; font-size: 12px; }
.gv-empty-sm { font-size: 13px; color: var(--stone-400); padding: 8px 0; }

/* ═══════════════════════════════════════════════════════════════════
   타입 리스트 페이지 (listtype.php) — gv-grid-4 가 shop-content 직계 자식일 때
   category 페이지는 gv-container 안에 있으므로 이 선택자에 해당하지 않음
   ═══════════════════════════════════════════════════════════════════ */
.shop-content > .gv-grid-4,
.shop-content > .gv-grid-3,
.shop-content > .gv-grid-5 {
  max-width: 1280px;
  margin: 48px auto 80px;
  padding-left: 40px;
  padding-right: 40px;
}
/* 타입 리스트 페이지 — 빈 상태 & 페이징 */
.shop-content > .sct_noitem {
  max-width: 1280px;
  margin: 48px auto 0;
  padding: 60px 40px;
  text-align: center;
  color: var(--stone-400);
  font-size: 15px;
}
/* 페이지네이션이 shop-content 직계 자식인 경우 */
.shop-content > #pagingnav,
.shop-content > .pg_wrap {
  max-width: 1280px;
  margin: 16px auto 80px;
  padding: 0 40px;
}

/* ═══════════════════════════════════════════════════════════════════
   content 페이지 (/content/company 등)
   ═══════════════════════════════════════════════════════════════════ */
/* 내용관리(약관·브랜드스토리 등) — 흰 카드 + 아이보리(위·아래) 띠 */
.gv-content-wrap {
  /* 흰 박스 바깥: #wrapper --ivory. #ctt margin-top/bottom과 함께 쌓여 간격이 됨 */
  /* .gv-container 병기 시 padding 단축(20px 0)은 좌우 40px를 덮음 */
  padding-top: 20px;
  padding-bottom: 40px;
  box-sizing: border-box;
  display: flow-root; /* #ctt margin-top 이 위 요소로 접히지 않게 */
}
#ctt {
  max-width: 800px;
  /* 헤더·푸터(아이보리)와 흰 카드 사이 명시적 간격 — 스킨에서 margin:0 으로 덮지 말 것 */
  margin: 20px auto;
  /* 흰 박스 안쪽 여백 (본문이 테 두르지 않게) */
  padding: 40px 40px 48px;
  box-sizing: border-box;
  background: #fff;
  border: 1px solid var(--stone-100);
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(38, 35, 30, 0.06);
}
#ctt header { margin: 0 0 0; padding: 0 0 20px; border-bottom: 2px solid var(--border); }
#ctt header .gv-eyebrow { margin-bottom: 10px; }
#ctt header h1 {
  font-size: 28px; font-weight: 700; color: var(--charcoal-800);
  position: static;
  width: auto;
  height: auto;
  overflow: visible;
  line-height: 1.3;
}
#ctt_con {
  font-size: 15px; line-height: 1.85; color: var(--charcoal-800);
  /* 구분선 아래 본문 들여쓰기(안쪽) + 아래 끝 숨 */
  padding: 36px 0 0;
  margin: 0;
  min-height: 120px;
}
#ctt_con p { margin-bottom: 1em; }
#ctt_con h2, #ctt_con h3 { margin: 1.6em 0 0.6em; font-weight: 700; }
#ctt_con a { color: var(--primary); text-decoration: underline; }
#ctt_con table { width: 100%; border-collapse: collapse; margin: 1.2em 0; font-size: 13px; }
#ctt_con table th, #ctt_con table td { border: 1px solid var(--border); padding: 10px 14px; text-align: left; }
#ctt_con table th { background: var(--cream); font-weight: 600; }

/* ═══════════════════════════════════════════════════════════════════
   메인 · SHOP BY CATEGORY (1대 + 4, 분류 ca_1·ca_2)
   ═══════════════════════════════════════════════════════════════════ */
.gv-cat-bento-wrap { margin-top: 12px; }
.gv-cat-bento-wrap--hero-only .gv-cat-bento { grid-template-columns: 1fr; min-height: 320px; }
.gv-cat-bento-wrap--hero-only .gv-cat-bento-grid { display: none; }
.gv-cat-bento {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr) minmax(0, 0.95fr);
  grid-template-rows: 1fr 1fr;
  gap: 12px;
  min-height: 360px;
}
.gv-cat-bento-hero {
  grid-row: 1 / -1;
  grid-column: 1 / 2;
  position: relative;
  display: block;
  border-radius: 8px; overflow: hidden;
  background-size: cover; background-position: center;
  min-height: 200px;
  text-decoration: none; color: #fbf9f4;
  border: 1px solid var(--border);
}
.gv-cat-bento-grid {
  grid-column: 2 / 4;
  grid-row: 1 / 3;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
  min-height: 0;
}
.gv-cat-bento-tile {
  position: relative; display: block;
  border-radius: 8px; overflow: hidden;
  background-size: cover; background-position: center;
  min-height: 0;
  text-decoration: none; color: #fbf9f4;
  border: 1px solid var(--border);
}
.gv-cat-bento-hero-overlay,
.gv-cat-bento-hero-overlay--sm {
  position: absolute; left: 0; right: 0; bottom: 0; top: 0;
  display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end;
  padding: 20px 18px;
  background: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(16, 14, 10, 0.78) 100%);
}
.gv-cat-bento-hero-overlay--sm { padding: 12px 10px; }
.gv-cat-bento-hero-ko {
  font-size: 16px; font-weight: 700; line-height: 1.3;
  text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.gv-cat-bento-hero-en {
  font-size: 11px; font-weight: 500; letter-spacing: 0.08em;
  opacity: 0.9; margin-top: 2px; text-transform: uppercase;
  text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.gv-cat-bento-hero:hover,
.gv-cat-bento-tile:hover { filter: brightness(1.04); }
@media (max-width: 1024px) {
  .gv-cat-bento {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
  }
  .gv-cat-bento-hero { grid-row: auto; grid-column: 1 / -1; min-height: 220px; }
  .gv-cat-bento-grid { grid-column: 1 / -1; grid-row: auto; min-height: 200px; }
}

/* ═══════════════════════════════════════════════════════════════════
   카테고리 원형 탭 (메인 페이지)
   ═══════════════════════════════════════════════════════════════════ */
.gv-cat-row {
  display: flex; flex-wrap: wrap; gap: 20px 32px;
  justify-content: center; padding: 4px 0;
}
.gv-cat-pill {
  display: flex; flex-direction: column; align-items: center;
  gap: 8px; text-decoration: none; color: var(--charcoal-800);
  font-size: 12px; font-weight: 500; letter-spacing: 0.01em;
  transition: color var(--dur-base);
}
.gv-cat-pill:hover { color: var(--primary); }
.gv-cat-circle {
  width: 64px; height: 64px; border-radius: 50%;
  background: var(--cream); border: 1px solid var(--stone-100);
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; color: var(--charcoal-700);
  transition: background var(--dur-base), border-color var(--dur-base), color var(--dur-base);
}
.gv-cat-pill:hover .gv-cat-circle {
  background: var(--grovi-green-100);
  border-color: var(--grovi-green-300);
  color: var(--primary);
}

/* ═══════════════════════════════════════════════════════════════════
   분류 허브 /shop/categories (1·2단)
   ═══════════════════════════════════════════════════════════════════ */
.gv-cat-land { min-height: 60vh; }
.gv-cat-land-hero {
  background: linear-gradient(180deg, var(--sand) 0%, var(--ivory) 100%);
  border-bottom: 1px solid var(--border);
  padding: 40px 0 36px;
}
.gv-cat-land-eyebrow {
  margin: 0; font-size: 10px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--primary);
}
.gv-cat-land-h1 {
  margin: 8px 0 0; font-family: var(--font-display);
  font-size: 32px; font-weight: 600; color: var(--charcoal-800);
  line-height: 1.2;
}
.gv-cat-land-lead { margin: 8px 0 0; font-size: 14px; color: var(--stone-500); }
/* .gv-cat-land-body는 .gv-container와 동일 요소: padding 단축(32px 0 80px) 쓰면 좌·우 40px가 0으로 덮임 */
.gv-cat-land-body { padding-top: 32px; padding-bottom: 80px; }
.gv-cat-land-empty { text-align: center; padding: 60px 0; color: var(--stone-400); }
.gv-cat-land-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px;
  width: 100%;
  box-sizing: border-box;
}
@media (min-width: 1000px) { .gv-cat-land-grid { grid-template-columns: repeat(3, 1fr); } }
.gv-cat-land-block {
  background: #fff; border: 1px solid var(--border); border-radius: 12px;
  overflow: hidden; box-shadow: var(--shadow-sm);
}
.gv-cat-land-l1 { display: block; text-decoration: none; color: inherit; }
.gv-cat-land-l1img {
  height: 180px; background-color: var(--sand); background-size: cover; background-position: center;
  transition: transform 400ms ease;
}
.gv-cat-land-l1:hover .gv-cat-land-l1img { transform: scale(1.03); }
.gv-cat-land-l1body { padding: 16px 18px; }
.gv-cat-land-l1name { margin: 0; font-size: 18px; font-weight: 700; color: var(--charcoal-800); }
.gv-cat-land-cnt { margin: 4px 0 0; font-size: 12px; color: var(--stone-400); }
.gv-cat-land-l2 { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.gv-cat-land-l2 li { border-bottom: 1px solid var(--border); }
.gv-cat-land-l2 li:last-child { border-bottom: 0; }
.gv-cat-land-l2a {
  display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  text-decoration: none; color: var(--charcoal-800); font-size: 14px;
  transition: background var(--dur-base);
}
.gv-cat-land-l2a:hover { background: var(--ivory); }
.gv-cat-land-l2th {
  flex-shrink: 0; width: 40px; height: 40px; border-radius: 8px;
  background-color: var(--sand); background-size: cover; background-position: center;
  border: 1px solid var(--border);
}
.gv-cat-land-l2txt { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.gv-cat-land-l2name { font-weight: 500; }
.gv-cat-land-l2 .gv-cat-land-cnt { font-size: 12px; color: var(--stone-400); margin: 0; }
