@import url(https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap);
@import url(https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css);
/* 예시파일 */

:root {
  --layout-color: #fff;
}

@charset 'utf-8';

:root {
  --whole-color: #fff;
  --background-color: #f5f6f8;
  --point-color: #f92626;
  --point-color-secondary: #2869f7;
  --black-color: #111;
  --dark-gray-color: #262626;

  --empty-color: #f5f6f8;
  --default-color: #ddd;
  --blue-gray-color: #3f434c;
  --gray-color: #999;
  --gray-font-color: #828282;
  --tooltip-bg-color: #f7f7f7;

  --default-font-color: #181818;
}

@charset 'utf-8';

/* ============================================================
   선데이클럽 디자인 토큰
   ------------------------------------------------------------
   원본: docs/prototype/ 의 :root 블록 (11개 파일에 중복돼 있던 것을
   여기 하나로 통합). 프로토타입의 토큰 충돌 3건은 아래 기준으로 정리:
   - --line  : #E7E7EA  (detail.html 만 #E4E4E7 였음 → 다수 쪽 채택)
   - --rxl   : 24px     (detail.html 만 22px 였음 → 다수 쪽 채택)
   - --tint  : #F1F0FF  (index/detail 에서 raw hex 였던 것을 토큰화)
   죽은 토큰(--blue2, --violet, --rs)은 살려두되 용도를 명시했다.

   ⚠️ 이 파일은 @shopby 패키지 CSS 뒤, 다른 선데이클럽 CSS 앞에
      로드되어야 한다. import 순서는 src/index.js 에서 제어한다.
   ============================================================ */

:root {
  /* ---- 색 ---- */
  --sc-white: #fff;
  --sc-off: #f6f6f7; /* 페이지 배경 */
  --sc-off2: #eeeff1; /* 한 단계 진한 면 */
  --sc-black: #111113;
  --sc-ink-2: #2a2a2e;
  --sc-ink-3: #3f3f46;
  --sc-gray: #71717a; /* 본문 보조 텍스트 */
  --sc-gray-2: #a1a1aa; /* 더 옅은 텍스트 */
  --sc-line: #e7e7ea;
  --sc-line-2: #d4d4d8;

  --sc-blue: #3a2ee8; /* ★ 브랜드 컬러 */
  --sc-blue-2: #8b83ff; /* 어두운 면 위에서 쓰는 밝은 변형 */
  --sc-violet: #6d28d9; /* 보조 강조 */
  --sc-tint: #f1f0ff; /* ★ 후원 하이라이트 배경 */

  --sc-danger: #e5484d; /* 경고·오류 (브랜드 컬러로 대체 금지) */
  --sc-success: #16704a;

  /* ---- 모서리 ---- */
  --sc-rs: 8px;
  --sc-rm: 12px;
  --sc-rl: 16px;
  --sc-rxl: 24px;
  --sc-rpill: 100px;

  /* ---- 레이아웃 ---- */
  --sc-maxw: 1200px;
  --sc-gut: 24px;

  /* ---- 타이포 ---- */
  --sc-font: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --sc-font-mono: 'Space Grotesk', var(--sc-font); /* 랭킹 숫자·퍼센트 */

  /* ---- 모션 ---- */
  --sc-ease: cubic-bezier(0.4, 0, 0.2, 1);

  /* ============================================================
     @shopby 패키지 변수 재정의 (20개 전부)
     패키지가 :root 에 정의한 것을 같은 이름으로 덮는다.
     이 파일이 뒤에 로드되므로 이긴다.
     ============================================================ */
  --whole-color: var(--sc-white);
  --black-color: var(--sc-black);
  --dark-gray-color: var(--sc-ink-2);
  --empty-color: var(--sc-off);
  --light-gray-bg-color: var(--sc-off);
  --light-gray-border-color: var(--sc-off2);
  --semi-light-gray-border-color: var(--sc-line);
  --light-border-color: var(--sc-off2);
  --gray-border-color: var(--sc-line);
  --default-color: var(--sc-line);
  --light-blue-gray-border-color: var(--sc-line-2);
  --light-blue-gray-color: var(--sc-gray-2);
  --blue-gray-color: var(--sc-ink-3);
  --gray-color: var(--sc-gray-2);
  --gray-font-color: var(--sc-gray);
  --tooltip-bg-color: var(--sc-off);
  --default-font-color: var(--sc-black);
  --event-coupon-date-color: var(--sc-gray-2);

  /* 경고·오류는 의미색이므로 빨강을 유지한다 */
  --caution-color: var(--sc-danger);

  /* style.css 로컬 변수 */
  --point-color-secondary: var(--sc-violet);
  --layout-color: var(--sc-white);
}

/* ============================================================
   ⚠️ 셀러어드민이 런타임에 주입하는 변수 — !important 필요
   ------------------------------------------------------------
   @shopby 패키지가 몰의 '디자인 설정' 값을 읽어 <html> 의
   **인라인 스타일**로 심는다. 실제 주입 확인된 값:

     <html style="--background-color:#F5F6F8; --point-color:#504EB3; ...">

   인라인 스타일은 일반 스타일시트 규칙을 전부 이기므로, 위 :root
   블록의 --point-color 정의는 무시됐다. 작성자 !important 는
   인라인 선언을 이기므로 여기서 확정한다.

   ✅ 대안: 셀러어드민 > 디자인 설정에서 포인트 컬러를 #3A2EE8 로
      바꾸면 !important 없이도 된다. 다만 그 값은 저장소 밖에 있어
      스킨만으로는 재현되지 않으므로, 여기서 코드로 고정한다.
      (어드민에서 색을 바꿔도 이 선언이 이긴다는 점에 유의)
   ============================================================ */
:root {
  --point-color: var(--sc-blue) !important;
  --background-color: var(--sc-off) !important;
}

@charset 'utf-8';

/* ============================================================
   기본 타이포그래피 / 전역 보정
   ------------------------------------------------------------
   패키지 common.css 의
     body{font:14px/1 "Montserrat","Noto Sans KR",sans-serif}
   를 덮는다.

   ⚠️ line-height 는 건드리지 않는다.
      @shopby 패키지 전체가 line-height:1 을 기준으로 조판돼 있어
      프로토타입 값(1.55)을 전역에 넣으면 레이아웃이 전부 밀린다.
      필요한 곳에서 개별적으로 준다.
   ============================================================ */

body {
  font-family: var(--sc-font);
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 패키지가 폰트를 직접 지정한 두 곳 (서비스 점검 페이지) */
.service-check,
.service-check p:first-child {
  font-family: var(--sc-font);
}

/* ------------------------------------------------------------
   선데이클럽 워드마크
   프로토타입의 브랜드는 이미지가 아니라 텍스트다.
   (docs/prototype/index.html — .brand)
   덕분에 로고 이미지 업로드 없이 코드만으로 브랜딩이 가능하다.
   ------------------------------------------------------------ */
.sc-brand {
  font-family: var(--sc-font);
  font-weight: 900;
  font-size: 23px;
  letter-spacing: -0.05em;
  color: var(--sc-black);
  line-height: 1.2;
  white-space: nowrap;
}

/* ------------------------------------------------------------
   버튼 — 프로토타입 .btn 시스템
   패키지 .btn 을 덮지 않도록 sc- 접두사를 쓴다.
   패키지 버튼을 재스타일할 때는 아래 layout/components 에서
   `.btn` 을 직접 겨냥한다.
   ------------------------------------------------------------ */
.sc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  line-height: 1;
  padding: 15px 24px;
  border-radius: var(--sc-rm);
  border: none;
  cursor: pointer;
  transition: all 0.15s var(--sc-ease);
  white-space: nowrap;
}

.sc-btn--key {
  background: var(--sc-blue);
  color: #fff;
}
.sc-btn--key:hover {
  filter: brightness(1.08);
}

.sc-btn--dark {
  background: var(--sc-black);
  color: #fff;
}
.sc-btn--dark:hover {
  filter: brightness(1.6);
}

.sc-btn--white {
  background: #fff;
  color: var(--sc-black);
  border: 1px solid var(--sc-line);
}
.sc-btn--white:hover {
  background: var(--sc-off);
}

.sc-btn--lg {
  padding: 18px 30px;
  font-size: 16px;
}

/* 키보드 포커스 (프로토타입엔 없지만 접근성상 필요) */
.sc-btn:focus-visible,
.sc-brand:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}

@charset 'utf-8';

/* ============================================================
   프리미티브 — 재사용 원자
   ------------------------------------------------------------
   특정 화면에 묶이지 않는 최소 단위. 컨테이너, 버튼, 배지 등.
   컴포넌트(components.css)가 이것들을 조립해 쓴다.
   ============================================================ */

/* ============================================================
   선데이클럽 컴포넌트 스타일
   ------------------------------------------------------------
   원본: docs/prototype/ 의 인라인 \3c style> 블록.
   프로토타입은 11개 파일에 셸 CSS(헤더·드로어·푸터·탭바·토스트)를
   60~80줄씩 중복 정의해 뒀는데(총 1,500줄 중 700~800줄이 중복),
   여기서 하나로 통합한다.

   프로토타입의 불일치는 다음 기준으로 정리했다:
   - 헤더 5종 → 1종 (isMain / sub 두 모드)
   - 푸터 4종 → 1종 (detail.html 의 grid 4단을 채택)
   - .btn--lg 의 width:100% 는 분리해 .sc-btn--block 으로
   - 데스크톱 텍스트 확대 브레이크포인트 821 vs 901 → 1001 로 통일
     (Aurora 패키지가 이미 쓰는 값과 맞춤)
   ============================================================ */

/* ------------------------------------------------------------
   컨테이너
   Aurora 의 .page__content.site 가 이미 폭을 잡으므로
   .sc-wrap 은 그 안에서 좌우 여백만 담당한다.
   ------------------------------------------------------------ */
.sc-wrap {
  width: 100%;
  max-width: var(--sc-maxw);
  margin: 0 auto;
  padding: 0 var(--sc-gut);
}

@charset 'utf-8';

/* ============================================================
   레이아웃 — 페이지 골격
   ------------------------------------------------------------
   여기서 다루는 것: 셸 폭, 본문 폭, 페이지 단(段) 구성.

   ★ 브레이크포인트는 1001px 하나만 쓴다.
     @shopby 패키지가 이미 500 / 501 / 720 / 1001 을 쓰는데,
     그중 데스크톱 경계인 1001 에 맞췄다. 프로토타입은 820·900·1100
     등을 섞어 썼지만 하나로 통일했다.
     JS 쪽 짝: src/constants/layout.js 의 DESKTOP_BREAKPOINT.
     **바꿀 때 양쪽을 함께 고칠 것.** (CSS 커스텀 속성은 미디어쿼리에서
     못 쓰기 때문에 값을 두 번 적을 수밖에 없다)

   ★ 본문 폭은 CSS 가 판단하지 않는다.
     라우트 → 폭 매핑은 src/constants/layout.js 한 곳에 있고,
     Layout.jsx 가 그 결과를 `data-content-width` 로 찍는다.
     CSS 는 페이지 이름을 몰라야 한다.
   ============================================================ */

/* ------------------------------------------------------------
   1. 셸 — 데스크톱 폭 확장

   Aurora 기본값은 `.page__content{max-width:500px}` 로 PC 에서도
   모바일 폭을 유지한다(docs/BRANDING.md §2.6). 프로토타입은 1200px
   데스크톱 디자인이므로 1001px 이상에서만 넓힌다.
   모바일 구간은 Aurora 기본 동작을 그대로 둔다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .page-inner {
    max-width: calc(var(--sc-maxw) + var(--sc-gut) * 2);
    justify-content: center;
  }

  .page__content.site {
    max-width: var(--sc-maxw);
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    box-shadow: none;
  }

  /* PC 좌측 배너(BNBGLEFT)는 프로토타입에 없는 요소 */
  .page__content.banner--left,
  .page__side {
    display: none;
  }
}

/* ------------------------------------------------------------
   2. 본문 폭 — 라우트가 선언한 값을 따른다

   narrow : 입력 폼 중심. 한 줄이 길면 오히려 쓰기 나쁘다.
   medium : 읽는 문서 중심. 본문 가독폭.
   wide   : 상품·전시. 셸 폭을 그대로 쓴다 (규칙 없음 = 기본).

   페이지를 추가할 때 이 파일은 손대지 않는다.
   src/constants/layout.js 에 한 줄만 넣으면 된다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .l-content[data-content-width='narrow'],
  .l-content[data-content-width='medium'] {
    margin-left: auto;
    margin-right: auto;
    padding-top: 24px;
  }

  .l-content[data-content-width='narrow'] {
    max-width: 560px;
  }

  .l-content[data-content-width='medium'] {
    max-width: 860px;
  }
}

/* ------------------------------------------------------------
   3. 상품 그리드 — 데스크톱 5열

   패키지 기본은 `.thumb-item{width:calc(50% - 5px)}`(모바일 2열)이고
   넓은 화면에서 4열이 된다. 프로토타입의 촘촘한 그리드는 5열이다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .thumb-GALLERY {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
  }

  .thumb-GALLERY .thumb-item {
    width: calc(20% - 16px); /* 5열: (1200 - 4×20) / 5 = 224px */
    margin: 0;
  }
}

/* ------------------------------------------------------------
   4. 2단 페이지

   Aurora 는 모바일 퍼스트라 모든 페이지가 세로 1단이다.
   프로토타입의 데스크톱 2단(본문 좌 / 요약·구매 우 sticky)을
   1001px 이상에서만 얹는다. 세 페이지가 같은 골격을 쓴다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .sc-pd__top,
  .sc-cart,
  .sc-osheet {
    display: grid;
    align-items: start;
    padding-top: 8px;
  }

  /* 우측 컬럼은 스크롤을 따라간다 */
  .sc-pd__aside,
  .sc-cart__aside,
  .sc-osheet__aside {
    position: sticky;
    top: 88px;
  }

  /* 상품상세 — 갤러리가 넓다 */
  .sc-pd__top {
    grid-template-columns: minmax(0, 1fr) minmax(380px, 440px);
    gap: 48px;
  }

  /* 장바구니·주문서 — 요약 컬럼이 좁다 */
  .sc-cart,
  .sc-osheet {
    grid-template-columns: minmax(0, 1fr) minmax(330px, 380px);
    gap: 32px;
  }

  .sc-osheet__aside .order-sheet__pay-btn {
    width: 100%;
    margin-top: 12px;
  }

  /* 데스크톱에서는 하단 고정 주문바가 필요 없다 (우측에 버튼이 있다) */
  .sc-cart .cart__fixed-order-btn {
    display: none;
  }

  /* 상세 대표 이미지는 좌측 컬럼 폭을 그대로 쓴다.
     ⚠️ <img> 에 max-width 를 걸면 swiper 슬라이드 폭과 어긋나 깨진다.
        반드시 컨테이너를 제한할 것. */
  .sc-pd__top .thumb-DETAIL .thumb-item__media {
    max-width: none;
  }
}

/* 모바일: 상세 대표 이미지가 과하게 커지지 않도록 */
@media (max-width: 1000px) {
  .thumb-DETAIL .thumb-item__media {
    max-width: 600px;
    margin: 0 auto;
  }
}

@charset 'utf-8';

/* ============================================================
   컴포넌트 — 조립된 UI
   ------------------------------------------------------------
   여기 있는 선택자는 전부 `sc-` 접두사를 가진다.
   즉 **우리가 마크업까지 소유한 것들**이다.
   패키지 클래스(.btn, .header, .page …)를 건드리는 규칙은
   overrides.css 로 간다. 이 경계를 지켜야 나중에 패키지를
   업그레이드할 때 무엇이 깨질지 예측할 수 있다.

   원본 디자인: docs/prototype/
   프로토타입은 셸 CSS 를 11개 파일에 60~80줄씩 중복해 뒀는데
   (1,500줄 중 700~800줄이 중복) 여기서 하나로 통합했다.
   ============================================================ */

/* ============================================================
   헤더
   원본: docs/prototype/index.html — header.site / .hd / .gnbrow
   ============================================================ */
.sc-hd-root {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--sc-line);
}

.sc-hd {
  display: flex;
  align-items: center;
  gap: 16px;
  height: 64px;
}

/* 아이콘 버튼 공통 */
.sc-hd__icon {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--sc-black);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  padding: 0;
  flex: none;
}
.sc-hd__icon svg {
  width: 22px;
  height: 22px;
}
.sc-hd__icon:hover {
  color: var(--sc-blue);
}
.sc-hd__icon:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 3px;
  border-radius: 6px;
}

.sc-hd__ic {
  display: flex;
  align-items: center;
  gap: 15px;
  margin-left: auto;
}

/* 장바구니 배지 */
.sc-hd__badge {
  position: absolute;
  top: -6px;
  right: -7px;
  min-width: 16px;
  height: 16px;
  background: var(--sc-blue);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  border-radius: var(--sc-rpill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
  line-height: 1;
}

/* 검색 pill */
.sc-hd__search {
  flex: 1;
  max-width: 440px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 9px;
  background: var(--sc-off);
  border-radius: var(--sc-rpill);
  padding: 0 16px;
  height: 44px;
  color: var(--sc-gray);
  border: none;
  font-family: inherit;
  cursor: pointer;
  min-width: 0;
}
.sc-hd__search-ico {
  width: 18px;
  height: 18px;
  flex: none;
}
.sc-hd__search-text {
  font-size: 14px;
  color: var(--sc-black);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sc-hd__search-text--ph {
  color: var(--sc-gray);
}
.sc-hd__search input {
  border: none;
  background: none;
  outline: none;
  font-family: inherit;
  font-size: 14px;
  width: 100%;
  color: var(--sc-black);
  min-width: 0;
}
.sc-hd__search--btn {
  text-align: left;
}

/* 서브 페이지 타이틀 */
.sc-hd__title {
  flex: 1;
  min-width: 0;
  text-align: center;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--sc-black);
  line-height: 1.3;
}
.sc-hd__title .editor {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 서브 페이지에서는 워드마크를 줄인다 */
.sc-hd-root.is-sub .sc-brand {
  font-size: 18px;
}

/* GNB 줄 */
.sc-gnb {
  border-top: 1px solid var(--sc-line);
}
.sc-gnb__inner {
  display: flex;
  gap: 26px;
  height: 48px;
  align-items: center;
  overflow-x: auto;
  scrollbar-width: none;
}
.sc-gnb__inner::-webkit-scrollbar {
  height: 0;
}
.sc-gnb a {
  font-size: 14px;
  font-weight: 600;
  color: var(--sc-ink-3);
  white-space: nowrap;
}
.sc-gnb a:hover {
  color: var(--sc-black);
}

/* 모바일 검색 아이콘은 데스크톱에서 감춘다 (검색 pill 이 있으므로) */
.sc-hd__icon--mobile-search {
  display: none;
}

@media (max-width: 1000px) {
  /* 좁은 화면에서는 검색 pill 대신 아이콘 */
  .sc-hd-root.is-main .sc-hd__search {
    display: none;
  }
  .sc-hd__icon--mobile-search {
    display: inline-flex;
  }
  .sc-gnb {
    display: none;
  }
  .sc-hd__menu {
    order: -1;
  }
}
/* ============================================================
   푸터
   원본: docs/prototype/detail.html 의 grid 4단 푸터.
   프로토타입엔 없는 '법정 표기' 블록을 추가했다 — 전자상거래법상
   상호·대표자·사업자등록번호·통신판매업신고번호·주소·연락처·
   개인정보보호책임자는 노출 의무가 있다.
   ============================================================ */
.sc-ft {
  background: var(--sc-white);
  border-top: 1px solid var(--sc-line);
  margin-top: 56px;
  padding: 50px 0 60px;
}

.sc-ft__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 28px;
}

.sc-ft__intro p {
  font-size: 13px;
  color: var(--sc-gray);
  line-height: 1.7;
  max-width: 24em;
  margin-top: 12px;
}

.sc-ft__brand {
  font-size: 20px;
}

.sc-ft__tel {
  display: inline-block;
  margin-top: 14px;
  font-size: 20px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--sc-black);
}

.sc-ft__col h5 {
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 12px;
  color: var(--sc-black);
}
.sc-ft__col ul {
  list-style: none;
}
.sc-ft__col li {
  margin-bottom: 8px;
}
.sc-ft__col a,
.sc-ft__terms {
  font-size: 14px;
  color: var(--sc-gray);
  background: none;
  border: none;
  padding: 0;
  font-family: inherit;
  cursor: pointer;
  text-align: left;
}
.sc-ft__col a:hover,
.sc-ft__terms:hover {
  color: var(--sc-black);
}
.sc-ft__terms.is-bold {
  font-weight: 700;
  color: var(--sc-ink-3);
}

/* 법정 표기 */
.sc-ft__legal {
  margin-top: 36px;
  padding-top: 22px;
  border-top: 1px solid var(--sc-line);
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  font-size: 12.5px;
  color: var(--sc-gray);
  line-height: 1.7;
}
.sc-ft__legal a {
  color: var(--sc-gray);
  text-decoration: underline;
  margin-left: 6px;
}
.sc-ft__legal a:hover {
  color: var(--sc-black);
}

.sc-ft__base {
  margin-top: 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-size: 12px;
  color: var(--sc-gray-2);
}
.sc-ft__fair-logo {
  max-height: 34px;
  width: auto;
}

@media (max-width: 900px) {
  .sc-ft__grid {
    grid-template-columns: 1fr 1fr;
    gap: 26px 20px;
  }
  .sc-ft__intro {
    grid-column: 1 / -1;
  }
}

@media (max-width: 600px) {
  .sc-ft {
    margin-top: 36px;
    padding: 38px 0 44px;
  }
  .sc-ft__base {
    flex-direction: column;
    align-items: flex-start;
  }
}
/* ============================================================
   모바일 하단 탭바
   원본: docs/prototype/index.html — .tabbar (10개 파일에 동일 중복)
   프로토타입은 820px 에서 노출하지만, 여기서는 레이아웃 확장
   브레이크포인트(1001px)와 맞춘다.
   ============================================================ */
.sc-tab {
  display: none;
}

@media (max-width: 1000px) {
  .sc-tab {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    background: rgba(255, 255, 255, 0.97);
    backdrop-filter: saturate(180%) blur(10px);
    -webkit-backdrop-filter: saturate(180%) blur(10px);
    border-top: 1px solid var(--sc-line);
    padding-bottom: env(safe-area-inset-bottom);
  }

  .sc-tab__link {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    padding: 8px 0 7px;
    color: var(--sc-gray);
    font-size: 11px;
    font-weight: 600;
    background: none;
    border: none;
    font-family: inherit;
    cursor: pointer;
  }
  .sc-tab__link svg {
    width: 22px;
    height: 22px;
  }
  .sc-tab__link.is-active {
    color: var(--sc-blue);
  }

  .sc-tab__ico-wrap {
    position: relative;
    display: inline-flex;
  }
  .sc-tab__badge {
    position: absolute;
    top: -5px;
    right: -8px;
    min-width: 15px;
    height: 15px;
    padding: 0 4px;
    background: var(--sc-blue);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    font-style: normal;
    border-radius: var(--sc-rpill);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }
}
/* ============================================================
   후원 표시 (선데이클럽의 브랜드 시그니처)
   원본: docs/prototype 전반의 .donate / .donate-box / .donabox /
        .give / .donacard … 12개 클래스를 4개 변형으로 통합.
   공통 토큰: --sc-tint 배경 + --sc-blue 텍스트
   ============================================================ */
.sc-dona {
  font-family: inherit;
}

