/*
 * 방문자 화면 새 디자인(«디자인 v2») — 그 밖의 화면 정돈.
 * About · 의료진 목록/상세 · 고정 페이지 · 검색 결과 · 404 는 v2 전용 부품을 따로 만들지 않고 기존 부품을 그대로 그린다.
 * 이 파일은 그 화면들이 v2 헤더 · 푸터 안에서 어색하지 않게 폭 · 여백 · 제목 모양 · 모서리 · 색만 v2 변수에 맞춘다.
 * (부품의 JSX 는 건드리지 않는다 — 구성 · 글자 · 구조화 데이터는 지금과 같다.)
 *
 * 닿는 곳
 *  - «기존 화면» = main 바로 아래의, v2- 로 시작하는 클래스가 없는 덩어리. v2 전용 화면(홈 · 글 목록 · 글 상세)은
 *    맨 바깥 요소에 v2-… 클래스가 있어 해당하지 않는다.
 *  - .v2-tone = v2 전용 화면 중 기존 부품(공유 단추 · 목차 · 함께 읽으면 좋은 글 · 관련 글 슬라이드)을 안에 품은 곳
 *    (글 목록 .v2-list · 글 상세 .v2-post). 색 · 모서리 변수만 같이 바꾼다.
 *
 * 방법
 *  1) 기존 부품의 Tailwind 유틸리티가 읽는 변수(--foreground · --border · --color-neutral-* · --radius-* …)를
 *     그 덩어리에서 v2 변수로 다시 정한다. 유틸리티 규칙 자체는 건드리지 않는다.
 *  2) 변수로 안 되는 몇 가지(본문 폭의 좌우 여백 · 제목 굵기 · 그라데이션 단추)만 층 밖 규칙으로 덮는다.
 *     유틸리티(utilities 층)를 이겨야 해서 층 밖에 두고, 선택자는 «기존 화면» 아래로만 좁혔다.
 */
@layer theme, base, components, utilities;

@layer components {
  /* ── 1) 색 · 모서리 변수 ─────────────────────────── */
  [data-design="v2"] main > :not([class*="v2-"]),
  [data-design="v2"] .v2-tone {
    /* 글자 · 바탕 · 줄 (shadcn 변수 — text-foreground · bg-muted · border-border …) */
    --background: var(--d-surface);
    --foreground: var(--d-ink);
    --card: var(--d-surface);
    --card-foreground: var(--d-ink);
    --muted: var(--d-bg-alt);
    --muted-foreground: var(--d-muted);
    --accent: var(--d-brand-tint);
    --accent-foreground: var(--d-brand-deep);
    --border: var(--d-line);
    --input: var(--d-line);
    /* 링크 · 강조 — v2 는 짙은 브랜드색을 쓴다 */
    --primary: var(--d-brand-ink);
    --ring: var(--d-brand-ink);
    /* 회색 단계 (text-neutral-800 · border-neutral-200 · bg-neutral-50 …) */
    --color-neutral-900: var(--d-ink);
    --color-neutral-800: var(--d-ink);
    --color-neutral-700: var(--d-ink-2);
    --color-neutral-600: var(--d-ink-2);
    --color-neutral-500: var(--d-muted);
    --color-neutral-400: var(--d-faint);
    --color-neutral-300: var(--d-line);
    --color-neutral-200: var(--d-line);
    --color-neutral-100: var(--d-line-soft);
    --color-neutral-50: var(--d-bg-alt);
    /* 모서리 — 사진 · 작은 상자는 이미지 모서리, 카드는 카드 모서리 (rounded-full 은 그대로) */
    --radius-2xs: var(--d-radius-image);
    --radius-xs: var(--d-radius-image);
    --radius-sm: var(--d-radius-image);
    --radius-md: var(--d-radius-image);
    --radius-lg: var(--d-radius-image);
    --radius-m: var(--d-radius-image);
    --radius-xl: var(--d-radius-image);
    --radius-s: var(--d-radius-card);
    --radius-ms: var(--d-radius-card);
    --radius-2xl: var(--d-radius-card);
  }

  /* 본문 폭 — 기존 화면의 가장 넓은 틀(1760px)을 v2 본문 폭(1112px + 좌우 여백)으로 */
  [data-design="v2"] main > :not([class*="v2-"]) {
    --container-4xl: calc(1112px + 40px);
    --container-3xl: calc(1112px + 40px);
  }
  @media (min-width: 51.3125rem) {
    [data-design="v2"] main > :not([class*="v2-"]) {
      --container-4xl: calc(1112px + 64px);
      --container-3xl: calc(1112px + 64px);
    }
  }
}

