
@font-face {
  font-family: 'NanumSquareNeo';
  src: url('/fonts/NanumSquareNeo-ExtraBold.woff2') format('woff2');
  font-weight: 800;
  font-display: fallback;   /* round226·227(D-225 ㄱ): 제목만 NanumSquareNeo EB(OFL, 자체 호스팅 388KB) — 본문은 시스템 글꼴(내려받기 없음) */
}
:root {
  /* round136(사용자 지적 C129-4): 스토어 화면은 tokens.css를 싣지 않는다 — 배지 토큰(ADR-0025 조합 B)을 여기서도 정의. 값은 apps/*/tokens.css와 같게 */
  --c-badge-bg: #EEF0F3;  --c-badge-success: #176B40;  --c-badge-info: #1F2F52;  --c-badge-warning: #8A5200;  --c-badge-empty: #5F6673;  --c-badge-danger-bg: #C8102E;
  --v2-ink: #1F2F52;        /* 국산24 로고 네이비(라운드 31) */
  --v2-ink-soft: #172441;
  --v2-ink-bg: #EAF0F8;
  --v2-red: #C8102E;
  --v2-bg: #F4F5F7;
  --v2-surface: #FFFFFF;
  --v2-line: #E5E7EB;
  --v2-biz: #177A33;   /* round210: 유틸바 [국내산 식당/업체] 초록(흰 글자 대비 5.3) */
  --v2-text: #1A1A1A;
  --v2-muted: #4B5563;   /* round128: 보조 글자를 한 단계 진하게(가독성) */
  --v2-muted2: #9CA3AF;
  --v2-sale: #D12727;
  --v2-star: #C77F00;
  --v2-blue: #2A4B9B;  --v2-blue-bg: #EEF4FF;
  --v2-green: #196A45; --v2-green-bg: #F0F7F3;
  --v2-font: -apple-system, BlinkMacSystemFont, Helvetica, 'Apple SD Gothic Neo', sans-serif;   /* round227(대표자 D-225 ㄱ): 본문은 시스템 글꼴(내려받기 없음 — 맥 Apple SD Gothic, 윈도 맑은 고딕) */
  --v2-font-head: 'NanumSquareNeo', 'Apple SD Gothic Neo', 'Helvetica Neue', Helvetica, sans-serif;   /* round226·227(D-225 ㄱ): 제목 글꼴(NanumSquareNeo EB 자체 호스팅) */
  /* round186(계약 round186-store-brand-program §2): 표식 토큰 — 국산 검증·확인 업체 배지(그린 블록형), 로고 옆 문구 구슬, 모바일 썸네일 태그 */
  --v2-badge-g1: #4D6CA8; --v2-badge-g2: #1F2F52; --v2-badge-gt: #DDE3EE; --v2-badge-gsh: 95,115,150;   /* round192(대표자): 국산 검증 배지 = 남색 계열(186의 초록에서 되돌림) */
  --v2-bead1: #8FE07A; --v2-bead2: #3DAA4E; --v2-bead3: #1F7A3A;
  --v2-tag-navy: #1F2F52; --v2-tag-dot: #8FE07A;
  /* round207(디자인 감사 §2-1, 대표자 2026-10-07 승인): 글자 5단계 — 화면은 이 값만 쓴다. Display 24/800 · Title 18/700 · Body 14/500(본문 400) · Caption 12/400 회색 1종 · Micro 11/700(배지 전용, 10px 이하 없음) */
  --t-display: 24px; --t-title: 18px; --t-body: 14px; --t-caption: 12px; --t-micro: 11px;
  --t-lh-tight: 1.25; --t-lh-title: 1.3; --t-lh-body: 1.45;
  --t-ls-display: -0.02em; --t-ls-title: -0.01em;
  /* 배지 3종(감사 §2-3): 신뢰 = 남색, 혜택 = 검정 채움, 상태 = 회색, '사용 가능'만 파랑 */
  --bdg-trust: #1F2F52; --bdg-promo: #1A1A1A; --bdg-state-bg: #EEF0F3; --bdg-state: #4B5563; --bdg-ok: #2A4B9B;
}
html { scrollbar-gutter: stable; }
.v2 { margin: 0; background: #FFFFFF; color: var(--v2-text);   /* round210-b(대표자): 바탕은 어디서나(모바일도) 흰색 */ font-family: var(--v2-font); font-size: 15px; line-height: 1.6; }   /* round128: 본문 15px */
/* round102 LS1: shared chrome (header, category row, footer) must render identically whether or not a page also loads app.css
   (cart, my pages, profile do; home, list, detail do not) - app.css sets * { box-sizing: border-box } and body line-height 1.55 */
.v2 > header, .v2 > header *, .v2 > header *::before, .v2 > header *::after,
.v2 > footer, .v2 > footer *, .v2 > footer *::before, .v2 > footer *::after { box-sizing: content-box; }
.v2 > header, .v2 > footer { line-height: normal; }
.v2 a { color: var(--v2-text); text-decoration: none; }
.v2 a:hover { color: #000000; text-decoration: underline; }
.v2 .num { font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
.v2 .wrap { width: 1280px; margin: 0 auto; }
/* round230(리뷰 접근성): 본문 바로가기 — 포커스될 때만 보인다 */
.v2 .skip-link { position: absolute; left: 8px; top: -48px; z-index: 300; padding: 8px 14px; border-radius: 4px; background: var(--v2-ink); color: #FFFFFF; font-weight: 700; font-size: 14px; }
.v2 .skip-link:focus { top: 8px; outline: 2px solid #FFD43B; outline-offset: 2px; }
.v2 .gnb-scroll:has(.gnb-arrow.next:not([hidden])) .gnb-links { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); }   /* round230(리뷰): 띠가 넘칠 때 오른쪽 끝을 흐려 더 있음을 보인다 */
.v2 .prow-price { flex-wrap: nowrap; white-space: nowrap; }   /* round230(리뷰 1-4): 가격과 '원'은 한 줄 */
.v2 .view-btn { white-space: nowrap; }   /* round230(리뷰 3-11): 약관 [보기]가 세로로 쪼개지지 않게 */
.v2 .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.v2 .utilbar { background: var(--v2-surface); border-bottom: 1px solid var(--v2-line); }
.v2 .utilbar .wrap { display: flex; justify-content: flex-end; align-items: center; gap: 20px; padding: 6px 0; font-size: 12px; }
.v2 .utilbar a { color: var(--v2-muted); white-space: nowrap; flex-shrink: 0; }
.v2 .utilbar a.strong { color: var(--v2-text); font-weight: 700; }
.v2 .utilbar .util-logout { display: inline; margin: 0; flex-shrink: 0; }
.v2 .utilbar .util-logout button { background: none; border: 0; padding: 0; font: inherit; font-size: 12px; color: var(--v2-muted); cursor: pointer; white-space: nowrap; }
/* round210(대표자): [국내산 식당/업체] 굵은 초록 버튼, [로그인]·[로그아웃] 같은 글꼴·크기의 네모 버튼 */
.v2 .utilbar a.util-biz { color: #FFFFFF; font-weight: 700; background: var(--v2-biz); display: inline-flex; align-items: center; box-sizing: border-box; height: 23px; padding: 0 10px; border-radius: 4px; }
.v2 .utilbar a.util-biz:hover { background: #126428; text-decoration: none; }
.v2 .utilbar a.util-btn, .v2 .utilbar .util-logout button { display: inline-flex; align-items: center; box-sizing: border-box; height: 23px; padding: 0 10px; border: 1px solid var(--v2-line); border-radius: 4px; background: var(--v2-surface); color: var(--v2-text); font-size: 12px; font-weight: 700; font-family: inherit; cursor: pointer; }
.v2 .utilbar a.util-btn:hover, .v2 .utilbar .util-logout button:hover { border-color: var(--v2-ink); color: var(--v2-ink); text-decoration: none; }
.v2 .utilbar .util-logout button { background: #F1EFEF; }   /* round210-b(대표자): 로그아웃만 바탕 #F1EFEF */
.v2 .hd { background: var(--v2-surface); border-bottom: 1px solid var(--v2-line); }
.v2 .hd .wrap { display: flex; align-items: center; gap: 32px; padding: 16px 0; }
.v2 .logo { display: inline-flex; align-items: center; gap: 10px; font-size: 28px; font-weight: 800; color: #2B3038; letter-spacing: -0.02em; }
.v2 .logo:hover { color: #2B3038; }
.v2 .logo img { height: 44px; width: auto; display: block; }
/* round186: 로고 옆 문구(시안 B안) — 초록 구슬 4 + 네이비 4글자. 화면에 있는 동안 반복(round187 대표자 지시), 감속 모션이면 정지·빛 없음. 장식이라 role=img + aria-label 하나 */
.v2 .vline { width: 1px; height: 40px; background: #D5D9DE; flex-shrink: 0; }
.v2 .brand-tag { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; white-space: nowrap; flex-shrink: 0; }
.v2 .brand-tag .circ { display: flex; gap: 3px; }
.v2 .brand-tag .circ b { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; color: #FFFFFF; font-weight: 800; font-size: 13px; line-height: 1; background: radial-gradient(circle at 32% 28%, var(--v2-bead1), var(--v2-bead2) 55%, var(--v2-bead3)); box-shadow: inset 0 -3px 4px rgba(0,0,0,.18), inset 0 2px 3px rgba(255,255,255,.45), 0 3px 6px rgba(31,110,67,.3); animation: a2a-pop 3.6s cubic-bezier(.3,1.6,.5,1) infinite; }   /* round187(대표자): 다른 화면으로 가기 전까지 반복 */
.v2 .brand-tag .circ b:nth-child(2) { animation-delay: .12s; } .v2 .brand-tag .circ b:nth-child(3) { animation-delay: .24s; } .v2 .brand-tag .circ b:nth-child(4) { animation-delay: .36s; }
@keyframes a2a-pop { 0%, 8% { transform: translateY(0); } 4% { transform: translateY(-5px); } 100% { transform: translateY(0); } }
.v2 .brand-tag .sub { display: grid; grid-template-columns: repeat(4, 24px); column-gap: 3px; justify-items: center; font-weight: 800; font-size: 15px; line-height: 1.1; color: var(--v2-ink); position: relative; overflow: hidden; padding: 1px 0; }
.v2 .brand-tag .sub i { font-style: normal; }
.v2 .brand-tag .sub::after { content: ""; position: absolute; top: 0; bottom: 0; width: 35%; left: -40%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.95), transparent); animation: a2a-bar 3.6s ease-in-out infinite; pointer-events: none; }
@keyframes a2a-bar { 0%, 50% { left: -40%; } 80%, 100% { left: 120%; } }
/* round199(대표자 지적 1): 감속 모션(윈도 '애니메이션 효과' 끔 — 개발 PC·대표자 PC가 그렇다)에서도 문구는 움직인다. 브랜드 표식이라 대표자 결정, 움직임은 5px·3.6초 주기로 작다. 전에는 여기서 animation: none */
.v2 .logo:hover { color: var(--v2-ink); text-decoration: none; }
.v2 .searchbox { flex-grow: 1; display: flex; align-items: center; height: 48px; background: #FFFFFF; border: 2px solid var(--v2-ink); border-radius: 6px; overflow: hidden; }
.v2 .searchbox input { flex-grow: 1; min-width: 0; width: auto; height: 46px; margin: 0; border: 0; border-radius: 0; padding: 0 18px; background: transparent; box-shadow: none; transition: none; font-size: 15px; line-height: normal; font-family: inherit; color: var(--v2-text); }   /* round102 LS1: every property pinned - app.css form rules must not leak in */
.v2 .searchbox button { box-sizing: border-box; flex: none; width: 68px; height: 48px; margin: 0; padding: 0; border: 0; border-radius: 0; font: inherit; color: #FFFFFF; background: var(--v2-ink); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.v2 .hd-icons { display: flex; gap: 22px; }
.v2 .hd-icon { display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--v2-ink); font-size: 11px; }
.v2 .hd-icon:hover { color: var(--v2-ink); }
/* round205 #3: 머리의 로그인/로그아웃 아이콘은 모바일 전용(PC는 유틸바). form 안의 버튼은 아이콘 링크와 같은 모양 */
.v2 .hd-auth { display: none; margin: 0; }
/* round193(계약 round192-store-feedback §3): 모바일 머리 햄버거·서랍 — PC(901px 이상)에서는 없다. 모바일 규칙은 900px 블록 */
.v2 .hd-menu { display: none; }
.v2 .mdrawer, .v2 .md-backdrop { display: none; }
body.menu-open { overflow: hidden; }
.v2 .cat-dots { display: none; }   /* round193: 카테고리 페이지 점 — 모바일만(store-home.js가 그린다) */
/* round181 B1(실측): 감속 모션이 꺼진 브라우저에서는 헤더에 view-transition-name이 붙어 헤더가 별도 쌓임 맥락이 된다 → 그 안의 z-index는 바깥으로 못 나오고 뒤에 오는 배너(position)가 헤더를 덮었다. 헤더 자체에 순서를 준다(검색 제안 30·띠 70 < 하단 탭바 80) */
.v2 > header { position: relative; z-index: 70; }
.v2 .gnb { position: relative; z-index: 70; background: var(--v2-surface); border-bottom: 1px solid var(--v2-line); }   /* round179 B1: 호버 패널이 배너·목록 뒤로 가지 않게 띠 자체에 쌓임 순서 */
.v2 .gnb .wrap { display: flex; align-items: center; gap: 18px; height: 50px; font-size: 14px; font-weight: 700; }
.v2 .gnb-scroll { display: flex; align-items: center; flex: 1 1 auto; min-width: 0; height: 100%; position: relative; }
.v2 .gnb-links { display: flex; align-items: center; gap: 18px; flex: 1 1 auto; min-width: 0; height: 100%; overflow-x: auto; scrollbar-width: none; scroll-behavior: smooth; }
/* F3: 띠 양끝 화살표 — 넘칠 때만(JS hidden 토글), 호버 시 연속 스크롤 */
.v2 .gnb-arrow { flex-shrink: 0; width: 26px; height: 26px; border: 1px solid var(--v2-line); border-radius: 999px; background: var(--v2-surface); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; z-index: 1; }
.v2 .gnb-arrow svg { width: 14px; height: 14px; }
.v2 .gnb-arrow.prev { margin-right: 6px; box-shadow: 8px 0 8px -6px rgba(0,0,0,.12); }
.v2 .gnb-arrow.next { margin-left: 6px; box-shadow: -8px 0 8px -6px rgba(0,0,0,.12); }
.v2 .gnb-arrow:hover { background: var(--v2-ink); color: #FFFFFF; }
.v2 .gnb-links::-webkit-scrollbar { display: none; }
.v2 .gnb .all { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.v2 .gnb .sep { width: 1px; height: 18px; background: var(--v2-line); flex-shrink: 0; }
.v2 .gnb a { white-space: nowrap; }
.v2 .gnb a.hot { color: var(--v2-sale); }
.v2 .gnb a.on { border-bottom: 2px solid var(--v2-ink); padding-bottom: 4px; }
.v2 .gnb-links a:hover { text-decoration: none; border-bottom: 2px solid var(--v2-ink); padding-bottom: 4px; }
.v2 .all-wrap { position: relative; height: 100%; display: flex; align-items: center; flex-shrink: 0; }
.v2 .all-wrap:hover .all, .v2 .all-wrap:focus-within .all { text-decoration: none; }
.v2 .all-wrap:hover .chev, .v2 .all-wrap:focus-within .chev { transform: rotate(180deg); }
.v2 .cat-panel { display: none; position: absolute; top: 100%; left: 0; z-index: 60; width: 660px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-top: 2px solid var(--v2-ink); padding: 10px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; }
.v2 .all-wrap:hover .cat-panel, .v2 .all-wrap:focus-within .cat-panel { display: grid; }
.v2 .cat-panel a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 4px; font-weight: 700; font-size: 14px; }
.v2 .cat-panel a:hover { background: #F3F4F6; text-decoration: none; }
.v2 .cat-panel .cat-ic { width: 20px; height: 20px; color: var(--v2-muted); flex-shrink: 0; }
.v2 .cat-panel .cat-img { width: 28px; height: 28px; object-fit: contain; flex-shrink: 0; }   /* round186: 카테고리 이미지(srcId 매핑, layout/cat-image) */
.v2 .cat-panel a:hover .cat-ic { color: var(--v2-ink); }
.v2 .cat-panel .cp-all { grid-column: 1 / -1; border-top: 1px solid var(--v2-line); border-radius: 0; margin-top: 6px; padding-top: 12px; color: var(--v2-muted); }
.v2 .sec { display: flex; flex-direction: column; gap: 16px; padding: 32px 0 8px 0; }
.v2 .sec-h { display: flex; align-items: baseline; justify-content: space-between; }
.v2 .sec-t { font-size: var(--t-title); font-weight: 700; letter-spacing: var(--t-ls-title); line-height: var(--t-lh-title); }   /* round207: Title 18/700(전 21/800) */
.v2 .more { font-size: 13px; color: var(--v2-muted); line-height: 24px; }   /* round230: 누르는 높이 */
/* round226·227(D-225 ㄱ): 제목(구역 제목·페이지 제목·상품명·배너 제목)은 NanumSquareNeo EB — 본문·버튼·표는 시스템 글꼴 */
.v2 .sec-t, .v2 .page-title, .v2 .dname, .v2 .banner-main .t, .v2 .cb-t, .v2 .err-title, .v2 h1, .v2 h2 { font-family: var(--v2-font-head); font-weight: 800; }
.v2 .grid4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.v2 .grid5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
/* round207(시안 1): 카드 = 테두리 상자 없이 사진 모서리 8px, 본문은 상호·산지 → 제목(두 줄 칸 고정) → 가격 → 배지 */
.v2 .card { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; position: relative; }   /* round210(대표자): 카드 구분이 사라졌다 → 흰 바탕·테두리 복구 */
.v2 .card:hover { border-color: #C9CDD3; }
.v2 main.sec { background: #FFFFFF; }   /* round210(대표자): <main class="wrap sec"> 바탕 흰색 */
.v2 .card:hover { text-decoration: none; }
.v2 .card .thumb { border-radius: 0; overflow: hidden; }
.v2 .card:hover .thumb { box-shadow: 0 6px 18px rgba(31, 47, 82, .12); }
/* round188: 카드 루트 article — 링크(card-link)가 사진·본문, [담기] 폼은 오른쪽 아래 원형 버튼(품절이면 없음) */
.v2 .card-link { display: flex; flex-direction: column; flex: 1; min-width: 0; color: inherit; }
.v2 .card-link:hover { text-decoration: none; color: inherit; }
.v2 .card-cart { position: absolute; right: 10px; bottom: 10px; margin: 0; z-index: 2; }
.v2 .card-cart-btn { width: 34px; height: 34px; border-radius: 999px; border: 1px solid var(--v2-line); background: var(--v2-surface); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.v2 .card-cart-btn svg { width: 18px; height: 18px; }
.v2 .card-cart-btn:hover { background: var(--v2-ink); color: #FFFFFF; border-color: var(--v2-ink); }
/* round225(대표자 5): [담기] 왼쪽의 찜 하트 — 같은 원형, 찜하면 빨강(품절 카드는 [담기]가 없어 하트가 오른쪽 끝) */
.v2 .card-wish { position: absolute; right: 50px; bottom: 10px; margin: 0; z-index: 2; }
.v2 .card:not(:has(.card-cart)) .card-wish { right: 10px; }
.v2 .card-wish-btn { width: 34px; height: 34px; border-radius: 999px; border: 1px solid var(--v2-line); background: var(--v2-surface); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.v2 .card-wish-btn .ic { width: 17px; height: 17px; }
.v2 .card-wish-btn:hover, .v2 .card-wish-btn.on { color: var(--v2-sale); border-color: var(--v2-sale); }
.v2 .thumb { height: 220px; background: #EFF1F0; display: flex; align-items: center; justify-content: center; color: var(--v2-muted2); font-size: 12px; overflow: hidden; position: relative; }
/* round186(시안 §13): 모바일 썸네일 왼쪽 위 '국산 검증' 납작한 남색 태그 — 글자만, 아이콘·뉴모피즘 없음. 901px 이상에서는 숨김(PC 목록에는 배지 없음) */
.v2 .tg-vrf { position: absolute; left: 6px; bottom: 6px; z-index: 1;   /* round192: 왼쪽 아래 — 왼쪽 위는 이번달 행사 띠 자리 */ height: 20px; padding: 0 7px; border-radius: 4px; background: var(--v2-tag-navy); color: #FFFFFF; font-size: var(--t-micro); font-weight: 800; letter-spacing: .02em; line-height: 1; display: none; align-items: center; white-space: nowrap; box-shadow: 0 1px 2px rgba(0,0,0,.28); }
/* round227(대표자 9-3): 정부 인증 마크 — 썸네일 왼쪽 아래(.thumb img 100% 규칙보다 선택자를 높여 마크 크기를 지킨다)(모바일은 '국산 검증' 태그 위). 이미지 없는 종류는 글자 칩 */
.v2 .cert-marks { position: absolute; left: 6px; bottom: 6px; z-index: 1; display: flex; gap: 4px; align-items: flex-end; flex-wrap: wrap; max-width: calc(100% - 12px); }
.v2 .thumb .cert-marks img, .v2 .dmain .cert-marks img { width: 30px; height: 30px; object-fit: contain; background: #FFFFFF; border-radius: 4px; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); display: block; }
.v2 .cert-chip { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 4px; background: #FFFFFF; color: var(--v2-ink); font-size: 11px; font-weight: 800; font-style: normal; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); }
.v2 .dmain .cert-marks { left: 10px; bottom: 10px; gap: 6px; }
.v2 .dmain .cert-marks img { width: 36px; height: 36px; }
.v2 .tg-vrf::before { content: ""; width: 4px; height: 4px; border-radius: 50%; background: var(--v2-tag-dot); margin-right: 5px; }
.v2 .thumb img { width: 100%; height: 100%; object-fit: cover; }
.v2 .cbody { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px 10px; }   /* round218(대표자): 줄 간격 6px */   /* round210: 상자가 돌아왔으니 좌우 12px */   /* round207: 상자가 없으니 좌우 여백은 2px */   /* round188-b(대표자): 줄 사이 간격 절반 이하 → round192: p 기본 여백(1em)이 gap을 무력화하고 있었다(아래 규칙) */
.v2 .cbody p { margin: 0; }   /* round192(계약 §2.1): 브라우저 기본 p 여백 14~15px 위아래가 줄마다 들어가 본문이 194px였다 */
.v2 .store-name { font-size: var(--t-caption); line-height: 1.4; color: var(--v2-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }   /* round207: 한 줄 고정(길면 말줄임) — 가격 자리가 흔들리지 않게 */
.v2 .store-name b { font-weight: 500; color: var(--v2-text); }   /* round207: 상호만 한 단계 진하게 */
/* round207: 상품명 Body 14/500, 줄간 1.45, 두 줄 칸 고정(한 줄이어도 가격 자리가 같다 — 대표자) */
.v2 .pname { font-size: var(--t-body); font-weight: 500; line-height: var(--t-lh-body); height: calc(var(--t-lh-body) * 2em); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; word-break: keep-all; }
.v2 .prow-bdg { min-height: 20px; align-items: center; }   /* round227(9-1): 배지 줄은 상호·산지 위 */
/* round228(대표자): 카드 배지는 항상 같은 크기 — 높이 20·글자 Micro·양옆 7·모서리 4, 그림자 없음(국산 검증 mini도 같은 틀, 엠블럼 앞만 4) */
.v2 .cbody .bdg, .v2 .cbody .b-vrf.mini { height: 20px; line-height: 20px; padding: 0 7px; font-size: var(--t-micro); font-weight: 800; border-radius: 4px; box-shadow: none; top: 0; }
.v2 .cbody .b-vrf.mini { padding-left: 4px; gap: 4px; }
/* round228(대표자, 쿠팡 카드): 할인 줄 = 쿠폰 글자 | % 정가(취소선) — 최종가 위. 최종가는 본문 맨 아래, 찜·[담기](34px, bottom 10)와 같은 줄 */
.v2 .prow-disc { gap: 6px; align-items: center; min-height: 16px; }
.v2 .disc-label { font-size: 12px; font-weight: 700; color: var(--v2-sale); white-space: nowrap; }
.v2 .disc-sep { width: 1px; height: 10px; background: var(--v2-line); flex: none; }
.v2 .cbody .sale-rate { font-size: 13px; }
.v2 .card-link .cbody { flex: 1; }   /* round228: 그리드 줄 높이(가장 긴 카드)만큼 본문을 늘려 최종가가 어느 카드든 맨 아래 버튼 줄에 온다 */
.v2 .card .prow-price { margin-top: auto; padding: 7px 80px 7px 0; }   /* 20px 글줄 + 7·7 = 34px → 버튼과 가운데가 같다. 오른쪽 80 = 두 버튼 자리(이 줄만) */
.v2 .card:not(:has(.card-cart)) .prow-price { padding-right: 40px; }
.v2 .prow { display: flex; align-items: baseline; gap: 4px; flex-wrap: wrap; line-height: 1.2; }
.v2 .cbody > .prow:empty { display: none; }
.v2 .sale-rate { color: var(--v2-sale); font-weight: 800; font-size: 16px; }
.v2 .price { font-weight: 800; font-size: 17px; color: var(--v2-text); }
.v2 .won { font-size: 13px; font-weight: 500; }
.v2 .org-price { color: var(--v2-muted); font-size: 12px; text-decoration: line-through; }
.v2 .card .wish-mark { display: none; }   /* round225: 글자 기호 하트 대신 .card-wish-btn.on */
.v2 .empty .pop-terms { justify-content: center; margin-top: 10px; }
.v2 .pop-terms { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v2 .pop-terms .pt-label { font-size: 13px; font-weight: 800; color: var(--v2-muted); margin-right: 4px; }
.v2 .pop-terms a { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 999px; padding: 6px 14px; font-size: 13px; }
.v2 .pop-terms a:hover { border-color: var(--v2-muted2); text-decoration: none; }
.v2 .rate { color: var(--v2-star); font-weight: 800; font-size: 13px; }
.v2 a.rate:hover { text-decoration: none; }
.v2 .rate-cnt { color: var(--v2-muted); font-size: 12px; }
.v2 .review { border-top: 1px solid var(--v2-line); padding: 12px 0 4px 0; }
.v2 .review-h { font-size: 13px; color: var(--v2-muted); display: flex; gap: 6px; align-items: baseline; }
.v2 .review-c { line-height: 1.7; margin-top: 4px; }
.v2 .muted { color: var(--v2-muted); }
/* round207(감사 §2-3, 대표자 수정): 배지 한 모양 = 둥근 4px, 높이 20px, Micro 11px/700. 뜻 셋 — 신뢰(남색)·혜택(검정 채움)·상태(회색), '사용 가능'만 파랑 */
.v2 .bdg { display: inline-flex; align-items: center; height: 20px; line-height: 20px; font-size: var(--t-micro); font-weight: 700; padding: 0 6px; border-radius: 4px; white-space: nowrap; flex: none; box-sizing: border-box; }   /* round91: 배지는 항상 한 줄 */
.v2 .b-trust { background: var(--bdg-trust); color: #FFFFFF; }
.v2 .b-promo { background: var(--bdg-promo); color: #FFFFFF; }
.v2 .b-state { background: var(--bdg-state-bg); color: var(--bdg-state); }
/* round186(시안 §12, 계약 §2): 국산 검증·확인 업체 배지 = 그린 컬러 블록형(뉴모피즘) — 상태 표시(버튼 아님), 오버·눌림 효과 없음. 마크업: <span class="bdg b-vrf"><i class="sh"><svg …></svg></i>문구</span>
   크기: (없음) 13px 상세·GNB / sm 12px 확인 업체 / mini 17px 높이 제목 앞 / t = 아이콘 없는 글자만(판매자 프로듀서 배지 등). 라운드 88 진초록 단색은 .b-ok로 남긴다(문의 답변 상태) */
.v2 .b-vrf { --bg1: var(--v2-badge-g1); --bg2: var(--v2-badge-g2); display: inline-flex; align-items: center; gap: 7px; padding: 6px 13px 6px 6px; border-radius: 999px; font-size: 13px; font-weight: 800; letter-spacing: -0.01em; line-height: 1; color: #FFFFFF; background: linear-gradient(145deg, var(--bg1), var(--bg2)); box-shadow: 4px 4px 10px rgba(var(--v2-badge-gsh), .5), -3px -3px 8px rgba(255,255,255,.9), inset 1px 1px 1px rgba(255,255,255,.35), inset -1px -2px 3px rgba(0,0,0,.2); }
.v2 .b-vrf .sh { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(145deg, #FFFFFF, var(--v2-badge-gt)); box-shadow: inset 1px 1px 1px #FFFFFF, inset -1px -2px 3px rgba(0,0,0,.12); }
.v2 .b-vrf .sh svg { width: 13px; height: 13px; display: block; stroke: var(--bg2); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.v2 .b-vrf.sm { font-size: 12px; gap: 6px; height: 23px; padding: 0 12px;   /* round210(대표자): 엠블럼 없이 글자만, 높이 30px(가시성) */ box-shadow: 3px 3px 7px rgba(var(--v2-badge-gsh), .45), -2px -2px 6px rgba(255,255,255,.9), inset 1px 1px 1px rgba(255,255,255,.35), inset -1px -2px 3px rgba(0,0,0,.2); }
.v2 .b-vrf.sm .sh { width: 20px; height: 20px; } .v2 .b-vrf.sm .sh svg { width: 12px; height: 12px; }
.v2 .b-vrf.mini { height: 20px; font-size: var(--t-micro); gap: 4px; padding: 0 7px 0 3px; border-radius: 4px; vertical-align: middle; position: relative; top: 0; background: var(--bdg-trust); color: #FFFFFF;   /* round207: 평면 남색(신뢰), Micro 11px */ box-shadow: 1px 1px 3px rgba(var(--v2-badge-gsh), .45), inset 1px 1px 1px rgba(255,255,255,.35), inset 0 -1px 2px rgba(0,0,0,.2); }
.v2 .b-vrf.mini .sh { width: 13px; height: 13px; box-shadow: inset 1px 1px 1px #FFFFFF, inset 0 -1px 2px rgba(0,0,0,.12); } .v2 .b-vrf.mini .sh svg { width: 8px; height: 8px; }
.v2 .b-vrf.t { padding: 5px 12px; gap: 0; }
/* round226(대표자 7): 검증 표시 = 대표자 엠블럼 img(.bm) — 원(.sh) 없이 엠블럼만, 크기는 전의 원과 같다(22 / sm 20 / mini 13) */
.v2 .b-vrf .bm { width: 22px; height: 22px; flex-shrink: 0; display: block; object-fit: contain; }
.v2 .b-vrf.sm .bm { width: 20px; height: 20px; }
.v2 .b-vrf.mini .bm { width: 13px; height: 13px; }
.v2 .b-ok { background: var(--bdg-ok); color: #FFFFFF; }   /* round207(대표자): 사용 가능 = 파랑 바탕 흰 글자 */
/* round131 BD3(ADR-0025 조합 B): 회색 바탕 + 글자색, 품절(멈춤)만 빨강 채움. 국산 검증(b-vrf)만 초록 채움 그대로 */
.v2 .b-eco { background: var(--bdg-trust); color: #FFFFFF; }          /* round207: 친환경 인증 = 신뢰 */
.v2 .b-soldout { background: var(--bdg-state-bg); color: var(--bdg-state); }   /* round207: 품절 = 상태(회색) */
.v2 .b-region { background: var(--bdg-state-bg); color: var(--bdg-state); }
.v2 .b-event { background: var(--bdg-promo); color: #FFFFFF; }         /* round207: 행사 = 혜택(검정) */
.v2 .badge.badge-success { background: var(--bdg-ok); color: #FFFFFF; }   /* round207(대표자): 쿠폰 '사용 가능' = 파랑 */   /* round135(사용자 지시): 이번달 행사 = 남색 바탕 + 흰 글자 — round192부터 카드·상세는 썸네일 띠(.event-strip), 이 규칙은 식당 페이지·주문 화면(부분 반품)이 쓴다 */
/* round192(계약 §2.3, 대표자 제공 event-strip.css): '이번달 행사' 띠 — 썸네일(.thumb)·상세 대표 사진(.dmain) 위. --corner = D안 변형(지금), --bottom = D안(기간 세일용, CSS만) */
.v2 .thumb, .v2 .dmain { --ev-bg-1: rgba(14,24,48,.95); --ev-bg-2: rgba(30,45,74,.88); --ev-accent: #FFD23F; --ev-text: #FFFFFF; --ev-sub: #C9D3E6; --ev-height: 28px; --ev-font: 12px; }
.v2 .event-strip { position: absolute; z-index: 2; display: flex; align-items: center; gap: 6px; height: var(--ev-height); padding: 0 10px; color: var(--ev-text); font-size: var(--ev-font); font-weight: 800; line-height: 1; white-space: nowrap; overflow: hidden; pointer-events: none; background: linear-gradient(90deg, var(--ev-bg-1), var(--ev-bg-2)); }
.v2 .event-strip b { color: var(--ev-accent); font-weight: 800; }
.v2 .event-strip__dot { flex-shrink: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--ev-accent); box-shadow: 0 0 6px var(--ev-accent); animation: ev-blink 1.6s ease-in-out infinite; }
.v2 .event-strip__period { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--ev-sub); }
.v2 .event-strip::after { content: ""; position: absolute; top: 0; bottom: 0; width: 35%; left: -50%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); animation: ev-shine 4s ease-in-out infinite; }
.v2 .event-strip--bottom { left: 0; right: 0; bottom: 0; backdrop-filter: blur(2px); }
.v2 .event-strip--corner { left: 0; top: 12px; width: 50%; box-sizing: border-box; padding-right: 14px; clip-path: polygon(0 0, 100% 0, calc(100% - 10px) 100%, 0 100%); box-shadow: 0 2px 6px rgba(0,0,0,.2); }
@media (max-width: 480px) { .v2 .thumb, .v2 .dmain { --ev-height: 24px; --ev-font: 11px; } .v2 .event-strip { gap: 4px; padding: 0 8px; } .v2 .event-strip--corner { width: 62%; top: 8px; padding-right: 12px; } .v2 .event-strip__period { font-size: 10px; } }
@media (prefers-reduced-motion: reduce) { .v2 .event-strip__dot, .v2 .event-strip::after { animation: none; } }
@keyframes ev-blink { 50% { opacity: .25; } }
@keyframes ev-shine { 0%, 70% { left: -50%; } 90%, 100% { left: 120%; } }
.v2 .btn { display: inline-flex; align-items: center; justify-content: center; height: 44px; padding: 0 18px; border: 1px solid var(--v2-line); border-radius: 4px; font-size: 14px; font-weight: 700; background: var(--v2-surface); cursor: pointer; font-family: inherit; }
.v2 .btn:where(:hover) { text-decoration: none; border-color: var(--v2-muted2); }   /* round146: (0,2,0) — .btn-ink/.btn-primary/.btn-danger:hover(0,3,0)가 이긴다 */
.v2 .btn-ink { background: var(--v2-ink); color: #FFFFFF; border-color: var(--v2-ink); }
.v2 .btn-ink:hover { color: #FFFFFF; background: #000000; }
.v2 .btn-lg { height: 52px; padding: 0 26px; font-size: 16px; }
.v2 .banner-ink { background: var(--v2-ink); border-radius: 6px; color: #FFFFFF; }
.v2 .banner-ink .sub { color: #B9BCC1; }
.v2 .banner-ink .accent { color: #FFD43B; }
.v2 .btn-sm { height: 34px; padding: 0 14px; font-size: 13px; font-weight: 700; }   /* round128: 작은 버튼도 손가락 크기·굵게 */
.v2 .content { padding-top: 24px; padding-bottom: 8px; }
.v2 .hd-icon { position: relative; }
.v2 .cart-badge { position: absolute; top: -6px; right: -2px; background: var(--v2-sale); color: #FFFFFF; border-radius: 999px; min-width: 18px; height: 18px; padding: 0 5px; font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.v2 .banner-carted { background: var(--v2-green-bg); color: var(--v2-green); border-radius: 4px; padding: 10px 14px; font-size: 13px; font-weight: 700; display: flex; gap: 12px; }
.v2 .banner-carted a { color: var(--v2-green); text-decoration: underline; }
.v2 .dcart-form { display: flex; gap: 8px; }
.v2 .dcart-form input[type="number"] { width: 76px; border: 1px solid var(--v2-line); border-radius: 4px; padding: 0 10px; font-family: inherit; font-size: 14px; }
.v2 .dcart-form .btn-lg { flex-grow: 1; width: auto; }
.v2 .cart-group { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 18px 20px; display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px; }
.v2 .cart-group .g-title { font-size: 15px; font-weight: 800; }
.v2 .cart-sub { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 10px 14px; }   /* round218: 좁은 화면에서 합계·버튼이 겹치지 않게 줄바꿈 */
/* round215(대표자): 옵션이 있는 상품은 한 품목 아래 옵션 줄을 계층으로 — 머리 줄(상품명) + 옵션 줄(└ 묶음: 값) */
.v2 .cart-prow td { background: #FAFAFB; font-weight: 700; }
/* round218(대표자): 장바구니에도 썸네일 — 상품 줄(머리 줄·옵션 없는 줄) 이름 앞 48px */
.v2 .cart-thumb { width: 48px; height: 48px; object-fit: cover; border: 1px solid var(--v2-line); border-radius: 6px; background: #EFF1F0; display: inline-block; vertical-align: middle; margin-right: 10px; flex-shrink: 0; }
.v2 .cart-name { display: inline-flex; align-items: center; gap: 0; min-width: 0; }
.v2 .cart-prow td small { font-weight: 500; color: var(--v2-muted); margin-left: 6px; }
.v2 .cart-orow .opt-sub { display: inline-block; position: relative; padding-left: 18px; color: var(--v2-text); }
.v2 .cart-orow .opt-sub::before { content: ""; position: absolute; left: 4px; top: 2px; width: 7px; height: 9px; border-left: 1px solid #C9CDD3; border-bottom: 1px solid #C9CDD3; }
.v2 .cart-sub .sum { font-size: 18px; font-weight: 800; }
.v2 .empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 64px 0; color: var(--v2-muted); }
.v2 .empty .empty-t { font-size: 17px; font-weight: 800; color: var(--v2-text); }
.v2 .sec > section { display: flex; flex-direction: column; gap: 12px; }
.v2 .home-top { display: flex; gap: 14px; align-items: stretch; }
.v2 .banner-main { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 12px; padding: 40px 44px; min-height: 180px; position: relative; overflow: hidden; }
.v2 .banner-img { flex-grow: 1; display: block; border-radius: 6px; overflow: hidden; min-height: 180px; }
.v2 .banner-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v2 .banner-deco { position: absolute; right: 40px; top: 50%; transform: translateY(-50%); width: 150px; height: 150px; pointer-events: none; }
.v2 .banner-main .sub { font-size: 14px; }
.v2 .banner-main .t { font-size: 27px; font-weight: 800; color: #FFFFFF; line-height: 1.35; letter-spacing: -0.01em; }
/* round187(계약 §4-187): 사이드박스(로그인·주문·장바구니 상자) 제거 → 오른쪽 416px = 국내산 확인 업체 배너(cert 구역이 켜져 있을 때만, certListings 첫 항목) */
/* round187-b·188-b(대표자): 확인 업체 배너 = 흰색→옅은 남색 그라데이션, 제목 글자('국산24 인증 국내산 확인 업체')만 금색 */
.v2 .cert-banner { width: 416px; flex-shrink: 0; box-sizing: border-box; background: linear-gradient(160deg, #FFFFFF, #EEF1F5); border: 1px solid var(--v2-line); border-radius: 6px; padding: 28px; display: flex; flex-direction: column; justify-content: center; gap: 10px; position: relative; overflow: hidden; }
/* round192(계약 §2.2): 바탕에 우리나라 지도(남색 8%) — 글자는 위(z-index 1), 대비 변화 없음 */
.v2 .cert-banner .cb-map { position: absolute; right: 8px; bottom: -12px; width: 200px; height: 300px; object-fit: contain; object-position: right bottom; opacity: .08; pointer-events: none; }   /* round199: 대표자 제공 지도 파일(/img/map-kr.svg, 시·도 경계) */
.v2 .cert-banner > :not(.cb-map) { position: relative; z-index: 1; }
/* round192: 업체 카드 교대 — 같은 칸에 겹쳐 두고 .on만 보인다(store-home.js, 4초·페이드 .45s·호버 정지) */
.v2 .cert-banner .cb-rows { display: grid; margin-top: 6px; }
.v2 .cert-banner .cb-rows .cb-row { grid-area: 1 / 1; margin-top: 0; opacity: 0; transition: opacity .45s ease; pointer-events: none; }
.v2 .cert-banner .cb-rows .cb-row.on { opacity: 1; pointer-events: auto; }
.v2 .cert-banner .cb-label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 800; color: #9C6B00; }
.v2 .cert-banner .cb-label svg { width: 16px; height: 16px; }
.v2 .cert-banner .cb-desc { font-size: 13px; color: var(--v2-muted); line-height: 1.5; }
.v2 .cert-banner .cb-t { font-size: 22px; font-weight: 800; line-height: 1.35; color: var(--v2-ink); }
.v2 .cert-banner .cb-row { display: flex; align-items: center; gap: 10px; margin-top: 6px; padding: 10px 12px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 4px; color: var(--v2-text); }
.v2 .cert-banner .cb-row:hover { text-decoration: none; border-color: var(--v2-muted2); }
.v2 .cert-banner .cb-ic { flex: none; width: 36px; height: 36px; border-radius: 999px; background: var(--v2-ink-bg); color: var(--v2-ink); display: inline-flex; align-items: center; justify-content: center; }
.v2 .cert-banner .cb-ic svg { width: 20px; height: 20px; }
.v2 .cert-banner .cb-n { font-weight: 800; font-size: 14px; display: block; }
.v2 .cert-banner .cb-a { font-size: 12px; color: var(--v2-muted); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2 .cert-banner .cb-go { margin-left: auto; flex: none; font-size: 13px; font-weight: 700; color: var(--v2-ink); }   /* 배지 대신 '위치보기'(대표자) */
.v2 .cert-banner .cb-empty { font-size: 13px; color: var(--v2-muted); }
/* round225·226(대표자 6): 확인 업체 배너 = 작은 지도(네이버맵, 키 있을 때)만 — 목록은 아래 certbox 구역 */
.v2 .cert-banner .cb-mini-map { height: 170px; margin-top: 10px; border: 1px solid var(--v2-line); border-radius: 6px; background: #EEF1F5; overflow: hidden; }
.v2 .cert-banner .cb-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }   /* round226: 라벨 + [더 보기] */
.v2 .cert-banner .cb-more { flex: none; font-size: 13px; font-weight: 700; color: var(--v2-ink); }
.v2 .cert-banner .cb-label .cb-mark-lg { width: 22px; height: 22px; }
.v2 .cert-banner .cb-mini-map { height: 200px; }
.v2 .sb-t { font-size: 14px; font-weight: 800; }
.v2 .cat-tiles { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 10px; }
/* round187(대표자): 카테고리 15 + [전체] = 한 줄, 옆으로 넘김(.hrow 공용 화살표·스크롤). 자리 150·오브젝트 110(계약 §2), 모바일 68·52 */
.v2 .cat-track { gap: 0; scroll-snap-type: x proximity; }
.v2 .cat-track .cat-tile { flex: 0 0 auto; width: 112px; scroll-snap-align: start; border: 0; background: transparent; padding: 6px 0 8px; font-size: 12px; gap: 6px; }   /* round188-b: 한 줄에 11개 정도(1280 / 112) */
.v2 .cat-track .cat-tile:hover { text-decoration: none; }   /* round193: 자손 선택자 — 모바일 .cat-page 안에서도 적용 */
.v2 .cat-track .cat-tile:hover span:last-child { text-decoration: underline; }
.v2 .cat-track .cat-all-ic { width: 80px; height: 80px; border-radius: 999px; background: var(--v2-ink-bg); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; }
.v2 .cat-track .cat-all-ic svg { width: 40px; height: 40px; }
/* round53 BS1·BS4 → 라운드 56 F1·F3·F4: 배너 슬라이드 — 그리드 스택(높이 = 가장 큰 슬라이드의 자연 높이 = 초창기 배너), 컨트롤 우하단 상시 */
.v2 .hero { position: relative; flex-grow: 1; min-width: 0; display: grid; min-height: 320px; border-radius: 6px; overflow: hidden; background: var(--v2-ink); }   /* round187: 시안 배너 848×320(사이드박스 제거로 폭은 흐름) */
.v2 .hero .hero-slide { grid-area: 1 / 1; opacity: 0; transition: opacity .45s ease; pointer-events: none; }
.v2 .hero .hero-slide.on { opacity: 1; pointer-events: auto; }
.v2 .hero .banner-img { position: relative; border-radius: 0; min-height: 0; }
/* 이미지는 높이를 정하지 않는다(세로 긴 이미지가 레이아웃을 키우지 않게) — 높이 = 텍스트 슬라이드 자연 높이 또는 min-height·sidebox */
.v2 .hero .banner-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
/* 라운드 61 지시 1: 이미지 배너 캡션(부제·제목·버튼) — 하단 그라데이션 위 */
.v2 .hero .banner-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,.55) 100%); pointer-events: none; }
/* round88 H9·H10: 통일 배너(.bnr) — 이미지든 텍스트든 같은 상자·같은 캡션. 위치 = pos-{세로 t/m/b}{가로 l/c/r} */
.v2 .hero .bnr { position: relative; display: flex; padding: 36px 44px; box-sizing: border-box; overflow: hidden; border-radius: 0; }
.v2 .hero .bnr .bnr-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.v2 .hero .bnr.ov::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .38); pointer-events: none; }
.v2 .hero .bnr .bnr-cap { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 10px; max-width: 70%; }
.v2 .hero .bnr .bnr-cap p { margin: 0; }
.v2 .hero .bnr .bnr-stage { position: absolute; inset: 28px 44px 40px; z-index: 1; }
.v2 .hero .bnr .bnr-free { position: absolute; margin: 0; max-width: 80%; }
.v2 .hero .bnr .bnr-free p { margin: 0 0 8px; white-space: nowrap; word-break: keep-all; }   /* round230(리뷰 1-2): 단어 중간 줄바꿈 금지 */
@media (max-width: 1100px) { .v2 .hero .bnr .bnr-free p { white-space: normal; } }   /* round230(리뷰 1-2): 2단(지도 카드 옆) 폭에서 한 줄 고정이면 잘린다 */
.v2 .hero .bnr.has-img .bnr-free { text-shadow: 0 1px 3px rgba(0, 0, 0, .45); } .v2 .hero .bnr a.bnr-free { text-shadow: none; white-space: nowrap; }
@media (max-width: 720px) { .v2 .hero .bnr .bnr-stage { inset: 16px 16px 40px; } .v2 .hero .bnr .bnr-free p { white-space: normal; } }
.v2 .hero .bnr .sub { font-size: 14px; color: #D5D8DD; }
.v2 .hero .bnr .t { font-size: 27px; font-weight: 800; color: #FFFFFF; line-height: 1.35; letter-spacing: -0.01em; }
.v2 .hero .bnr.has-img .bnr-cap { text-shadow: 0 1px 3px rgba(0, 0, 0, .45); }
.v2 .hero .bnr.has-img .bnr-cap .btn { text-shadow: none; }
.v2 .hero .bnr.tone-dark .sub { color: #3A4150; } .v2 .hero .bnr.tone-dark .t { color: #14181F; } .v2 .hero .bnr.tone-dark .bnr-cap { text-shadow: none; }
.v2 .hero .bnr.pos-tl, .v2 .hero .bnr.pos-tc, .v2 .hero .bnr.pos-tr { align-items: flex-start; }
.v2 .hero .bnr.pos-ml, .v2 .hero .bnr.pos-mc, .v2 .hero .bnr.pos-mr { align-items: center; }
.v2 .hero .bnr.pos-bl, .v2 .hero .bnr.pos-bc, .v2 .hero .bnr.pos-br { align-items: flex-end; padding-bottom: 44px; }
.v2 .hero .bnr.pos-tl, .v2 .hero .bnr.pos-ml, .v2 .hero .bnr.pos-bl { justify-content: flex-start; }
.v2 .hero .bnr.pos-tc, .v2 .hero .bnr.pos-mc, .v2 .hero .bnr.pos-bc { justify-content: center; }
.v2 .hero .bnr.pos-tr, .v2 .hero .bnr.pos-mr, .v2 .hero .bnr.pos-br { justify-content: flex-end; }
.v2 .hero .bnr.pos-tl .bnr-cap, .v2 .hero .bnr.pos-ml .bnr-cap, .v2 .hero .bnr.pos-bl .bnr-cap { align-items: flex-start; text-align: left; }
.v2 .hero .bnr.pos-tc .bnr-cap, .v2 .hero .bnr.pos-mc .bnr-cap, .v2 .hero .bnr.pos-bc .bnr-cap { align-items: center; text-align: center; }
.v2 .hero .bnr.pos-tr .bnr-cap, .v2 .hero .bnr.pos-mr .bnr-cap, .v2 .hero .bnr.pos-br .bnr-cap { align-items: flex-end; text-align: right; }
@media (max-width: 720px) { .v2 .hero .bnr { padding: 22px 18px 40px; } .v2 .hero .bnr .t { font-size: 19px; } .v2 .hero .bnr .bnr-cap { max-width: 100%; } }
.v2 .home-split.one { grid-template-columns: minmax(0, 1fr); }
.v2 .home-split.one .split-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.v2 .home-split > section { gap: 12px; }
.v2 .hero-cap { position: absolute; left: 44px; right: 44px; bottom: 26px; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; color: #FFFFFF; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
.v2 .hero-cap .sub { font-size: 14px; color: #E5E7EB; }
.v2 .hero-cap .t { font-size: 26px; font-weight: 800; line-height: 1.3; letter-spacing: -0.01em; }
.v2 .hero-cap .btn { text-shadow: none; }
/* 라운드 61 지시 3: 5장 가로 트랙 */
/* 라운드 88 H8: 홈 두 번째 줄 = 상품 카드 절반 + 국내산 확인 업체 절반 */
/* round187: 두 구역을 나란히(절반씩) 두지 않고 위아래 전체 폭 — 신상품 5열 정사각, 확인 업체 3열 카드 */
.v2 .home-split { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; align-items: stretch; }
.v2 .home-split > section { min-width: 0; display: flex; flex-direction: column; }
.v2 .split-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.v2 .split-grid .card .thumb { height: auto; aspect-ratio: 1 / 1; }
.v2 .certbox { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }   /* round187: 상자 한 개 → 업체 카드 3열 */
.v2 .certbox a.certrow { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--v2-line); border-radius: 6px; background: var(--v2-surface); color: var(--v2-text); min-width: 0; }
.v2 .certbox a.certrow:hover { border-color: var(--v2-muted2); }
.v2 .certbox .cert-empty { grid-column: 1 / -1; }
.v2 .certbox a.certrow:hover { text-decoration: none; color: var(--v2-ink); }
.v2 .certbox .cert-ic { flex: none; width: 34px; height: 34px; border-radius: 999px; background: var(--v2-green-bg); color: var(--v2-green); display: inline-flex; align-items: center; justify-content: center; }
.v2 .certbox .cert-ic svg { width: 18px; height: 18px; }
.v2 .certbox .cert-mark { flex: none; width: 34px; height: 34px; }   /* round226(대표자 7): 행 앞 원형 엠블럼 */
.v2 .sec-t .sec-mark { width: 26px; height: 26px; vertical-align: -6px; margin-right: 6px; }
.v2 .certbox .cert-t { min-width: 0; flex: 1; }
.v2 .certbox .cert-n { font-weight: 800; font-size: 14px; display: block; }
.v2 .certbox .cert-a { font-size: 12px; color: var(--v2-muted); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2 .certbox .cert-r { flex: none; font-size: 12px; color: var(--v2-muted); }
.v2 .certbox .cert-empty { margin: auto; padding: 24px 0; text-align: center; color: var(--v2-muted); font-size: 13px; line-height: 2.4; }
/* round196(대표자 지적 2): 모바일 홈의 상품 줄은 전부 한 줄 — 신상품(.split-grid)도 2장 넘으면 옆으로 넘긴다(셋째 카드가 14px 보여 넘길 수 있음을 알린다, .hrow-track과 같은 폭 공식) */
@media (max-width: 900px) { .v2 .home-split { grid-template-columns: 1fr; } .v2 .split-grid { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; } .v2 .split-grid::-webkit-scrollbar { display: none; } .v2 .split-grid > .card { flex: 0 0 calc((100% - 24px) / 2); min-width: 0; scroll-snap-align: start; } .v2 .certbox { grid-template-columns: 1fr; gap: 8px; } }
.v2 .hrow { position: relative; }
.v2 .hrow-track { display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 2px; }
.v2 .hrow-track::-webkit-scrollbar { display: none; }
.v2 .hrow-track > .card { flex: 0 0 calc((100% - 56px) / 5); scroll-snap-align: start; }
.v2 .hrow-track > .card .thumb { height: auto; aspect-ratio: 1 / 1; }   /* round187: 정사각 사진(시안) */
.v2 .hrow-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border-radius: 999px; border: 1px solid var(--v2-line); background: var(--v2-surface); color: var(--v2-ink); display: none; align-items: center; justify-content: center; cursor: pointer; z-index: 2; box-shadow: 0 2px 8px rgba(0,0,0,.12); padding: 0; }
.v2 .hrow.has-more .hrow-nav { display: flex; }
.v2 .hrow-nav svg { width: 18px; height: 18px; }
.v2 .hrow-nav.prev { left: -18px; } .v2 .hrow-nav.next { right: -18px; }
.v2 .hrow-nav:disabled { opacity: .35; cursor: default; }
.v2 .hero-ctl { position: absolute; right: 12px; bottom: 10px; display: flex; align-items: center; gap: 8px; z-index: 2; padding: 4px 6px; border-radius: 999px; background: rgba(17,17,17,.45); }
.v2 .hero-nav { width: 24px; height: 24px; border-radius: 999px; border: 0; background: rgba(255,255,255,.9); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.v2 .hero-nav svg { width: 14px; height: 14px; }
.v2 .hero-nav:hover { background: #FFFFFF; }
.v2 .hero-nav:focus-visible { outline: 2px solid #FFD43B; outline-offset: 2px; }
.v2 .hero-dots { display: flex; align-items: center; gap: 6px; }
.v2 .hero-dots button { width: 8px; height: 8px; padding: 0; border-radius: 999px; border: 0; background: rgba(255,255,255,.5); cursor: pointer; position: relative; }
.v2 .hero-dots button::after { content: ""; position: absolute; inset: -8px; }   /* round230(리뷰 접근성): 점은 8px 그대로, 누르는 영역은 24px */
.v2 .hero-dots button.on { background: #FFFFFF; width: 18px; }
.v2 .hero-dots button:focus-visible { outline: 2px solid #FFD43B; outline-offset: 2px; }
/* round53 CP1·CP3: 빵부스러기·카드 경로 */
.v2 .crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: 13px; color: var(--v2-muted); margin: -8px 0 12px; }
.v2 .crumbs a { color: var(--v2-muted); }
.v2 .crumbs a.cur { color: var(--v2-ink); font-weight: 800; }
.v2 .crumbs .sep { color: var(--v2-muted2); }
.v2 .pcat { font-size: 11px; color: var(--v2-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2 .fc-chain { font-size: 12px; color: var(--v2-muted); line-height: 1.5; }
.v2 .fc-chain a.cur { color: var(--v2-ink); font-weight: 800; }
.v2 .cat-tile { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 14px 6px 12px 6px; text-align: center; font-size: 13px; font-weight: 700; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.v2 .cat-tile:hover { border-color: var(--v2-muted2); text-decoration: none; }
.v2 .cat-tile-ic { width: 44px; height: 44px; border-radius: 999px; background: var(--v2-ink-bg); color: var(--v2-ink); display: flex; align-items: center; justify-content: center; color: var(--v2-ink-soft); }
.v2 .cat-tile-ic .cat-ic { width: 22px; height: 22px; }
.v2 .cat-tile:hover .cat-tile-ic { background: var(--v2-ink); color: #FFFFFF; }
/* round225(대표자 3): 마이페이지 타일 = 사물 이미지(/img/my/, layout/my-image, P225-1). 이미지가 없는 키는 선 아이콘·회색 원 그대로 */
.v2 .my-tiles .my-ic:has(img), .v2 .my-tiles .cat-tile.on .my-ic:has(img), .v2 .my-tiles .cat-tile:hover .my-ic:has(img) { width: 56px; height: 56px; background: transparent; border: 0; }   /* round226: .my-tiles .cat-tile-ic(40px 남색 상자)보다 앞선다 */
.v2 .my-ic img { width: 48px; height: 48px; object-fit: contain; display: block; }
.v2 .my-ic:has(img) svg { display: none; }
/* round186: 홈 카테고리 타일 = 사물 이미지(자리 150·오브젝트 110, 모바일 68·52 — 계약 §2). 선 아이콘(.cat-tile-ic)은 마이페이지 타일·폴백에 남는다 */
.v2 .cat-tile-img { width: 80px; height: 80px; display: flex; align-items: center; justify-content: center; }   /* round188-b: 110 → 80(한 줄 10~12개) */
.v2 .cat-tile-img img { width: 80px; height: 80px; object-fit: contain; display: block; }
.v2 .cat-tile-img .cat-ic { width: 44px; height: 44px; color: var(--v2-ink-soft); }
/* my-page menu: same card size and position on every my page, whatever the page container width is (content 680 / content-wide 1100 / wrap 1280) */
.v2 .my-tiles { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 8px; width: min(1036px, calc(100vw - 48px)); position: relative; left: 50%; transform: translateX(-50%); margin: 0 0 20px; }
.v2 .my-tiles .cat-tile { padding: 14px 6px 12px; font-size: 12px; font-weight: 500; color: var(--v2-muted); line-height: 1.3; word-break: keep-all; min-width: 0; min-height: 100px; box-sizing: border-box; }   /* round211(207-d): 라벨 Caption 12/500, 선택만 700 */
/* wishlist / restock pages use main.wrap.sec (32px top padding, no app.css reset): align the menu with the other my pages (24px) */
.v2 main.sec > section:first-child > .my-tiles:first-child, .v2 main.sec > .my-tiles:first-child, .v2 main.sec > section:first-child > .my-tiles-wrap:first-child > .my-tiles, .v2 main.sec > .my-tiles-wrap:first-child > .my-tiles { margin-top: -8px; }
.v2 .my-tiles-wrap { position: relative; }
.v2 .my-tiles .cat-tile-ic { width: 40px; height: 40px; border-radius: 12px; background: var(--v2-ink-bg); border: 0; }   /* round211: 44 원 → 40 둥근 사각 */
.v2 .my-tiles svg { width: 20px; height: 20px; }
.v2 .my-tiles .cat-tile.on { border-color: var(--v2-ink); color: var(--v2-ink); font-weight: 700; }
.v2 .my-tiles .cat-tile.on .cat-tile-ic { background: var(--v2-ink); color: #FFFFFF; }
.v2 .strip2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.v2 .strip { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 20px 22px; display: flex; flex-direction: column; gap: 6px; }
.v2 .strip-t { font-weight: 800; font-size: 15px; }
.v2 .strip-d { font-size: 13px; color: var(--v2-muted); line-height: 1.6; }
.v2 .listwrap { display: flex; gap: 24px; align-items: flex-start; }
.v2 .listwrap.no-side .grid4 { grid-template-columns: repeat(5, minmax(0, 1fr)); } /* 라운드 63 지시 5: 필터 없는 목록은 5열 */
.v2 .sidebar { width: 170px; flex-shrink: 0; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 16px; }
.v2 .sidebar nav { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; font-size: 13px; }
.v2 .sidebar a.on { font-weight: 800; }
.v2 .listmain { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.v2 .sortbar { display: flex; gap: 16px; font-size: 13px; }
.v2 .sortbar a { color: var(--v2-muted); }
.v2 .sortbar a.on { color: var(--v2-text); font-weight: 800; }
/* round188(계약 §4-188): 도구막대 — 보기 전환(모바일만)·정렬 드롭다운·필터 버튼(모바일만) */
.v2 .toolbar { align-items: center; gap: 8px; }
.v2 .toolbar .vw { display: none; gap: 2px; }
.v2 .toolbar .vw button { width: 36px; height: 36px; border: 0; border-radius: 4px; background: transparent; color: var(--v2-muted); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.v2 .toolbar .vw button svg { width: 20px; height: 20px; }
.v2 .toolbar .vw button[aria-pressed="true"] { background: var(--v2-ink); color: #FFFFFF; }
.v2 .sortdd { position: relative; margin-left: auto; }
.v2 .sortdd summary { list-style: none; display: inline-flex; align-items: center; gap: 4px; height: 36px; padding: 0 8px; font-size: 13px; font-weight: 700; color: var(--v2-text); cursor: pointer; user-select: none; }
.v2 .sortdd summary::-webkit-details-marker { display: none; }
.v2 .sortdd summary svg { width: 16px; height: 16px; } .v2 .sortdd summary .chev { width: 14px; height: 14px; color: var(--v2-muted); }
.v2 .sortdd[open] summary .chev { transform: rotate(180deg); }
.v2 .sortdd-menu { position: absolute; right: 0; top: 100%; z-index: 5; width: 150px; margin-top: 4px; padding: 6px 0; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; box-shadow: 0 6px 18px rgba(31,47,82,.16); display: flex; flex-direction: column; }
.v2 .sortdd-menu a { display: flex; align-items: center; justify-content: space-between; height: 44px; padding: 0 14px; font-size: 14px; color: var(--v2-text); }
.v2 .sortdd-menu a:hover { background: var(--v2-bg); text-decoration: none; }
.v2 .sortdd-menu a.on { font-weight: 800; color: var(--v2-ink); background: var(--v2-bg); }
.v2 .sortdd-menu a.on::after { content: ""; width: 16px; height: 16px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center / contain no-repeat; }
.v2 .fc-toggle { display: none; height: 36px; gap: 4px; }
.v2 .fc-toggle svg { width: 16px; height: 16px; }
.v2 .fc-toggle .fc-cnt { min-width: 18px; height: 18px; border-radius: 999px; background: var(--v2-ink); color: #FFFFFF; font-size: 11px; display: inline-flex; align-items: center; justify-content: center; padding: 0 5px; }
.v2 .fc-sheet-h, .v2 .fc-sheet-f { display: none; }
.v2 .dwrap { display: flex; gap: 32px; align-items: stretch; } /* 라운드 63 지시 3: 정보 패널 높이 = 이미지 + 썸네일 */
.v2 .dgallery { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 10px; }   /* 라운드 85-b 지시 1: 갤러리·정보 반반 */
.v2 .dmain { position: relative; aspect-ratio: 1 / 1; height: auto; background: #EFF1F0; border: 1px solid var(--v2-line); border-radius: 6px; display: flex; align-items: center; justify-content: center; color: var(--v2-muted2); font-size: 13px; overflow: hidden; }
.v2 .dmain img { width: 100%; height: 100%; object-fit: cover; }   /* round215(대표자): 예전처럼 꽉 채움 — 500 원본도 칸에 맞춰 늘린다(213의 contain 되돌림) */
.v2 .dthumbs { display: flex; gap: 8px; }
.v2 .dthumbs img { width: 64px; height: 64px; object-fit: cover; border: 1px solid var(--v2-line); border-radius: 4px; }
.v2 .dthumbs img.selected { border-color: var(--v2-ink); }
/* 라운드 61 지시 7 → 라운드 63 지시 3: 상단(카테고리·상품명·별점·배지·가격)은 촘촘히, 총 상품금액·구매 블록은 아래로 밀어 갤러리 높이에 맞춘다(스크롤 없음) */
/* 라운드 85-c: 정보 패널 리듬은 변수 4개로만 조정(간격·행 간격·본문 글자) — 개별 요소에 픽셀을 흩뿌리지 않는다 */
/* 2026-09-16 지시 5: 정보 패널 리듬은 글자 크기 하나(--dinfo-fs)에서 파생 — 13px 기준 10·4·3px(85-c 값)와 같고, 글자를 키우면 간격도 같은 비율로 따라온다 */
/* 라운드 89: 간격은 사용자 지정 값(패널 gap 15px·검증 카드 gap 15px·정보 행 padding 11px) — 바꾸려면 이 세 숫자만 */
/* 라운드 88: 정보 패널 재설계 — 본문 13px 고정, 행은 한 줄(라벨 72px + 값), 가는 구분선, 촘촘한 간격. 구매 블록은 패널 아래에 붙는다 */
.v2 .dinfo { --dinfo-fs: 13px; flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 15px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 18px 22px; box-sizing: border-box; font-size: var(--dinfo-fs); }
/* round208(시안 3): 오른쪽 열 — 상자 없이, 배지 칩 → 상호·산지 → 제목 → 리뷰·구매 수 → 가격 → 추가할인 → 검증 상자 → 상품정보 틀 */
.v2 .dinfo { border: 0; padding: 0; gap: 12px; }
.v2 .dchips { display: flex; gap: 6px; margin: 0; }
.v2 .dinfo .dchips .b-vrf.mini { height: 24px; font-size: var(--t-caption); padding: 0 9px 0 4px; background: var(--bdg-state-bg); color: var(--v2-ink); box-shadow: none; }   /* 레퍼런스의 작은 회색 칩 */
.v2 .dinfo .dchips .b-vrf.mini .sh { box-shadow: none; }
.v2 .dstore { margin: 0; font-size: 13px; color: var(--v2-muted); }
.v2 .dstore b { font-weight: 500; color: var(--v2-text); }
.v2 .dinfo .dname { font-size: 22px; font-weight: 700; line-height: var(--t-lh-title); letter-spacing: var(--t-ls-title); margin: 0; }
.v2 .drv { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0; font-size: 14px; }
.v2 .drv-star { font-weight: 800; color: var(--v2-text); display: inline-flex; align-items: center; gap: 4px; }
.v2 .drv-star .ic { color: var(--v2-ink); width: 15px; height: 15px; }
.v2 .drv-cnt { color: var(--v2-text); text-decoration: underline; text-underline-offset: 3px; }
.v2 .drv-bought { display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 9px; border-radius: 4px; background: var(--v2-ink-bg); color: var(--v2-ink); font-size: 13px; font-weight: 700; }
.v2 .drv-bought svg { width: 14px; height: 14px; }
.v2 .dpr { margin: 6px 0 4px; padding-bottom: 0; border-bottom: 0; }   /* round210(대표자): 가격 아래 선 삭제 — 구역 선은 .dsec2 위쪽 선이 맡는다 */
.v2 .dpr-was { margin: 0 0 2px; font-size: 15px; color: var(--v2-muted); text-decoration: line-through; }
.v2 .dinfo .dpr .dprice { padding-bottom: 0; }
.v2 .dinfo .dpr .sale-rate { font-size: 24px; margin-right: 8px; }
.v2 .dsec2 { display: block; padding: 16px 20px; border-top: 1px solid var(--v2-line); font-size: 14px; }   /* round210(대표자 "검증정보 라인에 맞춤"): 상자와 같은 안쪽 여백 20px, 머리글 위·라벨/값 열 아래 — 검수 승인·산지·생산자와 같은 열 */
.v2 .dsec2-h { font-weight: 700; font-size: 16px; line-height: 1.5; margin: 0 0 10px; letter-spacing: var(--t-ls-title); }   /* round210: 검증 정보 머리글과 같은 16/700 */
.v2 .dkv { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 8px 12px; margin: 0; }
.v2 .dkv dt { color: var(--v2-muted); font-size: 13px; line-height: 1.5; }
.v2 .dkv dd { margin: 0; font-weight: 500; line-height: 1.5; min-width: 0; }
.v2 .dsec2 .dcoupons { padding: 0; border: 0; }
/* round209 D3: 옵션 선택 — 라디오 행(이름 / 가격), 고른 행 남색, 품절 행 흐리게 */
.v2 .dopt-list { display: flex; flex-direction: column; }
.v2 .dopt { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid #F0F1F3; cursor: pointer; font-size: 14px; }
.v2 .dopt:first-child { border-top: 0; }
.v2 .dopt input { width: 18px; height: 18px; margin: 0; accent-color: var(--v2-ink); }
.v2 .dopt-name { flex: 1; font-weight: 500; }
.v2 .dopt-price { font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.v2 .dopt-price small { font-size: 11px; font-weight: 700; color: var(--bdg-state); background: var(--bdg-state-bg); border-radius: 4px; padding: 0 6px; height: 20px; line-height: 20px; }
.v2 .dopt.is-out { opacity: .55; cursor: not-allowed; }
/* round217(대표자): 선택형(라디오) 행은 두 칸 — 옵션명 | 추가금(할인·플러스) 오른쪽 정렬 */
.v2 .dopt-group:not([data-kind="IMAGE"]) .dopt { display: grid; grid-template-columns: 18px minmax(0, 1fr) minmax(0, 1fr); }
.v2 .dopt-group:not([data-kind="IMAGE"]) .dopt-price { justify-self: end; justify-content: flex-end; text-align: right; }
/* round212: 묶음 머리 + 사진형(쿠팡 상세 관례: 64px 썸네일, 고르면 남색 테두리와 체크) */
.v2 .dopt-group { margin-top: 6px; }
.v2 .dopt-group + .dopt-group { margin-top: 12px; }
.v2 .dopt-gname { font-size: 13px; font-weight: 700; color: var(--v2-muted); margin-bottom: 2px; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt-list { flex-direction: row; flex-wrap: wrap; gap: 8px; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt { flex-direction: column; align-items: center; gap: 4px; width: 72px; padding: 4px; border: 2px solid var(--v2-line); border-radius: 6px; position: relative; font-size: 12px; text-align: center; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt:has(input:checked) { border-color: var(--v2-ink); }
.v2 .dopt-group[data-kind="IMAGE"] .dopt-thumb { width: 60px; height: 60px; object-fit: cover; border-radius: 4px; display: block; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt-none { justify-content: center; min-height: 60px; border-style: dashed; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt-name { width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; }
.v2 .dopt-group[data-kind="IMAGE"] .dopt-price { font-size: 11px; }
.v2 .dopt-check { position: absolute; right: -1px; bottom: -1px; width: 18px; height: 18px; border-radius: 4px 0 4px 0; background: var(--v2-ink); display: none; }
.v2 .dopt-check::after { content: ""; position: absolute; left: 6px; top: 2px; width: 4px; height: 9px; border: solid #FFFFFF; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.v2 .dopt-group[data-kind="IMAGE"] .dopt:has(input:checked) .dopt-check { display: block; }
.v2 .dopt-msg { margin: 0 0 6px; font-size: 13px; font-weight: 700; color: #B42318; }
.v2 .dopt:has(input:checked) .dopt-name { color: var(--v2-ink); font-weight: 700; }
.v2 .btn.is-disabled { opacity: .45; cursor: not-allowed; }
.v2 .dvbox { position: relative; overflow: hidden; border: 1px solid var(--v2-line); border-radius: 10px; padding: 18px 20px; background: var(--v2-surface); margin-top: 4px; }
.v2 .dvbox::before { content: ""; position: absolute; right: 26px; top: 0;   /* round210-b(대표자) */ width: 170px; height: 200px; background: url('/img/cert-mark.png') no-repeat center / contain; opacity: .14; pointer-events: none; }   /* 대표자 인증 마크, 연하게 */
.v2 .dvbox-h { position: relative; margin: 0; display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 8px 12px; align-items: center; font-size: 16px; font-weight: 700; letter-spacing: var(--t-ls-title); }   /* round210-b(대표자): 배지가 아래 날짜 열(.dkv 84px + 12px)에 선다 */
.v2 .dvbox-h .bdg { justify-self: start; }
.v2 .dvbox-rows { position: relative; margin-top: 12px; }
.v2 .dvbox .dnote { position: relative; margin: 12px 0 0; font-size: var(--t-caption); color: var(--v2-muted); line-height: 1.6; }
.v2 .dinfo > .prow { margin: 0; gap: 6px; }
.v2 .dinfo .dprice { padding-bottom: 10px; margin: 0; justify-content: flex-start; gap: 2px; }
.v2 .dinfo .dprice .sale-rate { margin-right: 6px; }
.v2 .dinfo .dprice .org-price { margin-left: 8px; }
.v2 .dinfo .dprice-v { font-size: 35px; }   /* round218(대표자) */
.v2 .dpr-coupon { margin: 2px 0 0; font-size: 13px; font-weight: 700; color: var(--v2-sale); }   /* round228: 상세의 쿠폰 표시(카드와 같은 판정) */
.v2 .dinfo .dcard { padding: 14px 16px; gap: 15px; font-size: var(--dinfo-fs); }
.v2 .dinfo .dcard p { margin: 0; line-height: 1.5; }
.v2 .dinfo .dcard .dnote { font-size: 11.5px; line-height: 1.5; margin-top: 2px; }
.v2 .dinfo .drows { display: flex; flex-direction: column; gap: 0; border-bottom: 1px solid var(--v2-line); }
.v2 .dinfo .drow { font-size: var(--dinfo-fs); line-height: 1.45; margin: 0; padding: 11px 0; border-top: 1px solid var(--v2-line); display: flex; gap: 10px; align-items: baseline; }
.v2 .dinfo .drow > span:last-child { min-width: 0; }
.v2 .dinfo .drow .btn { height: 28px; padding: 0 10px; font-size: 12px; }
.v2 .dinfo .dk { flex: none; min-width: 72px; }
.v2 .dinfo .wish-form { margin-bottom: 2px; }
.v2 .dinfo .dbuy { margin-top: auto; padding-top: 6px; }
.v2 .dinfo .dtotal-row { padding-top: 10px; margin: 8px 0 8px; justify-content: flex-end; gap: 12px; }   /* round210(대표자): '총 상품금액'을 금액 옆에 */
.v2 .dinfo .dtotal { font-size: 25px; }   /* round218(대표자) */
.v2 .dthumbs a { cursor: pointer; }
.v2 .dname { font-size: 22px; font-weight: 800; line-height: 1.4; letter-spacing: -0.01em; }
.v2 .dprice { border-bottom: 0; padding-bottom: 0; }   /* round210(대표자): .dprice.prow 밑줄 삭제 */
.v2 .dprice .sale-rate { font-size: 22px; }
.v2 .dprice-v { font-size: 26px; font-weight: 800; color: var(--v2-text); }
.v2 .dprice .org-price { font-size: 14px; }
.v2 .dcard { background: var(--v2-green-bg); border-radius: 6px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.v2 .dcard-t { font-weight: 800; color: var(--v2-green); }
.v2 .dcard .dnote { color: var(--v2-muted); font-size: 12px; line-height: 1.6; }
.v2 .dk { display: inline-block; min-width: 76px; color: var(--v2-muted); font-weight: 700; }
.v2 .drow { font-size: 13px; line-height: 1.7; }
/* inicis-review-readiness IR1·IR3: 부가세 표기·판매자 사업자 정보(접이식) */
.v2 .vat-note { font-size: 12px; color: var(--v2-muted); margin-left: 2px; font-weight: 500; }
.v2 .dlegal { margin: 6px 0 10px; border: 1px solid var(--v2-line); border-radius: 8px; padding: 8px 12px; font-size: 13px; }
.v2 .dlegal summary { cursor: pointer; font-weight: 700; color: var(--v2-muted); list-style: none; display: flex; align-items: center; gap: 6px; }
.v2 .dlegal summary::before { content: ""; display: inline-block; width: 11px; height: 11px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E") center / contain no-repeat; }
.v2 .dlegal[open] summary::before { content: ""; display: inline-block; width: 11px; height: 11px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; }
.v2 .dlegal dl { margin: 8px 0 0; display: grid; grid-template-columns: 1fr; gap: 4px; }
.v2 .dlegal dl div { display: flex; gap: 10px; line-height: 1.6; }
.v2 .dlegal dt { flex: none; width: 96px; color: var(--v2-muted); font-weight: 700; }
.v2 .dlegal dd { margin: 0; }
.v2 .dlegal .dnote { margin: 8px 0 2px; }
/* IR2: 결제 동의 체크박스 */
.v2 .pagree { display: flex; gap: 8px; align-items: flex-start; font-size: 12px; color: var(--v2-text); line-height: 1.6; margin: 4px 0 0; cursor: pointer; }
.v2 .pagree input { width: 16px; height: 16px; min-width: 16px; margin: 2px 0 0; }
.v2 .pagree-error { margin: 2px 0 0; font-size: 12px; color: var(--v2-sale); }
.v2 .dtotal-row { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--v2-line); padding-top: 12px; margin: 8px 0 2px; font-weight: 700; }
.v2 .dtotal { font-size: 20px; font-weight: 800; }
.v2 .dqty-l { align-self: center; flex: 0 0 auto; white-space: nowrap; writing-mode: horizontal-tb; font-size: 13px; color: var(--v2-muted); } /* 라운드 56 F6: 세로로 깨지던 라벨 */
.v2 .pay-btn { width: 100%; box-sizing: border-box; padding: 14px 0; font-size: 16px; }
.v2 .pay-note { text-align: center; color: var(--v2-muted); font-size: 12px; margin-top: 8px; }
/* round200 D3: 상세 [쿠폰받기] — 가격 아래 쿠폰 줄(대표자 첨부 레퍼런스: 빨간 버튼 + 내려받기 아이콘) */
.v2 .dcoupons { display: flex; flex-direction: column; gap: 8px; padding: 0; border: 0; }
/* round210(대표자): 추가할인 리디자인 — 쿠폰 한 장 = 연한 바탕의 테두리 카드: 금액(빨강 18/800) · 이름 14/700 + 조건 12 · 오른쪽 버튼 */
.v2 .dcoupon { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border: 1px solid var(--v2-line); border-radius: 8px; background: #FAFAFB; }
.v2 .dcoupon .dc-amt { flex: none; min-width: 78px; font-size: 18px; font-weight: 800; color: var(--v2-sale); line-height: 1.2; }
.v2 .dcoupon .dc-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; font-size: 14px; }
.v2 .dcoupon .dc-body b { font-weight: 700; }
.v2 .dcoupon .dc-body small { font-size: 12px; color: var(--v2-muted); }
.v2 .dcoupon .dc-form { margin: 0; }
.v2 .btn-coupon { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 14px; border: 0; border-radius: 6px; background: var(--v2-sale); color: #FFFFFF; font-weight: 800; font-size: 13px; cursor: pointer; }
.v2 .btn-coupon:hover { background: #C22626; color: #FFFFFF; text-decoration: none; }
.v2 .btn-coupon svg { width: 16px; height: 16px; }
.v2 .dc-have { flex: none; display: inline-flex; align-items: center; height: 36px; padding: 0 14px; border-radius: 6px; font-size: 13px; font-weight: 800; color: var(--bdg-state); background: var(--bdg-state-bg); }   /* round210(대표자): [쿠폰받기]와 같은 크기의 [받기완료] */
.v2 .dcoupon-msg { margin: 0; font-size: 13px; color: var(--v2-ink); font-weight: 700; }
.v2 .dbuy { margin-top: 6px; }
/* round203 #5·#7: 주문서 — 기본 주소(읽기 전용)·상세 주소·요청사항 입력칸은 세로로, 빈 항목 안내는 버튼 아래 한 줄 */
.v2 .addr-base, .v2 .addr-detail, .v2 .dreq-text { display: block; margin-top: 8px; }   /* round210-b: 너비는 서식 시스템(열 - 여백 32px, 모바일 24px) — 100%는 카드 밖으로 넘쳤다 */
.v2 .ocard .field > input.dreq-text { margin-bottom: 10px; }   /* round210-b: 마지막 자식이 hidden이라 서식 시스템의 아래 10px이 붙지 않았다(서식 규칙 margin 단축보다 구체도 높게) */
.v2 .addr-base[readonly] { background: var(--f-label-bg, #F3F4F6); color: var(--v2-text); cursor: default; }
.v2 .addr-base[readonly]:placeholder-shown { color: var(--v2-muted); }
.v2 .pay-missing { margin: 8px 0 0; font-size: 13px; color: var(--v2-muted); text-align: center; word-break: keep-all; }
.v2 .pay-btn:disabled { opacity: .45; cursor: not-allowed; }
.v2 .dbuy .btn-lg { width: auto; box-sizing: border-box; padding: 0 16px; height: 44px; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; } /* 라운드 56 F6: 버튼 축소 */
.v2 .dsoldout { color: var(--v2-sale); font-weight: 700; }
.v2 .dsec { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 24px 28px; }
.v2 .ddesc { line-height: 1.8; white-space: pre-line; }
.v2 .dev-doc { max-width: 860px; display: flex; flex-direction: column; gap: 20px; }
.v2 .dev-doc section { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 20px 24px; display: flex; flex-direction: column; gap: 8px; }
.v2 .dev-doc h2 { font-size: 16px; font-weight: 800; margin: 0; }
.v2 .dev-lead { line-height: 1.7; color: var(--v2-muted); }
.v2 .dev-doc ul, .v2 .dev-doc ol { margin: 0; padding-left: 20px; line-height: 1.9; }
.v2 .dev-doc code { background: #F3F4F6; border-radius: 3px; padding: 1px 5px; font-size: 13px; }
.v2 .dev-code { background: var(--v2-ink); color: #E5E7EB; border-radius: 6px; padding: 14px 16px; font-size: 12px; line-height: 1.7; overflow-x: auto; }
.v2 .dev-table-wrap { overflow-x: auto; }
.v2 .dev-doc table { width: 100%; border-collapse: collapse; font-size: 13px; }
.v2 .dev-doc th, .v2 .dev-doc td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--v2-line); }
.v2 .dev-doc th { color: var(--v2-muted); font-weight: 700; }
.v2 .ft { background: var(--v2-surface); border-top: 1px solid var(--v2-line); margin-top: 40px; }
.v2 .ft .wrap { display: flex; flex-direction: column; gap: 14px; padding: 28px 0 36px 0; }
.v2 .ft-links { display: flex; gap: 24px; font-size: 13px; font-weight: 700; }
.v2 .ft-links a { display: inline-block; padding: 6px 0; }   /* round230(리뷰 접근성): 누르는 높이 24px 이상 */
.v2 .ft-info { font-size: 12px; color: var(--v2-muted); line-height: 1.8; }
.v2 .ft-notice { font-size: 12px; color: var(--v2-muted); line-height: 1.8; }
.v2 .signup2 { max-width: 560px; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; gap: 16px; }
.v2 .signup2 form { display: flex; flex-direction: column; gap: 16px; }
.v2 .stype { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.v2 .stype-card { position: relative; background: var(--v2-surface); border: 2px solid var(--v2-line); border-radius: 8px; padding: 18px 14px; display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; text-align: center; }
.v2 .stype-card input { position: absolute; opacity: 0; pointer-events: none; }
.v2 .stype-card svg { width: 34px; height: 34px; color: var(--v2-muted); }
.v2 .stype-card strong { font-size: 15px; }
.v2 .stype-card span { font-size: 12px; color: var(--v2-muted); }
.v2 .stype-card:has(input:checked) { border-color: var(--v2-ink); }
.v2 .stype-card:has(input:checked) svg { color: var(--v2-ink); }
.v2 .scard { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 20px; display: flex; flex-direction: column; gap: 10px; }
.v2 .scard-t { font-size: 15px; font-weight: 800; margin-bottom: 4px; }
.v2 .ifield { display: flex; align-items: center; border: 1px solid var(--v2-line); border-radius: 6px; background: var(--v2-surface); }
.v2 .ifield:focus-within { border-color: var(--v2-ink); box-shadow: 0 0 0 2px var(--v2-ink-bg); }
.v2 .ifield input:focus, .v2 .searchbox input:focus { outline: none; }  /* 링은 컨테이너 :focus-within */
.v2 .searchbox:focus-within { outline: 2px solid var(--v2-ink); outline-offset: 2px; }
.v2 .ifield .ic { width: 46px; height: 46px; display: flex; align-items: center; justify-content: center; color: var(--v2-muted2); border-right: 1px solid var(--v2-line); flex-shrink: 0; background: #FAFAFB; border-radius: 6px 0 0 6px; }
.v2 .ifield .ic svg { width: 20px; height: 20px; }
.v2 .ifield input { flex-grow: 1; border: 0; height: 46px; padding: 0 14px; font-family: inherit; font-size: 14px; background: transparent; min-width: 0; }
.v2 .pw-rules { margin: 0; padding: 0 2px; list-style: none; font-size: 12px; color: var(--v2-muted); display: flex; flex-direction: column; gap: 2px; }
.v2 .pw-rules li::before { content: '\2715  '; color: var(--v2-muted2); font-size: 10px; }
.v2 .consent { gap: 12px; }
.v2 .consent-all { display: flex; align-items: center; gap: 8px; font-size: 15px; }
.v2 .consent-desc { font-size: 12px; color: var(--v2-muted); line-height: 1.6; margin: 0; }
.v2 .consent-list { border: 1px solid var(--v2-line); border-radius: 6px; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; font-size: 13px; }
.v2 .consent-list label { display: flex; align-items: center; gap: 8px; }
.v2 .consent-list label a { margin-left: auto; color: var(--v2-muted); font-size: 12px; }
.v2 .consent-sub { display: flex; flex-direction: column; gap: 8px; padding-left: 24px; }
.v2 .consent-foot { margin: 0; font-size: 12px; }
.v2 .consent-foot a { text-decoration: underline; color: var(--v2-muted); }
.v2 .signup2 .savebar .btn-lg { width: 100%; box-sizing: border-box; }
/* 라운드 81-b: 가입 페이지 간편가입 버튼 — .v2 .btn(흰 바탕)·.v2 a(색) 규칙보다 우선해야 제공자 색이 산다 */
.v2 .signup2 .social { height: 44px; border-radius: 8px; gap: 8px; font-weight: 700; }
.v2 .signup2 .social-naver, .v2 .signup2 .social-naver:hover { background: #03C75A; color: #FFFFFF; border-color: #03C75A; }
.v2 .signup2 .social-kakao, .v2 .signup2 .social-kakao:hover { background: #FEE500; color: #191919; border-color: #FEE500; }
.v2 .signup2 .social-google, .v2 .signup2 .social-google:hover { background: #FFFFFF; color: #1F1F1F; border-color: var(--v2-line); }
.v2 .signup2 .social:hover { text-decoration: none; filter: brightness(0.96); }
.v2 .signup2 .social-signup .muted { text-align: center; }
/* 라운드 82(buyer-social-ops S10): 가입 시작 화면 — 단일 카드, 리스트형 버튼(마크 · 라벨 · 화살표), 안내 박스 */
.v2 .sc-wrap { padding-top: 36px; padding-bottom: 56px; }
.v2 .sc { max-width: 460px; margin: 0 auto; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 14px; padding: 36px 32px 28px; box-shadow: 0 8px 28px rgba(31, 47, 82, 0.06); }
.v2 .sc-mark { margin: 0 0 10px; text-align: center; }
.v2 .sc-mark img { width: 44px; height: 44px; }
.v2 .sc-title { margin: 0; text-align: center; font-size: 24px; font-weight: 800; letter-spacing: -0.01em; }
.v2 .sc-sub { margin: 6px 0 26px; text-align: center; color: var(--v2-muted); font-size: 14px; }
.v2 .sc-label { margin: 0 0 8px; font-size: 12px; font-weight: 700; color: var(--v2-muted); letter-spacing: 0.04em; }
.v2 .sc-social { display: flex; flex-direction: column; gap: 10px; }
.v2 .sc-social .sc-label { margin-bottom: 0; }
.v2 .sc-btn { display: grid; grid-template-columns: 24px 1fr 20px; align-items: center; gap: 12px; height: 52px; padding: 0 16px; border-radius: 10px; border: 1px solid transparent; font-size: 15px; font-weight: 700; text-decoration: none; box-sizing: border-box; }
.v2 .sc-btn:hover { text-decoration: none; filter: brightness(0.97); }
.v2 .sc-btn:focus-visible { outline: 3px solid var(--c-focus); outline-offset: 2px; }
.v2 .sc-ic { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; }
.v2 .sc-ic svg { width: 22px; height: 22px; }
.v2 .sc-arr { display: inline-flex; width: 20px; height: 20px; opacity: 0.7; }
.v2 .sc-arr svg { width: 20px; height: 20px; }
.v2 .sc-naver, .v2 .sc-naver:hover { background: #03C75A; color: #FFFFFF; }
.v2 .sc-kakao, .v2 .sc-kakao:hover { background: #FEE500; color: #191919; }
.v2 .sc-google, .v2 .sc-google:hover { background: #FFFFFF; color: #1F1F1F; border-color: var(--v2-line); }
.v2 .sc-primary, .v2 .sc-primary:hover { background: var(--v2-ink); color: #FFFFFF; }
.v2 .sc-or { position: relative; margin: 14px 0 18px; text-align: center; font-size: 12px; color: var(--v2-muted); }
.v2 .sc-or::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 1px solid var(--v2-line); }
.v2 .sc-or span { position: relative; background: var(--v2-surface); padding: 0 10px; }
.v2 .sc-notes { list-style: none; margin: 18px 0 0; padding: 14px 16px; background: var(--v2-ink-bg); border-radius: 10px; display: flex; flex-direction: column; gap: 10px; }
.v2 .sc-notes li { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 1.55; color: var(--v2-ink-soft); }
.v2 .sc-note-ic { flex: none; display: inline-flex; width: 18px; height: 18px; margin-top: 1px; color: var(--v2-ink); }
.v2 .sc-note-ic svg { width: 18px; height: 18px; }
.v2 .sc-link { color: var(--v2-ink); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; margin-left: 4px; white-space: nowrap; }
.v2 .sc-foot { margin: 22px 0 0; text-align: center; font-size: 13px; color: var(--v2-muted); }
.v2 .sc-foot a { color: var(--v2-ink); font-weight: 700; margin-left: 6px; text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 520px) { .v2 .sc { padding: 28px 18px 22px; border-radius: 10px; } }
.v2 .pw-rules li.ok { color: var(--v2-blue); }
.v2 .pw-rules li.ok::before { content: '\2713  '; color: var(--v2-blue); }
.v2 .pw-rules li.bad { color: var(--v2-sale); }
.v2 .pw-rules li.bad::before { content: '\2715  '; color: var(--v2-sale); }
.v2 .consent input[type="checkbox"] { width: 18px; height: 18px; min-width: 18px; margin: 0; padding: 0; flex-shrink: 0; accent-color: var(--v2-ink); }
.v2 .consent-all { justify-content: flex-start; }
.v2 .consent-list label { justify-content: flex-start; text-align: left; }
.v2 .consent-list label span { flex: 1 1 auto; }
.v2 .stype-card input[type="radio"], .v2 .bclass-card input[type="radio"] { width: auto; height: auto; }
.v2 .biz-fields { display: flex; flex-direction: column; gap: 10px; border-top: 1px dashed var(--v2-line); padding-top: 14px; margin-top: 4px; }
.v2 .biz-fields[hidden] { display: none; }
.v2 .bclass { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.v2 .bclass-card { border: 2px solid var(--v2-line); border-radius: 6px; padding: 12px; text-align: center; cursor: pointer; font-weight: 700; font-size: 14px; position: relative; }
.v2 .bclass-card input { position: absolute; opacity: 0; pointer-events: none; }
.v2 .bclass-card:has(input:checked) { border-color: var(--v2-ink); }
.v2 .terms-dlg { border: 1px solid var(--v2-line); border-radius: 8px; padding: 0; width: min(720px, 92vw); height: min(80vh, 720px); }
.v2 .terms-dlg::backdrop { background: rgba(17, 17, 17, 0.45); }
.v2 .terms-dlg-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--v2-line); }
.v2 .terms-dlg iframe { border: 0; width: 100%; height: calc(100% - 55px); }
.v2 .view-btn { border: 0; background: none; color: var(--v2-muted); font-size: 12px; text-decoration: underline; cursor: pointer; font-family: inherit; margin-left: auto; }
.v2 .wish-form { display: flex; gap: 8px; margin-bottom: 10px; }
.v2 .wish-btn { display: inline-flex; gap: 6px; align-items: center; }
.v2 .wish-btn.on { border-color: var(--v2-sale); color: var(--v2-sale); }
.v2 .qa-form { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.v2 .qa-form textarea { border: 1px solid var(--v2-line); border-radius: 6px; padding: 10px 12px; font-family: inherit; font-size: 14px; resize: vertical; }
.v2 .qa-form textarea:focus { outline: 2px solid var(--v2-ink); outline-offset: 1px; border-color: var(--v2-ink); }
.v2 .qa-form-foot { display: flex; align-items: center; justify-content: space-between; }
.v2 .qa-form-foot label { display: flex; gap: 6px; align-items: center; font-size: 13px; color: var(--v2-muted); }
.v2 .qa-form-foot input[type="checkbox"] { width: 16px; height: 16px; margin: 0; }
.v2 .qa-answer { background: #F7F8F9; border-radius: 6px; padding: 10px 12px; }
.v2 .err-page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; text-align: center; padding: 24px; box-sizing: border-box; }
.v2 .err-logo { display: inline-flex; align-items: center; gap: 8px; font-size: 26px; font-weight: 800; color: var(--v2-ink); letter-spacing: -0.02em; margin-bottom: 8px; }
.v2 .err-logo img { width: 30px; height: 30px; }
.v2 .err-logo:hover { text-decoration: none; }
.v2 .err-code { font-size: 64px; font-weight: 800; color: var(--v2-line); line-height: 1; }
.v2 .err-title { font-size: 22px; font-weight: 800; margin: 0; }
.v2 .err-desc { color: var(--v2-muted); line-height: 1.7; margin: 0; }
.v2 .err-actions { display: flex; gap: 10px; margin-top: 10px; }
.v2 .tabbar { display: none; }

/* product-facets PF1~PF7: 좌측 패싯 패널(목록·상세 공유) */
.v2 .sidebar.facets { width: 216px; padding: 14px; display: flex; flex-direction: column; gap: 12px; }
.v2 .fc { display: flex; flex-direction: column; gap: 4px; padding-top: 12px; border-top: 1px solid var(--v2-line); }
.v2 .facets > .fc:first-child { border-top: 0; padding-top: 0; }
.v2 .fc nav { display: flex; flex-direction: column; gap: 2px; margin-top: 2px; font-size: 13px; }
.v2 .fc nav a { display: flex; justify-content: space-between; align-items: center; gap: 6px; padding: 4px 6px; border-radius: 4px; color: var(--v2-text); }
.v2 .fc nav a:hover { background: var(--v2-bg); text-decoration: none; }
.v2 .fc nav a.on { font-weight: 800; color: var(--v2-ink); background: var(--v2-ink-bg); }
.v2 .fc nav a.on .fc-l::before { content: ""; display: inline-block; width: 12px; height: 12px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat; margin-right: 4px; vertical-align: -1px; }
.v2 .fc .fc-l { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2 .fc .fc-n { font-size: 11px; color: var(--v2-muted); background: var(--v2-bg); border-radius: 999px; padding: 0 6px; flex-shrink: 0; }
.v2 .fc nav a.on .fc-n { background: var(--v2-surface); }
.v2 .fc .fc-up { color: var(--v2-muted); justify-content: flex-start; }
.v2 .fc .fc-up svg { width: 14px; height: 14px; }
/* round122 CT1: 카테고리 트리 — 선택 경로는 펼쳐지고(open) 아래 단계는 들여쓴다. 한글이 글자 단위로 꺾이지 않게 keep-all */
.v2 .fc-tree ul { list-style: none; margin: 0; padding: 0; }
.v2 .fc-tree ul ul { margin: 2px 0 4px 10px; padding-left: 8px; border-left: 1px solid var(--v2-line); }
.v2 .fc-tree a.open { font-weight: 700; color: var(--v2-ink); }
.v2 .fc-tree .fc-tw { width: 12px; height: 12px; color: var(--v2-muted); flex-shrink: 0; margin-left: auto; }
.v2 .fc-tree a .fc-n + .fc-tw { margin-left: 0; }
.v2 .crumbs, .v2 .fc-chain, .v2 .sb-t, .v2 .sec-t, .v2 .fc .fc-l, .v2 .pcat { word-break: keep-all; }
.v2 .crumbs a, .v2 .fc-chain a { white-space: nowrap; }
/* round122 LP1: 약관·개인정보처리방침·고객센터 — 스토어 뼈대 안의 문서 상자(탭 → 목차 → 본문) */
/* round199(대표자 지적 3): 머리(제목·설명·탭 버튼)와 버전·개정 이력을 본문 상자(.legal-doc 920)·고객센터 카드(920)와 같은 폭으로 — 탭 버튼의 왼쪽 선 = 콘텐츠 왼쪽 선 */
.v2 .legal-head, .v2 .legal-ver, .v2 .legal-history { width: 100%; max-width: 920px; margin-left: auto; margin-right: auto; box-sizing: border-box; }
.v2 .legal-head { display: flex; flex-direction: column; gap: 8px; }
.v2 .legal-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.v2 .legal-tabs a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 18px; border: 1px solid var(--v2-line); border-radius: 4px; background: var(--v2-surface); font-size: 13px; font-weight: 700; color: var(--v2-text); word-break: keep-all; }
.v2 .legal-tabs a:hover { text-decoration: none; border-color: var(--v2-ink); }
.v2 .legal-tabs a.on { background: var(--v2-ink); border-color: var(--v2-ink); color: #fff; }
.v2 .legal-doc { width: 100%; max-width: 920px; box-sizing: border-box; margin: 0 auto 24px; padding: 40px 48px; border: 1px solid var(--v2-line); background: var(--v2-surface); font-size: 14px; line-height: 1.8; color: var(--v2-text); word-break: keep-all; }
.v2 .legal-doc-t { margin: 0 0 6px; text-align: center; font-size: 19px; font-weight: 800; color: var(--v2-ink); }
.v2 .legal-doc-v { margin: 0 0 28px; text-align: center; font-size: 12px; color: var(--v2-muted); }
.v2 .legal-doc h3 { margin: 32px 0 10px; font-size: 16px; font-weight: 800; color: var(--v2-ink); }
.v2 .legal-doc h4 { margin: 18px 0 6px; font-size: 14px; font-weight: 800; }
.v2 .legal-doc p, .v2 .legal-doc li { margin: 0 0 8px; }
.v2 .legal-doc ol, .v2 .legal-doc ul { margin: 0 0 8px; padding-left: 20px; }
.v2 .legal-doc table { width: 100%; border-collapse: collapse; margin: 8px 0 14px; font-size: 13px; }
.v2 .legal-doc th, .v2 .legal-doc td { border: 1px solid var(--v2-line); padding: 8px 10px; text-align: left; vertical-align: top; }
.v2 .legal-doc th { background: var(--v2-bg); font-weight: 700; white-space: nowrap; }
.v2 .legal-toc { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 32px; margin: 0 0 28px; padding: 0 0 24px; border-bottom: 1px solid var(--v2-line); list-style: none; }
.v2 .legal-toc li { margin: 0; }
.v2 .legal-toc a { display: flex; gap: 8px; font-weight: 700; color: var(--v2-text); }
.v2 .legal-toc .n { color: var(--v2-ink); font-weight: 800; min-width: 1.4em; }
.v2 .legal-ver { display: flex; align-items: center; gap: 10px; margin-top: 28px; padding-top: 16px; border-top: 1px solid var(--v2-line); font-size: 13px; }
.v2 .legal-ver label { font-weight: 700; }
.v2 .legal-ver select { min-height: 34px; padding: 0 10px; border: 1px solid var(--v2-line); border-radius: 4px; background: var(--v2-surface); font: inherit; font-size: 13px; color: var(--v2-text); }
.v2 .legal-history { margin-top: 12px; font-size: 12px; }
.v2 .legal-history caption { text-align: left; font-weight: 800; padding: 0 0 6px; color: var(--v2-ink); }
.v2 .legal-doc .addendum { margin-top: 28px; padding-top: 14px; border-top: 1px solid var(--v2-line); font-size: 13px; color: var(--v2-muted); }
.v2 .help-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; width: 100%; max-width: 920px; margin: 0 auto; }
.v2 .help-card { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; border: 1px solid var(--v2-line); border-radius: 6px; background: var(--v2-surface); }
.v2 .help-card .k { font-size: 12px; color: var(--v2-muted); }
.v2 .help-card .v { font-size: 17px; font-weight: 800; color: var(--v2-ink); word-break: keep-all; }
.v2 .help-card .d { font-size: 12px; color: var(--v2-muted); }
.v2 .faq { width: 100%; max-width: 920px; margin: 0 auto; }
.v2 .faq .faq-t { margin: 8px 0 12px; font-size: 17px; }
.v2 .faq details { border: 1px solid var(--v2-line); border-radius: 6px; background: var(--v2-surface); margin-bottom: 8px; }
.v2 .faq summary { list-style: none; cursor: pointer; padding: 14px 18px; font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 10px; word-break: keep-all; }
.v2 .faq summary::-webkit-details-marker { display: none; }
.v2 .faq summary .ic { margin-left: auto; color: var(--v2-muted); }
.v2 .faq details[open] summary .ic { transform: rotate(180deg); }
.v2 .faq .faq-a { padding: 0 18px 16px; font-size: 13px; line-height: 1.75; color: var(--v2-text); border-top: 1px solid var(--v2-line); padding-top: 12px; }
.v2 .faq .faq-a p { margin: 0 0 6px; }
@media (max-width: 720px) {
  .v2 .legal-doc { padding: 24px 18px; }
  .v2 .legal-toc { grid-template-columns: 1fr; }
  .v2 .help-grid { grid-template-columns: 1fr; }
}
.v2 .fc .fc-star { color: var(--v2-text); }
.v2 .fc-price { display: flex; align-items: center; gap: 4px; margin-top: 6px; }
.v2 .fc-price input { width: 0; flex: 1; min-width: 0; height: 28px; border: 1px solid var(--v2-line); border-radius: 4px; padding: 0 6px; font-size: 12px; font-family: inherit; }
.v2 .fc-price input:focus { outline: 2px solid var(--v2-ink); outline-offset: 1px; border-color: var(--v2-ink); }
.v2 .fc-price .btn { flex-shrink: 0; }
.v2 details.fc summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 4px; }
.v2 details.fc summary::-webkit-details-marker { display: none; }
.v2 details.fc summary .fc-chev { width: 14px; height: 14px; margin-left: auto; color: var(--v2-muted); transition: transform .15s; }
.v2 details.fc[open] summary .fc-chev { transform: rotate(180deg); }
.v2 .fc-unit { font-weight: 500; font-size: 12px; color: var(--v2-muted); }
.v2 .fc-active { gap: 8px; }
.v2 .fc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.v2 .fc-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px 3px 10px; border-radius: 999px; background: var(--v2-ink); color: #FFFFFF; font-size: 12px; font-weight: 700; }
.v2 .fc-chip:hover { text-decoration: none; background: var(--v2-ink-soft); }
.v2 .fc-chip .fc-x { font-size: 14px; line-height: 1; opacity: .8; }
.v2 .fc-clear { font-size: 12px; color: var(--v2-muted); text-decoration: underline; }

.v2 .dside-t { margin: 0 0 8px; font-size: 13px; font-weight: 800; color: var(--v2-muted); }
.v2 .dside .sidebar.facets { width: auto; }
@media (max-width: 1320px) { .v2 .wrap { width: auto; margin: 0 20px; } }
@media (max-width: 900px) {
  .v2 .grid4, .v2 .grid5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* round193(계약 round192-store-feedback §3): 모바일 머리 한 줄 = 햄버거 | 문구 | 로고(가운데) | 장바구니, 둘째 줄 검색. 마크업 순서는 PC 그대로(brand-tag 한 곳), 배치만 grid */
  .v2 .utilbar { display: none; }   /* 유틸 링크는 서랍(.md-links)으로 */
  .v2 .hd .wrap { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto minmax(0, 1fr) auto; grid-template-areas: "menu tag logo . cart" "search search search search search"; align-items: center; column-gap: 4px; row-gap: 10px; padding: 10px 0 12px; }
  .v2 .hd-menu { grid-area: menu; display: flex; align-items: center; justify-content: center; width: 36px; height: 40px; border: 0; background: none; color: var(--v2-text); cursor: pointer; padding: 0; margin-left: -4px; }
  .v2 .hd-menu svg { width: 26px; height: 26px; }
  /* round196(대표자 지적 1): 문구가 로고와 겹쳤다(390에서 문구 81px > 왼쪽 칸 70px — 560 블록의 18px 고정값이 이겼다). 구슬 크기를 화면 폭에 비례(--bd)시켜 320~900 어디서나 왼쪽 칸 안에 든다 */
  .v2 .brand-tag { grid-area: tag; justify-self: start; --bd: clamp(12px, 3.7vw, 16px); gap: 2px; max-width: 100%; }
  .v2 .brand-tag .circ { gap: 2px; }
  .v2 .brand-tag .circ b { width: var(--bd); height: var(--bd); font-size: calc(var(--bd) * .58); }
  .v2 .brand-tag .sub { grid-template-columns: repeat(4, var(--bd)); column-gap: 2px; font-size: max(9px, calc(var(--bd) * .7)); }
  .v2 .vline { display: none; }
  .v2 .logo { grid-area: logo; justify-self: center; }
  .v2 .logo img { height: 32px; }
  .v2 .hd-icons { grid-area: cart; display: flex; justify-self: end; gap: 10px; }
  .v2 .hd-icons .hd-icon:not([href="/cart"]):not([href="/my"]):not(.hd-auth) { display: none; }   /* roundM1-c: 사람 아이콘 = 마이페이지(/my) */
  .v2 .hd-icons:has(.hd-auth) .hd-icon[href="/my"] { display: none; }   /* 비로그인은 [로그인] 아이콘 하나만 */
  .v2 .hd-auth { display: flex; }   /* round205 #3: 장바구니 옆 로그인/로그아웃 — 장바구니처럼 아이콘만(글자는 aria-label·확인 창) */
  /* 마이페이지 메뉴(모바일)는 파일 끝 roundM1-b 블록: 하위 화면 가로 1줄, /my 첫 화면 2열(대표자 Q-M3 ㄷ). 205의 4개 스크롤·220의 2행×5칸은 대체됐다 */
  .v2 .hd-icon > span:not(.cart-badge) { display: none; }
  .v2 .hd-icon svg { width: 26px; height: 26px; }
  .v2 .cart-badge { top: -8px; right: -8px; }
  .v2 .searchwrap { grid-area: search; }
  .v2 .searchbox { height: 42px; }
  /* 전체 카테고리 띠(.gnb 한 줄)는 모바일에 없다 — 서랍이 대신(마크업은 PC·배터리 공용이라 그대로) */
  .v2 .gnb { border-bottom: 0; }
  .v2 .gnb .wrap { display: block; height: 0; overflow: visible; margin: 0; }
  .v2 .gnb .wrap > :not(.mdrawer):not(.md-backdrop) { display: none !important; }
  .v2 .md-backdrop { display: block; position: fixed; inset: 0; z-index: 119; background: rgba(17,17,17,.45); }
  .v2 .mdrawer { display: flex; flex-direction: column; position: fixed; top: 0; bottom: 0; left: 0; width: min(84vw, 360px); z-index: 120; background: var(--v2-surface); overflow-y: auto; box-shadow: 4px 0 24px rgba(0,0,0,.18); padding-bottom: env(safe-area-inset-bottom); }
  .v2 .mdrawer[hidden], .v2 .md-backdrop[hidden] { display: none; }
  .v2 .md-h { display: flex; align-items: center; justify-content: space-between; height: 52px; padding: 0 8px 0 16px; border-bottom: 1px solid var(--v2-line); position: sticky; top: 0; background: var(--v2-surface); z-index: 1; }
  .v2 .md-t { font-size: 17px; font-weight: 800; }
  .v2 .md-close { width: 40px; height: 40px; border: 0; background: none; color: var(--v2-text); display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; } .v2 .md-close svg { width: 22px; height: 22px; }
  .v2 .md-cats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 12px 10px; border-bottom: 1px solid var(--v2-line); }
  .v2 .md-cats a { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 2px; font-size: 11px; font-weight: 700; text-align: center; word-break: keep-all; border-radius: 6px; }
  .v2 .md-cats a:hover { text-decoration: none; background: var(--v2-ink-bg); }
  .v2 .md-cats .cat-img { width: 44px; height: 44px; object-fit: contain; } .v2 .md-cats .cat-ic { width: 28px; height: 28px; color: var(--v2-ink-soft); }
  .v2 .md-cats .md-all { grid-column: 1 / -1; flex-direction: row; justify-content: center; padding: 10px; font-size: 13px; color: var(--v2-ink); border: 1px solid var(--v2-line); margin-top: 4px; }
  .v2 .md-links { display: flex; flex-direction: column; padding: 8px 0; }
  .v2 .md-links a, .v2 .md-links button { display: block; width: 100%; box-sizing: border-box; text-align: left; padding: 12px 16px; font-size: 14px; font-weight: 700; color: var(--v2-text); border: 0; background: none; font-family: inherit; cursor: pointer; }
  .v2 .md-links a.strong { color: var(--v2-ink); font-weight: 800; }
  .v2 .md-links .md-logout { margin: 0; }
  .v2 .home-top { flex-direction: column; }
  /* round231(대표자): 모바일도 확인 업체 배너(지도)를 보인다 — 지도 SDK는 스크롤로 닿을 때만 로드. 히어로 아래 한 칸 */
  .v2 .cert-banner { width: 100%; padding: 16px; margin-top: 12px; }
  .v2 .cert-banner .cb-t { font-size: 18px; }
  .v2 .cert-banner .cb-mini-map { height: 160px; }
  .v2 .hero { min-height: 240px; }
  .v2 .cat-track .cat-tile { width: 68px; font-size: 11px; gap: 6px; padding: 4px 0 6px; }
  .v2 .cat-track .cat-tile-img, .v2 .cat-track .cat-tile-img img, .v2 .cat-track .cat-all-ic { width: 52px; height: 52px; }
  .v2 .cat-track .cat-all-ic svg { width: 22px; height: 22px; }
  /* round193: 카테고리 = 흰 카드 안 2줄×5칸 페이지(store-home.js가 10개씩 .cat-page로 묶는다), 화살표(카드 안쪽)·점 표시. 손가락으로도 넘긴다 */
  .v2 .cat-hrow { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 12px; padding: 12px 6px 10px; }
  .v2 .cat-track { scroll-snap-type: x mandatory; }
  .v2 .cat-page { flex: 0 0 100%; scroll-snap-align: start; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px 0; }
  .v2 .cat-page > .cat-tile { width: auto; }
  .v2 .cat-hrow .hrow-nav { width: 28px; height: 28px; }
  .v2 .cat-hrow .hrow-nav svg { width: 14px; height: 14px; }
  .v2 .cat-hrow .hrow-nav.prev { left: -6px; } .v2 .cat-hrow .hrow-nav.next { right: -6px; }
  .v2 .cat-dots { display: flex; justify-content: center; gap: 5px; margin-top: 8px; }
  .v2 .cat-dots b { width: 6px; height: 6px; border-radius: 3px; background: var(--v2-line); transition: width .2s; }
  .v2 .cat-dots b.on { width: 16px; background: var(--v2-ink); }
  .v2 .cat-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .v2 .strip2 { grid-template-columns: 1fr; }
  .v2 .listwrap { flex-direction: column; align-items: stretch; }   /* round188: 세로 배치에서 flex-start면 목록이 내용 폭(306)으로 줄었다 */
  /* round188: 모바일 목록 — 보기 전환(목록형 기본·2열·3열), 필터는 시트, 정렬은 드롭다운 */
  .v2 .toolbar .vw, .v2 .fc-toggle { display: inline-flex; }
  .v2 .sortdd { margin-left: auto; }
  .v2 .plist[data-view="list"] { display: flex; flex-direction: column; gap: 0; }
  .v2 .plist[data-view="list"] .card { border: 0; border-bottom: 1px solid var(--v2-line); border-radius: 0; }
  .v2 .plist[data-view="list"] .card-link { flex-direction: row; gap: 12px; padding: 12px 0; }
  .v2 .plist[data-view="list"] .thumb { flex: none; width: 120px; height: 120px; border-radius: 8px;   /* round207: 카드 사진 모서리 8 */ }
  .v2 .plist[data-view="list"] .cbody { padding: 0 44px 0 0; flex: 1; }
  .v2 .plist[data-view="list"] .card-cart { right: 0; bottom: 12px; }
  .v2 .plist[data-view="list"] .card-wish { right: 40px; bottom: 12px; }
  .v2 .plist[data-view="list"] .card .prow-price { padding: 0 36px 0 0; }   /* round228: 본문 오른쪽 44 + 36 = 두 버튼 자리 */
  .v2 .plist[data-view="g2"], .v2 .plist[data-view="g3"] { display: grid; gap: 14px 10px; }
  .v2 .plist[data-view="g2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2 .plist[data-view="g3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 8px; }
  .v2 .plist[data-view="g2"] .card, .v2 .plist[data-view="g3"] .card { border: 0; border-radius: 0; background: transparent; }
  .v2 .plist[data-view="g2"] .thumb, .v2 .plist[data-view="g3"] .thumb { height: auto; aspect-ratio: 1 / 1; border-radius: 8px; }
  .v2 .plist[data-view="g2"] .cbody, .v2 .plist[data-view="g3"] .cbody { padding: 8px 0 0; gap: 4px; }   /* round229: 줄 사이 4px */
  /* round229(대표자 "띄엄띄엄"·"3열에 쿠폰·할인가 안 보임"): 2열·3열은 상호·분류·별점 숨김, 배지 줄은 보이는 배지(친환경·품절)가 있을 때만, 할인 줄(쿠폰·%·정가)은 둘 다 보인다 */
  .v2 .plist[data-view="g2"] .store-name, .v2 .plist[data-view="g3"] .store-name, .v2 .plist[data-view="g3"] .prow-rate, .v2 .plist[data-view="g2"] .pcat, .v2 .plist[data-view="g3"] .pcat { display: none; }
  .v2 .plist[data-view="g2"] .prow-bdg:not(:has(.b-eco)):not(:has(.b-soldout)), .v2 .plist[data-view="g3"] .prow-bdg:not(:has(.b-eco)):not(:has(.b-soldout)) { display: none; }
  .v2 .plist[data-view="g2"] .pname { height: auto; max-height: calc(var(--t-lh-body) * 2em); }   /* round229: 한 줄 이름 밑 빈 줄 없음 */
  .v2 .plist[data-view="g3"] .prow-disc { gap: 4px; min-height: 14px; } .v2 .plist[data-view="g3"] .disc-label, .v2 .plist[data-view="g3"] .org-price { font-size: 11px; }
  .v2 .plist[data-view="g3"] .pname { font-size: 12px; -webkit-line-clamp: 1; max-height: 18px; }
  .v2 .plist[data-view="g3"] .price { font-size: 14px; } .v2 .plist[data-view="g3"] .sale-rate { font-size: 12px; }
  .v2 .plist[data-view="g3"] .cbody { padding-right: 0; }
  .v2 .plist[data-view="g3"] .card .prow-price { padding: 0; }   /* round228: 3열은 버튼이 없다 */
  .v2 .plist[data-view="g2"] .card .prow-price { padding: 6px 70px 0 0; }   /* roundM1(B2): 버튼 30 + 8 + 30 + 2 */
  .v2 .plist[data-view="g3"] .card-cart, .v2 .plist[data-view="g3"] .card-wish { display: none; }
  .v2 .plist[data-view="g2"] .card-cart { right: 2px; bottom: 2px; } .v2 .plist[data-view="g2"] .card-cart-btn { width: 30px; height: 30px; }
  .v2 .plist[data-view="g2"] .card-wish { right: 40px; bottom: 2px; } .v2 .plist[data-view="g2"] .card-wish-btn { width: 30px; height: 30px; }
  /* 필터 시트 — 도구막대 [필터]로 열고 닫기·적용·Esc로 닫는다(store-list.js) */
  .v2 .sidebar.facets { display: none; }
  .v2 .listwrap.fc-open .sidebar.facets { display: flex; position: fixed; inset: 0; z-index: 95; width: auto; border: 0; border-radius: 0; padding: 0 16px calc(84px + env(safe-area-inset-bottom)); overflow-y: auto; background: var(--v2-surface); }
  .v2 .fc-open .fc-sheet-h { display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 1; margin: 0 -16px; padding: 0 8px 0 16px; height: 52px; background: var(--v2-surface); border-bottom: 1px solid var(--v2-line); }
  .v2 .fc-sheet-t { font-size: 17px; font-weight: 800; }
  .v2 .fc-close { width: 40px; height: 40px; border: 0; background: none; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--v2-text); } .v2 .fc-close svg { width: 22px; height: 22px; }
  .v2 .fc-open .fc-sheet-f { display: flex; gap: 10px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 96; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: var(--v2-surface); border-top: 1px solid var(--v2-line); }
  .v2 .fc-sheet-f .btn { height: 48px; } .v2 .fc-sheet-f .fc-done { flex: 1; }
  body.fc-lock { overflow: hidden; }
  .v2 .sidebar { width: auto; align-self: stretch; }
  .v2 .dwrap { flex-direction: column; gap: 16px; }
  .v2 .listwrap.no-side .grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2 .listwrap.no-side .plist[data-view="g3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }   /* round229(대표자 "3열 보기 작동 안 함"): 필터 없는 목록의 2열 규칙(선택자 4개)이 3열 보기(3개)를 이기고 있었다 */
  .v2 .dinfo { flex: 0 0 auto; min-height: 0; } /* round129 NR-2: 세로 배치에서 flex 1 1 0 + min-height 0 = 패딩만 남고 내용이 넘쳤다 */
  .v2 .dgallery { flex: 0 0 auto; }
  /* .dsticky 숨김은 아래 .dsticky 기본 규칙 뒤에(같은 우선순위라 순서로 진다 — round129 NR-1) */
  .v2 .dgallery { width: auto; }
  .v2 .dmain { height: auto; }   /* round189: 모바일도 정사각(aspect-ratio) — 화면 폭에 맞춰 다시 그려진다 */
  .v2 .dthumbs { overflow-x: auto; scrollbar-width: none; }
  .v2 .dthumbs::-webkit-scrollbar { display: none; }
  .v2 .cat-panel { display: none !important; }
  .v2 .all-wrap .chev { display: none; }
  .v2 .tg-vrf { display: inline-flex; }   /* round186: 모바일 썸네일 태그 */
  .v2 .cbody .b-vrf.mini, .v2 .dinfo .b-vrf.mini { display: none; }   /* 모바일은 썸네일 태그가 대신한다 */
  .v2 .banner-deco { display: none; }
}
@media (max-width: 560px) {
  .v2 { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }   /* round188: 하단 탭바 + 기기 안전영역 */
  .v2 .wrap { margin: 0 12px; }
  .v2 .utilbar .wrap { gap: 12px; overflow-x: auto; scrollbar-width: none; }
  .v2 .utilbar .wrap::-webkit-scrollbar { display: none; }
  .v2 .hd .wrap { padding: 8px 0 10px; }   /* round193: gap 단축 속성을 쓰면 900 블록의 column/row-gap을 덮는다 */
  .v2 .logo { font-size: 20px; }
  .v2 .gnb .wrap { height: 0; }   /* round193: 띠 없음(서랍) */
  .v2 .gnb .all { gap: 6px; }
  .v2 .gnb .bdg, .v2 .gnb .sep:last-of-type { display: none; }
  .v2 .sec { padding-top: 20px; }
  .v2 .sec-t { font-size: 18px; }
  .v2 .grid4, .v2 .grid5 { gap: 10px; }
  .v2 .thumb { height: 160px; }
  .v2 .mdrawer { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }   /* round230(리뷰 1-3): 서랍 마지막 항목이 하단 탭바에 안 가린다 */
  .v2 .cat-hrow .hrow-nav, .v2 .cat-hrow.has-more .hrow-nav { display: none; }   /* round230(리뷰): 모바일 카테고리 줄은 손가락으로 넘긴다 — 화살표가 타일을 덮지 않게 */
  /* round230(리뷰 1-4): 2열 카드(약 164px) — 버튼 30px·본문 좌우 10·가격 15px, 가격 줄만 버튼 자리 70px */
  .v2 .cbody { padding: 10px 10px; }
  .v2 .card-cart-btn, .v2 .card-wish-btn { width: 30px; height: 30px; }
  .v2 .card-wish { right: 44px; }
  .v2 .card .prow-price { padding: 7px 70px 7px 0; }
  .v2 .card:not(:has(.card-cart)) .prow-price { padding-right: 36px; }
  .v2 .price { font-size: 15px; }
  .v2 .dsticky .qty-stepper input[type="number"] { width: 40px; } .v2 .dsticky .qty-stepper button { width: 30px; }
  /* round230(리뷰 1-7): 주문서 카드·입력칸이 375px에서 화면 밖으로 안 넘친다(서식 시스템 320px 고정 폭 → 칸 폭) */
  .v2 .olayout, .v2 .omain, .v2 .ocard { min-width: 0; max-width: 100%; box-sizing: border-box; }
  .v2 .ocard .field > input:not([type="checkbox"]):not([type="radio"]), .v2 .ocard .field > select, .v2 .ocard .field > .juso, .v2 .ocard .field input.w-md, .v2 .ocard .field input.w-sm { width: calc(100% - 24px); max-width: none; }
  .v2 .ocard .juso .juso-q { flex-basis: 100%; }
  .v2 .banner-main { padding: 24px 20px; min-height: 140px; }
  /* 라운드 56 F1: 모바일은 텍스트 슬라이드 자연 높이(없으면 120px) 안에 이미지를 자르지 않고 넣는다(레터박스) */
  /* round193(계약 §3): 배너 = 레퍼런스 비율 10:9(390 → 351). 자유 배치 배너(운영센터 끌어놓기)는 절대 배치를 풀고 세로로 쌓는다 — 버튼이 글자를 덮지 않는다 */
  .v2 .hero { min-height: 0; aspect-ratio: 10 / 9; }
  .v2 .hero .bnr .bnr-stage { position: relative; inset: auto; align-self: stretch; flex: 1 1 auto; width: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: 10px; }
  .v2 .hero .bnr .bnr-free { position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; transform: none !important; max-width: 100%; }
  .v2 .hero .bnr .bnr-free p { white-space: normal; }
  .v2 .hero .banner-img img { object-fit: contain; }
  .v2 .hero-cap { left: 16px; right: 16px; bottom: 44px; gap: 4px; }
  .v2 .hero-cap .t { font-size: 17px; }
  .v2 .hero-cap .sub { font-size: 12px; }
  .v2 .hrow-track > .card { flex-basis: calc((100% - 28px) / 2); }
  .v2 .hrow-nav.prev { left: 4px; } .v2 .hrow-nav.next { right: 4px; }
  .v2 .banner-main .t { font-size: 20px; }
  .v2 .cat-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
  .v2 .cat-tile { padding: 10px 2px 8px 2px; font-size: 11px; gap: 6px; border: 0; background: transparent; }
  .v2 .cat-tile-ic { width: 48px; height: 48px; background: var(--v2-surface); border: 1px solid var(--v2-line); }
  .v2 .cat-tile-img, .v2 .cat-tile-img img { width: 52px; height: 52px; }
  .v2 .vline { height: 28px; }
  .v2 .dinfo { padding: 12px 0 0; }   /* round208: 상자가 없으니 좌우 여백 없음(화면 여백은 .wrap) */
  .v2 .dvbox::before { width: 120px; height: 140px; right: 26px; top: 0; }
  .v2 .dthumbs img { width: 52px; height: 52px; }
  .v2 .dsec { padding: 18px 16px; }
  .v2 .ft .wrap { padding: 20px 0 28px 0; }
  .v2 .tabbar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 80; display: flex; justify-content: space-around; background: var(--v2-surface); border-top: 1px solid var(--v2-line); padding: 7px 0 calc(7px + env(safe-area-inset-bottom)); }
  .v2 .tabbar a { display: flex; flex-direction: column; align-items: center; gap: 3px; font-size: 11px; font-weight: 500; color: var(--v2-muted); }   /* round211(207-d): 11/500, 선택만 700 */
  .v2 .tabbar a:hover { text-decoration: none; color: var(--v2-ink); }
  .v2 .tabbar a.on { color: var(--v2-ink); font-weight: 700; }
  .v2 .tabbar svg { width: 22px; height: 22px; }
}
.v2 .btn-primary { background: var(--v2-ink); border-color: var(--v2-ink); color: #FFFFFF; }
.v2 .btn-danger { background: var(--v2-sale); border-color: var(--v2-sale); color: #FFFFFF; }
.v2 .btn-danger:hover { background: #C22626; border-color: #C22626; color: #FFFFFF; }
.v2 .btn-primary:hover { background: #000000; border-color: #000000; color: #FFFFFF; }
.v2 .btn.disabled { opacity: .45; pointer-events: none; cursor: default; }
.v2 .qty-stepper { display: inline-flex; align-items: stretch; height: 40px; border: 1px solid var(--v2-line); border-radius: 6px; overflow: hidden; background: var(--v2-surface); vertical-align: middle; }
.v2 .qty-stepper button { width: 34px; border: 0; background: var(--v2-surface); color: var(--v2-muted); font-size: 16px; font-weight: 700; cursor: pointer; font-family: inherit; padding: 0; line-height: 1; }
.v2 .qty-stepper button:hover { background: #F3F4F6; color: var(--v2-ink); }
.v2 .qty-stepper input[type="number"] { width: 48px; height: auto; border: 0; border-left: 1px solid var(--v2-line); border-right: 1px solid var(--v2-line); border-radius: 0; text-align: center; font: inherit; font-weight: 700; padding: 0; background: var(--v2-surface); appearance: textfield; -moz-appearance: textfield; }
.v2 .qty-stepper input::-webkit-outer-spin-button, .v2 .qty-stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.v2 .dcart-form .qty-stepper { height: 44px; flex-shrink: 0; }
.v2 .dcart-form .qty-stepper input { width: 52px; }
/* round135(사용자 지적 C129-6): 좁은 폰 폭에서 [장바구니]·[구매하기]가 79px까지 눌려 글자가 깨졌다 — 수량 줄 아래로 내려 반씩 */
@media (max-width: 560px) {
  .v2 .dinfo .dcart-form { flex-wrap: wrap; }
  .v2 .dinfo .dcart-form .btn-lg { flex: 1 1 calc(50% - 4px); }
}
/* 라운드 56 F7: 본문 2열 + 스티키 구매 패널 */
.v2 .dbody { display: flex; gap: 24px; align-items: flex-start; }
.v2 .dbody img, .v2 .dsec img { max-width: 100%; height: auto; }   /* round189: 판매자 상세 이미지가 모바일 폭을 넘지 않게(가로 넘침 0) */
.v2 .dbody-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.v2 .dsticky { width: 280px; box-sizing: border-box; flex-shrink: 0; position: sticky; top: 72px; display: flex; flex-direction: column; gap: 10px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 6px; padding: 16px; }
.v2 .ds-prod { display: flex; align-items: center; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid var(--v2-line); }
.v2 .ds-prod img, .v2 .ds-ph { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; border: 1px solid var(--v2-line); background: #EFF1F0; flex-shrink: 0; display: block; }
.v2 .ds-name { font-size: 13px; font-weight: 700; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v2 .ds-form { display: flex; align-items: center; gap: 8px; }
.v2 .ds-form .qty-stepper { height: 40px; }
.v2 .ds-total { display: flex; justify-content: space-between; align-items: baseline; font-weight: 700; font-size: 13px; border-top: 1px solid var(--v2-line); padding-top: 10px; }
.v2 .dsticky .btn-lg { width: 100%; box-sizing: border-box; height: 44px; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; }
/* round129 NR-1: 900px 이하에서는 스티키 구매 상자를 숨긴다(구매는 정보 패널의 .dbuy). 위 기본 규칙과 같은 우선순위라 반드시 그 뒤에 */
/* round189(계약 §4-189): 모바일에서는 스티키 패널이 화면 아래 고정 구매 바가 된다(수량 + 장바구니 + 구매하기, 안전영역). 썸네일·총액은 바에 없음. 규칙 순서: 기본 규칙 뒤(round129 NR-1) */
@media (max-width: 900px) { .v2 .dsticky { position: fixed; left: 0; right: 0; bottom: 0; top: auto; width: auto; z-index: 85; flex-direction: row; align-items: center; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); border: 0; border-top: 1px solid var(--v2-line); border-radius: 0; box-shadow: 0 -4px 12px rgba(0,0,0,.06); }
  .v2 .dsticky .ds-prod, .v2 .dsticky .ds-total, .v2 .dsticky .dqty-l { display: none; }
  .v2 .dsticky .ds-form { flex: none; }
  .v2 .dsticky .btn-lg { width: auto; flex: 1; height: 48px; white-space: nowrap; min-width: 0; padding: 0 10px; }   /* round230(리뷰 1-4): '구매하기'가 두 줄로 안 깨진다 */
  .v2 .cart-group { overflow-x: auto; }   /* round230(리뷰 1-2): 장바구니 표가 화면보다 넓으면 표만 가로 스크롤(페이지 축소 없음) */
  .v2 .opt-sub { white-space: nowrap; }
  .v2.pg-detail { padding-bottom: calc(76px + env(safe-area-inset-bottom)); }
  .v2.pg-detail .tabbar { display: none; } }
.v2 .qty-form { display: inline-flex; }
.v2 .osum { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 20px 22px; margin-bottom: 14px; }
.v2 .osum-t { font-size: 15px; font-weight: 800; margin: 0 0 12px; }
.v2 .osum-row { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 9px 0; border-top: 1px solid var(--v2-line); font-size: 14px; }
.v2 .osum-row:first-of-type { border-top: 0; padding-top: 0; }
.v2 .osum-row .n { font-weight: 700; min-width: 0; }
.v2 .osum-row .n .osum-q, .v2 .osum .oline .n .osum-q { font-weight: 400; color: var(--v2-muted); font-size: 13px; margin-left: 8px; }
.v2 .osum .oline + .osum-row { border-top: 1px solid var(--v2-line); margin-top: 6px; }   /* round218: 결제 화면 주문 줄 뒤 주문번호 줄 */
.v2 .osum-row .a { text-align: right; }
.v2 .osum-row .a .field-hint { display: block; margin-top: 2px; }
.v2 .osum-row.sub { font-size: 14px; color: var(--v2-muted); }
.v2 .osum-row.sub .n { font-weight: 400; }
.v2 .osum-total { display: flex; justify-content: space-between; align-items: baseline; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 16px 22px; margin: 0 0 14px; font-weight: 800; }
.v2 .osum-total strong { font-size: 22px; }
.v2 fieldset { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 18px 22px; margin: 0 0 14px; }
.v2 legend { font-size: 15px; font-weight: 800; padding: 0 6px; }
.v2 .field input:not([type="checkbox"]):not([type="radio"]), .v2 .field select { height: 44px; border-color: var(--v2-line); border-radius: 6px; box-sizing: border-box; }
.v2 .field input:focus, .v2 .field select:focus { border-color: var(--v2-ink); }
.v2 .cart-pick, .v2 .cart-pick-all { width: 18px; height: 18px; min-width: 18px; margin: 0; accent-color: var(--v2-ink); }
.v2 .g-title { display: flex; align-items: center; gap: 12px; }
.v2 .pick-all-l { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 400; color: var(--v2-muted); cursor: pointer; }
.v2 .data-table .pick-c { width: 34px; }
.v2 .olayout { display: flex; gap: 18px; align-items: flex-start; }
.v2 .omain { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.v2 .ocard { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 20px 22px; }
.v2 .ocard-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.v2 .ocard-h h2 { font-size: 15px; font-weight: 800; margin: 0; }
.v2 .oline { display: flex; align-items: center; gap: 14px; padding: 6px 0; }
.v2 .oline + .oline { border-top: 1px solid var(--v2-line); padding-top: 12px; }
.v2 .oline .n { flex: 1 1 auto; min-width: 0; font-weight: 700; }
.v2 .oline .oline-unit { display: block; font-weight: 400; color: var(--v2-muted); font-size: 13px; margin-top: 3px; }
.v2 .oline .oline-amt { font-size: 16px; font-weight: 800; white-space: nowrap; }
.v2 .paycard { width: 300px; flex-shrink: 0; position: sticky; top: 14px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 20px 22px; display: flex; flex-direction: column; gap: 10px; box-sizing: border-box; }
.v2 .paycard-t { font-size: 16px; font-weight: 800; margin: 0 0 2px; }
/* 라운드 88: 결제 패널 전용(div.prow) — 예전엔 .v2 .prow 전체에 걸려 상품 카드·상세의 가격이 회색, "원"·배지가 오른쪽으로 밀렸다 */
.v2 div.prow { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 13px; }
.v2 div.prow > span:first-child { color: var(--v2-muted); display: inline-flex; align-items: center; gap: 8px; }
.v2 div.prow .sale { color: var(--v2-sale); }
.v2 .ptotal { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--v2-line); padding-top: 12px; margin-top: 4px; font-weight: 800; }
.v2 .ptotal strong { font-size: 22px; }
.v2 .pterms { border-top: 1px solid var(--v2-line); padding-top: 10px; display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--v2-muted); }
.v2 .pterms p { margin: 0; display: flex; justify-content: space-between; gap: 10px; }
.v2 .pterms a { color: var(--v2-muted); text-decoration: underline; white-space: nowrap; }
.v2 .pnote { font-size: 12px; color: var(--v2-muted); line-height: 1.6; margin: 0; }
.v2 .paycard .pay-btn { margin-top: 2px; }
.v2 .omodal { border: 0; border-radius: 10px; padding: 0; width: 420px; max-width: 92vw; font-family: var(--v2-font); color: var(--v2-text); }
.v2 .omodal::backdrop { background: rgba(17, 17, 17, .45); }
.v2 .omodal-h { display: flex; justify-content: space-between; align-items: center; padding: 16px 18px 14px; border-bottom: 1px solid var(--v2-line); font-size: 16px; font-weight: 700; letter-spacing: var(--t-ls-title); }   /* round211(207-d): 모든 창 머리 = Title 16/700 + 한 줄 설명 */
.v2 .omodal-h small { display: block; font-size: 12px; font-weight: 400; color: var(--v2-muted); margin-top: 2px; letter-spacing: 0; }
.v2 .omodal-f { gap: 8px; }
.v2 .omodal-f .btn.omodal-sec { flex: 0 0 110px; }   /* .omodal-f .btn { flex: 1 }보다 구체도 높게 */
.v2 .omodal-x { border: 0; background: none; font-size: 15px; cursor: pointer; color: var(--v2-muted); padding: 2px 4px; width: auto; height: auto; }
.v2 .omodal-f { padding: 12px 18px 16px; border-top: 1px solid var(--v2-line); display: flex; }
.v2 .omodal-f .btn { flex: 1; }
.v2 .addr-list { max-height: 320px; overflow-y: auto; padding: 12px 18px; display: flex; flex-direction: column; gap: 8px; }
.v2 .addr-row { text-align: left; border: 1px solid var(--v2-line); border-radius: 8px; background: var(--v2-surface); padding: 12px 14px; cursor: pointer; font: inherit; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; align-items: center;   /* round211(207-d): 카드화 */ font-size: 13px; width: 100%; height: auto; }
.v2 .addr-row:hover { border-color: var(--v2-ink); }
.v2 .addr-row b { font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.v2 .addr-row > span { color: var(--v2-muted); font-size: 13px; }
.v2 .addr-row.on { border-color: var(--v2-ink); box-shadow: 0 0 0 1px var(--v2-ink) inset; }
.v2 .addr-row > .addr-tag { grid-column: 2; grid-row: 1 / span 3; align-self: center; height: 20px; padding: 0 7px; border-radius: 4px; background: var(--bdg-trust); color: #FFFFFF; font-size: var(--t-micro); font-weight: 700; display: inline-flex; align-items: center; }
.v2 .addr-row .addr-a { color: var(--v2-muted); }
.v2 .addr-tag { background: var(--v2-blue-bg); color: var(--v2-blue); font-size: 11px; font-weight: 700; border-radius: 999px; padding: 1px 8px; }
.v2 .addr-empty { padding: 20px; text-align: center; color: var(--v2-muted); font-size: 13px; margin: 0; }
.v2 .addr-form { padding: 0 18px 12px; display: flex; flex-direction: column; gap: 8px; }
.v2 .addr-form input { height: 40px; border: 1px solid var(--v2-line); border-radius: 6px; padding: 0 12px; font: inherit; box-sizing: border-box; }
.v2 .addr-form[hidden] { display: none; }
/* round201 D2: 쿠폰 창 안내 영역 — 4단계 글자 위계만으로(박스·아이콘·배경 없음), 좌측 정렬, 한국어 줄바꿈은 단어 단위. ④는 AA 대비(4.5:1) 안에서 가장 연한 회색 */
.v2 .cguide { padding: 20px 18px 0; text-align: left; word-break: keep-all; }
.v2 .cguide p { margin: 0; }
.v2 .cg-main { font-size: 15px; font-weight: 700; color: #1F2937; line-height: 1.5; }
.v2 .cg-act { margin-top: 4px; font-size: 14px; font-weight: 400; color: var(--v2-muted); line-height: 1.5; }
.v2 .cg-act b { color: var(--v2-ink); font-weight: 700; }
.v2 .cg-sub { margin-top: 18px; font-size: 13px; font-weight: 400; color: #6B7280; line-height: 1.6; }
.v2 .cg-help { margin-top: 3px; font-size: 12px; font-weight: 400; color: #6E7681; line-height: 1.5; }
.v2 .copt-list { padding: 22px 18px 14px; display: flex; flex-direction: column; gap: 10px; max-height: 300px; overflow-y: auto; }
/* round200 D6(대표자): [변경] 창 항목 = 쿠폰 모양 — 왼쪽 할인액 띠(점선 절취), 오른쪽 이름·조건, 고르면 남색 테두리 */
.v2 .copt { display: flex; align-items: stretch; gap: 0; flex: none; font-size: 14px; cursor: pointer; border: 1px solid var(--v2-line); border-radius: 8px; overflow: hidden; background: var(--v2-surface); position: relative; }
.v2 .copt:has(input:checked) { border-color: var(--v2-ink); box-shadow: 0 0 0 1px var(--v2-ink) inset; }
.v2 .copt input[type="checkbox"] { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; margin: 0; accent-color: var(--v2-ink); z-index: 1; }
.v2 .copt .cp-amt { flex: 0 0 112px; display: flex; align-items: center; justify-content: center; padding-left: 26px; font-size: 16px; font-weight: 800; color: var(--v2-sale); background: #FFF4F2; border-right: 1px dashed #F0B8B0; }
.v2 .copt .cp-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; }
.v2 .copt .cp-name { font-size: 14px; font-weight: 800; }
.v2 .copt .cp-body small { font-size: 11px; color: var(--v2-muted); line-height: 1.4; }
.v2 .copt input[type="radio"] { width: 18px; height: 18px; min-width: 18px; margin: 0; accent-color: var(--v2-ink); }
@media (max-width: 900px) {
  .v2 .olayout { flex-direction: column; }
  .v2 .paycard { width: 100%; position: static; }
}
.v2 .dreq-preset { margin-bottom: 8px; display: block; }   /* round210-b: 너비는 입력칸과 같은 서식 시스템 규칙 */
.v2 .addr-row { position: relative; padding-right: 40px; }
.v2 .addr-del { position: absolute; top: 8px; right: 8px; width: 26px; height: 26px; min-width: 0; border: 0; background: none; color: var(--v2-muted2); font-size: 13px; cursor: pointer; border-radius: 4px; padding: 0;; color: var(--v2-sale); border-color: var(--v2-sale); }
.v2 .addr-del:hover { color: var(--v2-sale); background: #F3F4F6;; background: var(--v2-sale); color: #FFFFFF; }
.v2 .order-cards { display: flex; flex-direction: column; gap: 14px; }
.v2 .oc-h { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.v2 .oc-h .t { font-weight: 800; font-size: 14px; display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v2 .oc-line { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 7px 0; border-top: 1px solid var(--v2-line); font-size: 14px; }
.v2 .oc-line .n { min-width: 0; }
.v2 .oc-vbank { margin: 6px 0 0; font-size: 13px; }
.v2 .oc-f { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid var(--v2-line); padding-top: 12px; margin-top: 6px; flex-wrap: wrap; }
.v2 .oc-total { font-size: 17px; font-weight: 800; margin-right: 8px; }
.v2 .oc-actions { display: inline-flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.v2 .oc-sub { border-top: 1px dashed var(--v2-line); margin-top: 10px; padding-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.v2 .oc-sub .return-form { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.v2 .oc-sub .return-form select { width: auto; min-width: 110px; height: 36px; }
.v2 .oc-sub .return-form input[type="text"] { flex: 1 1 200px; height: 36px; }
.v2 .oc-sub .return-form input.claim-file { flex: 1 1 100%; font-size: 12px; }
.v2 .oc-sub .return-form input.claim-qty { flex: 0 0 84px; height: 36px; }
.v2 .claim-photos { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.v2 .claim-photos img { width: 56px; height: 56px; object-fit: cover; border-radius: 4px; border: 1px solid var(--v2-line); display: block; }
.v2 .oc-no { margin: -2px 0 8px; font-size: 12px; }
.v2 .content .ocard + .ocard { margin-top: 14px; }
/* round158: 비로그인 [구매하기] 안내 페이지 — 버튼 세로 3개 */
.v2 .gate-actions { display: flex; flex-direction: column; gap: 6px; margin-top: 16px; }
.v2 .gate-actions .btn { width: 100%; }
.v2 .gate-actions .field-hint { margin: 0 0 10px; }
/* round158(C140-3): 검색 자동완성 — datalist 대신 스타일 가능한 목록 */
.v2 .searchwrap { position: relative; flex-grow: 1; min-width: 0; }
.v2 .searchwrap .searchbox { width: 100%; }
.v2 .v2-suggest { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 80;   /* round220(대표자): 카테고리 띠(.gnb 70)보다 위 */ margin: 0; padding: 6px 0; list-style: none; background: #FFFFFF; border: 1px solid var(--v2-line); border-radius: 6px; box-shadow: 0 8px 24px rgba(17, 17, 17, 0.12); }
.v2 .v2-suggest[hidden] { display: none; }
.v2 .v2-suggest li { padding: 9px 18px; font-size: 14px; cursor: pointer; }
.v2 .v2-suggest li:hover, .v2 .v2-suggest li.on { background: var(--v2-surface); font-weight: 700; }
.v2 .oimg { width: 48px; height: 48px; object-fit: cover; border: 1px solid var(--v2-line); border-radius: 6px; flex-shrink: 0; display: inline-block; background: #EFF1F0; }
.v2 .oimg-ph { background: #EFF1F0; }
.v2 .pdp { max-width: 892px; margin: 0 auto; }
.v2 .pdp img { width: 100%; display: block; border-radius: 8px; margin: 0 0 14px; }
.v2 .pdp .pdp-sec h3 { font-size: 17px; font-weight: 800; margin: 22px 0 10px; }
.v2 .pdp .pdp-sec ul { margin: 0; padding-left: 20px; line-height: 2; font-size: 14px; }
.v2 .pdp .pdp-sec table { width: 100%; border-collapse: collapse; font-size: 14px; }
.v2 .pdp .pdp-sec th, .v2 .pdp .pdp-sec td { border-bottom: 1px solid var(--v2-line); padding: 10px 12px; text-align: left; }
.v2 .pdp .pdp-sec th { width: 160px; color: var(--v2-muted); background: #FAFAFB; font-weight: 700; }
.v2 .pdp .pdp-notice { color: var(--v2-muted); font-size: 13px; margin-top: 16px; }
.v2 .page-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.v2 .page-head .page-title { margin: 0; }
.v2 .flowbar { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--v2-muted); white-space: nowrap; }
.v2 .flowbar .on { color: var(--v2-ink); font-weight: 800; }
.v2 .flowbar .sep { color: var(--v2-line); }
.v2 .claim-card { margin-top: 24px; max-width: 640px; }
.v2 .claim-form { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.v2 .claim-form input { flex: 1; min-width: 180px; }
/* 상품 규격 표(product-attrs PA6) */
/* 라운드 85-b 지시 5: 규격·정책 = 제목 아래 전체 너비 2열 표(레퍼런스: 필수 표기 정보) */
.v2 .danchor { height: 1px; margin: -1px 0 0; scroll-margin-top: 64px; }
.v2 .spec-sec { margin-bottom: 16px; }   /* 탭과 같은 너비(dbody 밖) — dbody 간격과 동일 */
.v2 .spec-grid { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--v2-line); border-left: 1px solid var(--v2-line); font-size: 13px; }
.v2 .spec-item { display: flex; border-bottom: 1px solid var(--v2-line); border-right: 1px solid var(--v2-line); }
.v2 .spec-item dt { flex: 0 0 150px; padding: 12px 14px; background: var(--v2-bg); color: var(--v2-text); font-weight: 700; line-height: 1.5; }
.v2 .spec-item dd { margin: 0; padding: 12px 14px; line-height: 1.5; min-width: 0; overflow-wrap: anywhere; }
/* round103 PT1 → round105 PT2: 배송/교환/반품 안내 표 — 줄(행)과 줄 사이를 10px 띄운다. 예전에는 칸 안쪽 여백만 10px이라
   줄이 선 하나로 붙어 보였다(사용자 지적). 줄마다 테두리를 가진 띠: 항목 칸(옅은 바탕) + 내용 칸 */
.v2 .policy-table { width: 100%; border-collapse: separate; border-spacing: 0 10px; margin: -10px 0 6px; font-size: 14px; line-height: 1.65; }
.v2 .policy-table th, .v2 .policy-table td { padding: 12px 16px; border: 1px solid var(--v2-line); text-align: left; vertical-align: top; }
.v2 .policy-table th { width: 160px; background: #F7F8FA; color: var(--v2-text); font-weight: 700; white-space: nowrap; border-right: 0; border-radius: 8px 0 0 8px; }
.v2 .policy-table td { color: var(--v2-text); word-break: keep-all; border-radius: 0 8px 8px 0; background: #fff; }
.v2 .policy-more { margin: 0; }
.v2 .policy-more .btn { display: inline-flex; align-items: center; gap: 4px; }
@media (max-width: 960px) { .v2 .policy-table th { width: 96px; white-space: normal; padding: 12px; } .v2 .policy-table td { padding: 12px; } }
/* product-disclosure PD5: 필수 표기 정보 — 6개 초과는 접고 [더보기] */
.v2 .disc-grid.folded .spec-item.more { display: none; }
/* round196(대표자 지적 4): 모바일(900px 이하)은 '원산지' 줄까지만 펼쳐 두고 [더보기](data-mfold — 원산지 줄이 있고 그 뒤에 항목이 더 있을 때). PC는 기존 6개 접기 그대로 */
@media (max-width: 900px) {
  .v2 .disc-grid[data-mfold] .spec-item.more { display: flex; }
  .v2 .disc-grid[data-mfold] .spec-item.after-origin { display: none; }
}
.v2 .disc-more { display: block; width: 100%; margin: 0; padding: 10px 0; border: 1px solid var(--v2-line); border-top: 0; background: var(--v2-bg); color: var(--v2-text); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.v2 .disc-more:hover { background: var(--v2-ink-bg); color: var(--v2-ink); }
.v2 .disc-more.m-only { display: none; }   /* round196: 기본 규칙(display:block) 뒤 — 모바일 블록이 다시 연다 */
@media (max-width: 900px) { .v2 .disc-more.m-only { display: block; } }
.v2 .disc-more::after { content: ""; display: inline-block; width: 12px; height: 12px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; margin-left: 4px; vertical-align: -1px; }
.v2 .disc-more[aria-expanded="true"]::after { content: ""; display: inline-block; width: 12px; height: 12px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'/%3E%3C/svg%3E") center / contain no-repeat; margin-left: 4px; vertical-align: -1px; }
.v2 .dsec .dlegal { margin: 0 0 12px; }
@media (max-width: 720px) { .v2 .spec-grid { grid-template-columns: 1fr; } .v2 .spec-item dt { flex-basis: 110px; } }
/* 지시 4: 섹션 탭 — 스크롤에 붙는 4등분 탭, 활성 = 밑줄 */
.v2 .dtabs { position: sticky; top: 0; z-index: 20; display: grid; grid-template-columns: repeat(4, 1fr); margin: 24px 0 16px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; overflow: hidden; }
.v2 .dtabs a { display: flex; align-items: center; justify-content: center; height: 48px; font-size: 15px; font-weight: 700; color: var(--v2-muted); text-decoration: none; border-bottom: 3px solid transparent; border-right: 1px solid var(--v2-line); transition: color .15s, border-color .15s; }
.v2 .dtabs a:last-child { border-right: 0; }
.v2 .dtabs a:hover { color: var(--v2-text); text-decoration: none; background: var(--v2-bg); }
.v2 .dtabs a.on { color: var(--v2-ink); border-bottom-color: var(--v2-ink); }
.v2 .dtabs a:focus-visible { outline: 2px solid var(--c-focus); outline-offset: -3px; }
.v2 .dsec[id] { scroll-margin-top: 64px; }
.v2 .detail-page { scroll-behavior: smooth; }
/* 라운드 57 LP2: 내 주문 페이저 */
.v2 .pager { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.v2 .store-pager { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--v2-line); } /* store-paging SP5 */
.v2 .pager .pager-nums { display: inline-flex; gap: 2px; }
.v2 .pager .pg { min-width: 32px; height: 32px; padding: 0 6px; display: inline-flex; align-items: center; justify-content: center; border-radius: 4px; font-weight: 700; font-size: 13px; color: var(--v2-text); }
.v2 .pager .pg.on { background: var(--v2-ink); color: #FFFFFF; }
.v2 .pager .pg:hover { text-decoration: none; background: var(--v2-ink-bg); }
.v2 .pager .pg.on:hover { background: var(--v2-ink); }
.v2 .pager .is-disabled { opacity: .45; pointer-events: none; }
.v2 .pager .pager-total { margin-left: auto; font-size: 12px; }
/* review-photos RP2·RP3: 리뷰 사진 */
.v2 .review-photos { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.v2 .review-photos img { width: 72px; height: 72px; object-fit: cover; border-radius: 4px; border: 1px solid var(--v2-line); display: block; }
.v2 .review-photos .rp { position: relative; display: inline-block; }
.v2 .review-photos .rp img { width: 56px; height: 56px; }
.v2 .review-photos .rp .inline-form { position: absolute; top: -6px; right: -6px; margin: 0; }
.v2 .review-photos .rp-x { width: 20px; height: 20px; border-radius: 999px; border: 1px solid var(--v2-line); background: var(--v2-surface); color: var(--v2-muted); font-size: 13px; line-height: 1; cursor: pointer; padding: 0; }
.v2 .review-photos .rp-x:hover { color: var(--v2-sale); border-color: var(--v2-sale); }
/* review-reply RR4: 판매자 답글 */
.v2 .review-reply { margin: 8px 0 4px 12px; padding: 10px 12px; border-left: 3px solid var(--v2-ink); background: var(--v2-ink-bg); border-radius: 0 6px 6px 0; }
.v2 .review-reply-h { font-size: 12px; font-weight: 800; color: var(--v2-ink); display: flex; gap: 6px; align-items: baseline; }
/* restock-alert RA1·RA4 */
.v2 .restock { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.v2 .restock-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.v2 .restock-btn.on { border-color: var(--v2-green); color: var(--v2-green); }
.v2 .restock-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.v2 .restock-item { display: flex; flex-direction: column; gap: 6px; }
.v2 .restock-item .inline-form { margin: 0; }
@media (max-width: 900px) { .v2 .restock-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* round93: claim progress box (order detail / guest order) */
.v2 .claim-progress { background: var(--v2-bg-soft, #F7F8FA); border: 1px solid var(--v2-line); border-radius: 8px; padding: 14px 16px; }
.v2 .claim-progress .cp-t { margin: 0 0 10px; font-size: 13px; font-weight: 700; }
.v2 .claim-progress .cp-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; font-size: 13px; line-height: 1.55; }
.v2 .claim-progress .cp-list li { display: flex; gap: 10px; align-items: flex-start; flex-wrap: wrap; }
.v2 .claim-progress .cp-list .badge { flex: none; }
.v2 .claim-progress .cp-kv { margin: 0; flex: 1 1 260px; display: grid; gap: 6px; }
.v2 .claim-progress .cp-kv div { display: grid; grid-template-columns: 110px 1fr; gap: 8px; }
.v2 .claim-progress .cp-kv dt { color: var(--v2-muted, #6B7280); }
.v2 .claim-progress .cp-kv dd { margin: 0; white-space: pre-line; word-break: break-word; }
@media (max-width: 560px) { .v2 .claim-progress .cp-kv div { grid-template-columns: 1fr; gap: 2px; } }
/* round94: banner title size (S/L; M = default 27px) */
.v2 .hero .bnr.ts-S .t { font-size: 22px; }
.v2 .hero .bnr.ts-L .t { font-size: 34px; line-height: 1.28; }
@media (max-width: 720px) { .v2 .hero .bnr.ts-S .t { font-size: 17px; } .v2 .hero .bnr.ts-L .t { font-size: 22px; } }
/* round98 SJ6·EV2: 가입 폼의 확인 버튼(아이디 중복 확인·이메일 인증번호) — 입력칸 오른쪽 끝, 결과는 칸 아래 */
.v2 .ifield .ifield-btn { flex: none; height: 34px; margin-right: 6px; padding: 0 12px; border: 1px solid var(--v2-ink); border-radius: 6px; background: var(--v2-surface); color: var(--v2-ink); font-family: inherit; font-size: 13px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.v2 .ifield .ifield-btn:hover { background: var(--v2-ink-bg); }
.v2 .ifield .ifield-btn:disabled { opacity: .5; cursor: progress; }
.v2 .check-box { margin: -4px 0 10px; }
.v2 .email-code .code-row input { height: 40px; border: 1px solid var(--v2-line); border-radius: 6px; }
/* round102 LS5: 페이지를 옮길 때 스토어 헤더는 그대로 있고 본문만 짧게 바뀐다(문서 간 View Transitions — 지원 브라우저만) */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .07s; }   /* round103: .12s → .07s — 이동마다 더해지는 시간을 줄인다 */
  .v2 > header { view-transition-name: a2a-store-header; }
  ::view-transition-group(a2a-store-header) { animation: none; }
  ::view-transition-old(a2a-store-header) { display: none; }
  ::view-transition-new(a2a-store-header) { animation: none; }
}
/* >>> a2a-icons (generated — edit scripts/form-system/a2a-icons.css, then run scripts/form-system/sync.py) */
/* ===== 국산24 아이콘 세트 — 단일 원본. sync.py가 세 app.css와 store-v2.css에 같은 내용을 넣는다(스토어 전용 화면은 app.css를 부르지 않는다) ===== */
/* round95-b: icon set — feather line icons as CSS masks (inherit text color). No emoji / text-symbol icons in UI. */
.ic { display: inline-block; width: 1em; height: 1em; vertical-align: -0.125em; background-color: currentColor; flex: none;
  -webkit-mask: var(--ic) center / contain no-repeat; mask: var(--ic) center / contain no-repeat; }
.ic-lock { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E"); }
.ic-x { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/svg%3E"); }
.ic-check, .btn-save { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E"); }
.ic-heart { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/%3E%3C/svg%3E"); }
.ic-arrow-up { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='12' y1='19' x2='12' y2='5'/%3E%3Cpolyline points='5 12 12 5 19 12'/%3E%3C/svg%3E"); }
.ic-arrow-down { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='12' y1='5' x2='12' y2='19'/%3E%3Cpolyline points='19 12 12 19 5 12'/%3E%3C/svg%3E"); }
.ic-chevron-right, .lnk-go, .btn-next { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E"); }
.ic-chevron-down { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); }
.ic-chevron-up { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'/%3E%3C/svg%3E"); }
.ic-corner { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 10 20 15 15 20'/%3E%3Cpath d='M4 4v7a4 4 0 0 0 4 4h12'/%3E%3C/svg%3E"); }
.ic-external, .btn-external { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E"); }
.ic-trend-up { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 6 13.5 15.5 8.5 10.5 1 18'/%3E%3Cpolyline points='17 6 23 6 23 12'/%3E%3C/svg%3E"); }
.ic-trend-down { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 18 13.5 8.5 8.5 13.5 1 6'/%3E%3Cpolyline points='17 18 23 18 23 12'/%3E%3C/svg%3E"); }
.ic-star { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E"); }
.ic-heart-fill { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/%3E%3C/svg%3E"); }
.ic-user { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E"); }
.ic-chevron-left, .lnk-back, .btn-back { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'/%3E%3C/svg%3E"); }
.ic-home { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5'/%3E%3Cpath d='M5 9.5V21h5v-6h4v6h5V9.5'/%3E%3C/svg%3E"); }
.ic-check-circle, .btn-approve { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='8 12 11 15 16 9'/%3E%3C/svg%3E"); }
.ic-alert-circle { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E"); }
.ic-alert-triangle { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Cline x1='12' y1='17' x2='12.01' y2='17'/%3E%3C/svg%3E"); }
.ic-info { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='16' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12.01' y2='8'/%3E%3C/svg%3E"); }
.ic-x-circle, .btn-reject { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='15' y1='9' x2='9' y2='15'/%3E%3Cline x1='9' y1='9' x2='15' y2='15'/%3E%3C/svg%3E"); }
.ic-thumbs-up { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3'/%3E%3C/svg%3E"); }
.ic-thumbs-down { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17'/%3E%3C/svg%3E"); }
.ic-lg { width: 1.25em; height: 1.25em; }
.ic-zap-arrow { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 7h9l-3.5 9H20'/%3E%3Cpolyline points='16 12 20 16 16 20'/%3E%3C/svg%3E"); }
/* round117 GA1: 글자 화살표 대신 — 되돌아가기 링크는 .lnk-back(문구 앞 꺾쇠), 나아가기 링크·버튼은 .lnk-go(문구 뒤 꺾쇠).
   th:text를 쓰는 요소에 클래스만 붙인다. 장식이라 읽기 도구에는 읽히지 않는다. 검사: scripts/glyph-arrow-scan.py */
.lnk-back::before, .lnk-go::after { content: ""; display: inline-block; width: 1em; height: 1em; vertical-align: -0.125em; background-color: currentColor; flex: none;
  -webkit-mask: var(--ic) center / contain no-repeat; mask: var(--ic) center / contain no-repeat; }
.lnk-back::before { margin-right: .2em; margin-left: -.2em; }
.lnk-go::after { margin-left: .2em; margin-right: -.2em; }
/* 제출 중에는 같은 자리(::after)가 스피너다(.btn-busy·.htmx-request) — 꺾쇠 마스크를 걷고 스피너 크기로 */
.lnk-go.btn-busy::after, .lnk-go.htmx-request::after { -webkit-mask: none; mask: none; background-color: transparent; width: 12px; height: 12px; margin: 0 0 0 8px; vertical-align: -2px; }
/* round166(계약 round166-button-purpose): 용도별 버튼(.btn-*)이 같은 마스크를 쓴다 — 아이콘 원본은 여기 한 곳 */
.ic-download, .btn-download { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='7 10 12 15 17 10'/%3E%3Cline x1='12' y1='15' x2='12' y2='3'/%3E%3C/svg%3E"); }
.ic-upload, .btn-upload { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E"); }
.ic-sheet, .btn-excel { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Cline x1='3' y1='9' x2='21' y2='9'/%3E%3Cline x1='3' y1='15' x2='21' y2='15'/%3E%3Cline x1='9' y1='3' x2='9' y2='21'/%3E%3C/svg%3E"); }
.ic-print, .btn-print { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 6 2 18 2 18 9'/%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3Crect x='6' y='14' width='12' height='8'/%3E%3C/svg%3E"); }
.ic-trash, .btn-delete { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'/%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E"); }
.ic-plus, .btn-add { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='12' y1='5' x2='12' y2='19'/%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3C/svg%3E"); }
.ic-search, .btn-search { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E"); }
.ic-edit, .btn-edit { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'/%3E%3C/svg%3E"); }
.ic-eye, .btn-view { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); }
.ic-logout, .btn-logout { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpolyline points='16 17 21 12 16 7'/%3E%3Cline x1='21' y1='12' x2='9' y2='12'/%3E%3C/svg%3E"); }
.crumb-sep { margin: 0 .25em; opacity: .6; }
/* <<< a2a-icons */
/* round123 AS3: 주소 검색 조각 — 검색 입력 + [주소 검색] + 결과 목록. 화면별 CSS 금지 → 단일 원본 */
.v2 .juso { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.v2 .juso .juso-q { flex: 1 1 220px; min-width: 0; }
.v2 .juso .juso-list { flex-basis: 100%; list-style: none; margin: 0; padding: 0; max-height: 260px; overflow: auto; border: 1px solid var(--v2-line); border-radius: 6px; background: var(--v2-surface); }
.v2 .juso .juso-list li + li { border-top: 1px solid var(--v2-line); }
.v2 .juso .juso-hit { display: grid; grid-template-columns: 4.5em 1fr; gap: 0 10px; width: 100%; padding: 8px 10px; border: 0; background: none; text-align: left; font: inherit; cursor: pointer; color: inherit; word-break: keep-all; }
.v2 .juso .juso-hit:hover, .juso .juso-hit:focus-visible { background: var(--v2-bg); outline: none; }
.v2 .juso .juso-zip { font-weight: 700; color: var(--v2-ink); }
.v2 .juso .juso-road { font-weight: 700; }
.v2 .juso .juso-jibun { grid-column: 2; font-size: 12px; color: var(--v2-muted); }
.v2 .juso .juso-note { flex-basis: 100%; margin: 0; font-size: 12px; color: var(--v2-muted); }

/* round123-b N2: 결과 카드(결제창 닫힘·결제 실패) — 아이콘·제목·설명·사유·버튼 */
.v2 .result-card { max-width: 560px; margin: 8px auto 32px; padding: 36px 28px 28px; border: 1px solid var(--v2-line); border-radius: 12px; background: var(--v2-surface); text-align: center; }
.v2 .result-ic { margin: 0 auto 14px; width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.v2 .result-ic .ic { width: 32px; height: 32px; }
.v2 .result-card.is-danger .result-ic { background: var(--c-danger-bg); color: var(--c-danger); }
.v2 .result-card.is-neutral .result-ic { background: var(--c-neutral-bg); color: var(--v2-muted); }
.v2 .result-t { font-size: 22px; font-weight: 800; margin: 0 0 8px; letter-spacing: -0.01em; word-break: keep-all; }
.v2 .result-d { margin: 0; color: var(--v2-muted); font-size: 14px; line-height: 1.6; word-break: keep-all; }
.v2 .result-reason { display: inline-flex; gap: 8px; align-items: baseline; margin: 16px auto 0; padding: 8px 14px; background: var(--c-danger-bg); color: var(--c-danger); border-radius: 6px; font-size: 13px; }
.v2 .result-reason b { font-weight: 700; }
.v2 .result-actions { display: flex; justify-content: center; gap: 8px; margin-top: 24px; flex-wrap: wrap; }
/* round123-b AB6·AB7: 배송지 관리 — 기본 배송지 라디오 열·건수 */
.v2 .section-count { margin-left: 8px; font-size: 13px; font-weight: 700; color: var(--v2-muted); }
.v2 .addr-table .addr-th-default, .v2 .addr-table .addr-td-default { width: 56px; text-align: center; }
.v2 .addr-table .addr-td-default input[type="radio"] { width: 18px; height: 18px; margin: 0; vertical-align: middle; cursor: pointer; accent-color: var(--c-primary); }
.v2 .addr-table .addr-label { font-weight: 700; cursor: pointer; margin-right: 6px; }
.v2 .addr-table tr.is-default td { background: var(--c-success-bg); }
/* round225(대표자 2): 배송지 표는 주소만 접히고 나머지는 한 줄 */
.v2 .addr-table th, .v2 .addr-table td { white-space: nowrap; }
.v2 .addr-table td.addr-addr { white-space: normal; min-width: 220px; }

/* round124 MO3: 내 주문 상태 탭 — 판매자센터 .ftabs와 같은 알약형 */
.v2 .ftabs { display: flex; gap: 6px; margin: 0 0 16px; flex-wrap: wrap; }
.v2 .ftabs a { display: inline-flex; align-items: center; padding: 7px 14px; border: 1px solid var(--v2-line); border-radius: 999px; background: var(--v2-surface); font-size: 13px; font-weight: 700; color: var(--v2-muted); text-decoration: none; word-break: keep-all; }
.v2 .ftabs a:hover { border-color: var(--v2-ink); color: var(--v2-text); text-decoration: none; }
.v2 .ftabs a.on { background: var(--v2-ink); border-color: var(--v2-ink); color: #fff; }
/* round179 B2·S2: 탭 위 말풍선(건수가 있을 때만 서버가 넣는다). 판매자센터 app.css .tab-tip과 같은 규칙 */
.v2 .ftabs.has-tip { margin-top: 36px; }
.v2 .ftabs a { position: relative; }
.v2 .ftabs .tab-tip { position: absolute; left: 50%; bottom: calc(100% + 9px); transform: translateX(-50%); padding: 5px 10px; border-radius: 6px; background: var(--v2-ink); color: #fff; font-size: 12px; font-weight: 700; line-height: 1.3; white-space: nowrap; pointer-events: none; }
.v2 .ftabs .tab-tip::after { content: ""; position: absolute; left: 50%; top: 100%; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--v2-ink); }
.v2 .page-head .btn { flex: none; }
/* round124 RC1: 결제 정보 카드(주문 상세·비회원) */
.v2 .pay-box .osum-row .a { text-align: right; }
.v2 .pay-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.v2 .pay-hint { margin: 8px 0 0; font-size: 12px; color: var(--v2-muted); line-height: 1.5; }
/* round124 MO4·RC3: 인쇄용 문서 — 화면에서는 종이처럼 한 장, 인쇄에서는 표만 */
.v2 .doc { max-width: 860px; margin: 0 auto 32px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 8px; padding: 32px 36px; }
.v2 .doc-h { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; border-bottom: 2px solid var(--v2-ink); padding-bottom: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.v2 .doc-h h1 { font-size: 24px; font-weight: 800; margin: 0; letter-spacing: -0.01em; }
.v2 .doc-h .sub { font-size: 13px; color: var(--v2-muted); margin: 4px 0 0; }
.v2 .doc-meta { font-size: 13px; line-height: 1.7; text-align: right; }
.v2 .doc-meta b { font-weight: 700; }
.v2 .doc-tools { display: flex; gap: 8px; justify-content: flex-end; max-width: 860px; margin: 0 auto 12px; }
.v2 .doc-tools-full { max-width: none; }   /* round124-b: 전체 폭 문서(인쇄용 목록)는 버튼을 문서 오른쪽 끝에 */
.v2 .page-head-tools { display: inline-flex; gap: 6px; flex: none; }
.v2 .doc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.v2 .doc-sec { border: 1px solid var(--v2-line); border-radius: 6px; padding: 12px 14px; }
.v2 .doc-sec h2 { font-size: 13px; font-weight: 800; margin: 0 0 8px; color: var(--v2-muted); }
.v2 .doc-sec .kv { display: grid; grid-template-columns: 96px 1fr; gap: 4px 10px; font-size: 13px; line-height: 1.5; }
.v2 .doc-sec .kv .k { color: var(--v2-muted); }
.v2 .doc table.data-table { width: 100%; font-size: 13px; }
.v2 .doc table.data-table th { background: var(--v2-bg); font-weight: 700; }
.v2 .doc .sum { margin: 12px 0 0 auto; width: 320px; max-width: 100%; font-size: 14px; }
.v2 .doc .sum .osum-row { padding: 6px 0; }
.v2 .doc .sum .total { font-size: 17px; font-weight: 800; }
.v2 .doc-notice { margin: 18px 0 0; font-size: 12px; color: var(--v2-muted); line-height: 1.6; word-break: keep-all; }
.v2 .doc-full { max-width: none; }
@media (max-width: 720px) {
  .v2 .doc { padding: 20px 16px; }
  .v2 .doc-grid { grid-template-columns: 1fr; }
  .v2 .doc-meta { text-align: left; }
}
@media print {
  .v2 .v2-hd, .v2 .v2-top, .v2 header, .v2 footer, .v2 .my-tiles, .v2 .doc-tools, .v2 .banner, .v2 .btn { display: none !important; }
  .v2 .content { padding: 0; max-width: none; }
  .v2 .doc { border: 0; border-radius: 0; padding: 0; max-width: none; box-shadow: none; }
  .v2 .doc-sec, .v2 .doc table.data-table th, .v2 .doc table.data-table td { border-color: #999; }
  .v2 .doc table.data-table th { background: #eee; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a[href]::after { content: none; }
}

/* round125 RV2·RV3: 리뷰 도움돼요/안돼요 — 알약 버튼(내 표는 강조), 정렬 링크 */
.v2 .rsort { margin-left: auto; display: inline-flex; gap: 10px; font-size: 13px; font-weight: 700; }
.v2 .rsort a { color: var(--v2-muted); text-decoration: none; }
.v2 .rsort a.on { color: var(--v2-text); text-decoration: underline; text-underline-offset: 3px; }
.v2 .sec-t { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.v2 .vote-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.v2 .vote-btn { display: inline-flex; align-items: center; gap: 4px; height: 30px; padding: 0 12px; border: 1px solid var(--v2-line); border-radius: 999px; background: var(--v2-surface); font: inherit; font-size: 13px; font-weight: 700; color: var(--v2-muted); cursor: pointer; width: auto; }
.v2 .vote-btn:hover { border-color: var(--v2-ink); color: var(--v2-text); }
.v2 .vote-btn.on { background: var(--v2-ink); border-color: var(--v2-ink); color: #fff; }
.v2 .vote-pill { display: inline-flex; align-items: center; height: 30px; padding: 0 12px; border: 1px solid var(--v2-line); border-radius: 999px; font-size: 13px; font-weight: 700; color: var(--v2-muted); background: var(--v2-bg); }

/* round126 PM2: 선호 결제수단 라디오 카드 */
.v2 .paypref-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.v2 .paypref-opt { display: grid; grid-template-columns: 22px 1fr; gap: 2px 10px; align-items: center; padding: 14px 16px; border: 1px solid var(--v2-line); border-radius: 8px; background: var(--v2-surface); cursor: pointer; }
.v2 .paypref-opt input[type="radio"] { width: 18px; height: 18px; margin: 0; grid-row: span 2; accent-color: var(--c-primary); }
.v2 .paypref-opt .t { font-weight: 700; font-size: 14px; }
.v2 .paypref-opt .d { font-size: 12px; color: var(--v2-muted); line-height: 1.5; word-break: keep-all; }
.v2 .paypref-opt:hover { border-color: var(--v2-ink); }
.v2 .paypref-opt.on { border-color: var(--v2-ink); box-shadow: inset 0 0 0 1px var(--v2-ink); }
.v2 .paypref-form .autosubmit-fallback { grid-column: 1 / -1; }
.v2 .pay-pref { margin-top: 6px; }

/* round128(사용자 지시 3): 구매자 화면 가독성 — 판매자센터·운영센터(정보 밀도형)와 달리 글자를 키우고 버튼 위계를 분명히 */
.v2 .content .page-title { font-size: 24px; font-weight: 800; letter-spacing: -0.01em; }
.v2 .content .page-desc { font-size: 14px; line-height: 1.6; color: var(--v2-muted); }
.v2 .content .section-title { font-size: 18px; font-weight: 800; margin: 28px 0 12px; }
.v2 .content .data-table { font-size: 14px; }
.v2 .content .data-table th, .v2 .content .data-table td { padding: 12px 12px; }
.v2 .content .data-table thead th { font-size: 13px; font-weight: 700; }
/* round225(대표자 4): 표 머리글·숫자 칸 줄바꿈 금지(긴 글만 접힌다) */
.v2 .content .data-table th, .v2 .content .data-table td.num { white-space: nowrap; }
.v2 .content .field-hint, .v2 .content .pay-hint { font-size: 13px; }
.v2 .content .badge { font-size: 12px; height: 22px; padding: 0 8px; }
.v2 .btn { border-color: var(--c-border-strong, #C9CDD3); }
.v2 .btn:where(:hover) { border-color: var(--v2-ink); background: var(--v2-bg); }   /* round146: 색 버튼을 덮지 않게 :where */
.v2 .btn-primary, .v2 .btn-ink { border-color: var(--v2-ink); }
.v2 .oc-actions .btn, .v2 .row-actions .btn { min-width: 84px; }
.v2 .oc-h .t b { font-size: 15px; }
.v2 .oc-total { font-size: 18px; }
.v2 .empty p { font-size: 15px; }
.v2 .banner, .v2 .banner-success, .v2 .banner-danger, .v2 .banner-warning, .v2 .banner-info { font-size: 14px; }
/* round227: 모바일(≤900)은 썸네일 왼쪽 아래에 "국산 검증" 태그가 있어 마크를 그 위로 */
@media (max-width: 900px) { .v2 .cert-marks { bottom: 30px; } .v2 .dmain .cert-marks { bottom: 34px; } }
/* ===== roundM1(모바일 트랙 R-A, 계약 mobile-M1-buyer-web): 구매자 폰 정돈. 파일 끝에 두는 이유 = 같은 우선순위의 앞 규칙(기본 .ocard·.oline·.dtabs a)을 순서로 이긴다(230의 .ocard 14/12가 뒤 기본 규칙에 밀려 죽어 있던 함정) ===== */
.v2 .paybar-total { display: none; }   /* PC: 총액은 요약 카드 .ptotal 줄에 있다 */
@media (max-width: 900px) {
  /* B3: 상세 고정 탭 바 53 → 44(a 39 + 밑줄 3 + 상자 테두리 2) */
  .v2 .dtabs a { height: 39px; font-size: 14px; }
  /* B4: 장바구니 표 → 카드 줄(마크업은 표 1벌, 열 순서는 뒤에서 센다: 처리·금액·수량·단가·상품) */
  .v2 .cart-group { padding: 14px; }
  .v2 .cart-group .data-table, .v2 .cart-group tbody { display: block; width: 100%; min-width: 0; border: 0; }
  .v2 .cart-group thead { display: none; }
  .v2 .cart-group tbody tr { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto 32px; grid-template-areas: "pick name name name" "pick unit unit unit" "pick qty amt del"; column-gap: 10px; row-gap: 8px; align-items: center; padding: 12px 0; border-top: 1px solid var(--v2-line); background: none; }
  .v2 .cart-group tbody tr:first-child { border-top: 0; padding-top: 0; }
  .v2 .cart-group tbody tr:hover { background: none; }
  .v2 .cart-group .data-table td { display: block; padding: 0; border: 0; background: none; min-width: 0; white-space: normal; }   /* .v2 .content .data-table td(12px)보다 뒤, 같은 구체도 */
  .v2 .cart-group td:nth-last-child(5) { grid-area: name; display: grid; grid-template-columns: 56px minmax(0, 1fr); grid-template-areas: "img a" "img small"; column-gap: 10px; align-items: start; }
  .v2 .cart-group td:nth-last-child(5) .cart-thumb { grid-area: img; width: 56px; height: 56px; margin: 0; }
  .v2 .cart-group td:nth-last-child(5) > a, .v2 .cart-group td:nth-last-child(5) > .muted { grid-area: a; font-size: 14px; font-weight: 700; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .v2 .cart-group td:nth-last-child(5) > small { grid-area: small; margin: 2px 0 0; }
  .v2 .cart-group .data-table td:nth-last-child(4) { grid-area: unit; padding-left: 66px; font-size: 13px; color: var(--v2-muted); text-align: left; }
  .v2 .cart-group td:nth-last-child(3) { grid-area: qty; }
  .v2 .cart-group td:nth-last-child(2) { grid-area: amt; text-align: right; font-size: 15px; font-weight: 700; }
  .v2 .cart-group td:last-child { grid-area: del; }
  .v2 .cart-group tbody td.pick-c { grid-area: pick; width: auto; align-self: start; padding-top: 18px; }   /* nth-last-child 규칙 뒤(같은 우선순위) */
  .v2 .cart-group .cart-pick { width: 20px; height: 20px; margin: 0; }
  .v2 .cart-group .qty-stepper { height: 36px; }
  .v2 .cart-group .qty-stepper button { width: 32px; }
  .v2 .cart-group .qty-stepper input[type="number"] { width: 40px; }
  .v2 .cart-group .btn-delete { width: 32px; height: 32px; padding: 0; min-width: 0; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; gap: 0; background: var(--v2-surface); border-color: var(--v2-line); color: var(--v2-sale); }   /* 폰은 외곽선 휴지통(빨간 채움은 글자 버튼용) */
  .v2 .cart-group .btn-delete::before { margin: 0; width: 16px; height: 16px; }
  .v2 .cart-group .btn-delete .t { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
  /* 옵션 상품(215): 머리 줄은 colspan 칸 하나(사진·이름·옵션 n개), 옵션 줄은 ┗ 옵션명 아래 수량·금액·삭제 */
  .v2 .cart-group tr.cart-prow { grid-template-columns: 20px minmax(0, 1fr); grid-template-areas: "pick name"; padding-bottom: 4px; }
  .v2 .cart-group tr.cart-prow td { background: none; font-weight: 700; }
  .v2 .cart-group tr.cart-prow td:last-child { grid-area: name; display: grid; grid-template-columns: 56px minmax(0, 1fr); grid-template-areas: "img a" "img small"; column-gap: 10px; align-items: start; }
  .v2 .cart-group tr.cart-prow td:last-child .cart-thumb { grid-area: img; width: 56px; height: 56px; margin: 0; }
  .v2 .cart-group tr.cart-prow td:last-child > a, .v2 .cart-group tr.cart-prow td:last-child > .muted { grid-area: a; font-size: 14px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .v2 .cart-group tr.cart-prow td:last-child > small { grid-area: small; margin: 2px 0 0; }
  .v2 .cart-group tr.cart-orow { border-top: 0; padding-top: 4px; }
  .v2 .cart-group tr.cart-orow td:nth-last-child(5) { display: block; }
  .v2 .cart-group tr.cart-orow td:nth-last-child(4) { padding-left: 18px; }   /* (0,4,1) = 위 unit 규칙과 같은 구체도, 뒤가 이긴다 */
  .v2 .cart-group tr.cart-orow .opt-sub { white-space: normal; font-size: 13px; }
  /* 게스트(cart-guest): 선택 칸이 없어 열이 하나 적다 */
  .v2 .cart-guest tbody tr { grid-template-columns: minmax(0, 1fr) auto 32px; grid-template-areas: "name name name" "unit unit unit" "qty amt del"; }
  .v2 .cart-guest tr.cart-prow { grid-template-columns: minmax(0, 1fr); grid-template-areas: "name"; }
  /* 묶음 합계 줄 + [상품 주문하기] 48 전폭(게스트는 두 버튼 세로) */
  .v2 .cart-sub { justify-content: space-between; padding-top: 12px; border-top: 1px solid var(--v2-line); }
  .v2 .cart-sub .sum { margin-left: auto; }
  .v2 .cart-sub .btn { flex: 1 1 100%; height: 48px; font-size: 15px; }
}
@media (max-width: 560px) {
  /* 공통: 좌우 여백 16 통일(.wrap 12 → 16, main.content 24 → 16), 구역 사이 24 */
  .v2 .wrap { margin: 0 16px; }
  .v2 .content { padding-left: 16px; padding-right: 16px; }
  .v2 .sec { padding-top: 24px; }
  /* B1: 히어로 글자 20, 버튼 44 */
  .v2 .hero .bnr .t, .v2 .hero .bnr.ts-S .t, .v2 .hero .bnr.ts-L .t, .v2 .hero-cap .t, .v2 .banner-main .t { font-size: 20px; }
  .v2 .hero .btn-lg { box-sizing: border-box; height: 44px; padding: 0 18px; font-size: 14px; }   /* .btn은 content-box라 테두리 포함 44로 */
  /* B1·B2: 홈 신상품(split-grid)·행사(hrow-track) 카드 = 목록 2열 카드 규격(테두리 없음·사진 모서리 8·본문 8 0 0·상호 숨김·가격 줄 70) */
  .v2 .split-grid > .card, .v2 .hrow-track.grid5 > .card { border: 0; border-radius: 0; background: transparent; }
  .v2 .split-grid > .card .thumb, .v2 .hrow-track.grid5 > .card .thumb { border-radius: 8px; }
  .v2 .split-grid > .card .cbody, .v2 .hrow-track.grid5 > .card .cbody { padding: 8px 0 0; gap: 4px; }
  .v2 .split-grid > .card .store-name, .v2 .hrow-track.grid5 > .card .store-name { display: none; }
  .v2 .split-grid > .card .pname, .v2 .hrow-track.grid5 > .card .pname { height: auto; max-height: calc(var(--t-lh-body) * 2em); }
  .v2 .split-grid > .card .prow-price, .v2 .hrow-track.grid5 > .card .prow-price { padding: 6px 70px 0 0; }
  .v2 .split-grid > .card .card-cart, .v2 .hrow-track.grid5 > .card .card-cart { right: 2px; bottom: 2px; }
  .v2 .split-grid > .card .card-wish, .v2 .hrow-track.grid5 > .card .card-wish { right: 40px; bottom: 2px; }
  /* B3: 리뷰 사진 2열(정사각) */
  .v2 .review-photos > a { flex: 0 0 calc(50% - 3px); }
  .v2 .review-photos > a img { width: 100%; height: auto; aspect-ratio: 1 / 1; border-radius: 8px; }
  /* B5: 주문서 카드 14/12, 상품 줄 = 사진 48 · 이름 2줄 · 수량·금액은 다음 줄(줄바꿈 허용) */
  .v2 .ocard { padding: 14px 12px; }
  .v2 .oline { flex-wrap: wrap; gap: 8px 10px; }
  .v2 .oline .n { flex: 1 1 calc(100% - 58px); font-size: 14px; line-height: 1.4; }
  .v2 .oline .n > span:first-child { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .v2 .oline .qty-stepper { margin-left: 58px; height: 36px; }
  .v2 .oline .qty-stepper button { width: 32px; }
  .v2 .oline .qty-stepper input[type="number"] { width: 40px; }
  .v2 .oline .oline-amt { margin-left: auto; }
  /* B5: 결제 = 하단 고정 바(총액 + [결제하기] 52). 탭바는 숨기고 본문 아래를 바 높이만큼 비운다(상세 pg-detail과 같은 방식) */
  .v2:has(.paybar) { padding-bottom: calc(104px + env(safe-area-inset-bottom)); }   /* 바 77 + 빠진 항목 한 줄 */
  .v2:has(.paybar) .tabbar { display: none; }
  .v2 .paybar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 85; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 12px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: var(--v2-surface); border-top: 1px solid var(--v2-line); box-shadow: 0 -4px 12px rgba(0, 0, 0, .06); }
  .v2 .paybar-total { display: flex; flex-direction: column; font-size: 12px; color: var(--v2-muted); }
  .v2 .paybar-total strong { font-size: 18px; font-weight: 800; color: var(--v2-text); }
  .v2 .paybar .pay-btn { width: auto; min-width: 140px; height: 52px; padding: 0 22px; margin: 0; }
  .v2 .paybar .pay-missing { grid-column: 1 / -1; margin: 0; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}
/* ===== roundM1-c(대표자 2026-10-17 C-M1b-1 지적, 계약 mobile-M1-buyer-web §7): 마이페이지 — 폰 /my는 전체메뉴 목록(구역 4·줄 56), 폰 하위 화면은 5칸 줄(.my-quick), 머리 사람 아이콘은 /my. PC는 9칸 타일 그대로(순서 주문·찜·쿠폰 먼저) ===== */
.v2.pg-my .my-tiles .cat-tile { order: 10; }
.v2.pg-my .my-tiles .cat-tile[href="/my/orders"] { order: 1; }
.v2.pg-my .my-tiles .cat-tile[href="/my/wishlist"] { order: 2; }
.v2.pg-my .my-tiles .cat-tile[href="/my/coupons"] { order: 3; }
.v2.pg-my .my-home-id { margin: -4px 0 14px; }
.v2 .my-quick, .v2 .my-menu { display: none; }   /* PC: 타일 줄이 맡는다 */
@media (max-width: 900px) {
  .v2 .my-tiles { display: none; }
  /* 하위 화면·첫 화면 공통: 5칸 줄(아이콘 24 · 라벨 11), 현재 메뉴는 남색 700 */
  .v2 .my-quick { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; margin: 0 0 16px; padding: 6px 2px; background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: 10px; }
  .v2 .my-quick a { display: flex; flex-direction: column; align-items: center; gap: 4px; min-height: 52px; padding: 6px 2px 4px; font-size: 11px; font-weight: 500; color: var(--v2-muted); line-height: 1.2; word-break: keep-all; text-align: center; }
  .v2 .my-quick a:hover { text-decoration: none; color: var(--v2-ink); }
  .v2 .my-quick a.on { color: var(--v2-ink); font-weight: 700; }
  .v2 .my-quick svg { width: 24px; height: 24px; }
  /* 첫 화면(/my): 5칸 줄은 숨기고 전체메뉴 목록. 구역 사이는 바탕색 띠 8px(화면 좌우 끝까지) */
  .v2.pg-my .my-quick { display: none; }
  .v2 .my-menu { display: block; margin: 0 -16px; background: var(--v2-bg); }
  .v2 .my-sec { background: var(--v2-surface); padding: 14px 16px 2px; border-top: 1px solid var(--v2-line); border-bottom: 1px solid var(--v2-line); }
  .v2 .my-sec + .my-sec { margin-top: 8px; }
  .v2 .my-sec-t { margin: 0 0 4px; font-size: 15px; font-weight: 800; color: var(--v2-text); }
  .v2 .my-row { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 56px; padding: 0; border: 0; border-top: 1px solid var(--v2-line); background: none; color: var(--v2-text); font: inherit; font-size: 15px; font-weight: 500; text-align: left; cursor: pointer; box-sizing: border-box; }
  .v2 .my-sec-t + .my-row { border-top: 0; }
  .v2 .my-row:hover { text-decoration: none; color: var(--v2-ink); }
  .v2 .my-row-ic { width: 24px; height: 24px; flex: none; display: inline-flex; align-items: center; justify-content: center; }
  .v2 .my-row-ic svg { width: 24px; height: 24px; }
  .v2 .my-row .t { flex: 1 1 auto; min-width: 0; }
  .v2 .my-row .ic-chevron-right { width: 18px; height: 18px; flex: none; color: var(--v2-muted); }
  .v2 .my-row-muted { color: var(--v2-muted); }
  .v2 .my-row-logout { margin: 0; border-top: 1px solid var(--v2-line); }
  .v2 .my-row-logout button { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 56px; padding: 0; border: 0; background: none; color: var(--v2-text); font: inherit; font-size: 15px; font-weight: 500; text-align: left; cursor: pointer; }
}