/* --- pill : 상품 카드용 --- */
.sc-dona--pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 8px;
  font-size: 12px;
  color: var(--sc-gray);
  background: var(--sc-tint);
  border-radius: var(--sc-rpill);
  padding: 4px 10px 4px 8px;
  line-height: 1;
  white-space: nowrap;
}
.sc-dona--pill svg {
  width: 13px;
  height: 13px;
  color: var(--sc-blue);
  flex: none;
}
.sc-dona--pill b {
  color: var(--sc-blue);
  font-weight: 700;
}

/* --- inline : 곁줄 텍스트 --- */
.sc-dona--inline {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--sc-blue);
  white-space: nowrap;
}

/* --- box : 상세·요약 콜아웃 --- */
.sc-dona--box {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  background: var(--sc-tint);
  border-radius: var(--sc-rm);
  padding: 13px 15px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--sc-ink-3);
}
.sc-dona--box svg {
  width: 19px;
  height: 19px;
  color: var(--sc-blue);
  flex: none;
  margin-top: 1px;
}
.sc-dona--box b {
  color: var(--sc-blue);
  font-weight: 800;
}

/* --- hero : 주문완료·마이페이지 대형 카드 --- */
.sc-dona--hero {
  display: flex;
  align-items: center;
  gap: 20px;
  background: var(--sc-blue);
  color: #fff;
  border-radius: var(--sc-rxl);
  padding: 26px 28px;
  margin: 24px 0 6px;
}
.sc-dona__badge {
  width: 56px;
  height: 56px;
  border-radius: var(--sc-rl);
  background: rgba(255, 255, 255, 0.16);
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
}
.sc-dona__badge svg {
  width: 28px;
  height: 28px;
  color: #fff;
  stroke-width: 1.8;
}
.sc-dona__hero-text {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sc-dona__hero-text em {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.82;
  font-style: normal;
}
.sc-dona__hero-text > span {
  font-size: 16px;
  line-height: 1.55;
  font-weight: 500;
}
.sc-dona__hero-text b {
  font-weight: 800;
}

@media (max-width: 600px) {
  .sc-dona--hero {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    padding: 22px 20px;
  }
}
/* ============================================================
   상품 카드 텍스트
   원본: docs/prototype/list.html — .pbrand / .pname / .pprice
   ============================================================ */
.sc-pcard__info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.sc-pcard__name {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--sc-black);
  margin-bottom: 6px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sc-pcard__name-text {
  display: inline;
}
.sc-pcard__promo {
  color: var(--sc-blue);
  font-weight: 700;
  margin-right: 4px;
}

.sc-pcard__price {
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--sc-black);
  line-height: 1.2;
}
.sc-pcard__price em {
  font-style: normal;
}
.sc-pcard__price span {
  font-size: 0.82em;
  font-weight: 600;
  margin-left: 2px;
}

@media (max-width: 600px) {
  .sc-pcard__name {
    font-size: 13.5px;
  }
  .sc-pcard__price {
    font-size: 15px;
  }
  .sc-dona--pill {
    font-size: 11px;
    padding: 3px 8px 3px 7px;
  }
}
/* ============================================================
   좌측 슬라이드인 드로어
   원본: docs/prototype/index.html — .menu-ov / .menu / .menu-*
   ============================================================ */
.sc-drawer__dim {
  position: fixed;
  inset: 0;
  background: rgba(17, 17, 19, 0.45);
  z-index: 60;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s var(--sc-ease);
}
.sc-drawer__dim.is-open {
  opacity: 1;
  pointer-events: auto;
}

.sc-drawer {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: 336px;
  max-width: 86vw;
  background: #fff;
  z-index: 61;
  transform: translateX(-100%);
  transition: transform 0.3s var(--sc-ease);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
}
.sc-drawer.is-open {
  transform: translateX(0);
}

.sc-drawer__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 22px;
  border-bottom: 1px solid var(--sc-line);
}
.sc-drawer__brand {
  font-size: 20px;
}
.sc-drawer__top button {
  background: none;
  border: none;
  cursor: pointer;
  display: inline-flex;
  color: var(--sc-black);
  padding: 0;
}
.sc-drawer__top button svg {
  width: 22px;
  height: 22px;
}

.sc-drawer__account {
  padding: 18px 22px 4px;
}
.sc-drawer__account p {
  font-size: 15px;
  color: var(--sc-gray);
  line-height: 1.5;
}
.sc-drawer__account p a {
  font-weight: 700;
  color: var(--sc-black);
}
.sc-drawer__signin {
  width: 100%;
}

.sc-drawer__body {
  padding-bottom: 8px;
}

.sc-drawer__sec {
  padding: 2px 22px 8px;
}
.sc-drawer__sec h5 {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--sc-gray);
  text-transform: uppercase;
  margin: 18px 0 4px;
}

.sc-drawer__cat a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 13px 2px;
  font-size: 16px;
  font-weight: 600;
  color: var(--sc-black);
  border-bottom: 1px solid var(--sc-line);
}
.sc-drawer__cat a:hover {
  color: var(--sc-blue);
}
.sc-drawer__cat svg {
  width: 16px;
  height: 16px;
  color: var(--sc-gray-2);
  flex: none;
}

.sc-drawer__links a {
  display: block;
  padding: 9px 2px;
  font-size: 14px;
  color: var(--sc-gray);
}
.sc-drawer__links a:hover {
  color: var(--sc-black);
}

.sc-drawer__foot {
  margin-top: auto;
  padding: 16px 22px;
  border-top: 1px solid var(--sc-line);
  color: var(--sc-gray-2);
  font-size: 12.5px;
}
/* ============================================================
   섹션 공통 (제목 / kicker)
   원본: docs/prototype/index.html — .shead / .kick
   Aurora 의 .product-section__title 을 재스타일한다.
   ============================================================ */
.sc-kick {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--sc-gray);
  text-transform: uppercase;
  margin-bottom: 12px;
}

/* ============================================================
   퀵내비
   원본: docs/prototype/index.html — .quick / .qn
   ============================================================ */
.sc-quick {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  padding: 32px 0 8px;
}
.sc-quick__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 9px;
  flex: 1;
  min-width: 84px;
}
.sc-quick__ico {
  width: 60px;
  height: 60px;
  border-radius: 19px;
  background: var(--sc-off);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--sc-black);
  transition: 0.15s var(--sc-ease);
}
.sc-quick__ico svg {
  width: 24px;
  height: 24px;
}
.sc-quick__item:hover .sc-quick__ico {
  background: var(--sc-tint);
  color: var(--sc-blue);
  transform: translateY(-3px);
}
.sc-quick__label {
  font-size: 13px;
  font-weight: 500;
  color: var(--sc-black);
  text-align: center;
}

@media (max-width: 600px) {
  .sc-quick {
    gap: 6px;
  }
  .sc-quick__ico {
    width: 52px;
    height: 52px;
    border-radius: 16px;
  }
  .sc-quick__ico svg {
    width: 21px;
    height: 21px;
  }
  .sc-quick__label {
    font-size: 12px;
  }
}
/* ============================================================
   ★ 구매가 곧 후원 — 마진 모델 밴드 (브랜드 핵심 섹션)
   원본: docs/prototype/index.html #model
   ============================================================ */
.sc-model {
  margin: 64px 0 8px;
}
.sc-model__inner {
  background: var(--sc-off);
  border-radius: var(--sc-rxl);
  padding: clamp(32px, 5vw, 56px);
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: clamp(28px, 5vw, 56px);
  align-items: center;
}

.sc-model__head h2 {
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 800;
  letter-spacing: -0.035em;
  line-height: 1.2;
  color: var(--sc-black);
}
.sc-model__lead {
  margin-top: 16px;
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--sc-gray);
  max-width: 24em;
}

.sc-model__rows {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sc-model__row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 4px 16px;
  background: #fff;
  border-radius: var(--sc-rl);
  padding: 18px 20px;
}
.sc-model__row-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.sc-model__row-text strong {
  font-size: 15px;
  font-weight: 700;
  color: var(--sc-black);
}
.sc-model__row-text span {
  font-size: 12.5px;
  color: var(--sc-gray);
  line-height: 1.5;
}
.sc-model__row-pct {
  font-family: var(--sc-font);
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--sc-black);
  font-variant-numeric: tabular-nums;
}
.sc-model__bar {
  grid-column: 1 / -1;
  height: 5px;
  border-radius: var(--sc-rpill);
  background: var(--sc-off2);
  overflow: hidden;
  margin-top: 10px;
}
.sc-model__bar i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--sc-line-2);
}

/* 후원 행만 브랜드 컬러로 강조 */
.sc-model__row.is-key {
  background: var(--sc-blue);
}
.sc-model__row.is-key .sc-model__row-text strong,
.sc-model__row.is-key .sc-model__row-pct {
  color: #fff;
}
.sc-model__row.is-key .sc-model__row-text span {
  color: rgba(255, 255, 255, 0.82);
}
.sc-model__row.is-key .sc-model__bar {
  background: rgba(255, 255, 255, 0.24);
}
.sc-model__row.is-key .sc-model__bar i {
  background: #fff;
}

.sc-model__note {
  grid-column: 1 / -1;
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--sc-gray-2);
}

@media (max-width: 900px) {
  .sc-model__inner {
    grid-template-columns: 1fr;
    gap: 28px;
  }
}
/* ============================================================
   마이페이지 누적 후원 카드
   원본: docs/prototype/mypage.html — .donacard
   ============================================================ */
.sc-donacard {
  background: var(--sc-blue);
  color: #fff;
  border-radius: var(--sc-rxl);
  padding: 26px 28px;
  margin: 0 0 20px;
}

.sc-donacard__kick {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 600;
  opacity: 0.88;
  margin-bottom: 10px;
}
.sc-donacard__kick svg {
  width: 17px;
  height: 17px;
  flex: none;
}

.sc-donacard__amount {
  font-size: 38px;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.sc-donacard__amount span {
  font-size: 0.62em;
  font-weight: 700;
  margin-left: 3px;
}

.sc-donacard__sub {
  font-size: 13.5px;
  opacity: 0.86;
  margin-top: 12px;
  line-height: 1.55;
  max-width: 34em;
}

.sc-donacard__stats {
  display: flex;
  gap: 30px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.22);
}
.sc-donacard__stats > div {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.sc-donacard__stat-value {
  font-size: 20px;
  font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.sc-donacard__stat-label {
  font-size: 12.5px;
  opacity: 0.82;
}

.sc-donacard__foot {
  margin-top: 18px;
}
.sc-donacard__foot a {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  background: rgba(255, 255, 255, 0.16);
  border-radius: var(--sc-rpill);
  padding: 8px 16px;
}
.sc-donacard__foot a:hover {
  background: rgba(255, 255, 255, 0.26);
}

@media (max-width: 600px) {
  .sc-donacard {
    padding: 22px 20px;
    border-radius: var(--sc-rl);
  }
  .sc-donacard__amount {
    font-size: 31px;
  }
  .sc-donacard__stats {
    gap: 22px;
  }
}

/* 주문서 요약의 후원 박스는 파랑 채움 (프로토타입 checkout.html) */
.sc-dona--box.sc-dona--filled {
  background: var(--sc-blue);
  color: #fff;
  margin-bottom: 14px;
}
.sc-dona--box.sc-dona--filled svg,
.sc-dona--box.sc-dona--filled b {
  color: #fff;
}

/* 섹션 헤더 — 제목 좌 / 전체보기 우 (프로토타입 .shead) */
.sc-shead {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 26px;
}

.sc-shead__more {
  font-size: 14px;
  font-weight: 600;
  color: var(--sc-black);
  display: inline-flex;
  align-items: center;
  gap: 2px;
  white-space: nowrap;
  flex: none;
}
.sc-shead__more:hover {
  color: var(--sc-blue);
}
.sc-shead__more-ico {
  display: inline-flex;
  width: 16px;
  height: 16px;
}
.sc-shead__more-ico svg {
  width: 100%;
  height: 100%;
}

/* 메인 히어로 (Main/SundayHero.jsx) — 배너를 컨테이너 폭에 맞춰 비율대로 늘린다 */
.sc-hero img {
  display: block;
  width: 100%;
  height: auto;
}

/* 상품 상세 — 상세설명이 비었을 때 대신 쌓는 상품 이미지 (ProductDetail/Content/Detail.jsx) */
.sc-pd__detail-img {
  display: block;
  width: 100%;
  max-width: 860px;
  height: auto;
  margin: 0 auto;
}

/* ── 마이앱 브릿지 페이지 ─────────────────────────────────────────
   /app/auth.html · /app/open-id-sign-in.html 은 Provider 밖에서 단독 렌더되므로
   공통 레이아웃이 없다. 리다이렉트 직전 잠깐 보이는 안내 문구만 정리해 둔다. */
.sc-app-bridge {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 24px;
  color: var(--sc-color-text-muted, #767676);
  font-size: 14px;
  text-align: center;
}

@charset 'utf-8';

/* ============================================================
   패키지 오버라이드 — @shopby 클래스를 건드리는 유일한 파일
   ------------------------------------------------------------
   ★ 이 파일에만 패키지 소유 클래스가 등장한다.
     (.btn, .page, .l-content, .product-section, .thumb-* …)
     다른 파일은 전부 `sc-` 접두사만 쓴다.
     경계를 한 파일로 몰아둬야, 패키지를 올릴 때 회귀 위험 지점을
     한눈에 볼 수 있다.

   ★ 오버라이드 3원칙 (docs/BRANDING.md §2.5 실측 근거)
     1. `!important` 를 쓰지 않는다.
        패키지 CSS 는 !important 가 194KB 전체에서 11개뿐이고
        선택자 56%가 단일 클래스라, 뒤에 실은 이 시트가 그냥 이긴다.
     2. 단 하나의 예외 — 셀러어드민이 <html> 인라인 스타일로 심는
        변수(--point-color, --background-color)는 인라인이라 이길 수
        없다. 그건 tokens.css 에서 !important 로 확정한다.
     3. 패키지 컴포넌트가 렌더하는 DOM 구조는 바꿀 수 없다.
        모양을 바꾸려면 로컬 JSX 로 교체해야 한다.
   ============================================================ */

/* ============================================================
   패키지 버튼 재스타일
   원본: docs/prototype 의 .btn 시스템
   Aurora 는 border-radius:0 이라 각진 인상이고 높이도 제각각이다.
   프로토타입의 모양(12px radius / weight 600 / transition)으로 통일하되,
   의미 구분(.btn--caution=주요, .btn--dark, .btn--default=보조)은 유지한다.
   ============================================================ */
.btn {
  border-radius: var(--sc-rm);
  font-family: inherit;
  font-weight: 600;
  letter-spacing: -0.01em;
  transition: filter 0.15s var(--sc-ease), background-color 0.15s var(--sc-ease);
}

/* 주요 CTA — 이미 --point-color(브랜드 블루)를 쓴다 */
.btn--caution:hover {
  filter: brightness(1.08);
}

.btn--dark:hover {
  filter: brightness(1.4);
}

/* 보조 버튼 */
.btn--default {
  border: 1px solid var(--sc-line);
}
.btn--default:hover {
  background-color: var(--sc-off);
}

/* 각 페이지의 '주요 동작'인데 패키지가 보조 스타일(btn--default)을 쓰는 곳들.
   프로토타입 기준으로 채워진 파랑으로 승격한다.
   ⚠️ 페이지당 하나만 — 비회원 주문조회(.guest-order)처럼 보조 동작은
      제외해야 위계가 산다. */
.normal-sign-in .btn--default,
.sign-up-form__submit-btn,
.find-id .btn--default,
.find-password .btn--default,
.change-password .btn--default {
  background-color: var(--sc-blue);
  border-color: var(--sc-blue);
  color: #fff;
}
.normal-sign-in .btn--default:hover,
.sign-up-form__submit-btn:hover,
.find-id .btn--default:hover,
.find-password .btn--default:hover,
.change-password .btn--default:hover {
  background-color: var(--sc-blue);
  filter: brightness(1.08);
}


/* ------------------------------------------------------------
   상품 섹션 (Main/ProductSectionWrap.jsx 가 쓰는 패키지 클래스)
   ------------------------------------------------------------ */
.product-section {
  padding: 56px 0 8px;
}

.product-section__title {
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.12;
  color: var(--sc-black);
  margin-bottom: 26px;
}

.product-section__more {
  font-size: 14px;
  font-weight: 600;
  color: var(--sc-black);
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.product-section__more:hover {
  color: var(--sc-blue);
}

.sc-shead .product-section__title {
  margin-bottom: 0;
}

/* 모바일 탭바에 본문이 가려지지 않도록 (sc-tab 과 짝) */
.page__content.site {
padding-bottom: 64px;
}

/* 마이앱 웹뷰는 sc-tab 을 그리지 않으므로 그 자리도 비우지 않는다.
   sc-myapp 은 앱에서만 <html> 에 붙는다 (utils/myapp.js initMyapp) */
.sc-myapp .page__content.site {
  padding-bottom: 0;
}

/* ------------------------------------------------------------
   모달 (@shopby Modal / CustomModal / TitleModal / FullModal)

   패키지 모달은 border-radius:0 이라 각지고, 버튼도 테두리 없이
   붙어 있다. 프로토타입 모양(둥근 모서리 · 여백 · 버튼 구분)으로
   맞춘다. DOM 구조는 못 바꾸므로 클래스로만 손댄다(원칙 ③).
   ------------------------------------------------------------ */
.modal__box {
  border-radius: var(--sc-rl);
  overflow: hidden;
  box-shadow: 0 18px 50px rgba(17, 17, 19, 0.18);
}

.modal__box--confirm,
.modal__box--alert {
  min-height: 0;
}

/* 모달 본문에 숨 쉴 여백 */
.modal__box .modal__content,
.modal__box > p {
  padding: 32px 26px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--sc-black);
}

/* 하단 버튼 줄 */
.modal__btns {
  border-top: 1px solid var(--sc-line);
}
.modal__btns .btn {
  border-radius: 0;
  border: none;
  height: 54px;
  font-weight: 700;
}
/* 두 개일 때 오른쪽이 주요 동작 */
.modal__btns .btn + .btn {
  border-left: 1px solid var(--sc-line);
  color: var(--sc-blue);
}
.modal__btns .btn:hover {
  background-color: var(--sc-off);
}

/* ⚠️ `.modal` 은 딤이 아니라 **흰 박스 배경**이다
   (패키지: `.modal{background-color:#fff}`).
   딤으로 착각해 배경을 덮으면 모달 본문이 투명해진다. 건드리지 말 것. */

/* ------------------------------------------------------------
   폼 요소 (@shopby TextField / SelectBox / TextArea)

   패키지 입력 필드는 `border-radius:0` 에 테두리 없는 회색 박스라
   각지고 경계가 흐리다. 프로토타입은 둥근 모서리 + 옅은 테두리 +
   포커스 시 브랜드 컬러 링을 쓴다.
   DOM 은 못 바꾸므로 클래스로만 손댄다(원칙 ③).
   ------------------------------------------------------------ */
.text-field,
.select-field,
.select-field > select,
textarea {
  border-radius: var(--sc-rm);
}

.text-field {
  background-color: var(--sc-off);
  border: 1px solid transparent;
  transition: border-color 0.15s var(--sc-ease), background-color 0.15s var(--sc-ease);
}
.text-field:focus-within {
  background-color: var(--sc-white);
  border-color: var(--sc-blue);
}

.text-field input,
.text-field textarea {
  background-color: transparent;
  font-family: inherit;
}

.select-field > select {
  border-radius: var(--sc-rm);
  border: 1px solid var(--sc-line);
  font-family: inherit;
  background-color: var(--sc-white);
}
.select-field > select:focus {
  border-color: var(--sc-blue);
  outline: none;
}

textarea {
  border: 1px solid var(--sc-line);
  font-family: inherit;
  padding: 12px 14px;
}
textarea:focus {
  border-color: var(--sc-blue);
  outline: none;
}

/* 체크박스·라디오의 선택 상태를 브랜드 컬러로 */
.checkbox input:checked + label::before,
.radio input:checked + label::before {
  border-color: var(--sc-blue);
}

/* ------------------------------------------------------------
   빈 상태 (empty state)

   패키지는 "등록된 FAQ가 없습니다." 같은 문구를 맨 텍스트로 흘린다.
   여러 페이지에 나오는 화면이라 최소한의 형태를 준다 —
   옅은 면 + 여백 + 중앙 정렬. 문구 자체는 패키지가 만든다.
   ------------------------------------------------------------ */
.empty-list,
.no-data,
.cart__empty,
.orders__no-data,
.inquiry-list__empty,
.product-board-list__empty,
.customer-center__faq--empty {
  /* ⚠️ display:flex 를 걸면 아이콘+여러 줄 텍스트가 한 행으로 눌려
     겹친다. 패키지가 만든 내부 배치를 그대로 두고 '면'만 준다. */
  min-height: 180px;
  padding: 48px 24px;
  border-radius: var(--sc-rl);
  background: var(--sc-off);
  color: var(--sc-gray);
  font-size: 14.5px;
  line-height: 1.6;
  text-align: center;
}

/* ------------------------------------------------------------
   목록·아코디언 (FAQ / 공지사항 / 상품문의)
   ------------------------------------------------------------ */
.faq-list__item,
.notice-list__item,
.board-list__item {
  border-bottom: 1px solid var(--sc-line);
}
.faq-list__question,
.faq-list__title {
  font-weight: 600;
  color: var(--sc-black);
}
.faq-list__answer {
  background: var(--sc-off);
  border-radius: var(--sc-rm);
  color: var(--sc-ink-3);
  line-height: 1.7;
}

/* ------------------------------------------------------------
   페이지네이션
   `.is-active` 는 이미 `--point-color`(브랜드 블루)를 쓴다.
   모양만 프로토타입 기준으로 둥글린다.
   ------------------------------------------------------------ */
.pagination__btn {
  width: 34px;
  height: 34px;
  border-radius: var(--sc-rs);
  font-weight: 600;
  transition: background-color 0.15s var(--sc-ease);
}
.pagination__btn:hover:not(:disabled) {
  background-color: var(--sc-off);
}
.pagination__btn.is-active {
  border-radius: var(--sc-rs);
}

/* ------------------------------------------------------------
   탭 (상품상세 상세정보/후기/Q&A 등)
   `.on` 이 이미 `--point-color` 를 쓴다. 타이포만 키운다.
   ------------------------------------------------------------ */
.tabs {
  font-size: 14px;
  height: 52px;
  line-height: 50px;
}
.tabs__item {
  font-weight: 500;
}
.tabs__item.on {
  font-weight: 700;
}

/* ------------------------------------------------------------
   브레드크럼 (카테고리 경로)
   패키지는 아래쪽에 그라디언트 그림자를 깔아 무겁다. 걷어낸다.
   ------------------------------------------------------------ */
.breadcrumb {
  font-size: 13px;
  color: var(--sc-gray);
}
.breadcrumb__section::after {
  display: none;
}

/* ------------------------------------------------------------
   패널 — 페이지를 구성하는 기본 면
   Aurora 는 각진 흰 블록이 이어 붙는 구조다.
   프로토타입은 카드형이므로 모서리와 간격을 준다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .l-panel {
    border-radius: var(--sc-rl);
  }
}

@charset 'utf-8';

/* ============================================================
   회원가입 플로우 — 오버라이드 제안
   라우트: /sign-up · /sign-up/form · /sign-up-confirm
   대응 JSX: src/pages/SignUpMenu/ · src/pages/SignUp/ · src/pages/SignUpConfirm/
   ------------------------------------------------------------
   이 파일은 overrides.css 성격이다. @shopby 패키지 클래스를
   직접 겨냥하며, 규칙마다 "왜 그 클래스인지"를 주석으로 남긴다.

   지킨 것 (docs/DESIGN.md §2 오버라이드 3원칙 · 함정 노트)
   - `!important` 없음. 패키지 선택자는 대부분 깊이 1~3이라
     같은 특이성이면 뒤에 실린 이 시트가 그냥 이긴다.
   - line-height 를 전역으로 건드리지 않는다. 아래에서 값을 주는
     곳은 전부 개별 선택자다(제목·안내문·검증문구).
   - `<img>` 에 max-width 를 걸지 않는다. 크기는 컨테이너로 잡는다
     (/sign-up-confirm 의 체크 아이콘도 컨테이너로 제어).
   - 빈 상태(.empty-list 류)는 건드리지 않는다.
   - 색·모서리는 전부 --sc-* / 매핑된 패키지 변수만 쓴다.
     예외 두 곳은 파일 하단 주석에 근거를 적었다.

   스코프 원칙
   - `.open-id-sign-in`, `.check-radio`, `.select-box`, `.description`,
     `.notice-list` 는 로그인·회원정보수정 등 **다른 화면에서도 쓰인다.**
     그래서 전부 `.sign-up-*` 조상으로 스코프했다. 회원가입 담당 범위를
     넘어 다른 화면을 흔들지 않기 위해서다.

   기준 화면: docs/prototype/auth.html
   ============================================================ */


/* ============================================================
   1. 페이지 셸 — 카드
   ------------------------------------------------------------
   [무엇] 세 페이지의 루트(.sign-up-menu / .sign-up-form /
          .sign-up-confirm)에 데스크톱에서만 카드 면을 준다.
   [왜]   패키지는 `.sign-up-form{padding:20px}` 처럼 여백만 준다.
          그래서 데스크톱에서는 1200px 흰 셸(.page__content.site) 한가운데
          560px 폼이 **경계 없이 떠 있다.** 프로토타입 auth.html 의 인증
          화면은 `.card` — 1px 라인 + 16px 모서리 + 은은한 그림자 안에
          폼이 담긴 형태다. 그 경계를 복원한다.
   [범위] 프로토타입도 좁은 화면(≤480px)에서는 카드를 벗기고 전폭으로
          쓴다. 그래서 카드는 @media (min-width: 1001px) 안에만 둔다.
          1001px 미만은 Aurora 기본 동작 그대로다.
   ============================================================ */
@media (min-width: 1001px) {
  .sign-up-menu,
  .sign-up-form,
  .sign-up-confirm {
    background-color: var(--sc-white);
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
    /* 프로토타입 .card 의 그림자. 토큰이 없는 값이라 원본 수치를 그대로
       쓴다 (overrides.css 의 .modal__box 도 같은 방식). */
    box-shadow: 0 6px 30px rgba(17, 17, 19, 0.05);
    padding: 32px 28px 28px;
    margin-bottom: 56px;
  }
}


/* ============================================================
   2. /sign-up — 가입 방식 선택 (src/pages/SignUpMenu/SignUpMenu.jsx)
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] '쇼핑몰 회원가입' 링크를 채운 파랑 CTA 로 승격한다.
   [왜]   패키지: `.sign-up-menu__link-normal a{height:47px;
          border:1px solid var(--point-color);color:var(--black-color)}`
          → 채움 없는 **각진 파란 아웃라인**이다.
          이 화면에서 유일한 주요 동작인데 위계가 소셜 버튼보다 낮다.
          프로토타입 `.cta` 는 채운 파랑 · 50px · 12px 모서리 · weight 700.
   [주의] 이건 `.btn` 이 아니라 `<a>` 라서 overrides.css 의
          "주요 동작 승격" 목록(.normal-sign-in .btn--default …)이
          닿지 않는다. 중복이 아니다.
   ------------------------------------------------------------ */
.sign-up-menu__link-normal a {
  height: 50px;
  background-color: var(--sc-blue);
  border: none;
  border-radius: var(--sc-rm);
  color: var(--sc-white);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  transition: filter 0.15s var(--sc-ease);
}

.sign-up-menu__link-normal a:hover {
  filter: brightness(1.08);
}

.sign-up-menu__link-normal a:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}

/* ------------------------------------------------------------
   [무엇] 일반가입 ↔ 소셜가입 사이 간격을 줄인다.
   [왜]   패키지 `.sign-up-menu__link-open-id{margin-top:70px}`.
          카드 안에서 70px 는 아무것도 없는 구멍이 된다.
          프로토타입의 구분선 간격은 위 26px / 아래 18px 다.
   ------------------------------------------------------------ */
.sign-up-menu__link-open-id {
  margin-top: 30px;
}

/* ------------------------------------------------------------
   [무엇] 소셜 영역 제목을 프로토타입 `.divider` 형태로 낮춘다.
   [왜]   패키지 `.open-id-sign-in__title span{font-size:16px}` +
          기본 검정색이라, 회원가입 폼과 같은 무게의 **섹션 제목**처럼
          읽힌다. 프로토타입 divider 는 12.5px · gray · weight 600 —
          "여기부터는 다른 방법" 정도의 낮은 신호다.
          가로 hairline(::after)과 `span` 의 흰 배경 뚫기는 패키지가
          이미 만들어 두었으므로 그대로 쓴다.
   [스코프] `.open-id-sign-in` 은 로그인 화면에서도 쓰인다.
            `.sign-up-menu` 로 스코프해 회원가입 화면에만 적용한다.
   ------------------------------------------------------------ */
.sign-up-menu .open-id-sign-in__title span {
  padding: 0 12px;
  background-color: var(--sc-white);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--sc-gray);
}

.sign-up-menu .open-id-sign-in__title::after {
  background-color: var(--sc-line);
}

.sign-up-menu .open-id-sign-in__list {
  margin-top: 18px;
}

.sign-up-menu .open-id-sign-in__item {
  margin-top: 10px;
}

/* ------------------------------------------------------------
   [무엇] 소셜 버튼 모양만 프로토타입 `.sbtn` 에 맞춘다.
   [왜]   패키지 `.open-id-sign-in__item button{height:47px;border:none}`
          → 모서리 0. 우리 폼 요소는 전부 12px 모서리라 여기만 각진다.
   [주의] 카카오(#FEE500)·네이버·라인·애플의 **브랜드 색은 건드리지
          않는다.** 각 사의 로그인 버튼 색상 규정이 있고, 우리 브랜드
          컬러로 덮을 대상이 아니다. 형태(높이·모서리·굵기)만 맞춘다.
   ------------------------------------------------------------ */
.sign-up-menu .open-id-sign-in__item button {
  height: 48px;
  border-radius: var(--sc-rm);
  font-size: 14.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  transition: filter 0.15s var(--sc-ease);
}

.sign-up-menu .open-id-sign-in__item button:hover {
  filter: brightness(0.97);
}

/* 구글·앱카드는 흰 버튼이라 테두리가 곧 경계다.
   패키지가 `border: solid 1px #dedede` 로 하드코딩한 회색을
   우리 라인 토큰으로 바꿔 다른 흰 요소들과 톤을 맞춘다. */
.sign-up-menu .open-id-sign-in__item.type-google button,
.sign-up-menu .open-id-sign-in__item.type-app-card button {
  border-color: var(--sc-line);
}


/* ============================================================
   3. /sign-up/form — 입력 폼 (src/pages/SignUp/SignUpForm.jsx 외)
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] 필드 사이 세로 간격을 30px → 22px 로 좁힌다.
   [왜]   `.sign-up-form__item{margin-top:30px}`. 회원가입 폼은 몰 설정에
          따라 아이디·비번·비번확인·이름·닉네임·이메일·휴대폰·전화·주소·
          생일·성별·추가정보까지 12개 이상이 쌓인다. 30px × N 은
          스크롤만 늘리고 묶음을 만들지 못한다.
          프로토타입 `.field` 는 15px 간격이지만, 여기는 라벨+입력+
          검증문구 3층이라 22px 로 절충했다.
   ------------------------------------------------------------ */
.sign-up-form__item {
  margin-top: 22px;
}

/* ------------------------------------------------------------
   [무엇] 라벨을 작고 굵게 — 값보다 낮은 층으로 내린다.
   [왜]   패키지 `.sign-up-form__tit{font-weight:500}` 이고 크기는
          body(14px) 상속이다. 입력값도 14px 이라 **라벨과 값이 같은
          크기·비슷한 굵기**로 붙어 위계가 없다.
          프로토타입 `.field label` 은 13px · 600 · #2a2a2e(=--sc-ink-2),
          입력값은 14.5px. 라벨은 작게, 값은 크게가 원칙이다.
   ------------------------------------------------------------ */
.sign-up-form__tit {
  font-size: 13px;
  font-weight: 600;
  color: var(--sc-ink-2);
}

.sign-up-form__input-wrap {
  margin-top: 8px;
}

/* 입력값을 라벨보다 크게. `.text-field input` 은 패키지가 높이(44px)만
   정하고 크기는 안 정해 body 14px 를 상속한다. */
.sign-up-form .text-field input {
  font-size: 14.5px;
  color: var(--sc-black);
}

.sign-up-form .text-field input::placeholder {
  color: var(--sc-gray-2);
}

/* ------------------------------------------------------------
   [무엇] 필수 표시를 정사각형 → 원형 점으로.
   [왜]   패키지 `.sign-up-form .required{width:5px;height:5px;
          background-color:var(--caution-color)}` — 라벨 옆에 **빨간
          네모**가 붙는다. 모서리를 쓰는 우리 언어에서 유일하게 각진
          5px 도형이라 오류 뱃지처럼 보인다.
   [주의] 색은 `--caution-color`(빨강) 그대로 둔다. tokens.css 가
          "경고·오류는 의미색이라 브랜드 컬러로 대체 금지"라고 못박은
          변수다. 모양만 바꾼다.
   ------------------------------------------------------------ */
.sign-up-form .required {
  width: 4.5px;
  height: 4.5px;
  border-radius: 50%;
}

/* ------------------------------------------------------------
   [무엇] 셀렉트 박스를 텍스트 필드와 같은 면으로 통일한다.
   [왜]   ★ 이 폼의 가장 큰 어긋남.
          `.text-field` 는 overrides.css 가 이미 둥근 --sc-off 면 +
          포커스 파랑 링으로 바꿔 놨다. 그런데 `.select-box` 는
          패키지 기본이 `border:1px solid #000`(순수 검정!) · 모서리 0 이라
          **한 폼 안에 완전히 다른 두 언어**가 섞인다.
          이메일 도메인 · 통신사 · 생년월일 3개 · 국가코드가 전부 이 모양.
   [왜 여기서] overrides.css 는 `.select-field > select` 만 다뤘다.
          하지만 회원가입 폼이 쓰는 패키지 `SelectBox` 컴포넌트는
          `.select-box` 를 렌더한다. 겹치지 않는 빈틈이다.
   [선택자] `.phone-number-input .select-box`(깊이 2)와
          `.sign-up-form__input-wrap .birthday-input .select-box`(깊이 3)이
          따로 테두리를 지정한다. 특이성을 맞추려고 같은 깊이의
          선택자를 나열했다 — 중복처럼 보여도 필요하다.
   ------------------------------------------------------------ */
.sign-up-form .select-box,
.sign-up-form .phone-number-input .select-box,
.sign-up-form .birthday-input .select-box {
  border: 1px solid var(--sc-line);
  border-radius: var(--sc-rm);
  background-color: var(--sc-white);
  color: var(--sc-black);
  transition: border-color 0.15s var(--sc-ease);
}

.sign-up-form .select-box:focus-within {
  border-color: var(--sc-blue);
}

/* `select` 는 폰트를 상속하지 않는다(UA 기본값을 쓴다).
   overrides.css 가 `.select-field > select` 에만 걸어둔 처리를
   `.select-box select` 에도 해준다. */
.sign-up-form .select-box select {
  font-family: inherit;
  font-size: 14.5px;
  outline: none;
}

/* 생년월일 연/월/일 3칸을 같은 폭으로.
   패키지는 `gap:20px` + `justify-content:center` 라 칸 폭이 내용에 따라
   들쭉날쭉하다. 같은 종류의 입력은 같은 폭이어야 한 덩어리로 읽힌다. */
.sign-up-form .birthday-input {
  gap: 8px;
}

.sign-up-form .birthday-input .select-box {
  flex: 1;
  min-width: 0;
}

/* ------------------------------------------------------------
   [무엇] 검증 메시지에 의미색을 준다.
   [왜]   패키지 `.description{font-size:12px}` 에는 색이 없어서
          **성공 메시지가 검정**으로 나온다. ValidationStatus.jsx 는
          `result === true` 일 때만 `.alert` 를 떼므로, 색 없는 상태가
          곧 성공이다("사용 가능한 아이디입니다" 등).
          성공과 오류가 같은 무게로 보이면 사용자는 통과 여부를 못 읽는다.
   [스코프] `.description` 은 회원정보수정 등에서도 쓰인다.
          `.sign-up-form` 으로 스코프한다.
   [line-height] 전역이 아니라 이 선택자에만 준다(두 줄 오류 문구 대비).
   ------------------------------------------------------------ */
.sign-up-form .description {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--sc-success);
}