/*
 * ── 2) 변수로 안 되는 것 (층 밖) ──────────────────────
 * 전부 «기존 화면»(main 바로 아래의 v2- 클래스 없는 덩어리) 안에서만 먹는다.
 */

/* 좌우 여백을 v2 헤더 · 푸터와 같은 줄에 (휴대폰 20px · 그 위 32px) */
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]),
[data-design="v2"] main > .max-w-site-3xl:not([class*="v2-"]),
[data-design="v2"] main > :not([class*="v2-"]) > .max-w-site-4xl,
[data-design="v2"] main > :not([class*="v2-"]) > .max-w-site-3xl {
  padding-inline: 20px;
}
/* 위치 표시로 시작하는 화면은 헤더 바로 아래에서 시작한다 (v2 목록 · 글 상세와 같은 높이) */
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]):has(> nav[aria-label="Breadcrumb"]) {
  padding-top: 20px;
}

/* 위치 표시 — 작은 굵은 글자, 지금 화면은 브랜드색 */
[data-design="v2"] main > :not([class*="v2-"]) nav[aria-label="Breadcrumb"] ol {
  color: var(--d-muted);
  font-size: 12.5px;
  font-weight: 700;
  line-height: 21px;
}
[data-design="v2"] main > :not([class*="v2-"]) nav[aria-label="Breadcrumb"] [aria-current="page"] {
  color: var(--d-brand-ink);
  font-weight: 700;
}

/* 제목 — 컨셉의 굵기 · 자간 */
[data-design="v2"] main > :not([class*="v2-"]) h1,
[data-design="v2"] main > :not([class*="v2-"]) h2 {
  color: var(--d-ink);
  font-weight: var(--d-title-weight);
  letter-spacing: var(--d-title-tracking);
}
/* 색 바탕 위의 제목(About 맨 아래 상담 상자)은 상자의 글자색(흰색)을 그대로 쓴다 — 위 규칙이 덮으면 짙은 바탕에 짙은 글자가 된다 */
[data-design="v2"] main > :not([class*="v2-"]) [data-cta-band] h2 {
  color: inherit;
}
/* 화면 맨 위의 제목(목록 · 고정 페이지 · 의료진 목록)은 v2 목록 제목과 같은 크기 */
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) h1.text-3xl {
  font-size: 28px;
  line-height: 1.3;
}

/* 작게 각진 사진 · 꼬리표(rounded-[4px] · rounded-[2px])도 컨셉의 모서리를 따른다 */
[data-design="v2"] main > :not([class*="v2-"]) .rounded-\[4px\] {
  border-radius: var(--d-radius-image);
}
[data-design="v2"] main > :not([class*="v2-"]) .rounded-\[2px\] {
  border-radius: min(var(--d-radius-button), 6px);
}

/* 브랜드 그라데이션 — v2 는 단색. 띠(검색 머리)는 상담 띠 색, 단추(404 · 검색 결과 없음)는 짙은 브랜드색 */
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) {
  background-color: var(--d-band-bg);
  background-image: none;
}
[data-design="v2"] main > :not([class*="v2-"]) a[class*="from-brand-secondary"] {
  border-radius: var(--d-radius-button);
  background-color: var(--d-brand-ink);
  background-image: none;
}
[data-design="v2"] main > :not([class*="v2-"]) a[class*="from-brand-secondary"]:hover {
  background-color: var(--d-brand-deep);
  opacity: 1;
}
/*
 * 검색 (app/search — 기존 부품 SearchHero · SearchResults · PostSearchCard 를 그대로 그린다)
 */