/* 오류는 패키지가 이미 --caution-color 를 준다. 명시해 의도를 남긴다. */
.sign-up-form .description.alert {
  color: var(--caution-color);
}

/* ------------------------------------------------------------
   [무엇] 인증 유효시간 타이머를 오른쪽으로 보내고 숫자를 mono 로.
   [왜]   패키지 `.timer{display:inline-block;margin-top:12px;
          font-size:12px}` — 인증번호 입력창 **왼쪽 아래**에 12px 로
          붙어서, 카운트다운인지 안내문인지 구분이 안 된다.
          패키지 자신도 비밀번호 찾기 화면에서는
          `.find-password-authentication .timer` 로 우측 정렬을 쓴다.
          같은 성격의 요소이니 같은 처리를 한다.
   ------------------------------------------------------------ */
.sign-up-form .timer {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 2px;
  margin-top: 8px;
  color: var(--caution-color);
}

.sign-up-form .timer__text {
  margin-right: 4px;
  color: var(--sc-gray);
}

/* 숫자가 1↔0 으로 바뀔 때 폭이 흔들리지 않도록 고정폭 서체.
   tokens.css 가 "랭킹 숫자·퍼센트용"으로 정의해 둔 토큰이다. */
.sign-up-form .timer__number,
.sign-up-form .timer__middle-sign {
  font-family: var(--sc-font-mono);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}


/* ============================================================
   4. /sign-up/form — 약관 동의 (src/pages/SignUp/TermsForm.jsx)
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] '약관동의'는 필드 라벨이 아니라 섹션 제목이므로 되살린다.
   [왜]   같은 `.sign-up-form__tit` 클래스를 쓰지만 여기는 `<p>` 이고
          하위에 약관 묶음 전체가 딸린다. 위 §3 에서 라벨을 13px 로
          낮췄으니 여기만 다시 올려 층을 만든다.
   ------------------------------------------------------------ */
.sign-up-form__agree-wrap .sign-up-form__tit {
  font-size: 15px;
  font-weight: 700;
  color: var(--sc-black);
}

/* 폼 마지막 필드와 약관 섹션 사이를 벌려 "여기서 성격이 바뀐다"를 만든다. */
.sign-up-form__agree-wrap {
  margin-top: 38px;
}

/* ------------------------------------------------------------
   [무엇] 전체동의를 '빈 사각 테두리' → '채운 면'으로.
   [왜]   패키지 `.sign-up-form__checkbox--all{height:56px;
          border:1px solid var(--default-color);justify-content:center}`
          → 가운데 정렬된 **텅 빈 각진 상자**다. 바로 아래 개별 약관
          목록과 무게 차이가 없어 "한 번에 동의"가 눈에 안 들어온다.
          프로토타입 `.agree` 는 --off 로 채운 면 · 12px 모서리 ·
          좌측 정렬 · weight 600 이다. 채움으로 위계를 만든다.
   [정렬] 아래 개별 약관들이 전부 좌측 정렬이라 전체동의만 가운데
          정렬이면 축이 어긋난다. 좌측으로 맞춘다.
   ------------------------------------------------------------ */
.sign-up-form__checkbox--all {
  justify-content: flex-start;
  height: 54px;
  padding: 0 14px;
  background-color: var(--sc-off);
  border: none;
  border-radius: var(--sc-rm);
  font-size: 14.5px;
  font-weight: 700;
}

.sign-up-form__agree-list {
  margin-top: 14px;
}

/* ------------------------------------------------------------
   [무엇] 약관 세 묶음(필수 / 추가 / 마케팅수신) 사이에 경계를 넣는다.
   [왜]   `.sign-up-form__agree-list li`, `.custom-terms__item`,
          `.marketing-receive-agreement__item` 이 전부 margin-top:10px 로
          이어져 **어디까지가 필수 동의인지 보이지 않는다.**
          실제로는 성격이 다른 세 그룹이다.
   [주의] 각 그룹 내부의 배치(패키지 flex)는 그대로 둔다. 바깥 여백과
          구분선만 준다.
          `.custom-terms` 는 몰에 추가약관이 없으면 빈 <ul> 로 렌더되므로
          `:not(:empty)` 로 걸러 빈 줄과 유령 구분선을 막는다.
   ------------------------------------------------------------ */
.sign-up-form .custom-terms:not(:empty),
.sign-up-form .marketing-receive-agreement:not(:empty) {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--sc-line);
}

/* 체크 한 줄의 높이를 확보한다(패키지 기본은 글자 높이 그대로라
   모바일에서 누르기 어렵다). */
.sign-up-form .sign-up-form__checkbox--partial,
.sign-up-form .custom-terms__item {
  min-height: 32px;
}

/* ------------------------------------------------------------
   [무엇] 체크박스 네모의 모서리를 둥글린다.
   [왜]   패키지 `.check-radio__ico` 는 모서리 0 이다. 프로토타입
          `.chk .box` 는 6px 모서리를 쓴다. 폼 안의 유일한 각진 요소가
          남지 않도록 맞춘다.
   [주의] 체크 시 채우는 색은 손대지 않는다 — 패키지가 이미
          `--point-color` 를 쓰고, tokens.css 가 그 값을 --sc-blue 로
          확정해 뒀다. 여기서 다시 칠하면 중복이다.
   [스코프] `.check-radio` 는 장바구니·주문서 등 전역에서 쓰인다.
          회원가입 화면에만 적용한다.
          `--rounded` 변형(원형 체크)은 패키지가 border-radius:50% 로
          쓰는 별개 모양이므로 :not() 으로 제외한다.
   ------------------------------------------------------------ */
.sign-up-form .check-radio:not(.check-radio--rounded) .check-radio__ico {
  border-radius: 6px;
}

.sign-up-form .check-radio__label {
  font-size: 14px;
  color: var(--sc-ink-2);
}

/* ------------------------------------------------------------
   [무엇] '보기' 버튼에서 밑줄을 걷고 링크 언어로 바꾼다.
   [왜]   패키지가 두 곳에서 같은 모양을 만든다:
          `.sign-up-form__checkbox--partial button` 과
          `.custom-terms__item button` — `font-weight:300` +
          `text-decoration:1px underline` + 회색.
          프로토타입의 보조 링크(`.link`)는 밑줄 없이 weight 600 이고
          hover 에서 브랜드 컬러로 바뀐다. 얇은 밑줄 텍스트는 우리
          언어가 아니고, 300 굵기는 한글에서 특히 흐릿하게 깨진다.
   [선택자] 패키지 규칙이 깊이 2 라 `.sign-up-form` 을 얹어 깊이 3 으로
          확실히 이긴다.
   ------------------------------------------------------------ */
.sign-up-form .sign-up-form__checkbox--partial button,
.sign-up-form .custom-terms__item button {
  padding: 6px 2px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--sc-gray);
  text-decoration: none;
  transition: color 0.15s var(--sc-ease);
}

.sign-up-form .sign-up-form__checkbox--partial button:hover,
.sign-up-form .custom-terms__item button:hover {
  color: var(--sc-blue);
}

/* ------------------------------------------------------------
   [무엇] 폼 하단 안내문의 조판을 푼다.
   [왜]   패키지 `.notice-list__item{line-height:1.2;font-weight:300}` +
          `::before{content:"-";color:var(--default-color)}`.
          두 줄 이상이면 줄이 붙어 답답하고, 하이픈 색이
          `--default-color`(=--sc-line) 라 거의 안 보인다.
   [line-height] 전역이 아니라 이 선택자에만 준다.
   [스코프] `.notice-list` 는 다른 화면에도 있으므로 회원가입 폼 안으로
          한정한다.
   ------------------------------------------------------------ */
.sign-up-form .notice-list {
  margin-top: 16px;
}

.sign-up-form .notice-list__item {
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.55;
  color: var(--sc-gray);
}

.sign-up-form .notice-list__item::before {
  color: var(--sc-gray-2);
}


/* ============================================================
   5. /sign-up/form — 제출 버튼 (src/pages/SignUp/SignUpButton.jsx)
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] 가입 제출 버튼을 프로토타입 CTA 모양으로 만든다.
   [왜]   ★ 이 화면에서 가장 눈에 띄는 어긋남.
          SignUpButton.jsx 는 `<button className="">` 을 렌더한다 —
          **`.btn` 클래스가 없다.** 그래서 overrides.css 의
          `.btn{border-radius:var(--sc-rm);font-weight:600;transition}`
          이 하나도 걸리지 않는다.
          유일하게 적용되는 건 패키지의
          `.sign-up-form__confirm button{height:53px;font-size:16px;
          color:#fff;background-color:var(--point-color)}` 뿐이라
          **모서리 0 · hover 없는 파란 막대**가 된다.
          페이지 전체가 12px 모서리인데 결승선만 각지다.
   [참고] overrides.css 59~75행의 `.sign-up-form__submit-btn` 규칙은
          이 저장소 DOM 에 존재하지 않는 클래스를 겨냥하고 있어 죽어 있다.
          JSX 에 그 클래스를 달면 살아나지만, 여기서는 실제로 렌더되는
          선택자를 직접 겨냥해 CSS 만으로 해결한다.
   ------------------------------------------------------------ */
.sign-up-form__confirm {
  margin-top: 30px;
}

.sign-up-form__confirm button {
  height: 52px;
  border-radius: var(--sc-rm);
  font-family: inherit;
  font-size: 15.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  transition: filter 0.15s var(--sc-ease);
}

.sign-up-form__confirm button:hover {
  filter: brightness(1.08);
}

.sign-up-form__confirm button:active {
  filter: brightness(0.96);
}

.sign-up-form__confirm button:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}


/* ============================================================
   6. /sign-up-confirm — 가입 완료 (src/pages/SignUpConfirm/)
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] 140px 회색 체크를 브랜드 tint 원판 안의 파란 체크로.
   [왜]   SignUpConfirm.jsx 는 `<IconSVG name="check" strokeWidth={5}
          stroke="var(--blue-gray-color)" />` 를 쓰고, 패키지가
          `.sign-up-confirm__icon-check{width:140px;height:140px}` 를 준다.
          `--blue-gray-color` 는 tokens.css 에서 --sc-ink-3(짙은 회색)이다.
          → **가입 완료라는 브랜드 순간에 브랜드 컬러가 한 톨도 없고**,
          140px 짜리 무채색 체크만 덩그러니 놓인다.
   [어떻게] IconSVG 는 stroke/fill 을 SVG **표현 속성**으로 심는다.
          표현 속성은 CSS 보다 우선순위가 낮으므로 인라인 스타일과 달리
          CSS 로 이길 수 있다. JSX 수정 없이 색을 바꿀 수 있는 이유다.
   [크기] `<svg>` 에 width 속성이 없어 컨테이너를 100% 채운다.
          그래서 **컨테이너 크기로 제어**한다(이미지에 max-width 를 걸지
          않는 것과 같은 원칙).
   ------------------------------------------------------------ */
.sign-up-confirm__icon-check {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 84px;
  height: 84px;
  border-radius: 50%;
  background-color: var(--sc-tint);
  margin-bottom: 22px;
}

.sign-up-confirm__icon-check svg {
  width: 38px;
  height: 38px;
  /* check 아이콘 path 는 열린 꺾은선(M62 25 34.5 55 18 37)인데
     IconSVG 가 fill="#fff" 를 기본으로 준다. tint 면 위에 올리면
     흰 삼각 덩어리가 비쳐 보이므로 채움을 없앤다. */
  fill: none;
  stroke: var(--sc-blue);
  stroke-linecap: round;
}

.sign-up-confirm__icon-check svg path {
  stroke: var(--sc-blue);
}

/* ------------------------------------------------------------
   [무엇] 완료 문구 조판.
   [왜]   `.sign-up-confirm__notice-confirm{font-size:1.714rem}`(24px)이
          body 의 line-height:1 을 그대로 상속한다. 굵기 지정도 없어
          24px 보통 굵기로 뜬다 — 축하 문구인데 무게가 없다.
   [line-height] 전역이 아니라 이 두 선택자에만 준다.
   ------------------------------------------------------------ */
.sign-up-confirm__notice-confirm {
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.03em;
  color: var(--sc-black);
  text-align: center;
}

.sign-up-confirm__notice-description {
  margin-top: 12px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--sc-gray);
}

/* ------------------------------------------------------------
   [무엇] 하단 두 버튼 — 클릭 영역 버그를 고치고 주요 동작을 파랑으로.
   [왜①] ★ 실사용 결함. 패키지가
          `.sign-up-confirm__nav li{padding:1.14rem 3.28rem}` 로
          **`<li>` 에 패딩을 주는데 링크는 `<a>`(인라인)** 이다.
          → 버튼처럼 보이는 여백을 눌러도 아무 일도 일어나지 않는다.
          글자 위를 정확히 눌러야만 이동한다.
          패딩을 `<a>` 로 옮겨 면 전체를 클릭 영역으로 만든다.
   [왜②] 주요 동작인 '로그인'이 `--blue-gray-color`(=--sc-ink-3)
          짙은 회색이다. 프로토타입에서 주요 CTA 는 항상 브랜드 파랑이다.
   [왜③] 모서리 0 이고 좌우 패딩이 46px 고정이라 좁은 화면에서 두 버튼
          폭이 어긋난다. 1:1 그리드로 안정시킨다.
   ------------------------------------------------------------ */
.sign-up-confirm__nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  width: 100%;
  max-width: 360px;
  margin-top: 28px;
}

.sign-up-confirm__nav li {
  padding: 0;
  border-radius: var(--sc-rm);
  font-size: 15px;
  font-weight: 600;
  transition: filter 0.15s var(--sc-ease), background-color 0.15s var(--sc-ease);
}

/* 클릭 영역 = 버튼 면. 여백을 <a> 가 갖는다. */
.sign-up-confirm__nav li a {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  padding: 0 12px;
  color: inherit;
}

.sign-up-confirm__nav-home {
  border-color: var(--sc-line);
}

.sign-up-confirm__nav-home:hover {
  background-color: var(--sc-off);
}

/* 주요 동작 — 브랜드 파랑 채움 */
.sign-up-confirm__nav-sign-in {
  background-color: var(--sc-blue);
  border-color: var(--sc-blue);
}

.sign-up-confirm__nav-sign-in:hover {
  filter: brightness(1.08);
}

.sign-up-confirm__nav li a:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
  border-radius: var(--sc-rm);
}


/* ============================================================
   토큰을 쓰지 않은 값 — 근거
   ------------------------------------------------------------
   1) 폰트 크기 · 여백 px
      tokens.css 에 타이포 스케일/스페이싱 토큰이 없다. overrides.css 도
      같은 이유로 raw px 를 쓴다(.product-section__title 등). 값은
      docs/prototype/auth.html 원본에서 그대로 가져왔다.
   2) 체크박스 모서리 6px
      프로토타입 `.chk .box{border-radius:6px}` 값. --sc-rs(8px)는 19px
      상자에 비해 과하게 둥글다. 모서리 토큰의 중간값이 없어 원본 유지.
   3) 카드 그림자 rgba(17,17,19,.05)
      그림자 토큰이 없다. 프로토타입 `.card` 값이며, overrides.css 의
      `.modal__box` 도 같은 방식으로 raw rgba 를 쓴다.
   4) 소셜 버튼 브랜드 색
      카카오/네이버/라인/애플 색은 각 사 규정이라 의도적으로 두었다.
   ============================================================ */

@charset 'utf-8';

/* ============================================================
   계정찾기 · 비밀번호 — /find-id · /find-password · /change-password
   ------------------------------------------------------------
   성격: overrides 계층. @shopby 패키지 클래스를 직접 겨냥한다.
   로드 위치: overrides.css 뒤 (index.js 순서 기준 마지막).
   → 패키지와 특이성이 같으면 이 파일이 이긴다. `!important` 불필요.

   ★ 이 파일이 손대는 범위 (다른 담당자와 겹치지 않게 명시)
     - .find-id* / .find-password* / .change-password* 전용
     - 그 안에서만 .text-field / .select-box / .btn / .tabs 를 건드린다.
       (전역 .text-field·.btn·.tabs 는 overrides.css 담당 — 다시 쓰지 않는다)
     - .title-modal / .portal / .dim 은 **건드리지 않는다.** 세 페이지의
       결과화면이 모두 FullModal 안이지만, 모달 껍데기는 스킨 전역
       공유물이라 여기서 손대면 다른 화면까지 흔들린다.

   ★ 근거가 되는 패키지 소스
     @shopby/shared/dist/styles/aurora.css     (페이지 전용 규칙)
     @shopby/shared/dist/styles/component.css  (.tabs .text-field .select-box)
     @shopby/react-components .../modal/Portal/Portal.js  (모달 = createPortal)

   ★ 루트 폰트크기 주의
     common.css 가 `html{font-size:87.5%}` + `@media(min-width:450px){100%}`
     로 rem 기준을 화면폭에 따라 14px↔16px 로 바꾼다. 패키지가 쓴
     `1.6428rem` 같은 값이 23px↔26px 로 널뛴다는 뜻이다.
     그래서 이 파일은 rem 을 쓰지 않고 px 로 못 박는다.
   ============================================================ */

/* ------------------------------------------------------------
   1. 카드 면 (데스크톱 전용)

   무엇을: 세 페이지 본문(.find-id/.find-password/.change-password)에
           흰 면 + 옅은 테두리 + 둥근 모서리를 준다.
   왜: 패키지 기본은 `margin-top:30px; padding:0 20px` 뿐이라 폼이
       허공에 떠 있다. 프로토타입(docs/prototype/auth.html .card)은
       420px 카드다. layout.css 가 이미 이 라우트들을 narrow(560px)로
       잡아두었으니, 여기서는 '면'만 얹으면 카드가 완성된다.

   ⚠️ 모바일(1000px 이하)은 손대지 않는다. 프로토타입도 480px 이하에서
      카드 장식을 걷어내고 전체폭으로 떨어뜨린다 → Aurora 기본과 동일.
   ⚠️ 그림자 색만 raw rgba 다. 그림자 토큰이 없어서이며,
      overrides.css `.modal__box` 도 같은 방식을 쓴다(선례 있음).
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .find-id,
  .find-password,
  .change-password {
    margin-top: 0;
    padding: 32px 28px 28px;
    background-color: var(--sc-white);
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
    box-shadow: 0 6px 30px rgba(17, 17, 19, 0.05);
  }
}

/* ------------------------------------------------------------
   2. 페이지 타이틀

   무엇을: 세 페이지의 본문 타이틀 조판을 하나로 통일한다.
   왜: 지금은 셋이 제각각이다 —
       .find-id__tit        26px, 좌측
       .find-password__tit  26px, 좌측
       .change-password__tit 21px, **가운데 정렬**
       같은 흐름(아이디찾기→비밀번호찾기→비밀번호변경)을 지나가는데
       정렬이 중간에 바뀐다. 좌측 정렬로 맞춘다.
   왜 line-height 를 여기서 주나: body 가 `font:14px/1` 이라 전역
       line-height 가 1 이다. 타이틀이 두 줄로 넘어가면 글자가 붙는다.
       전역으로 바꾸면 패키지 조판이 전부 밀리므로(DESIGN.md 함정노트)
       이렇게 필요한 요소에만 준다.
   ------------------------------------------------------------ */
.find-id__tit,
.find-password__tit,
.change-password__tit {
  margin-bottom: 20px;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.3;
  text-align: left;
  color: var(--sc-black);
}

/* 타이틀이 아래 여백을 갖게 됐으니 패키지의 27px/30px 는 걷어낸다.
   (.find-id .tabs / .change-password-form 은 패키지가 준 간격) */
.find-id .tabs,
.find-password .tabs {
  margin-top: 0;
}

.change-password-form {
  margin-top: 0;
}

/* ------------------------------------------------------------
   3. 탭 — 회색 '폴더탭'을 스킨 표준 밑줄탭으로 되돌린다

   무엇을: .find-id / .find-password 두 페이지에만 걸려 있는
           회색 채움 탭(#f8f8f8 배경 + 상단 테두리)을 지우고,
           스킨의 다른 탭(상품상세·마이페이지)과 같은
           '밑줄 + 브랜드 컬러' 로 맞춘다.
   왜 그 클래스인가: aurora.css 가 `.find-id .tabs__item`(특이성 0,2,0)
           으로 전역 `.tabs__item`(0,1,0)을 눌러버려서, overrides.css 의
           탭 규칙이 이 두 페이지에만 안 닿는다. 같은 깊이로 겨눠야 한다.

   ★ 진짜 버그: `.find-id .tabs__item button{color:#40434a}` 가
     활성 색을 먹어버린다. 활성 표시는 li 의 color(--point-color)로
     오는데, 그 안의 button 에 색이 직접 박혀 있어 상속이 끊긴다.
     → 지금 화면에서 **선택된 탭과 안 선택된 탭의 글자색이 똑같다.**
     button 을 inherit 로 되돌려 li 의 상태색이 내려오게 한다.

   비활성 라벨은 --gray-color(#a1a1aa) 대신 --sc-gray(#71717a)로
   li 에 직접 준다. 흰 배경에서 명도대비가 2.3:1 → 4.8:1 로 올라간다.
   ------------------------------------------------------------ */
.find-id .tabs__item,
.find-password .tabs__item {
  background-color: transparent;
  border-top: none;
  border-bottom: 1px solid var(--sc-line);
  color: var(--sc-gray);
}

.find-id .tabs__item.on,
.find-password .tabs__item.on {
  background-color: transparent;
  border-top: none;
  border-bottom: 2px solid var(--sc-blue);
  color: var(--sc-blue);
}

/* 색·굵기는 li 에서 상속받게 한다 (위 ★ 참고) */
.find-id .tabs__item button,
.find-password .tabs__item button {
  color: inherit;
  font-weight: inherit;
  font-size: 14px;
}

/* ------------------------------------------------------------
   4. 입력 필드 — 포커스 링 복구 + 높이 통일

   ★ 지금 상태의 버그: aurora.css 의
       `.find-id-form__input-wrap .text-field{border:none}`
       `.find-password-form__input-wrap .text-field{border:none}`
     가 (0,2,0)이라, overrides.css 의 `.text-field{border:1px solid
     transparent}`(0,1,0)을 이긴다. border-style 이 none 이 되면
     `:focus-within{border-color:...}` 로는 선이 그려지지 않는다.
     → **두 페이지의 입력창은 포커스해도 브랜드 링이 안 뜬다.**
     같은 깊이로 겨눠 투명 테두리를 되살린다.

   높이: 패키지가 input 을 47px 로 두는데 프로토타입 폼은 48px 이고,
     아래 6번의 셀렉트(패딩 계산상 51px)와도 어긋난다. 48px 로 못 박는다.
     `.find-id-form__input-wrap input`(0,1,1)보다 깊게 겨눠야 이긴다.
   배경색은 overrides.css `.text-field` 가 이미 --sc-off 로 잡아뒀다.
     여기서 다시 쓰지 않는다.
   ------------------------------------------------------------ */
.find-id-form__input-wrap .text-field,
.find-password-form__input-wrap .text-field {
  border: 1px solid transparent;
}

.find-id-form__input-wrap .text-field:focus-within,
.find-password-form__input-wrap .text-field:focus-within {
  border-color: var(--sc-blue);
}

.find-id-form__input-wrap .text-field,
.find-password-form__input-wrap .text-field,
.change-password-form__input-wrap .text-field,
.find-password-authentication__input-wrap .text-field {
  height: 48px;
}

.find-id-form__input-wrap .text-field input,
.find-password-form__input-wrap .text-field input,
.change-password-form__input-wrap .text-field input,
.find-password-authentication__input-wrap .text-field input {
  height: 48px;
  padding: 0 14px;
  font-size: 14.5px;
}

/* 필드 사이 간격: 아이디찾기 8px / 비밀번호변경 12px 로 갈렸다 → 12px.
   패키지 선택자가 (0,3,0)이라 같은 깊이로 맞춘다. */
.find-id-form .find-id-form__item + .find-id-form__item {
  margin-top: 12px;
}

/* ------------------------------------------------------------
   5. 셀렉트 (이메일 도메인 · 통신사)

   무엇을: 아이디찾기 폼의 SelectBox 에 필드와 같은 모양을 준다.
   왜 그 클래스인가: 패키지 SelectBox 가 뱉는 클래스는 `.select-box`
       인데(SelectBox.js: `<span class="select-box">`), overrides.css 는
       `.select-field` 를 겨냥한다. `.select-field` 는 배송지 국가코드
       처럼 로컬 JSX 가 직접 붙이는 클래스라 **여기엔 안 닿는다.**
       그래서 이 폼의 셀렉트만 모서리 없는 회색 박스로 남아 있다.
       (전역 `.select-box` 를 건드리면 주문·클레임까지 번지므로
        아이디찾기 폼 안으로 범위를 묶는다)
   ------------------------------------------------------------ */
.find-id-form__input-wrap .select-box {
  height: 48px;
  border: 1px solid var(--sc-line);
  border-radius: var(--sc-rm);
  background-color: var(--sc-white);
  overflow: hidden; /* 둥근 모서리 밖으로 select 가 새지 않게 */
  transition: border-color 0.15s var(--sc-ease);
}

.find-id-form__input-wrap .select-box:focus-within {
  border-color: var(--sc-blue);
}

/* 패키지가 `.find-id-form__input-wrap select` 로 padding:17px 을 박아
   높이가 51px 이 된다 → 한 칸 더 깊게 겨눠 48px 로 맞춘다.
   오른쪽 여백 36px 은 `.select-box::after` 화살표(right:10px) 자리. */
.find-id-form__input-wrap .select-box select {
  height: 48px;
  padding: 0 36px 0 14px;
  background-color: transparent;
  font-size: 14.5px;
  color: var(--sc-black);
}

/* ------------------------------------------------------------
   6. 휴대폰번호 입력 — 한 줄 정렬

   무엇을: 통신사 셀렉트(51px)와 번호 입력(47px)의 높이를 48px 로 맞추고,
           사이의 하이픈 막대를 검정에서 선 색으로 낮춘다.
   왜: 지금은 셀렉트만 4px 커서 세 칸이 같은 줄에서 어긋난다.
       하이픈은 `border-top:1px solid var(--black-color)` 라 순검정이다.
   ------------------------------------------------------------ */
.find-id-form__input-wrap .phone-number-input {
  gap: 2px;
}

.find-id-form__input-wrap .phone-number-input .select-box,
.find-id-form__input-wrap .phone-number-input .text-field {
  height: 48px;
}

.find-id-form__input-wrap .phone-number-input__bar {
  border-top-color: var(--sc-line-2);
}

/* ------------------------------------------------------------
   7. 오류 문구

   무엇을: "회원정보를 찾을 수 없습니다." 위아래 여백을 줄이고
           입력값 옆에서 읽히도록 왼쪽 정렬 + 본문 크기로 낮춘다.
   왜: 패키지는 `margin-top:30px; text-align:center; font-size:1rem`
       (450px 이상에서 16px)이라, 필드 → 30px 공백 → 큰 빨강 문장 →
       30px 공백 → 버튼 순으로 폼이 두 동강 난다.
   ⚠️ 색은 손대지 않는다. --caution-color 는 tokens.css 에서 이미
      --sc-danger 로 매핑돼 있고, 경고는 의미색이라 브랜드색으로
      덮으면 안 된다(DESIGN.md §5).
   ------------------------------------------------------------ */
.find-id-form__caution,
.find-password-form__caution {
  margin-top: 12px;
  font-size: 13.5px;
  line-height: 1.5;
  text-align: left;
}

/* 비밀번호 변경/인증의 안내문은 항상 렌더되고 값이 없을 때만 비어 있다
   (ChangePasswordContent.jsx L102 · FindPasswordAuthentication.jsx L90).
   빈 <p> 가 margin 만 남겨 유령 간격을 만든다 → 비었을 때 접는다. */
.change-password-form__caution,
.find-password-authentication__caution {
  font-size: 13.5px;
  line-height: 1.5;
}

.change-password-form__caution:empty,
.find-password-authentication__caution:empty {
  margin-top: 0;
}

/* ------------------------------------------------------------
   8. 주요 버튼 — 모서리와 높이

   무엇을: 세 폼의 CTA 를 프로토타입 모양(12px 모서리 · 50px)으로.
   왜 그 클래스인가: aurora.css 가 `.find-id-form__btn-wrap button`
       (0,1,1) 로 `border-radius:0` 을 박아, overrides.css 의
       `.btn{border-radius:var(--sc-rm)}`(0,1,0)를 이겨버린다.
       → **이 세 페이지의 CTA 만 아직 각져 있다.** `.btn` 을 한 단계
       깊게(0,2,0) 겨눠야 둥글어진다.
   색은 건드리지 않는다 — overrides.css 의 `주요 동작 승격` 블록이
       이미 파랑 채움을 준다.
   ------------------------------------------------------------ */
.find-id-form__btn-wrap .btn,
.find-password-form__btn-wrap .btn,
.change-password-form__btn-wrap .btn {
  height: 50px;
  border-radius: var(--sc-rm);
  font-size: 15px;
}

.find-id-form__btn-wrap,
.find-password-form__btn-wrap,
.change-password-form__btn-wrap {
  margin-top: 22px;
}

/* ------------------------------------------------------------
   9. 비밀번호 찾기 — 버튼 줄의 위계

   무엇을: '아이디 찾기' 링크를 조용한 텍스트 링크로 낮추고,
           '비밀번호 찾기' CTA 가 남는 폭을 채우게 한다.
   왜: 지금은 링크와 CTA 가 나란히 각각 40% 폭에 테두리를 두르고 있어
       (a=검정 테두리, button=파랑 테두리) 무게가 같고, 가운데 20% 가
       그냥 빈다. 이 화면의 주 동작은 하나뿐이다.
   ------------------------------------------------------------ */
.find-password-form__btn-wrap {
  gap: 14px;
}

.find-password-form__btn-wrap a {
  width: auto;
  height: 50px;
  padding: 0 4px;
  border: none;
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  color: var(--sc-gray);
  transition: color 0.15s var(--sc-ease);
}

.find-password-form__btn-wrap a:hover {
  color: var(--sc-blue);
}

.find-password-form__btn-wrap .btn {
  width: auto;
  flex: 1;
}

/* ============================================================
   여기부터는 FullModal 안에서 그려지는 세 화면이다.

   ⚠️ 중요: CustomModal 은 createPortal 로 <body> 끝에 붙는다
      (react-components .../modal/Portal/Portal.js).
      즉 이 DOM 은 `.find-id` / `.find-password` **바깥**이다.
      → overrides.css 의 `.find-password .btn--default { 파랑 채움 }`
        같은 페이지 스코프 승격이 여기엔 절대 안 닿는다.
      아래 규칙들은 그 사각지대를 메우는 것이지 중복이 아니다.
   ============================================================ */

/* ------------------------------------------------------------
   10. 아이디 찾기 결과

   무엇을: 찾은 아이디를 브랜드 틴트 면에 얹어 이 화면의 주인공으로
           만들고, 아래 두 링크에 위계를 준다(로그인=주요).
   왜: 지금은 아이디가 #f8f8f8 회색 띠에 검정 글자로 얹혀 있어
       주변 안내문과 무게가 같다. 링크 둘은 각각 40% 폭 각진 상자라
       역시 구분이 없다.
   부수 수정
     - height:80vh → auto. 콘텐츠 높이를 뷰포트로 못 박을 이유가 없고,
       모달 콘텐츠가 이미 calc(100dvh - 60px) 로 스크롤을 갖는다.
     - padding 0 10px → 좌우 24px. 모달 폭 500px 에서 10px 은 너무 붙는다.
     - line-height:3rem(=48px)가 height:44px 상자 안에 있어 4px 어긋난다.
   ------------------------------------------------------------ */
.find-id-result {
  height: auto;
  margin-top: 24px;
  padding: 0 24px 32px;
}

.find-id-result__tit {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--sc-ink-3);
}

.find-id-result__id-text {
  margin-top: 14px;
  padding: 18px 16px;
  border-radius: var(--sc-rm);
  background-color: var(--sc-tint);
  color: var(--sc-blue);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.4;
  word-break: break-all; /* 아이디가 긴 이메일일 수 있다 */
}

/* '(휴면)' 표시. 휴면이 아니면 빈 span 이라 여백만 남는다 → 접는다. */
.find-id-result__dormant-text {
  font-size: 13px;
  font-weight: 600;
  color: var(--sc-gray);
}

.find-id-result__dormant-text:empty {
  margin-left: 0;
}

.find-id-result__link-wrap {
  margin-top: 28px;
  gap: 10px;
}

.find-id-result__link {
  flex: 1;
  width: auto;
  height: 50px;
  line-height: 50px;
  border-radius: var(--sc-rm);
  font-size: 15px;
  font-weight: 700;
  transition: background-color 0.15s var(--sc-ease), filter 0.15s var(--sc-ease);
}

/* 보조 */
.find-id-result__link--password {
  border: 1px solid var(--sc-line);
  color: var(--sc-black);
}

.find-id-result__link--password:hover {
  background-color: var(--sc-off);
}

/* 주요 */
.find-id-result__link--login {
  border: 1px solid var(--sc-blue);
  background-color: var(--sc-blue);
  color: var(--sc-white);
}

.find-id-result__link--login:hover {
  filter: brightness(1.08);
}

/* ------------------------------------------------------------
   11. 비밀번호 찾기 — 인증번호 입력

   무엇을: '확인/재인증' 버튼을 주요 동작(파랑 채움 · 둥근 모서리)으로,
           유효시간 타이머를 읽히는 보조 정보로 정리한다.
   왜: 패키지는 이 버튼에 `border:1px solid var(--black-color);
       border-radius:0` 을 준다 → 흰 바탕 검정 테두리 각진 상자.
       이 화면의 유일한 진행 버튼인데 취소 버튼처럼 보인다.
       위 ⚠️ 대로 포털 밖 승격 규칙이 닿지 않으므로 여기서 직접 준다.
   ------------------------------------------------------------ */
.find-password-authentication {
  height: auto;
  margin-top: 24px;
  padding: 0 24px 32px;
}