/* 머리 띠 — 검색창은 v2 검색창(헤더 · 히어로)과 같은 모서리 · 크기로, 키워드는 배너형 히어로의 칩과 같은 모양으로 */
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) > div > div {
  max-width: 720px;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form > div {
  gap: 10px;
  padding: 8px 16px;
  border-radius: var(--d-radius-card);
  box-shadow: none;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form input {
  color: var(--d-ink);
  font-size: 16px;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form input::placeholder {
  color: var(--d-faint);
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form button,
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form button svg {
  width: 26px;
  height: 26px;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form svg path {
  fill: var(--d-brand-ink);
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) p {
  color: rgb(255 255 255 / 0.84);
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) ul button {
  border: 1px solid rgb(255 255 255 / 0.3);
  border-radius: var(--d-radius-button);
  background: rgb(255 255 255 / 0.14);
  box-shadow: none;
  font-size: 13px;
  font-weight: 700;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) ul button:hover {
  border-color: rgb(255 255 255 / 0.7);
  background: rgb(255 255 255 / 0.22);
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form button:focus-visible {
  outline: 2px solid var(--d-brand-ink);
  outline-offset: 2px;
}
[data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) ul button:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* 결과 카드 — 기존 화면은 1760px 폭에 2열(사진 300px + 글)이다. v2 본문 폭(1112px)에 2열을 두면 글 칸이 176px 만 남아
   제목이 두 줄로 꺾여 «…» 로 잘린다. 한 줄에 카드 하나로 두고(글 칸이 남은 폭을 다 쓴다) 사이에 옅은 줄을 긋는다.
   (.gap-x-20 은 SearchResults 의 격자에만 있는 클래스다) */
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 {
  grid-template-columns: minmax(0, 1fr);
  row-gap: 0;
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 > a {
  padding-block: 24px;
  border-bottom: 1px solid var(--d-line-soft);
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 > a:first-child {
  padding-top: 0;
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 > a:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 h3 {
  color: var(--d-ink);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: -0.03em;
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 > a:hover h3 {
  color: var(--d-brand-ink);
}
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 p {
  color: var(--d-muted);
  font-size: 14px;
  line-height: 1.7;
}
/* 검색어 강조 — 밝은 브랜드색 대신 v2 의 짙은 브랜드색 */
[data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 .text-brand-primary {
  color: var(--d-brand-ink);
}

/* 404 의 «홈으로» · «전체 콘텐츠 보러가기» — 단추 모서리 */
[data-design="v2"] main > .max-w-site-4xl.text-center:not([class*="v2-"]) a.rounded-full {
  border-radius: var(--d-radius-button);
  font-size: 14px;
  font-weight: 700;
}

/* About(영역별 구성 · 피그마 PF-04) — 작은 윗글은 강조색, 카드는 v2 카드 줄 · 그림자 */
[data-design="v2"] [data-about-sections] .text-brand-primary {
  color: var(--d-accent);
}
[data-design="v2"] [data-about-sections] li.rounded-2xl,
[data-design="v2"] [data-about-sections] [data-about="groups"] .rounded-2xl {
  box-shadow: var(--d-shadow-card);
}
[data-design="v2"] [data-about-sections] .border-brand-primary,
[data-design="v2"] [data-about-sections] .border-foreground {
  border-color: var(--d-brand-deep);
}

/* 고정 페이지 · About 의 본문 — 글 상세와 같은 글자색 · 링크색 */
[data-design="v2"] main > :not([class*="v2-"]) .prose-content {
  color: var(--d-ink-2);
}

@media (min-width: 51.3125rem) {
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]),
  [data-design="v2"] main > .max-w-site-3xl:not([class*="v2-"]),
  [data-design="v2"] main > :not([class*="v2-"]) > .max-w-site-4xl,
  [data-design="v2"] main > :not([class*="v2-"]) > .max-w-site-3xl {
    padding-inline: 32px;
  }
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]):has(> nav[aria-label="Breadcrumb"]) {
    padding-top: 21px;
  }
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) h1.text-3xl {
    font-size: 36px;
    line-height: 46.1px;
  }
  /* 검색 */
  [data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form > div {
    padding: 10px 22px;
  }
  [data-design="v2"] main > section[class*="from-brand-secondary"]:not([class*="v2-"]) form input {
    font-size: 18px;
  }
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 > a {
    padding-block: 28px;
  }
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 h3 {
    font-size: 20px;
    line-height: 1.45;
  }
  [data-design="v2"] main > .max-w-site-4xl:not([class*="v2-"]) .grid.gap-x-20 p {
    font-size: 14.5px;
  }
}