.find-password-authentication__tit {
  font-size: 16px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--sc-black);
}

.find-password-authentication__input-wrap {
  margin-top: 16px;
}

.find-password-authentication .timer {
  margin-top: 10px;
  font-size: 12.5px;
  color: var(--sc-gray);
}

/* 남은 시간 숫자만 또렷하게 (Timer.jsx: .count-down > span) */
.find-password-authentication .timer .count-down span {
  font-weight: 700;
  color: var(--sc-black);
}

.find-password-authentication__btn-wrap {
  margin-top: 20px;
}

.find-password-authentication__btn-wrap .btn {
  height: 50px;
  border: 1px solid var(--sc-blue);
  border-radius: var(--sc-rm);
  background-color: var(--sc-blue);
  color: var(--sc-white);
  font-size: 15px;
}

.find-password-authentication__btn-wrap .btn:hover {
  filter: brightness(1.08);
}

/* ------------------------------------------------------------
   12. 비밀번호 변경 완료

   무엇을: '로그인' 링크를 폭 100% 주요 버튼으로 올리고 좌우 여백을 준다.
   왜: 지금은 폭 80% 검정 테두리 상자다. 변경이 끝난 뒤 유일한 다음
       걸음인데 시각적으로 가장 약하다. 여기도 포털 밖이라 overrides 의
       승격이 닿지 않는다.
       또 이 블록엔 좌우 padding 이 없어 문구가 모달 벽에 붙는다.
   ------------------------------------------------------------ */
.change-password-confirm {
  margin-top: 24px;
  padding: 0 24px 32px;
}

.change-password-confirm__tit {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--sc-black);
}

.change-password-confirm__link-wrap {
  margin-top: 24px;
}

.change-password-confirm__link-wrap a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 50px;
  padding: 0;
  border: 1px solid var(--sc-blue);
  border-radius: var(--sc-rm);
  background-color: var(--sc-blue);
  color: var(--sc-white);
  font-size: 15px;
  font-weight: 700;
  transition: filter 0.15s var(--sc-ease);
}

.change-password-confirm__link-wrap a:hover {
  filter: brightness(1.08);
}

/* ------------------------------------------------------------
   13. 키보드 포커스

   무엇을: 이 세 페이지의 조작 요소에 포커스 링을 준다.
   왜: common.css 의 `*{all:unset}` 리셋이 브라우저 기본 outline 까지
       지운다. base.css 는 `.sc-btn` 에만 링을 달아뒀는데, 여기 버튼들은
       전부 패키지 컴포넌트(.btn / a)라 해당이 없다.
       값은 base.css `.sc-btn:focus-visible` 과 같은 규격으로 맞춘다.
   ------------------------------------------------------------ */
.find-id .tabs__item button:focus-visible,
.find-password .tabs__item button:focus-visible,
.find-id-form__btn-wrap .btn:focus-visible,
.find-password-form__btn-wrap a:focus-visible,
.find-password-form__btn-wrap .btn:focus-visible,
.change-password-form__btn-wrap .btn:focus-visible,
.find-password-authentication__btn-wrap .btn:focus-visible,
.find-id-result__link:focus-visible,
.change-password-confirm__link-wrap a:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}

@charset 'utf-8';

/* ============================================================
   게이트 · 에러 페이지 — 선데이클럽 오버라이드
   ------------------------------------------------------------
   대상 라우트 6개
     /not-found  /service-check  /expired-mall
     /member-only  /no-access  /adult-certification

   ★ 이 파일은 overrides 성격이다. 전부 @shopby 패키지 클래스를
     겨냥한다 — 이 여섯 페이지의 JSX 는 전부 패키지가 정한
     className 만 쓰고 sc- 마크업이 하나도 없기 때문이다.
     각 블록마다 "왜 이 클래스인지"를 남겼다.

   ★ 오버라이드 3원칙(docs/DESIGN.md §2)을 그대로 따른다.
     !important 없음. 패키지 CSS 뒤에 실리므로 동일 특이성이면 이긴다.

   ------------------------------------------------------------
   먼저 알아야 할 사실 두 가지 (이 파일의 모든 결정 근거)
   ------------------------------------------------------------
   ① 여섯 중 넷은 셸 밖에서 렌더된다.
      src/router/index.js 에서 /not-found · /no-access ·
      /service-check · /expired-mall 는 <Layout/> 의 children 이
      아니라 **최상위 라우트**다. 즉 이 네 페이지에는
        - 헤더 · 푸터 · 탭바가 없고
        - .page__content(흰 면, max-width:500px) 도 없고
        - .l-content[data-content-width] 도 붙지 않는다.
      → src/constants/layout.js 에 이 넷을 NARROW 로 등록해 뒀지만
        **그 선언은 도달하지 않는다.** 폭·면·중앙정렬을 여기서
        직접 줘야 한다. (§1)

   ② 패키지가 rem 을 쓰는데 rem 기준이 450px 에서 점프한다.
      common.css: html{font-size:87.5%} + @media(min-width:450px)
      {html{font-size:100%}} → 449px 까지 14px, 450px 부터 16px.
      그래서 이 페이지들의 본문이 450px 이상에서 20~23px 로 뛴다
      (.not-found p = 1.4285714286rem = 22.9px).
      스킨의 나머지 본문은 14~15px 다. px 로 다시 잡는다.
   ============================================================ */

/* ============================================================
   1. 셸 밖 4페이지 — 면과 폭을 직접 준다
   ------------------------------------------------------------
   무엇을: .not-found / .no-access / .service-check /
           .expired-mall 네 페이지 루트에 Aurora 셸과 같은
           "흰 기둥"(폭 500 · 중앙 · 화면 높이)을 만든다.
   왜: 위 ①대로 이 넷은 .page__content 밖이라 지금 회색 body
       (--background-color = --sc-off) 위에 텍스트만 떠 있다.
       나머지 45개 페이지는 전부 흰 면 위라 혼자 다른 세계로 보인다.
       패키지 .page__content{margin:0 auto;max-width:500px;
       min-height:100vh} + .page__content.site{background:#fff}
       와 같은 값을 그대로 재현해 셸과 어긋나지 않게 한다.

   ⚠️ padding 은 여기서 주지 않는다. .expired-mall 안에 폭 380px
      고정 <img> 가 있어서 좌우 padding 을 주면 375px 화면에서
      가로 스크롤이 생긴다. 이미지에 max-width 를 걸어 해결하는
      길은 막혀 있으므로(DESIGN.md 함정 노트), 각 페이지에서
      **텍스트에만** 여백을 준다. (§5)
   ------------------------------------------------------------ */
.not-found,
.no-access,
.service-check,
.expired-mall {
  width: 100%;
  max-width: 500px;
  margin: 0 auto;

  /* 100vh 는 모바일 주소창 때문에 실제보다 크다.
     svh 를 지원하면 그쪽을 쓰고, 아니면 100vh 로 떨어진다. */
  min-height: 100vh;
  min-height: 100svh;

  background-color: var(--sc-white);
  color: var(--sc-black);
}

/* ============================================================
   2. /not-found — 페이지를 못 찾음
   ------------------------------------------------------------
   패키지 원본:
     .not-found{display:flex;flex-direction:column;
       justify-content:center;align-items:center;
       margin-top:12.8571428571rem;padding:20px}
     .not-found p{margin-bottom:1.4285714286rem;font-size:1.4285714286rem}
     .not-found__title{font-size:2.4285714286rem !important;font-weight:600}
     .not-found__btns button{height:4.2857142857rem;width:35%}
   ============================================================ */

/* 무엇을: margin-top 을 걷어내고 padding 으로 바꾼다.
   왜: 12.857rem = 450px 이상에서 **205px**. 이미 flex 세로
       중앙정렬이 걸려 있는데 거기에 205px 를 더 밀어 넣어서
       짧은 화면에서는 첫 화면에 제목이 안 들어온다.
       중앙정렬에 맡기고 위아래로 숨 쉴 여백만 남긴다. */
.not-found {
  margin-top: 0;
  padding: 56px var(--sc-gut);
}

/* 무엇을: 본문 22.9px → 15px, 회색.
   왜: 스킨 본문 기준(overrides.css 의 15px / 14.5px)과 맞춘다.
       line-height 는 여기서만 준다 — 전역 변경 금지(DESIGN.md §5). */
.not-found p {
  margin-bottom: 6px;
  font-size: 15px;
  line-height: 1.65;
  color: var(--sc-gray);
}

/* 무엇을: 제목의 무게·자간·색·아래여백만 손본다.
   왜: font-size 는 손대지 못한다 — .not-found__title 의
       font-size 가 패키지 194KB 안에 11개뿐인 !important 중
       하나다(§0). !important 로 맞불을 놓지 않는다는 게
       이 프로젝트의 1원칙이라 크기는 그대로 두고
       나머지로 브랜드 톤을 맞춘다.
       선택자는 .not-found .not-found__title (0,2,0) —
       위의 .not-found p (0,1,1) 를 이겨야 색이 먹는다. */
.not-found .not-found__title {
  margin-bottom: 14px;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.2;
  color: var(--sc-black);
}

/* 무엇을: 고객센터 번호를 본문 안에서 들어올린다.
   왜: JSX 가 전화번호만 <span> 으로 감싸 놨는데
       (NotFound.jsx: 문의는 <span>{phoneNo}</span>로)
       지금은 주변 문장과 완전히 같아서 감싼 의미가 없다.
       에러 페이지에서 유일하게 행동으로 이어지는 정보다. */
.not-found p > span {
  font-weight: 600;
  color: var(--sc-black);
}

/* 무엇을: 버튼 줄 여백을 좁힌다.
   왜: 3.571rem = 57px. 문단과 버튼 사이가 한 화면을 먹는다. */
.not-found__btns {
  margin-top: 28px;
}

/* 무엇을: width:35% 를 폭 기반 버튼으로 바꾼다.
   왜: 패키지가 .not-found__btns button{width:35%} 로 잡아 놨는데
       부모가 width:100% 라 화면이 넓어질수록 버튼이 같이 커진다.
       셸이 없는 페이지라 상한도 없어서 1440px 화면에서
       504px 짜리 버튼이 된다. 내용 폭 + 최소폭으로 고정한다. */
.not-found__btns button {
  width: auto;
  min-width: 200px;
  height: 52px;
  padding: 0 28px;
  font-size: 15px;
}

/* 무엇을: 이 페이지의 유일한 행동을 브랜드 블루로 승격한다.
   왜: theme="dark" 라 .btn--dark{background:var(--blue-gray-color)}
       = 회색빛 먹색이다. 에러 페이지에서 나가는 문이 하나뿐인데
       그게 보조 버튼처럼 보인다.
       ⚠️ :first-of-type 으로 올리지 않는다(DESIGN.md 함정 노트).
          실제 컨테이너 .not-found__btns 를 겨냥해
          (0,2,0) 으로 .btn--dark (0,1,0) 를 이긴다. */
.not-found__btns .btn--dark {
  background-color: var(--sc-blue);
}

/* overrides.css 의 .btn--dark:hover{filter:brightness(1.4)} 는
   먹색 기준 값이라 파랑에 걸면 하얗게 뜬다.
   주요 CTA(.btn--caution:hover) 와 같은 1.08 로 맞춘다. */
.not-found__btns .btn--dark:hover {
  filter: brightness(1.08);
}

/* ============================================================
   3. /no-access — 서비스 준비중
   ------------------------------------------------------------
   패키지 원본:
     .no-access{display:flex;flex-direction:column;...;
       margin-top:12.8571428571rem;padding:20px}
     .no-access__title{margin-top:4.2857142857rem;font-size:2.4285714286rem}
     .no-access__content{margin-top:1.4285714286rem;line-height:2rem;
       font-size:1.2857142857rem}
   ============================================================ */

/* 무엇을: not-found 와 같은 이유로 margin-top(205px) → padding. */
.no-access {
  margin-top: 0;
  padding: 56px var(--sc-gut);
}

/* 무엇을: 경고 아이콘을 94px → 58.75px 로 줄이고 톤을 낮춘다.
   왜: .ico--exclamation-white-bg 는 sprite.png 를 94px 로 잘라
       쓰는 규칙이라 width/height 만 바꾸면 스프라이트가 잘린다.
       아래 네 값은 패키지가 같은 아이콘을 작게 쓸 때 쓰는 조합
       (.product-board-list .ico--exclamation-white-bg) 을 그대로
       가져온 것이다 — 0.625 배로 position/size 가 전부 맞춰져 있어
       새 숫자를 지어내지 않아도 된다.
       opacity 는 "준비중"이라는 조용한 메시지에 맞춘 것. */
.no-access .ico--exclamation-white-bg {
  width: 58.75px;
  height: 58.75px;
  background-position: -413.75px -27.5px;
  background-size: 570px 314.375px;
  opacity: 0.7;
}

/* 무엇을: 제목 38.9px → 반응형 24~28px, 아이콘과의 간격 68px → 24px.
   왜: 4.2857rem(68.6px) 은 아이콘과 제목을 서로 다른 블록처럼
       떼어 놓는다. 크기는 overrides.css 의
       .product-section__title clamp() 와 같은 방식으로 잡아
       스킨 전체의 제목 스케일과 어긋나지 않게 한다. */
.no-access__title {
  margin-top: 24px;
  font-size: clamp(24px, 3vw, 28px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.25;
  color: var(--sc-black);
}

/* 무엇을: 본문 20.6px → 15px, 고정 line-height:2rem(32px) → 1.7. */
.no-access__content {
  margin-top: 12px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--sc-gray);
}

/* ============================================================
   4. /service-check — 서비스 점검중
   ------------------------------------------------------------
   여섯 중 브랜드 이탈이 가장 심한 페이지다. 패키지 원본:
     .service-check{margin-top:56px;
       font-family:"NanumBarunGothic",sans-serif;
       background:url("https://rlyfaazj0.toastcdn.net/error/
         vis_500_error.png") center top no-repeat;
       padding-top:337px}
     @media(max-width:720px){.service-check{
       background-image:url(".../vis_m_500_error.png");
       padding-top:216px}}
     .service-check p{color:#727171}
     .service-check p:first-child{font-family:나눔스퀘어,...;color:#000}
   → 외부 CDN(toastcdn) 의 NHN 500 에러 일러스트 + 나눔 계열 폰트다.
   ★ font-family 는 base.css 가 이미 var(--sc-font) 로 덮었다.
     여기서 다시 쓰지 않는다.
   ============================================================ */

/* 무엇을: 외부 CDN 배경 이미지와 그 자리를 비워 둔 padding 을 걷어낸다.
   왜: (1) 남의 브랜드 자산이다 — 선데이클럽 점검 화면에 NHN
           일러스트가 뜬다.
       (2) 우리가 통제하지 못하는 원격 호스트다. 그 CDN 이 죽으면
           337px(모바일 216px) 짜리 빈 구멍만 남는다. 하필
           "서비스가 안 되는 상황"에 뜨는 페이지다.
       모바일 블록의 padding-top:216px 도 같이 무효화된다 —
       미디어쿼리는 특이성을 올리지 않고 이 시트가 더 뒤에 있다. */
.service-check {
  margin-top: 0;
  padding: 88px var(--sc-gut) 64px;
  background-image: none;
}

/* 무엇을: 본문 색을 토큰으로, 고정 36px 행간을 비율로.
   왜: #727171 은 하드코딩 회색이고 --sc-gray(#71717a) 와
       사실상 같은 값이다. 토큰으로 옮겨 두면 색을 한 곳에서 돈다.
       line-height:36px 은 폰트 크기를 바꾸면 같이 깨진다. */
.service-check p {
  font-size: 15px;
  line-height: 1.7;
  color: var(--sc-gray);
}

/* 무엇을: 첫 문단(=사실상 제목)의 색·자간·간격.
   왜: 패키지가 이 문단만 26px/700/#000 으로 제목처럼 쓴다.
       색만 토큰으로 옮기고 자간을 스킨 제목과 맞춘다. */
.service-check p:first-child {
  margin-bottom: 14px;
  font-size: clamp(22px, 2.8vw, 26px);
  letter-spacing: -0.03em;
  line-height: 1.3;
  color: var(--sc-black);
}

/* ============================================================
   5. /expired-mall — 접근이 제한된 쇼핑몰
   ------------------------------------------------------------
   패키지 원본:
     .expired-mall{margin-top:-56px;display:flex;...;height:100vh}
     .expired-mall p{font-size:26px;line-height:38px;color:#111}
     .expired-mall em{color:red}
   ============================================================ */

/* 무엇을: 유령 헤더 보정(margin-top:-56px)과 height:100vh 를 없앤다.
   왜: -56px 은 56px 짜리 헤더가 있다고 가정한 값인데 이 라우트는
       셸 밖이라 헤더가 없다(§0 ①). 그래서 내용이 화면 중앙보다
       56px 위로 밀려 있다.
       height(고정) 대신 §1 의 min-height 를 쓰게 두면 내용이
       길어져도 잘리지 않는다.
   ⚠️ 좌우 padding 은 주지 않는다 — 안에 width=380 고정 <img> 가
      있어서 375px 화면에서 가로 스크롤이 생긴다.
      이미지에 max-width 를 거는 길은 막혀 있으므로(DESIGN.md)
      여백은 아래 문단에만 준다. */
.expired-mall {
  height: auto;
  margin-top: 0;
  padding: 40px 0;
}

/* 무엇을: 문단에만 좌우 여백 + 색 토큰화.
   왜: 위 이유로 컨테이너에 padding 을 못 주니, 실제로 여백이
       필요한 텍스트에 직접 준다. #111 → --sc-black. */
.expired-mall p {
  margin-top: 8px;
  padding: 0 var(--sc-gut);
  font-size: clamp(20px, 2.8vw, 26px);
  letter-spacing: -0.03em;
  line-height: 1.4;
  color: var(--sc-black);
}

/* 무엇을: 강조어("제한된")의 순색 red 를 의미색 토큰으로.
   왜: color:red 는 하드코딩이고 채도가 너무 높아 문장 안에서
       튄다. --sc-danger(#E5484D) 는 경고 의미를 유지하면서
       스킨의 다른 경고(.caution, --caution-color)와 같은 색이다. */
.expired-mall em {
  color: var(--sc-danger);
  font-weight: 700;
}

/* ============================================================
   6. /member-only — 회원 전용 몰
   ------------------------------------------------------------
   이 페이지는 셸 **안**이다. .l-content[data-content-width='narrow']
   가 붙어 데스크톱에서 560px 로 잡힌다(layout.css).
   패키지가 가진 규칙은 .member-only__text 하나뿐이고
   .member-only 컨테이너에는 아무 규칙이 없다.
   그 아래는 SignInForm 이 그대로 들어온다(<section class="sign-in">,
   .sign-in{padding:20px}).
   ★ .normal-sign-in .btn--default 브랜드 승격은 overrides.css 에
     이미 있다. 여기서 다시 쓰지 않는다.
   ============================================================ */

/* 무엇을: 안내 문구를 옅은 면 위에 올린 '알림 블록'으로 만든다.
   왜: 지금은 22.9px 짜리 큰 회색 문장이 로그인 폼 바로 위에
       맨몸으로 떠 있어서, "제목"인지 "안내"인지 "폼 레이블"인지
       읽히지 않는다. 면을 주면 '왜 여기로 왔는지'가 폼과 분리된다.
       좌우 margin 20px 은 아래 .sign-in{padding:20px} 과 같은
       세로선을 만들기 위한 값이다 — 컨테이너에 padding 을 주면
       .sign-in 의 20px 과 겹쳐 40px 이 된다.
   ⚠️ 배경에 --sc-tint 를 쓰지 않았다. tint 는 후원 하이라이트
      전용색이라(DESIGN.md §5) 게이트 안내에 재사용하면
      브랜드 신호가 흐려진다. */
.member-only__text {
  margin: 24px 20px 4px;
  padding: 20px;
  border-radius: var(--sc-rl);
  background-color: var(--sc-off);
  font-size: 15px;
  line-height: 1.7;
  color: var(--sc-ink-3);
}

/* ============================================================
   7. /adult-certification — 성인인증
   ------------------------------------------------------------
   이 페이지도 셸 안이고 narrow(560px) 다.
   패키지 원본:
     .adult-certification{padding:20px;text-align:left}
     .adult-certification__title{font-size:2.1428571429rem;
       line-height:2.8571428571rem;font-weight:500}
     .adult-certification__description{font-size:1.1428571429rem;
       line-height:1.8571428571rem}
     .adult-certification__exit-button{border-radius:0;height:60px}
     .adult-certification__certification-btn{height:60px}
     .adult-certification__sign-in-title{font-size:1.1428571429rem}
   ============================================================ */

/* 무엇을: 19+ 배지와 제목 사이 간격.
   왜: .adult-certification__image 는 60x60 배경 아이콘인데
       바로 아래 제목이 20px 밖에 안 떨어져 있어 붙어 보인다.
       (크기 자체는 패키지 값을 유지 — adult.png 가 스프라이트가
        아니라 단일 이미지라 60px 에서 선명하다) */
.adult-certification__image {
  margin-bottom: 4px;
}

/* 무엇을: 제목 34.3px/500 → 반응형 24~28px/700, 자간 조임.
   왜: weight 500 은 스킨의 어떤 제목보다 가볍다
       (.product-section__title = 700). 크기도 560px 폭에서
       두 줄이 화면을 다 먹는다. */
.adult-certification__title {
  margin-top: 16px;
  font-size: clamp(24px, 3vw, 28px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.3;
  color: var(--sc-black);
}

/* 무엇을: 설명문 18.3px → 14.5px.
   왜: 이 문단은 청소년보호법 고지문이라 길다. 18px 로 깔면
       본문이 아니라 또 하나의 제목처럼 보여서 위계가 무너진다.
       색은 패키지가 이미 --gray-font-color(=--sc-gray) 를 쓴다. */
.adult-certification__description {
  margin-top: 12px;
  font-size: 14.5px;
  line-height: 1.75;
}

/* 무엇을: 경고 문장(.caution)에 무게를 준다.
   왜: 패키지 .caution{color:var(--caution-color)} 는 색만 준다.
       고지문 안에서 실제 경고 부분을 색만으로 구분하기엔 약하다.
       색은 tokens.css 가 --caution-color 를 --sc-danger 로
       고정해 뒀으므로 여기서 색을 다시 쓰지 않는다. */
.adult-certification__description .caution {
  font-weight: 600;
}

/* 무엇을: 로그인 패널의 판때기 그림자를 걷어내고 테두리를 토큰으로.
   왜: 패키지 .l-panel 은 box-shadow:0 10px 1px #f5f5f5 —
       흐림 0짜리 회색 띠가 패널 밑에 깔린다. Aurora 특유의
       각진 인상을 만드는 원인이고 선데이클럽 카드와 안 맞는다.
   ⚠️ .l-panel 전역이 아니라 이 페이지의 패널만 겨냥한다.
      .l-panel 은 마이페이지·주문서 등이 공유하는 클래스라
      여기서 손대면 담당 범위를 넘는다. */
.adult-certification__sign-in {
  margin-top: 24px;
  border-color: var(--sc-line);
  box-shadow: none;
}

/* 무엇을: '회원 로그인' 레이블을 섹션 제목답게.
   왜: 18.3px 회색이라 위의 큰 제목과 크기 차이가 거의 없어
       두 개의 제목이 경쟁한다. 작고 진하게 = 하위 레이블. */
.adult-certification__sign-in-title {
  margin: 4px 0 16px;
  font-size: 15px;
  font-weight: 700;
  color: var(--sc-black);
}

/* 무엇을: 버튼 높이 60px → 52px, 16px → 15px.
   왜: 스킨의 다른 CTA(overrides.css 기준 .btn 계열)와 높이를
       맞춘다. 60px 는 이 페이지에서만 큰 슬래브가 된다.
   ⚠️ .adult-certification__certification-btn 은 JSX 에서
      '19세 미만 나가기'(보조)와 '회원 성인인증'(주요)에
      **똑같이** 붙어 있다. CSS 로는 둘을 구분할 수 없으므로
      여기서는 크기만 맞추고 색 위계는 손대지 않는다.
      (:first-of-type / :last-of-type 으로 한쪽만 올리는 건
       DESIGN.md 함정 노트가 금지한 방식이다 — 로그인 분기에서는
       .adult-certification__exit-button 이 유일한 button 이라
       같은 선택자가 보조 버튼을 승격시킨다) */
.adult-certification__certification-btn,
.adult-certification__exit-button {
  height: 52px;
  font-size: 15px;
  font-weight: 600;
}

/* 무엇을: 비로그인 분기의 '19세 미만 나가기'를 조용한 버튼으로.
   왜: 이 버튼은 로그인 패널보다 **위에** 있고 지금은
       테두리 있는 60px 짜리 큰 버튼이라 페이지의 첫 행동처럼
       보인다. 실제 주요 행동은 그 아래 로그인이다.
       이탈 버튼이라 없앨 수는 없으니 무게를 낮춘다.
       (DOM 순서를 바꾸는 flex order 는 쓰지 않았다 — 시각 순서와
        탭 순서가 어긋나 키보드 사용자에게 더 나빠진다) */
.adult-certification__exit-button {
  background-color: transparent;
  border-color: var(--sc-line);
  color: var(--sc-gray);
}

.adult-certification__exit-button:hover {
  background-color: var(--sc-off);
  color: var(--sc-ink-3);
}

/* ============================================================
   8. 데스크톱 (>= 1001px)
   ------------------------------------------------------------
   ★ 브레이크포인트는 1001px 하나만 쓴다(DESIGN.md §4).
     1001px 미만은 Aurora 기본 동작 그대로 둔다.
   ============================================================ */
@media (min-width: 1001px) {
  /* 무엇을: 셸 밖 4페이지를 '화면 높이 흰 기둥'에서
             '가운데 놓인 카드'로 바꾼다.
     왜: 데스크톱에는 헤더·푸터가 없어서 500px 짜리 흰 기둥이
         1920px 회색 바탕을 세로로 가르는 모양이 된다.
         카드로 바꾸면 페이지가 '끝난 상태'라는 게 읽힌다.
         560px 는 layout.css 의 narrow 폭과 같은 값이다 —
         이 넷도 constants/layout.js 에서 NARROW 로 선언돼 있으니
         (도달만 못 할 뿐) 의도한 폭을 그대로 따른다. */
  .not-found,
  .no-access,
  .service-check,
  .expired-mall {
    max-width: 560px;
    min-height: 0;
    margin-top: 88px;
    margin-bottom: 88px;
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
  }

  /* 카드가 되면 세로 중앙정렬용 여백이 필요 없다 */
  .not-found,
  .no-access {
    padding: 64px var(--sc-gut);
  }

  .service-check {
    padding: 64px var(--sc-gut);
  }

  .expired-mall {
    padding: 56px 0;
  }

  /* 무엇을: 성인인증 로그인 패널에 4면 테두리를 준다.
     왜: overrides.css 가 데스크톱에서 .l-panel 에
         border-radius 를 주는데, 패키지 .l-panel 의
         border-width 는 1px 0(위아래만)이다. 위아래만 있는
         선에 라운드를 주면 모서리가 잘린 것처럼 보인다.
         이 페이지의 패널에 한해 4면을 채워 카드로 완성한다. */
  .adult-certification__sign-in {
    border-width: 1px;
  }
}

@charset 'utf-8';

/* ============================================================
   검색 · 목록 툴바 — 선데이클럽 오버라이드 제안
   ------------------------------------------------------------
   대상 라우트 : /products?keyword=… (검색결과) · /products?categoryNo=… (카테고리)
   대상 JSX    : src/pages/DisplayCategoryList/
                 src/components/TotalCountAndSort/
                 src/components/SearchKeyword/
                 src/components/GalleryListPage/ (빈 상태 두 종)

   ★ 성격: 이 파일은 overrides.css 와 같은 성격이다.
     전부 @shopby 패키지 클래스를 겨냥한다. 각 블록마다
     "어떤 JSX 가 그 클래스를 찍는지 / 패키지 기본값이 무엇인지"를
     주석으로 남겼다.

   ★ 지킨 규칙 (docs/DESIGN.md §2)
     - `!important` 없음. 패키지 특이성이 낮아(단일 클래스 56%)
       뒤에 실은 시트가 그냥 이긴다.
     - 빈 상태(.no-search)에 display:flex 를 걸지 않는다.
       아이콘 + 여러 줄 구조라 한 행으로 눌리면 겹친다. 면만 준다.
     - line-height 를 전역으로 건드리지 않는다.
       줄바꿈이 실제로 일어나는 개별 요소에만 준다.
     - 색·모서리는 전부 --sc-* 토큰.
     - 레이아웃을 바꾸는 규칙만 @media (min-width: 1001px) 안에 둔다.
       색·모서리·타이포 보정은 overrides.css 선례대로 전 구간 공통.

   ⚠️ .total-sort 는 검색/카테고리 외에 기획전(Event)·상품섹션
      (ProductSectionList)에서도 같은 컴포넌트로 쓰인다.
      여기 손대면 그 화면들도 같이 바뀐다 — 의도한 것이다(일관성).
   ============================================================ */

/* ============================================================
   1. 툴바 본체 (.total-sort)
   ------------------------------------------------------------
   찍는 곳: components/TotalCountAndSort/TotalCountAndSort.jsx
            <div class="total-sort"> — GalleryListPage 의 .l-panel 첫 자식

   패키지 기본값(aurora.css):
     position:sticky; top:90px; z-index:1; padding:10px 20px;
     margin-bottom:32px; border-bottom:1px solid var(--light-gray-border-color)

   ▸ 무엇이 문제인가
     `top:90px` 은 **Aurora 기본 헤더 높이 기준**이다. 우리는 헤더를
     로컬 JSX 로 교체했고(components.css `.sc-hd{height:64px}`),
     그 헤더는 데스크톱·모바일 모두 64px 이다.
     그래서 지금은 툴바가 헤더보다 26px 아래에 고정된다 →
     헤더와 툴바 사이 26px 띠로 상품 카드가 그대로 흘러 지나간다.
     프로토타입(search.html `.filterbar{top:64px}`,
     list.html `.toolbar{top:64px}`)과도 어긋난다.

   ▸ 왜 미디어쿼리 밖인가
     이건 데스크톱 전용 디자인이 아니라 **헤더 교체로 생긴 값 불일치**다.
     모바일 헤더도 64px 이므로 두 구간 모두 틀렸다. 그래서 공통으로 고친다.
     (64px 은 components.css 의 .sc-hd 높이와 짝. 둘을 함께 고칠 것)

   ▸ 가로 패딩 20px 은 그대로 둔다
     패키지 `.thumb-GALLERY{padding:0 20px}` 와 같은 값이라 툴바 좌우 끝이
     첫/마지막 카드와 정확히 맞는다. --sc-gut(24px)로 바꾸면 4px 어긋난다.
   ============================================================ */
.total-sort {
  top: 64px; /* ← .sc-hd 높이. 헤더가 z-index:50 이라 1px 겹쳐도 가려진다 */
  gap: 12px; /* 좁은 화면에서 건수와 정렬이 붙는 것을 막는다 (flex 는 패키지가 이미 걸었다) */
  padding: 12px 20px;
  margin-bottom: 20px;
  /* 배경은 다시 쓰지 않는다 — 패키지가 var(--whole-color) 를 쓰고
     tokens.css 가 그것을 --sc-white 로 매핑해 뒀다(이미 불투명 흰색). */
  border-bottom-color: var(--sc-line); /* --light-gray-border-color(#EEEFF1) → 헤어라인 */
}

/* ------------------------------------------------------------
   건수 표시 — "총 N개"
   찍는 곳: <p class="total-sort__count">총 <em class="highlight">N</em>개</p>

   지금은 라벨('총','개')과 숫자가 같은 크기라 위계가 없다.
   프로토타입(search.html `.rcount`)은 라벨을 회색으로 눕히고
   숫자만 크고 굵게 세운다.

   ⚠️ `.highlight` 는 패키지 **전역 유틸리티**(common.css
      `.highlight{color:var(--point-color)}`)라 지금 숫자가 브랜드
      블루로 나온다. 블루는 이 스킨에서 '후원'을 뜻하는 색이므로
      (components.css .sc-dona 계열) 단순 건수에 쓰면 의미가 흐려진다.
      → 이 자리에서만 잉크색으로 되돌린다. 전역 .highlight 는 안 건드린다.
   ------------------------------------------------------------ */
.total-sort__count {
  font-size: 13.5px;
  font-weight: 500;
  color: var(--sc-gray);
  line-height: 1.4; /* 개별 지정. 전역 line-height 는 건드리지 않는다 */
}

.total-sort__count .highlight {
  margin: 0 3px; /* 패키지 기본 `0 4px 0 8px` 은 '총'과 숫자 사이가 8px 로 벌어진다 */
  font-size: 15px;
  font-weight: 800;
  color: var(--sc-black);
  letter-spacing: -0.02em;
}

/* ============================================================
   2. 정렬 드롭다운 (.total-sort .select-box)
   ------------------------------------------------------------
   ▸ 왜 `.select-box` 인가 — 여기가 이 파일의 핵심 발견이다.
     TotalCountAndSort 는 `<SelectBox className="total-sort__select-box">`
     를 쓰는데, 패키지 SelectBox 가 실제로 뱉는 DOM 은
       <span class="select-box total-sort__select-box select-box--sort">
         <select>…</select>
       </span>
     이다. **`.select-field` 가 아니다.**
     그런데 overrides.css 의 폼 규칙은 `.select-field > select` 만
     겨냥한다 → 이 정렬 드롭다운에는 브랜드 스타일이 **하나도 안 걸린다.**
     지금 화면에 나오는 건 패키지 기본값 그대로:
       .select-box{border:1px solid #000; color:#3f444c}      ← 검은 각테두리
       .total-sort__select-box{border-color:#d2d2d2; font-weight:lighter}
       .select-box--sort::before{ 스프라이트 정렬아이콘, left:20px }
       .select-box--sort select{ padding-left:52px }
     = 각진 회색 상자 + 좌측 스프라이트 아이콘 + 52px 들여쓰기.
     프로토타입(list.html `.sortsel`)은 pill 테두리 + 우측 셰브론이다.

   ▸ 선택자 형태
     `.total-sort .select-box`(0,2,0)로 쓴다. 패키지의
     `.select-box--sort::before`(0,1,1) / `.total-sort__select-box`(0,1,0)
     를 특이성으로 확실히 넘기기 위해서다. (!important 불필요)
   ============================================================ */
.total-sort .select-box {
  width: auto;
  border: 1px solid var(--sc-line);
  border-radius: var(--sc-rpill);
  background-color: var(--sc-white);
  color: var(--sc-ink-3);
  transition: border-color 0.15s var(--sc-ease), box-shadow 0.15s var(--sc-ease);
}

.total-sort .select-box:hover {
  border-color: var(--sc-line-2);
}

/* 테두리가 <span> 에 있고 포커스는 <select> 가 받으므로 :focus-within 으로 링을 그린다.
   (select 자체의 기본 아웃라인은 pill 안쪽에 각지게 그려져 어색하다) */
.total-sort .select-box:focus-within {
  border-color: var(--sc-blue);
  box-shadow: 0 0 0 3px var(--sc-tint);
}

/* 좌측 스프라이트 정렬 아이콘 제거.
   프로토타입은 정렬 컨트롤에 별도 아이콘을 두지 않는다(셰브론만). */
.total-sort .select-box--sort::before {
  content: none;
}

/* 우측 셰브론.
   패키지가 `.select-box--sort::after{content:none}` 으로 캐럿을 꺼놨으므로
   되살린다. 스프라이트(PNG) 대신 테두리로 그린 삼각형을 쓴다 —
   색을 --sc-* 토큰으로 줄 수 있고(이미지는 색을 하드코딩해야 한다)
   패키지도 .breadcrumb__link::after 에서 같은 기법을 쓴다.
   position/top/transform 은 패키지 `.select-box::after` 가 이미 준다. */
.total-sort .select-box::after {
  content: '';
  right: 15px;
  width: 7px;
  height: 7px;
  background-image: none; /* 패키지 스프라이트 끄기 */
  border: solid var(--sc-gray);
  border-width: 0 1.5px 1.5px 0;
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}

.total-sort .select-box select {
  /* 패키지 리셋(common.css `all:unset`)이 이미 네이티브 화살표를 지우지만,
     리셋이 바뀌어도 안전하도록 명시한다 */
  -webkit-appearance: none;
  appearance: none;
  padding: 10px 34px 10px 16px; /* 좌 52px → 16px (아이콘을 뺐으므로) */
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--sc-black);
  cursor: pointer;
  outline: none; /* 포커스 표시는 위 :focus-within 링이 담당 */
}

/* ============================================================
   3. 카테고리 칩 줄 (.category-menu__slide)
   ------------------------------------------------------------
   찍는 곳: pages/DisplayCategoryList/menu/MenuGrid.jsx
            <nav class="category-menu"><ul class="category-menu__slide">
   (검색결과 화면에는 안 나온다 — DisplayCategoryList.jsx 가
    `shows={!keyword}` 로 걸어놨다. 카테고리 탐색 전용)

   패키지 기본값:
     .category-menu__slide{ background-color:#fafafa }        ← 하드코딩 회색 띠
     .category-menu__slide li{ padding:10px }                 ← 칩 사이 20px
     .category-menu__link{ padding:5px 10px 3px; font-size:13px }  ← 위아래 비대칭
     …__link.is-active{ border-radius:16px; color:#fff; background:#000 }

   ▸ 문제
     ① 회색 밴드가 통째로 깔려 흰 배경 위 카드 그리드와 단절된다.
     ② 비활성 칩에 면이 없어 '누를 수 있는 것'으로 안 읽힌다.
        프로토타입(list.html `.chip`)은 --off 면 + pill 이다.
     ③ 활성 칩이 검정. 프로토타입 두 벌이 서로 다른데
        (search.html=검정 / list.html=블루) **list.html 을 따른다** —
        이 화면이 곧 상품 목록이고, 스킨의 다른 '현재 상태' 표시가
        전부 --point-color 다(.pagination__btn.is-active, .tabs__item.on).
     ④ overflow-x:auto 인데 스크롤바가 보인다. .sc-gnb__inner 처럼 감춘다.
   ------------------------------------------------------------ */
.category-menu__slide {
  gap: 8px;
  padding: 14px 20px; /* 아래 그리드(.thumb-GALLERY padding:0 20px)와 좌우를 맞춘다 */
  background-color: var(--sc-white);
  scrollbar-width: none;
}

.category-menu__slide::-webkit-scrollbar {
  height: 0;
}

/* li 의 10px 패딩을 걷고 간격은 위 gap 이 담당한다 */
.category-menu__slide li {
  padding: 0;
}

.category-menu__slide .category-menu__link {
  padding: 9px 16px;
  border-radius: var(--sc-rpill);
  background-color: var(--sc-off);
  color: var(--sc-ink-3);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.2; /* 칩 한 줄. 전역 아님 */
  white-space: nowrap;
  transition: background-color 0.15s var(--sc-ease), color 0.15s var(--sc-ease);
}

.category-menu__slide .category-menu__link:hover {
  background-color: var(--sc-off2);
  color: var(--sc-black);
}

.category-menu__slide .category-menu__link.is-active {
  border-radius: var(--sc-rpill); /* 패키지 16px → pill */
  background-color: var(--sc-blue);
  color: var(--sc-white);
}

/* ------------------------------------------------------------
   하위 카테고리 (.category-menu__list)
   패키지 기본값: 3열 그리드 + li 마다 `border-right:1px solid #f5f5f5`
   → 표(table)처럼 보이고 색이 하드코딩돼 있다.
   칸막이를 걷고 눌리는 링크로 바꾼다. 그리드 자체는 유지한다
   (flex 로 바꾸면 줄바꿈 규칙이 달라져 회귀 위험이 생긴다).
   ------------------------------------------------------------ */
.category-menu__list {
  gap: 4px 6px;
  padding: 0 20px 14px;
  border-bottom: 1px solid var(--sc-line);
}

.category-menu__list li {
  padding: 0;
  border-right: none; /* #f5f5f5 칸막이 제거 */
}

.category-menu__list .category-menu__link {
  padding: 9px 12px;
  border-radius: var(--sc-rs);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--sc-gray);
  transition: background-color 0.15s var(--sc-ease), color 0.15s var(--sc-ease);
}

.category-menu__list .category-menu__link:hover {
  background-color: var(--sc-off);
  color: var(--sc-black);
}

/* 데스크톱에서만 열 수를 늘린다.
   1200px 폭에서 3열은 한 칸이 400px — 짧은 카테고리명 하나에 과하다.
   ⚠️ 레이아웃 변경이므로 반드시 미디어쿼리 안. 모바일은 3열 그대로. */
@media (min-width: 1001px) {
  .category-menu__list {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }
}

/* ============================================================
   4. 카테고리 콜아웃 (.category-callout)
   ------------------------------------------------------------
   찍는 곳: pages/DisplayCategoryList/menu/MenuCallout.jsx
            브레드크럼의 체크박스를 켜면 열리는 2단 드롭다운

   ⚠️ overrides.css 가 이미 `.breadcrumb` 타이포와
      `.breadcrumb__section::after`(그라디언트 그림자)를 처리했다.
      여기서는 **콜아웃 패널만** 다룬다 — 중복 없음.

   패키지가 #fafafa / #f5f5f5 를 직접 박아놨다. 토큰으로 바꾸고
   모서리만 준다. height:60vh 와 2단 트릭(sub-nav 의 absolute 배치)은
   서로 물려 있어 건드리지 않는다.
   ============================================================ */
.category-callout {
  border-radius: 0 0 var(--sc-rl) var(--sc-rl);
}

.category-callout__btn,
.category-callout__link {
  padding: 11px 14px;
  font-size: 14px;
  line-height: 1.4;
}

.category-callout__btn {
  border-bottom: 1px solid var(--sc-line);
}

.category-callout .is-active .category-callout__btn {
  background-color: var(--sc-off);
  border-right-color: var(--sc-line);
}

.category-callout .is-active .category-callout__sub-nav {
  background-color: var(--sc-off);
  border-left: 1px solid var(--sc-line);
}

/* '현재 보고 있는 하위 카테고리'를 굵기만이 아니라 색으로도 표시한다 */
.category-callout__link.is-active {
  color: var(--sc-blue);
}

/* ============================================================
   5. 검색결과 없음 (.no-search)
   ------------------------------------------------------------
   찍는 곳: components/GalleryListPage/GalleryListPage.jsx — NoSearchProduct
     <div class="no-search">
       <h3 class="no-search__title">'키워드' 에 대한 검색결과가 없습니다.</h3>
       <Icon name="no-items" />            ← <span class="ico ico--no-items">
       <p class="no-search__description">…3줄…</p>
     </div>

   ⚠️ **display:flex 금지 대상.** 제목 / 아이콘 / 3줄 설명이 세로로
      쌓인 구조라 flex 를 걸면 한 행으로 눌려 겹친다(DESIGN.md 함정 노트).
      → 배경·모서리·여백 '면'만 준다. 내부 배치는 손대지 않는다.

   패키지 기본값의 실제 결함:
     ① `.no-search__title{line-height:1}` — 검색어가 길면 제목이 두 줄이
        되는데 line-height 1 이라 **글자가 서로 붙는다.**
        (common.css `body{font:14px/1}` 기준 조판이라 이런 곳이 생긴다)
     ② `.no-search__description{margin-bottom:150px}` — 150px 죽은 여백.
        아래에 아무것도 없어 페이지가 텅 빈 채로 끝난다.
     ③ `font-weight:300` — Pretendard 300 은 본문에서 흐릿하게 뜬다.
   ============================================================ */
.no-search {
  margin: 24px 20px 32px; /* 좌우 20px = 그리드 인셋과 정렬 */
  padding: 44px 24px;
  border-radius: var(--sc-rl);
  background-color: var(--sc-off);
}

.no-search__title {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.45; /* 1 → 1.45. 두 줄로 넘어갈 때 겹치던 것을 푼다 */
  color: var(--sc-black);
}

.no-search .ico--no-items {
  margin: 24px auto; /* 40px → 24px */
  opacity: 0.5; /* 스프라이트 아이콘이 진해 제목보다 튄다 */
}

.no-search__description {
  margin-bottom: 0; /* 150px 죽은 여백 제거 */
  font-size: 14px;
  font-weight: 400; /* 300 → 400 */
  line-height: 1.7;
  color: var(--sc-gray);
}

/* ------------------------------------------------------------
   상품 없음 (.not-found-product) — 키워드 없이 들어온 빈 목록
   찍는 곳: 같은 파일 `<p class="not-found-product">상품이 존재하지 않습니다.</p>`

   패키지가 이미 `display:flex; min-height:415px` 로 가운데 정렬해 뒀다.
   내용이 **한 줄뿐**이라 겹칠 여지가 없으므로 그 flex 는 그대로 둔다.
   (새로 flex 를 거는 것이 아니다 — 금지 사항에 해당하지 않는다)
   415px 는 화면 절반을 빈 칸으로 만드므로 줄이고, 면을 준다.
   ------------------------------------------------------------ */
.not-found-product {
  min-height: 220px;
  margin: 24px 20px 32px;
  border-radius: var(--sc-rl);
  background-color: var(--sc-off);
  font-size: 14.5px;
  color: var(--sc-gray);
}

/* ============================================================
   6. 모바일 검색 시트 (.search-keyword-modal)
   ------------------------------------------------------------
   찍는 곳: components/SearchKeyword/SearchKeyword.jsx
   여는 곳: 하단 탭바의 '검색' (Layout.jsx BottomNavWrap → BottomNav search),
            주소 /search (pages/Search — 마이앱 네이티브 하단바용)
   DOM   : <div class="dim"/><div class="modal title-modal--full search-keyword-modal">

   ⚠️ overrides.css 가 이미 `.text-field` 계열(면·모서리·포커스링)을
      처리했으므로 여기서 입력 필드는 다시 쓰지 않는다.
   ============================================================ */

/* 모바일 오버플로 — `.title-modal--full{min-width:375px}` 때문에
   360px 폭 단말에서 시트가 좌우로 15px 삐져나간다(.modal 은
   translate(-50%,-50%) 로 가운데 정렬이라 양쪽이 잘린다).
   데스크톱은 `.modal{width:500px}` 로 폭이 명시돼 있어 영향이 없다. */
.modal.search-keyword-modal {
  min-width: 0;
  max-width: 100%;
}

/* 상단 검색줄 — 패키지는 `border-bottom:2px solid var(--dark-gray-color)`,
   즉 2px 짙은 먹선이다. 스킨 어디에도 이런 굵은 구분선은 없다. */
.search-keyword-modal__top {
  height: 60px;
  margin: 0;
  padding: 0 12px;
  gap: 4px;
  border-bottom: 1px solid var(--sc-line);
}

/* ------------------------------------------------------------
   최근 검색어 (.recent-keyword)
   패키지 기본값:
     .recent-keyword{ min-height:418px; border:1px solid var(--default-color);
                      border-radius:5px }
     .search-keyword-modal .recent-keyword{ width:300px; margin:30px auto 80px }
     .recent-keyword__top button{ color:rgba(121,121,121,.5) }
     .recent-keyword__content-empty p{ color:var(--default-color) }

   ▸ 실제 결함
     ① `--default-color` 는 tokens.css 에서 --sc-line(#E7E7EA)로 매핑돼 있다.
        그 값이 **빈 문구의 글자색**이라 흰 배경 위에서 대비 ≈1.2:1 —
        "최근 검색어 내역이 없습니다." 가 사실상 안 보인다.
        (--default-color 자체는 '테두리색'이 원래 용도라 tokens 를 바꿀 순 없다.
         여기서 글자색만 바로잡는다)
     ② width:300px 고정 — 시트는 모바일 100% / 데스크톱 500px 인데
        내용만 300px 로 갇혀 좌우가 허전하다.
     ③ min-height:418px 테두리 상자 — 검색어가 하나도 없어도
        빈 사각형이 418px 버틴다.
   ------------------------------------------------------------ */
.recent-keyword {
  min-height: 0;
  padding: 0 4px 24px;
  border: none; /* 상자 테두리 제거 — 시트 안에서 이중 테두리로 보인다 */
  border-radius: var(--sc-rl);
}

.search-keyword-modal .recent-keyword {
  width: auto; /* 300px 고정 해제 */
  margin: 20px 16px 40px;
}

.recent-keyword__top {
  padding: 16px 0 12px;
  border-bottom: 1px solid var(--sc-line);
}

.recent-keyword__top p {
  font-size: 13px;
  font-weight: 700;
  color: var(--sc-gray);
  letter-spacing: 0.01em;
}

.recent-keyword__top button {
  font-size: 12px;
  font-weight: 500;
  color: var(--sc-gray-2); /* rgba(121,121,121,.5) 저대비 → 토큰 */
}

.recent-keyword__top button:hover {
  color: var(--sc-black);
}

/* 검색어 한 줄. li 안에는 [키워드 버튼][삭제 IconBtn] 두 개가 있고
   IconBtn 은 className 을 안 받아 클래스가 비어 있다 →
   첫 번째 버튼(키워드)만 정확히 겨냥한다. */
.recent-keyword__item {
  margin-top: 4px;
}

.recent-keyword__item > button:first-child {
  padding: 10px 6px;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--sc-black);
  text-align: left;
}

.recent-keyword__item > button:first-child:hover {
  color: var(--sc-blue);
}

/* 빈 상태 — 아이콘(::before) + 문구 구조라 여기도 flex 금지.
   여백만 줄이고 글자색을 읽히게 고친다. */
.recent-keyword__content-empty {
  padding: 56px 0 0; /* 112px → 56px */
}

.recent-keyword__content-empty p {
  font-size: 14px;
  line-height: 1.6;
  color: var(--sc-gray); /* #E7E7EA(거의 안 보임) → 본문 보조색 */
}

@charset 'utf-8';

/* ============================================================
   고객센터 · FAQ · 공지 — 패키지 오버라이드 제안
   ------------------------------------------------------------
   대상 라우트 : /customer-center · /faq · /notice
   대상 JSX    : src/pages/CustomerCenter · src/pages/FAQ ·
                src/pages/Notice · src/components/FAQList

   ★ 성격 — overrides.css 와 같은 레이어다(패키지 클래스 전용).
     **overrides.css 뒤에 실린다는 전제**로 썼다. 앞에 실으면
     `.faq-list__answer` 처럼 두 파일이 같은 클래스를 건드리는
     지점에서 결과가 뒤집힌다. 최종적으로는 overrides.css 에
     병합하는 걸 전제로 한다.

   ★ 규칙 (docs/DESIGN.md §2 오버라이드 3원칙)
     - `!important` 없음. 패키지 특이성이 낮아(단일 클래스 56%)
       뒤에 실은 시트가 그냥 이긴다.
     - 색 · 모서리 · 간격은 `--sc-*` 토큰만. 하드코딩 금지.
     - `line-height` 는 전역에 손대지 않는다. 이 페이지의 특정
       요소(답변 본문 · 공지 본문 · 버튼 줄높이)에만 국소로 준다.
     - 이미지에 `max-width` 를 걸지 않는다. 넘치는 본문은
       **컨테이너**에 `overflow-x` 를 줘서 가둔다.
     - 폭이 결정하는 **레이아웃** 규칙만 `@media (min-width:1001px)`.
       색 · 타이포처럼 폭과 무관한 브랜드 보정은 overrides.css 관행대로
       전 구간에 적용한다(패키지가 하드코딩한 색을 모바일에만 남겨둘
       이유가 없다).

   ★ 여기서 다루지 않는 것 — 이미 overrides.css 소유
     `.btn` 기본형 · `.text-field` 기본형 · `.empty-list` 면 ·
     `.modal__*` · `.pagination__*` · `.tabs`
     아래에서 이 클래스들이 등장하는 곳은 전부 **패키지가 더 깊은
     선택자로 덮어버려 overrides 가 먹지 않는 지점을 되살리는 것**이며,
     각 블록에 그 이유를 적어뒀다.
   ============================================================ */

/* ============================================================
   1. FAQ 아코디언 — /customer-center 와 /faq 가 공유
   ------------------------------------------------------------
   ⚠️ 클래스 이름 주의: overrides.css 의 `.faq-list__item` /
      `.faq-list__title` 은 **이 DOM 에 존재하지 않는다.**
      FAQList.jsx 가 실제로 뱉는 건
        li.faq-list__content-wrap
          > div.faq-list__content.faq-list__question
          > div.faq-list__content.faq-list__answer
      이다. 그래서 overrides 의 목록 스타일 중 `__item`/`__title`
      부분은 지금 아무 데도 적용되지 않고 있다. 여기서 실제
      클래스로 다시 건다.
   ============================================================ */

/* 마지막 항목의 밑줄 제거.
   패키지는 `.faq-list__content-wrap` 전부에 border-bottom 을 깔아서
   목록 끝에 선이 하나 떠 있다. 카드로 감쌀 때 특히 지저분하다.
   `.customer-center__faq li`(0,1,1) 보다 특이성이 높아야 해서
   `:last-child` 를 붙였다. */
.faq-list__content-wrap:last-child {
  border-bottom: none;
}

/* 데스크톱 커서 피드백.
   `.faq-list__content-wrap{cursor:pointer}` 는 있는데 hover 반응이
   전혀 없어서 '눌리는 줄'로 안 읽힌다. 면만 살짝 준다.
   비밀글(li 에 onClick 이 없다)은 제외 — 눌리는 것처럼 보이면 안 된다. */
.faq-list__content-wrap:not(:has(.ico--lock)):hover .faq-list__question {
  background-color: var(--sc-off);
}

/* 비밀글 줄은 패키지가 물려준 pointer 커서도 되돌린다 */
.faq-list__content-wrap:has(.ico--lock) {
  cursor: default;
}

.faq-list__question {
  transition: background-color 0.15s var(--sc-ease);
}

/* 질문 텍스트 — 프로토타입 .qbtn .qtxt (15px / 600).
   패키지는 크기 지정이 없어 body 14px 를 그대로 받는다.
   한글 줄바꿈은 프로토타입 body 의 word-break:keep-all 을 따른다
   (전역에 넣으면 패키지 조판을 건드리므로 이 요소에만). */
.faq-list__question p {
  font-size: 15px;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 답변 블록 — 패키지에 `padding-bottom:52px` 이 박혀 있어
   모든 답변 아래에 52px 짜리 빈 공간이 생긴다.
   `.faq-list__content{padding:20px 26px 20px 10px}`(0,1,0) 와
   overrides 의 `.faq-list__answer`(0,1,0) 를 둘 다 이겨야 해서
   두 클래스를 겹쳐 0,2,0 으로 겨냥한다.
   (배경 · 모서리 · 글자색 · 줄높이는 overrides.css 소유 — 건드리지 않고
    여백만 잡는다. 답변이 살짝 들여쓰인 패널로 떨어지게.) */
.faq-list__content.faq-list__answer {
  margin: 0 10px 18px;
  padding: 18px 20px 20px;
}

/* 답변 안의 링크 — 패키지 `.editor a{color:#337ab7}` 부트스트랩
   파랑이 그대로 나온다. 브랜드 블루로. */
.faq-list__answer a {
  color: var(--sc-blue);
  text-decoration: underline;
}

/* Q · A 배지 — 프로토타입 .qmark (틴트 배경 + 브랜드 블루 글자).
   패키지는 sprite.png 를 잘라 쓰는 회색 아이콘이라 브랜드 색이 없다.
   `.ico{background-image:url(sprite.png)}` 를 끄고 문자로 대체한다.
   ⚠️ `.faq-list__question .ico--q`(0,2,0) 로 패키지의 sprite 크기
      지정과 같은 특이성을 맞춰야 이긴다.
   ⚠️ 잠금 아이콘(.ico--lock)은 그대로 둔다 — 의미가 있는 아이콘이다. */
.faq-list__question .ico--q,
.faq-list__answer .ico--a {
  width: 22px;
  height: 22px;
  background-image: none;
  background-color: var(--sc-tint);
  border-radius: var(--sc-rs);
  color: var(--sc-blue);
  font-size: 12px;
  font-weight: 800;
  line-height: 22px; /* 배지 한 글자 세로 정렬용 — 전역 아님 */
  text-align: center;
}

.faq-list__question .ico--q::before {
  content: 'Q';
}

.faq-list__answer .ico--a::before {
  content: 'A';
}

/* 펼침 화살표 — 패키지는 transform 만 바꿔서 딸깍 끊긴다.
   프로토타입 .chev 의 transition .25s 를 준다. */
.faq-list .arrow {
  transition: transform 0.25s var(--sc-ease);
}

/* 비밀글 줄 — `align-items:end` 라 자물쇠와 문구 밑선이 안 맞는다.
   읽을 수 없는 항목이므로 색도 낮춘다. */
.faq-list__question .ico--lock + p,
.notice__list-item--locked p {
  color: var(--sc-gray);
}

.notice__list-item--locked {
  align-items: center;
  font-size: 15px;
}

/* ------------------------------------------------------------
   데스크톱: 아코디언을 카드 한 장으로
   프로토타입 .faq — 흰 면 + 1px 라인 + 16px 모서리 + overflow:hidden.
   모바일은 Aurora 기본(가장자리까지 붙는 목록)을 그대로 둔다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .faq-list {
    background-color: var(--sc-white);
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
    overflow: hidden; /* 마지막 줄 hover 면이 모서리를 넘지 않게 */
  }
}

/* ============================================================
   2. /customer-center
   ------------------------------------------------------------
   ⚠️ BEM 함정: CustomerCenter.jsx 는
        className={`customer-center__faq${faqFlag}`}
      로 **base 클래스를 modifier 로 갈아끼운다.**
      → 비었을 때 요소의 클래스는 `customer-center__faq--empty`
        하나뿐이고 `.customer-center__faq` 는 붙지 않는다.
      그래서 base 만 겨냥한 규칙은 빈 상태에서 통째로 사라진다.
      아래는 세 상태를 전부 나열한다.
   ============================================================ */

/* 섹션 제목 — 패키지는 20px / weight 기본 / 가운데 정렬이라
   Aurora 모바일앱 말투다. 프로토타입 섹션 헤딩은 굵고 조인 자간.
   (정렬 · 여백은 폭 문제라 데스크톱 블록에서 다룬다) */
.customer-center__faq-title {
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--sc-black);
}

/* '전체보기' — 패키지가 `opacity:.6` 을 걸어 비활성 링크처럼 보인다.
   실제 비활성은 `.go-to-list.go-to-list--disabled{opacity:.2}`(0,2,0)
   가 따로 있으므로, 여기서 0,1,0 으로 되돌려도 비활성 표현은 남는다. */
.go-to-list {
  opacity: 1;
  font-size: 14px;
  font-weight: 600;
  color: var(--sc-black);
  transition: color 0.15s var(--sc-ease);
}

.go-to-list:hover {
  color: var(--sc-blue);
}

/* '1:1문의' — 이 페이지의 주요 동작인데 패키지 기본형(`.btn` =
   검정 1px 테두리 + 흰 면)이라 보조 버튼으로 읽힌다.
   overrides.css 의 '주요 동작 승격'(로그인 · 회원가입 · 비번찾기)과
   같은 규칙을 적용한다. 전용 클래스라 :first-of-type 함정은 없다.
   ※ 병합 시엔 overrides.css 의 그 셀렉터 목록에 한 줄 합치는 게 낫다. */
.customer-center__inquiry-button {
  background-color: var(--sc-blue);
  border-color: var(--sc-blue);
  color: var(--sc-white);
  font-weight: 700;
  border-radius: var(--sc-rm);
}

.customer-center__inquiry-button:hover {
  background-color: var(--sc-blue);
  filter: brightness(1.08);
}

/* 빈 상태의 회색 겹침.
   overrides.css 가 `.customer-center__faq--empty` 에 옅은 면을 주고,
   그 안의 `.empty-list` 에도 같은 면을 준다 → 회색 위 회색이라
   빈 상태 박스의 경계가 사라진다. 안쪽만 흰 면 + 라인으로 띄운다.
   (0,2,0 이라 overrides 의 0,1,0 그룹을 이긴다. display 는 건드리지
    않는다 — 빈 상태에 flex 를 걸면 아이콘과 여러 줄이 겹친다) */
.customer-center__faq--empty .empty-list {
  background-color: var(--sc-white);
  border: 1px solid var(--sc-line);
}

/* 고객센터 연락처 블록.
   패키지: `background-color:#f5f5f5` 하드코딩 + 세 줄이 거의 같은
   크기라 위계가 없다. 프로토타입 .obox 는 [작은 회색 라벨 / 큰 값]
   구조다. 여기 있는 내용(고객센터 / 전화 / 이메일)만으로 그 위계를
   만든다 — 없는 정보를 지어내지 않는다. */
.customer-center__information {
  background-color: var(--sc-off);
}

/* '고객센터' → 값 위의 작은 라벨 (프로토타입 .ok) */
.customer-center__name {
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0;
  color: var(--sc-gray);
}

/* 첫 줄 = 전화번호 → 이 블록의 값 (프로토타입 .ov)
   JSX 순서가 고정이라(이름 → phoneNo → email) 인접 선택자가 안전하다. */
.customer-center__name + p {
  font-size: 20px;
  font-weight: 700;
  color: var(--sc-black);
  font-variant-numeric: tabular-nums;
}

/* 둘째 줄 = 이메일 → 보조 (프로토타입 .os) */
.customer-center__name + p + p {
  font-size: 14px;
  color: var(--sc-gray);
}

/* 셀러어드민에 값이 없으면 `<p></p>` 가 그대로 렌더돼 빈 줄이 남는다.
   (전화번호 미입력 몰에서 실제로 생긴다) */
.customer-center__information p:empty {
  display: none;
}

/* ------------------------------------------------------------
   데스크톱 (본문 폭 medium 860px)
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  /* 제목을 왼쪽으로. 모바일에선 좌우 패딩이 없어 글자가 화면 끝에
     붙으므로 정렬 변경은 데스크톱에서만 한다. */
  .customer-center__faq-title {
    text-align: left;
    font-size: 22px;
    line-height: 1.3;
    padding: 4px 0 18px;
    border-bottom: none; /* 아래 아코디언 카드가 이미 경계를 만든다 */
  }

  /* 세 상태 전부 — §2 머리말의 BEM 함정 참고 */
  .customer-center__faq,
  .customer-center__faq--empty,
  .customer-center__faq--not-used {
    padding: 8px 0 0;
  }

  .customer-center__inquiry {
    padding: 20px 0 0;
  }

  /* 연락처는 별도 카드로 띄운다 (프로토타입 .obox) */
  .customer-center__information {
    margin-top: 36px;
    padding: 26px 32px 28px;
    border-radius: var(--sc-rl);
  }
}

/* ============================================================
   3. /faq
   ============================================================ */

/* 검색 줄.
   패키지: `background-color:#f4f6f8` 하드코딩 + 30px 높이 입력칸.
   프로토타입(.hsearch)은 흰 히어로 위의 큼직한 검색 필드다.
   높이는 터치 타깃 최소치(44px)도 못 채우고 있어 같이 올린다. */
.faq__search {
  background-color: var(--sc-white);
  align-items: center;
}

/* ⚠️ 특이성 복구 —
   overrides.css 의 `.text-field{border-radius:var(--sc-rm)}` 는 0,1,0,
   패키지의 `.faq__search .text-field{border-radius:4px}` 는 0,2,0 이라
   **이 페이지의 검색창만 4px 각진 채로 남아 있다.** 같은 값을 같은
   특이성으로 다시 걸어 사이트 전체와 모서리를 맞춘다. */
.faq__search .text-field {
  border-radius: var(--sc-rm);
}

/* 같은 이유. 패키지 `.faq__search .text-field input{background:#fff}`
   가 overrides 의 `.text-field input{background:transparent}` 를
   이겨서, 회색 필드 안에 흰 입력칸이 겹쳐 보인다. */
.faq__search .text-field input {
  background-color: transparent;
  height: 46px;
  padding: 0 14px;
  font-size: 14.5px;
}

/* 검색 버튼 — 패키지가 `width:60px` 로 못박아 '검색' 두 글자가 낀다.
   높이는 입력칸과 맞춘다. (line-height 로 세로 정렬 — 패키지가
   `.customer-center__inquiry-button` 에서 쓰는 것과 같은 방식) */
.faq__search .btn {
  width: auto;
  flex: none;
  min-width: 88px;
  height: auto;
  padding: 0 20px;
  line-height: 46px;
}

/* ------------------------------------------------------------
   데스크톱
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .faq__search {
    padding: 8px 0 20px;
  }

  /* 아코디언이 카드가 되므로 패키지의 얇은 윗줄은 중복이다.
     `.faq .faq-list`(0,2,0) 를 같은 특이성으로 겨냥해야 이긴다. */
  .faq .faq-list {
    margin-top: 0;
    border-top: none;
  }
}

/* ============================================================
   4. /notice — 목록
   ============================================================ */

/* 페이지 머리 — 패키지: `background-color:#eff1f5` 하드코딩된
   차가운 청회색 띠. 프로토타입 히어로는 흰 면 + 아래 라인이다. */
.notice__title {
  background-color: var(--sc-white);
  border-bottom: 1px solid var(--sc-line);
}

.notice__title p {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--sc-black);
  word-break: keep-all;
}

/* 목록 행 — `all:unset` 리셋 때문에 <button> 의 기본 커서까지 사라져
   데스크톱에서 클릭 가능한 줄인지 알 수 없다. */
.notice__list-button {
  cursor: pointer;
  text-align: left;
}

.notice__list li {
  transition: background-color 0.15s var(--sc-ease);
}

/* 비밀글은 눌리지 않으므로 hover 대상에서 뺀다 */
.notice__list li:not(.notice__list-item--locked):hover {
  background-color: var(--sc-off);
}

.notice__list li:last-child {
  border-bottom: none;
}

/* '[공지]' 플래그 — 패키지는 `color:#3f444c` 하드코딩이라 날짜와
   구분이 안 된다. 상세 모달은 이미 브랜드 컬러를 쓰므로
   (`.notice-detail__title span{color:var(--point-color)}`) 목록도 맞춘다. */
.notice__category-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--sc-blue);
}

.notice__date {
  font-size: 12.5px;
  color: var(--sc-gray);
}

.notice__tit {
  font-weight: 600;
  color: var(--sc-black);
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* ------------------------------------------------------------
   데스크톱
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  /* 80px 고정 높이 가운데 정렬 → 왼쪽 정렬 페이지 헤딩으로.
     모바일은 좌우 패딩이 없어 글자가 끝에 붙으므로 건드리지 않는다. */
  .notice__title {
    height: auto;
    justify-content: flex-start;
    padding: 4px 0 20px;
  }

  .notice__title p {
    justify-content: flex-start;
    font-size: 24px;
  }

  /* 목록도 카드 한 장 (프로토타입 .faq 와 같은 면) */
  .notice__list {
    background-color: var(--sc-white);
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
    overflow: hidden;
  }
}

/* ============================================================
   5. /notice — 상세 (FullModal)
   ------------------------------------------------------------
   ⚠️ `.title-modal--full` 은 사이트 전체가 공유하는 컴포넌트다.
      여기서 전역으로 넓히면 다른 페이지의 전체화면 모달까지 바뀐다.
      그래서 공지 상세에만 있는 자식(`.notice-detail__title-box`)으로
      범위를 좁힌다. `:has()` 는 인자의 특이성을 따라가므로
      `.title-modal--full:has(...)` 는 0,2,0 → 패키지 0,1,0 을 이긴다.
   ============================================================ */

/* 제목 — 패키지 weight 500. 프로토타입 문서 제목은 굵고 자간이 좁다. */
.notice-detail__title {
  font-weight: 700;
  letter-spacing: -0.03em;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 본문.
   - `min-height:54%` 는 부모 높이에 딸린 값이라 짧은 공지에도
     화면 절반을 비워둔다.
   - 에디터로 넣은 넓은 표 · 이미지가 모달 폭을 밀어낸다.
     ⚠️ <img> 에 max-width 를 걸면 안 되므로(DESIGN.md 함정 노트)
        **컨테이너**에 가로 스크롤을 줘서 가둔다.
   - 읽는 글이므로 이 블록에만 줄높이를 준다(전역 아님). */
.notice-detail__content {
  min-height: 0;
  overflow-x: auto;
  line-height: 1.7;
  color: var(--sc-ink-3);
}

.notice-detail__content a {
  color: var(--sc-blue);
  text-decoration: underline;
}

/* 이전글 · 다음글 — 역시 `all:unset` 으로 커서가 없다.
   '다음글/이전글' 플래그와 제목이 같은 회색이라 위계도 없다. */
.notice-detail__index {
  cursor: pointer;
  transition: background-color 0.15s var(--sc-ease);
}

.notice-detail__index:hover {
  background-color: var(--sc-off);
}

.notice-detail__index-text-flag {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--sc-gray);
}

.notice-detail__index-title {
  font-weight: 600;
  color: var(--sc-black);
}

/* 헤더 구분선이 `var(--black-color)` 라 검은 줄이 그어진다.
   공지 상세 모달에서만 브랜드 라인으로 낮춘다. */
.title-modal--full:has(.notice-detail__title-box) .title-modal__header {
  border-bottom-color: var(--sc-line);
}

/* ------------------------------------------------------------
   데스크톱: 375px 고정 폭 해제
   패키지가 `.title-modal--full{max-width:375px;min-width:375px}` 로
   못박아, 1200px 화면에서도 공지 본문이 휴대폰 폭 한 줄로 나온다.
   본문 가독폭(§3 medium 860px)에 준하는 폭으로 넓힌다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .title-modal--full:has(.notice-detail__title-box) {
    max-width: 720px;
    min-width: 0;
  }

  /* 짧은 공지에도 100dvh 를 차지하던 것을 내용 높이에 맞춘다.
     넘치면 패키지가 이미 걸어둔 overflow-y:auto 가 받는다. */
  .title-modal--full:has(.notice-detail__title-box) .title-modal__content {
    min-width: 0;
    height: auto;
    max-height: calc(100dvh - 160px);
  }

  .notice-detail__title-box,
  .notice-detail__content {
    padding-left: 28px;
    padding-right: 28px;
  }

  .notice-detail__title {
    font-size: 22px;
  }
}

@charset 'utf-8';

/* ============================================================
   선데이클럽 — 비회원 주문조회 · 주문완료/결제실패
   ------------------------------------------------------------
   담당 라우트
     /pages/order/guest-order.html   src/pages/GuestOrder/
     /order/confirm                  src/pages/OrderConfirm/
                                     (성공 = OrderSuccess, 실패 = OrderFail)

   성격: overrides.css 와 같은 계층이다. 즉 **@shopby 패키지 클래스를
        직접 겨냥한다.** 대신 블록마다 "왜 그 클래스인지"를 남긴다.
        `sc-` 클래스(후원 히어로 카드 .sc-dona--hero 등)는 components.css
        소유이므로 여기서는 손대지 않는다 — 후원 카드는 마이페이지와
        공유하는 컴포넌트라 여기서 덮으면 남의 화면이 같이 움직인다.

   지킨 것
   - `!important` 0개. 패키지 CSS 는 선택자 56%가 단일 클래스라
     뒤에 실린 이 시트가 그냥 이긴다(docs/DESIGN.md §0).
   - 색·모서리는 전부 --sc-* 토큰.
   - 배치를 바꾸는 규칙은 @media (min-width: 1001px) 안에만 둔다.
     1000px 이하는 Aurora 기본 배치를 그대로 둔다.
   - line-height 를 전역으로 건드리지 않는다. 대신 §B-0 함정 때문에
     글자를 키운 규칙 안에서는 line-height 를 반드시 같이 준다.

   검증하지 못한 것
   - 주문완료/결제실패 화면은 실결제가 있어야 렌더된다(docs/DESIGN.md §9).
     브라우저 없이 JSX + 패키지 CSS 실측만으로 작성했다.
   ============================================================ */

/* ============================================================
   A. 비회원 주문조회 — /pages/order/guest-order.html
   ------------------------------------------------------------
   ★ 선택자 주의 — `.guest-order` 는 두 화면에 나온다.

     ① 이 전용 페이지 (GuestOrderForm.jsx)
        section.sign-in > div.guest-order        ← .sign-in 의 유일한 자식
     ② 로그인 페이지 하단 (SignIn/SignInForm.jsx:234)
        section.sign-in > div.normal-sign-in
                        + div.sign-in-link
                        + div.guest-order (+ p.guest-order__title)

     ②는 로그인 화면의 **보조 동작**이다. 여기를 강조하면 로그인 버튼과
     경쟁해 위계가 무너진다 — overrides.css 의 "페이지당 하나만 /
     비회원 주문조회처럼 보조 동작은 제외" 주석이 지목한 케이스가 이것이다.

     그래서 `:only-child` 로 ①만 고른다. ②는 형제(.normal-sign-in 등)가
     있어 절대 매칭되지 않는다. 클래스 이름이 같아도 화면은 분리된다.
   ============================================================ */

/* ------------------------------------------------------------
   A-1. 유일한 동작인 '조회하기'를 주요 버튼으로 승격

   왜: 패키지 Button 은 기본 theme 이 'default' 라 `btn btn--default`
       (흰 배경 + 테두리)로 렌더된다. 이 페이지에는 버튼이 하나뿐인데
       그게 보조 버튼 모양이라, 로그인/아이디찾기 등 다른 인증 화면
       (overrides.css 에서 이미 파랑으로 승격됨)과 인상이 어긋난다.
   ------------------------------------------------------------ */
.sign-in > .guest-order:only-child .btn {
  height: 52px; /* 패키지 `.guest-order button{height:44px}` 를 프로토타입 .btn--lg 높이로 */
  margin-top: 22px; /* 입력 필드와 붙어 있던 10px → 동작 단위로 분리 */
  background-color: var(--sc-blue);
  border-color: var(--sc-blue);
  color: var(--sc-white);
  font-size: 16px;
}

.sign-in > .guest-order:only-child .btn:hover {
  filter: brightness(1.08); /* overrides.css 의 .btn--caution:hover 와 같은 감각 */
}

/* 패키지 .btn 에는 포커스 표시가 없다. 키보드 사용자에게 필요하다. */
.sign-in > .guest-order:only-child .btn:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}

/* ------------------------------------------------------------
   A-2. 입력 필드 치수

   왜: 패키지가 `.guest-order__input-wrap{height:46px;margin-top:10px}`
       로 못박아 뒀고 `.text-field` 는 `height:inherit` 라 그 값을 따른다.
       46px + 10px 간격은 프로토타입(auth.html .field: 48px 높이, 15px 간격,
       좌우 15px 여백)보다 촘촘해 답답하다.
       모서리·배경·포커스 링은 overrides.css 가 이미 처리했으므로
       **치수만** 손댄다(중복 금지).
   ------------------------------------------------------------ */
.sign-in > .guest-order:only-child .guest-order__input-wrap {
  height: 48px;
  margin-top: 14px;
}

/* 첫 필드는 위 여백을 컨테이너가 갖는다 (이 페이지엔 .guest-order__title 이 없다) */
.sign-in > .guest-order:only-child .guest-order__input-wrap:first-child {
  margin-top: 0;
}

/* 패키지 `.text-field input{padding:5px 10px}` — 둥근 필드에는 좌우 여백이 얕다.
   전역 `.text-field input` 은 로그인·회원가입과 공유하는 영역이라 건드리지 않고
   이 페이지 안에서만 조정한다. */
.sign-in > .guest-order:only-child .text-field input {
  padding: 0 15px;
  font-size: 14.5px;
}

.sign-in > .guest-order:only-child .text-field input::placeholder {
  color: var(--sc-gray-2);
}

/* ------------------------------------------------------------
   A-3. 데스크톱에서 폼에 '면'을 준다

   왜: 이 라우트는 constants/layout.js 에서 NARROW(560px)다. 그런데
       흰 배경 위에 입력 두 칸이 테두리 없이 떠 있어 어디까지가 폼인지
       읽히지 않는다. 프로토타입 auth.html 은 420px 카드
       (1px --line 테두리 + --rl 모서리 + 30/28px 패딩)를 쓴다.
       모바일은 Aurora 기본(전폭)을 그대로 둔다.
   ------------------------------------------------------------ */
@media (min-width: 1001px) {
  .sign-in > .guest-order:only-child {
    max-width: 420px;
    margin: 8px auto 0; /* 패키지 .guest-order{margin-top:40px} 를 대체 */
    padding: 30px 28px 26px;
    border: 1px solid var(--sc-line);
    border-radius: var(--sc-rl);
  }
}

/* ============================================================
   B. 주문완료 / 결제실패 — /order/confirm
   ============================================================ */

/* ------------------------------------------------------------
   B-0. ⚠️ 이 페이지의 함정 — `.order-confirm{line-height:1.5em}`

   패키지가 페이지 루트에 **단위 있는** 1.5em 을 걸어놨다.
   em 단위 line-height 는 '계산된 px'(14 × 1.5 = 21px)이 그대로 상속된다.
   → 자식이 글자를 키워도 줄간격은 21px 로 고정돼 **글줄이 겹친다.**

   그래서 아래에서 font-size 를 올리는 규칙은 전부 line-height 를 함께 준다.
   (전역 line-height 를 고치는 방법은 금지 — 패키지 전체가 line-height:1
    기준 조판이다. docs/DESIGN.md 함정 노트)
   ------------------------------------------------------------ */

/* ------------------------------------------------------------
   B-1. 완료 아이콘을 브랜드 배지 안에 넣는다

   왜: OrderSuccess.jsx 는 `<Icon name="delivery" />` 를 쓰고, 패키지가
       `.order-confirm__hero .ico--delivery` 를 114.67×82px 스프라이트로
       키워 놨다. 큰 컬러 일러스트가 흰 바탕에 홀로 떠 있어 프로토타입
       complete.html 의 .checkwrap(88px --tint 원 + 얇은 링)과 인상이 다르다.
       스프라이트 자체는 JSX 를 고쳐야 바꿀 수 있으므로(원칙 ③),
       여기서는 **원형 tint 배지 안에 넣고 크기만 줄인다.**

   ※ 스프라이트는 <img> 가 아니라 background 라서 width/height 로 줄인다.
     ("이미지에 max-width 금지" 함정은 swiper 안의 <img> 얘기다)
     비율 유지: 패키지 값 × 0.6279 (114.67→72, 82→51.49, 608→381.77 …)
   ------------------------------------------------------------ */
.order-confirm__hero {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 104px;
  height: 104px;
  margin-bottom: 14px;
  border-radius: var(--sc-rpill); /* 정사각형이라 알약 토큰이 곧 원이 된다 */
  background-color: var(--sc-tint);
}

/* 프로토타입 .checkwrap::after 의 바깥 링 */
.order-confirm__hero::after {
  content: '';
  position: absolute;
  inset: -10px;
  border-radius: var(--sc-rpill);
  border: 1.5px solid var(--sc-tint);
}

.order-confirm__hero .ico--delivery {
  width: 72px;
  height: 51.49px;
  background-size: 381.77px 210.56px;
}

/* ------------------------------------------------------------
   B-2. 완료 메시지 — 위계를 만든다

   왜: 지금은 "주문이 정상적으로 완료되었습니다."가 본문과 같은 굵기의
       16.8px(1.2em)이라 이 페이지의 결론이 무엇인지 눈에 안 들어온다.
       프로토타입은 28px/800 제목 + 15px 보조문 + 알약 메타다.

   ★ `p:not(.order-confirm__message)` 인 이유:
     결제실패 화면(OrderFail.jsx:49)은 <p> 에도 같은 클래스를 달아
     `section.order-confirm__message > p.order-confirm__message` 구조가 된다.
     그 <p> 까지 28px 로 키우면 오류 문구가 과하게 커진다 → 제외하고
     B-3 에서 따로 다룬다.
   ------------------------------------------------------------ */
.order-confirm .order-confirm__message {
  text-align: center; /* flex 로 박스만 가운데였고 글줄은 왼쪽 정렬이었다 */
}

.order-confirm__message > p:not(.order-confirm__message):first-of-type {
  font-size: clamp(21px, 2.4vw, 28px);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.25; /* ← B-0. 안 주면 21px 로 고정돼 글줄이 겹친다 */
  color: var(--sc-black);
}

/* 보조 문구: 12px + --gray-color(#a1a1aa) 는 흰 배경에서 대비가 3:1 미만이라
   본문으로 읽히지 않는다. 프로토타입 .hero .sub(15px / --gray) 기준으로. */
.order-confirm .order-confirm__sub-message {
  max-width: 30em;
  font-size: 15px;
  line-height: 1.6;
  color: var(--sc-gray);
}

/* 주문번호 알약 — 프로토타입 .ordmeta 의 치수로 */
.order-confirm .order-confirm__order-no {
  margin-top: 18px;
  padding: 11px 18px;
  border-radius: var(--sc-rpill);
  background-color: var(--sc-off);
  font-size: 13px;
  color: var(--sc-gray);
}

.order-confirm .order-confirm__order-no .bold {
  color: var(--sc-black); /* 패키지는 --blue-gray-color 라 번호가 흐리다 */
  font-weight: 700;
}

/* ------------------------------------------------------------
   B-3. 결제실패 화면 정리

   왜 ①: OrderFail.jsx 가 <p> 에 section 과 **같은 클래스**를 달아서
        `.order-confirm__message{display:flex;padding:40px 20px;font-size:1.2em}`
        가 <p> 에도 걸린다. → 40px 패딩이 이중으로, 1.2em 이 1.44em 으로
        중첩된다. <p> 를 문단으로 되돌린다.
   왜 ②: `.order-confirm__sub-message--fail{padding:30px;line-height:30px}` 은
        여백만 크고 면이 없어 안내문이 허공에 뜬다. 옅은 면을 준다.
   ------------------------------------------------------------ */
p.order-confirm__message {
  display: block;
  padding: 0;
  font-size: 20px; /* 1.2em × 1.2em 중첩을 끊는다 */
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.4; /* ← B-0 */
  color: var(--sc-black);
}

.order-confirm .order-confirm__sub-message--fail {
  align-self: stretch; /* 부모가 column flex + align-items:center 라 폭이 줄어든다 */
  margin: 22px 0 0;
  padding: 18px 20px;
  border-radius: var(--sc-rm);
  background-color: var(--sc-off);
  font-size: 14.5px;
  line-height: 1.7; /* 패키지의 line-height:30px 은 16px 글자에 과하다 */
  color: var(--sc-ink-3);
  text-align: left;
}

/* ------------------------------------------------------------
   B-4. 패널(면) — Aurora 의 회색 그림자 띠를 걷어낸다

   왜: `.l-panel` 은 `box-shadow:0 10px 1px #f5f5f5` 로 패널 아래
       10px 회색 띠를 깔아 구획을 만든다(모바일 퍼스트 시절 장치).
       overrides.css 가 데스크톱에서 모서리를 16px 둥글리는데, 이 그림자는
       사각형 그대로라 둥근 모서리 밖으로 삐져나온다. 게다가 border-width 가
       `1px 0`(위아래만)이라 둥근 모서리에 테두리가 끊겨 보인다.
       프로토타입은 회색 띠 대신 **테두리 있는 카드**다.

   ※ `.l-panel` 은 전역 클래스라 `.order-confirm` 안으로 한정한다.
     전역 수정은 overrides.css 주인의 판단 영역이다.
   ------------------------------------------------------------ */
.order-confirm .l-panel {
  box-shadow: none;
  border-color: var(--sc-line); /* --light-gray-border-color(#eeeff1)는 그림자 없이는 너무 옅다 */
}

/* 완료 히어로는 카드가 아니라 페이지의 첫 문장이다 — 테두리를 뗀다 */
.order-confirm .order-confirm__message {
  border: 0;
  padding: 40px 20px 12px;
}

@media (min-width: 1001px) {
  /* 데스크톱에서만 사방 테두리 카드로 (모서리는 overrides.css 의
     `.l-panel{border-radius}` 가 이미 준다 — 여기서 다시 쓰지 않는다) */
  .order-confirm .l-panel {
    border-width: 1px;
    margin-bottom: 16px;
  }

  .order-confirm .order-confirm__message {
    padding-top: 48px;
    margin-bottom: 4px;
  }
}

/* ------------------------------------------------------------
   B-5. 섹션 제목 — 카드 헤더로 읽히게

   왜: `.accordion__title`(주문내역·주문자 정보·배송지)과
       `.order-detail-info__item-title`(결제정보)이 16px 보통 굵기라
       본문과 구분되지 않는다. 프로토타입 .order h2 는 15px/800 이다.
   ------------------------------------------------------------ */
.order-confirm .accordion__title,
.order-confirm .order-detail-info__item-title {
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--sc-black);
}

/* 주문내역 헤더 우측의 '3개 | 78,000원' */
.order-confirm .order-confirm__product-table-amt {
  font-size: 13px;
  color: var(--sc-gray);
}

/* ------------------------------------------------------------
   B-6. 결제 금액 상자

   왜: `.price-tag{border:1px solid var(--point-color)}` — 브랜드 파랑
       테두리 상자다. 바로 위에 파랑으로 가득 찬 후원 히어로 카드가 있어
       파랑이 두 번 나오고, 어느 쪽이 이 화면의 강조인지 흐려진다.
       프로토타입 .osum 은 옅은 회색 면이고, 강조는 총 결제금액 숫자
       하나(22px/800 검정)로 몰아준다.
   ------------------------------------------------------------ */
.order-confirm .price-tag {
  border-color: var(--sc-line);
  border-radius: var(--sc-rm);
  background-color: var(--sc-off);
}

.order-confirm .price-tag__division {
  border-top-color: var(--sc-line-2); /* --sc-line 은 --sc-off 면 위에서 안 보인다 */
}

/* 합계 항목 라벨이 --gray-color(#a1a1aa) 라 흰 면에서도 대비가 부족하다 */
.order-confirm .price-tag__details dt,
.order-confirm .price-tag__details dd {
  color: var(--sc-gray);
}

.order-confirm .price-tag__final-amount dt {
  font-size: 15px;
  color: var(--sc-black);
}

.order-confirm .price-tag__final-amount dd em {
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.2; /* ← B-0 */
  color: var(--sc-black); /* 파랑(--point-color)은 후원 카드에 양보한다 */
}

/* ------------------------------------------------------------
   B-7. 정보 목록 라벨 대비
   왜: `.order-detail-info dl dt{color:var(--gray-color)}` → #a1a1aa.
       '주문자 명 / 이메일 / 받는 사람' 같은 라벨이 배경에 묻힌다.
   ------------------------------------------------------------ */
.order-confirm .order-detail-info dl:not(.price-tag__final-amount) dt {
  color: var(--sc-gray);
}

/* ------------------------------------------------------------
   B-8. 영수증·계좌복사 버튼
   왜: `.order-detail__list-btn-wrap .btn`, `.order-detail-info__copy-btn`
       이 `border-radius:0` 으로 각져 있어 overrides.css 의 둥근 .btn 과
       같은 화면에서 두 가지 버튼 언어가 섞인다.
   ------------------------------------------------------------ */
.order-confirm .order-detail__list-btn-wrap .btn,
.order-confirm .order-detail-info__btn-wrap .btn,
.order-confirm .order-detail-info__copy-btn {
  border-radius: var(--sc-rs);
  border-color: var(--sc-line);
}

.order-confirm .order-detail__list-btn-wrap .btn:hover,
.order-confirm .order-detail-info__btn-wrap .btn:hover,
.order-confirm .order-detail-info__copy-btn:hover {
  background-color: var(--sc-off);
}

/* ------------------------------------------------------------
   B-9. 하단 버튼 줄

   왜: `.order-confirm__btn-group .btn{border-radius:0}` 은 특이성(0,2,0)이
       overrides.css 의 `.btn{border-radius:var(--sc-rm)}`(0,1,0)보다 높아
       **이 페이지에서만 버튼이 각진다.** 같은 특이성으로 되돌린다.
       (`!important` 불필요 — 우리 시트가 뒤에 실린다)
       gap 6px 도 두 버튼이 붙어 보여 프로토타입 .acts(12px)로 벌린다.
   ------------------------------------------------------------ */
.order-confirm__btn-group {
  gap: 12px;
  padding: 24px 20px 8px;
}

.order-confirm__btn-group .btn {
  height: 52px;
  border-radius: var(--sc-rm);
  font-size: 16px;
}

.order-confirm__btn-group .btn:focus-visible {
  outline: 2px solid var(--sc-blue);
  outline-offset: 2px;
}

/* 채워진 버튼 두 종(완료: 계속 쇼핑하기 / 실패: 홈으로 가기)에 hover 반응 */
.order-confirm__continue-btn:hover {
  filter: brightness(1.08);
}

.order-confirm__go-home-btn:hover {
  filter: brightness(1.35); /* --blue-gray-color 는 어두워 1.08 로는 변화가 안 보인다 */
}

@media (min-width: 1001px) {
  /* 이 라우트는 아직 WIDE(1200px)라 버튼 하나가 590px 까지 늘어난다.
     페이지 폭 자체는 CSS 가 정하면 안 되므로(docs/DESIGN.md §3)
     여기서는 '버튼 줄'만 사람이 누르기 좋은 폭으로 묶는다.
     폭의 진짜 해법은 src/constants/layout.js 에 `'order/confirm': MEDIUM` 한 줄. */
  .order-confirm__btn-group {
    max-width: 520px;
    margin: 0 auto;
    padding: 28px 0 12px;
  }
}

@charset 'utf-8';

/* ============================================================
   마이페이지 목록 — 오버라이드
   라우트: /my-page/like · /my-page/product-review · /my-page/product-inquiry
           /my-page/personal-inquiry · /orders · /claims
   ------------------------------------------------------------
   이 파일은 overrides.css 성격이다. @shopby 패키지 클래스를 직접
   겨냥하며, 규칙마다 "왜 그 클래스인지" 주석을 남긴다.
   ============================================================ */

/* ------------------------------------------------------------
   [무엇] 목록 항목의 이중 면을 하나로 합친다.
   [왜]   `.profile-like__list-item` 이 흰 카드인데 그 안의
          `.thumb-item.product-thumb-item` 이 또 --sc-off(#f6f6f7)
          회색 면을 깔아 **카드 안에 박스가 또 있는** 구조가 된다.
          프로토타입의 목록 항목은 단일 면이다.
   [범위] 회색 면을 없애고 바깥 카드만 남긴다. 목록 계열 전반에
          같은 구조가 쓰이므로 조상 클래스로 스코프한다.
   ------------------------------------------------------------ */
.profile-like__list-item .product-thumb-item,
.profile-product-review .product-thumb-item,
.profile-product-inquiry .product-thumb-item {
  background-color: transparent;
  padding-left: 0;
  padding-right: 0;
}

/* ------------------------------------------------------------
   [무엇] 목록 항목 카드에 모서리와 라인을 준다.
   [왜]   패키지는 각진 흰 블록을 이어 붙인다. 우리 언어는 카드다.
   ------------------------------------------------------------ */
.profile-like__list-item,
.profile-product-review__list-item,
.profile-product-inquiry__list-item {
  border-radius: var(--sc-rl);
  border: 1px solid var(--sc-line);
  overflow: hidden;
}

/* ------------------------------------------------------------
   [무엇] 목록 썸네일에 모서리.
   [왜]   상품 카드(.thumb-item__img)는 이미 12px 인데 목록형
          (.thumb-LIST) 만 각져 있어 같은 상품이 화면마다 달라 보인다.
   [주의] <img> 가 아니라 컨테이너에 건다 — DESIGN.md 함정 노트.
   ------------------------------------------------------------ */
.thumb-LIST .thumb-item__img,
.thumb-LIST .thumb-item__media {
  border-radius: var(--sc-rm);
  overflow: hidden;
}

/* ------------------------------------------------------------
   [무엇] 항목별 보조 버튼(상품문의·삭제)의 비중을 낮춘다.
   [왜]   지금은 두 버튼이 카드 폭을 반씩 꽉 채워 주요 동작처럼 읽힌다.
          목록에서 이것들은 부수 동작이다. 프로토타입의 보조 버튼은
          작고 옅다.
   [범위] 모양·크기만 낮춘다. 색 의미(삭제=경고)는 건드리지 않는다.
   ------------------------------------------------------------ */
.profile-like__buttons {
  gap: 8px;
  padding: 0 14px 14px;
}

.profile-like__buttons .btn {
  height: 38px;
  font-size: 13px;
  font-weight: 600;
  border-radius: var(--sc-rs);
  color: var(--sc-gray);
  border-color: var(--sc-line);
}

.profile-like__buttons .btn:hover {
  color: var(--sc-black);
  background-color: var(--sc-off);
}

/* ------------------------------------------------------------
   [무엇] 목록 상단의 건수 표기.
   [왜]   "좋아요 3 건" 의 숫자가 --point-color 라 이미 브랜드색이지만
          라벨과 크기가 같아 층이 없다. 제목처럼 읽히게 한다.
   ------------------------------------------------------------ */
.profile-like__total-count,
.profile-product-review__total-count,
.profile-product-inquiry__total-count {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--sc-black);
  margin-bottom: 16px;
}

/* ------------------------------------------------------------
   [무엇] 목록 항목의 세로 여백을 조인다.
   [왜]   `.product-thumb-item{padding:20px 0}` 에 `align-items:normal`
          이라 84px 썸네일 옆 텍스트가 늘어나 빈 공간이 생긴다.
          카드 높이가 223px 인데 실제 내용은 절반뿐이었다.
   ------------------------------------------------------------ */
.profile-like__list-item .product-thumb-item {
  padding: 16px 14px 10px;
  align-items: center;
}

/* 항목별 후원 뱃지 — 가격 아래 */
.product-thumb-item__donation {
  margin-top: 6px;
}

