/* =============================================================================
 * design-system.css — 미담(목공사) 사이트 공통 디자인 시스템
 * visual-designer-INSIDE-V2 | brand_tier=standard | corner=rounded | dark=forbidden
 *
 * 사용법(프론트):
 *   <body class="pal-c03">   ← 페이지별 팔레트 클래스를 body에 1개만 부여
 *   팔레트 클래스: pal-c02 / pal-c03 / pal-c07 / pal-c09 / pal-c11 / pal-c14
 *   클래스 미부여 시 :root 기본값(C03)이 적용됨.
 *
 * 이모지 금지 / auto-fit 금지 / 다크 배경 금지 / 둥근 모서리 통일.
 * Tailwind CDN 병용 허용. 본 파일은 경량 Critical CSS로 인라인 가능.
 * ============================================================================= */

/* -----------------------------------------------------------------------------
 * 0. RESET (경량)
 * -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body { line-height: 1.65; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, picture, svg, video { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; padding: 0; }
:focus-visible { outline: 2px solid var(--ds-primary); outline-offset: 2px; }

/* -----------------------------------------------------------------------------
 * 1. 디자인 토큰 — :root (구조 토큰 + 기본 팔레트 = C03)
 * -------------------------------------------------------------------------- */
:root {
  /* --- 기본 팔레트 (C03 Charcoal Mustard) --- */
  --ds-bg:      #F7F6F3;
  --ds-sub:     #E8E5DD;
  --ds-text:    #1A1A1A;
  --ds-muted:   #6B6B68;
  --ds-primary: #2D2D2A;
  --ds-accent:  #C9962E;
  --ds-border:  #DDD9CF;

  /* 파생 토큰(공통 규칙) — 팔레트별로 재계산되지 않는 구조 토큰 */
  --ds-surface:      #FFFFFF;           /* 카드/헤더 기본 표면 */
  --ds-overlay-soft: rgba(0,0,0,.04);

  /* --- 타이포 --- */
  --ds-font-body: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont,
                  "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif;
  --ds-font-head: var(--ds-font-body);

  /* 한글 가독 editorial 스케일 (모바일 3줄 방지: vw 가중 낮춤) */
  --ds-fs-display: clamp(1.95rem, 1.2rem + 3.6vw, 3.1rem);   /* 메인 섹션 헤드/서브 H1 */
  --ds-fs-h1:      clamp(1.7rem,  1.15rem + 2.6vw, 2.6rem);  /* 서브 Hero H1 */
  --ds-fs-h2:      clamp(1.45rem, 1.1rem + 1.7vw, 2.05rem);
  --ds-fs-h3:      clamp(1.12rem, 0.98rem + 0.6vw, 1.3rem);
  --ds-fs-body:    clamp(0.98rem, 0.94rem + 0.18vw, 1.06rem);
  --ds-fs-lede:    clamp(1.05rem, 0.98rem + 0.4vw, 1.18rem);
  --ds-fs-caption: clamp(0.8rem, 0.78rem + 0.1vw, 0.86rem);

  --ds-lh-head: 1.32;
  --ds-lh-body: 1.7;
  --ds-ls-head: -0.01em;
  --ds-ls-caps: 0.14em;

  /* --- 레이아웃 --- */
  --ds-max:      1200px;
  --ds-max-text: 65ch;          /* 본문 가독 최대폭 */
  --ds-gutter:   clamp(16px, 4vw, 32px);
  --ds-sec-pad:  clamp(56px, 8vw, 104px);   /* 섹션 상하 패딩 */
  --ds-gap:      clamp(18px, 2.4vw, 28px);  /* 카드 그리드 갭 */

  /* --- 모서리(rounded 통일) --- */
  --ds-radius-sm:  8px;
  --ds-radius:     14px;
  --ds-radius-lg:  20px;
  --ds-radius-pill: 999px;

  /* --- 그림자 (은은) --- */
  --ds-shadow-sm: 0 1px 2px rgba(20,18,12,.05), 0 2px 8px rgba(20,18,12,.05);
  --ds-shadow-md: 0 6px 18px rgba(20,18,12,.08), 0 2px 6px rgba(20,18,12,.05);
  --ds-shadow-lg: 0 18px 44px rgba(20,18,12,.12);

  /* --- 모션 --- */
  --ds-ease: cubic-bezier(.22, 1, .36, 1);
  --ds-dur:  .35s;

  /* --- 레이어 --- */
  --ds-z-header: 100;
  --ds-z-float:  90;
  --ds-z-top:    80;
}

/* -----------------------------------------------------------------------------
 * 2. 팔레트 클래스 (body class 로 전환) — 컬러북 6색 정확 HEX
 *    bg / sub / text / muted / primary / accent / border
 * -------------------------------------------------------------------------- */
.pal-c02 { /* Warm Olive */
  --ds-bg:#F5F1EA; --ds-sub:#EBE5DA; --ds-text:#2A2920; --ds-muted:#6B6655;
  --ds-primary:#4A5D3A; --ds-accent:#B58A3F; --ds-border:#DDD5C5;
}
.pal-c03 { /* Charcoal Mustard (기본) */
  --ds-bg:#F7F6F3; --ds-sub:#E8E5DD; --ds-text:#1A1A1A; --ds-muted:#6B6B68;
  --ds-primary:#2D2D2A; --ds-accent:#C9962E; --ds-border:#DDD9CF;
}
.pal-c07 { /* Cool Copper */
  --ds-bg:#F2F4F6; --ds-sub:#E0E5EA; --ds-text:#1F2937; --ds-muted:#6B7280;
  --ds-primary:#374151; --ds-accent:#B87333; --ds-border:#D5DAE0;
}
.pal-c09 { /* Stone Forest */
  --ds-bg:#F4F4F1; --ds-sub:#E2E2DD; --ds-text:#1A2419; --ds-muted:#5E6660;
  --ds-primary:#2C4A35; --ds-accent:#8B7355; --ds-border:#D5D5CF;
}
.pal-c11 { /* Linen Black */
  --ds-bg:#F5F2EC; --ds-sub:#E8E3D8; --ds-text:#0F0F0F; --ds-muted:#5E5E5C;
  --ds-primary:#1A1A1A; --ds-accent:#A88B5C; --ds-border:#D5CFC2;
}
.pal-c14 { /* Warm Brick */
  --ds-bg:#FBF5EE; --ds-sub:#F2E5D2; --ds-text:#2A1A14; --ds-muted:#7A5C50;
  --ds-primary:#8B3A2B; --ds-accent:#D4A75C; --ds-border:#E5D2BD;
}

/* -----------------------------------------------------------------------------
 * 3. 기본 타이포 / 베이스
 * -------------------------------------------------------------------------- */
body {
  font-family: var(--ds-font-body);
  font-size: var(--ds-fs-body);
  color: var(--ds-text);
  background: var(--ds-bg);
  word-break: keep-all;
  overflow-wrap: break-word;
}

h1, h2, h3, h4 {
  font-family: var(--ds-font-head);
  line-height: var(--ds-lh-head);
  letter-spacing: var(--ds-ls-head);
  color: var(--ds-text);
  font-weight: 700;
  word-break: keep-all;
  overflow-wrap: break-word;
}
h1 { font-size: var(--ds-fs-h1); }
h2 { font-size: var(--ds-fs-h2); }
h3 { font-size: var(--ds-fs-h3); }

p { line-height: var(--ds-lh-body); word-break: keep-all; overflow-wrap: break-word; }
p, li { color: var(--ds-text); }

/* 본문 가독 폭 제한 유틸 */
.ds-prose { max-width: var(--ds-max-text); }
.ds-prose p + p { margin-top: 1em; }

/* eyebrow (대문자 캡션) — 이모지 대신 텍스트 라벨 */
.ds-eyebrow {
  display: inline-block;
  font-size: var(--ds-fs-caption);
  font-weight: 700;
  letter-spacing: var(--ds-ls-caps);
  text-transform: uppercase;
  color: var(--ds-accent);
}

/* -----------------------------------------------------------------------------
 * 4. 레이아웃 — 컨테이너 / 섹션 / 섹션헤드
 * -------------------------------------------------------------------------- */
.ds-container {
  width: 100%;
  max-width: var(--ds-max);
  margin-inline: auto;
  padding-inline: var(--ds-gutter);
}

.ds-section { padding-block: var(--ds-sec-pad); background: var(--ds-bg); }

/* 교차 배경: bg(기본) / sub(연한) — 연속 동일 배경 금지를 위해 프론트가 번갈아 사용 */
.ds-section--sub  { background: var(--ds-sub); }
.ds-section--surface { background: var(--ds-surface); }

.ds-section-head { max-width: 760px; margin-bottom: clamp(28px, 4vw, 48px); }
.ds-section-head--center { margin-inline: auto; text-align: center; }
.ds-section-head h2,
.ds-section-head h1 {
  font-size: var(--ds-fs-display);
  margin-top: 10px;
  margin-bottom: 14px;
}
.ds-section-head .ds-lede {
  font-size: var(--ds-fs-lede);
  color: var(--ds-muted);
  max-width: 60ch;
}
.ds-section-head--center .ds-lede { margin-inline: auto; }

/* 액센트 룰 (헤드 하단 짧은 강조선) */
.ds-rule {
  width: 48px; height: 3px; border-radius: var(--ds-radius-pill);
  background: var(--ds-accent); margin-top: 18px;
}
.ds-section-head--center .ds-rule { margin-inline: auto; }

/* -----------------------------------------------------------------------------
 * 5. 버튼 (둥근)
 * -------------------------------------------------------------------------- */
.ds-btn {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 52px; padding: 14px 28px;
  border-radius: var(--ds-radius-pill);
  font-weight: 700; font-size: 1rem; line-height: 1;
  cursor: pointer; border: 1.5px solid transparent;
  transition: transform var(--ds-dur) var(--ds-ease),
              background-color var(--ds-dur) var(--ds-ease),
              box-shadow var(--ds-dur) var(--ds-ease),
              color var(--ds-dur) var(--ds-ease);
  text-align: center;
}
.ds-btn:hover { transform: translateY(-2px); }
.ds-btn:active { transform: translateY(0); }

/* primary CTA */
.ds-btn--primary {
  background: var(--ds-primary); color: #fff;
  box-shadow: var(--ds-shadow-sm);
}
.ds-btn--primary:hover { box-shadow: var(--ds-shadow-md); }

/* accent CTA (강조 상담) — 단, 상담 '카드'에는 사용 금지. 배너/Hero 버튼 한정 */
.ds-btn--accent {
  background: var(--ds-accent); color: #1a1a1a;
  box-shadow: var(--ds-shadow-sm);
}
.ds-btn--accent:hover { box-shadow: var(--ds-shadow-md); }

/* outline (메인페이지 이동 등 보조 동선) */
.ds-btn--outline {
  background: transparent; color: var(--ds-text);
  border-color: var(--ds-border);
}
.ds-btn--outline:hover { border-color: var(--ds-primary); background: var(--ds-overlay-soft); }

.ds-btn__arrow { transition: transform var(--ds-dur) var(--ds-ease); }
.ds-btn:hover .ds-btn__arrow { transform: translateX(4px); }

/* -----------------------------------------------------------------------------
 * 6. Header — 반투명 + 블러 고정
 * -------------------------------------------------------------------------- */
.ds-header {
  position: sticky; top: 0; z-index: var(--ds-z-header);
  background: color-mix(in srgb, var(--ds-bg) 82%, transparent);
  -webkit-backdrop-filter: blur(12px) saturate(120%);
  backdrop-filter: blur(12px) saturate(120%);
  border-bottom: 1px solid var(--ds-border);
}
.ds-header__inner {
  max-width: var(--ds-max); margin-inline: auto;
  padding: 12px var(--ds-gutter);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.ds-header__logo { display: flex; align-items: center; gap: 10px; font-weight: 800; }
.ds-header__logo img { height: clamp(40px, 5vw, 52px); width: auto; }
.ds-nav { display: flex; align-items: center; gap: clamp(14px, 2vw, 30px); }
.ds-nav a {
  position: relative; font-weight: 600; font-size: .95rem; color: var(--ds-text);
  padding: 6px 2px;
}
.ds-nav a::after {
  content: ""; position: absolute; left: 0; bottom: 0; height: 1.5px; width: 100%;
  background: var(--ds-accent);
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--ds-dur) var(--ds-ease);
}
.ds-nav a:hover::after, .ds-nav a[aria-current="page"]::after { transform: scaleX(1); }

/* -----------------------------------------------------------------------------
 * 7. Hero
 *    (a) 메인: 서비스그리드형 — 별도 큰 Hero 없이 컴팩트 인트로 + 바로 그리드
 *    (b) 서브: 단일이미지 + H1 오버레이
 * -------------------------------------------------------------------------- */

/* (a) 메인 인트로 밴드 (서비스그리드형) — 큰 비주얼 없이 텍스트 인트로만 */
.ds-mainintro {
  background: var(--ds-sub);
  padding-block: clamp(40px, 6vw, 72px);
  border-bottom: 1px solid var(--ds-border);
}
.ds-mainintro h1 {
  font-size: var(--ds-fs-display);
  margin: 10px 0 14px;
}
.ds-mainintro .ds-lede { font-size: var(--ds-fs-lede); color: var(--ds-muted); max-width: 56ch; }

/* (b) 서브 Hero — 단일 이미지 + H1 오버레이 */
.ds-subhero {
  position: relative;
  min-height: clamp(260px, 42vw, 440px);
  display: grid; align-items: end;
  overflow: hidden;
}
.ds-subhero__img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  z-index: 0;
}
/* 가독 오버레이 그라데이션 (하단 어둡게) */
.ds-subhero__overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(
    180deg,
    rgba(0,0,0,.10) 0%,
    rgba(0,0,0,.30) 48%,
    rgba(0,0,0,.66) 100%);
}
.ds-subhero__body {
  position: relative; z-index: 2;
  max-width: var(--ds-max); width: 100%;
  margin-inline: auto;
  padding: clamp(28px,5vw,56px) var(--ds-gutter);
  color: #fff;
}
.ds-subhero__body .ds-eyebrow { color: #fff; opacity: .92; }
.ds-subhero__body h1 { color: #fff; font-size: var(--ds-fs-h1); margin: 8px 0 0; }
.ds-subhero__body p { color: rgba(255,255,255,.92); margin-top: 12px; max-width: 52ch; }

/* -----------------------------------------------------------------------------
 * 8. 카드 그리드 — 6개 고정, PC 3열 / 태블릿·모바일 2열 (auto-fit 절대 금지)
 * -------------------------------------------------------------------------- */
.ds-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);   /* PC 3열 고정 */
  gap: var(--ds-gap);
}

.ds-card {
  position: relative;
  display: flex; flex-direction: column;
  background: var(--ds-surface);
  border: 1px solid var(--ds-border);
  border-radius: var(--ds-radius);
  overflow: hidden;
  box-shadow: var(--ds-shadow-sm);
  transition: transform var(--ds-dur) var(--ds-ease),
              box-shadow var(--ds-dur) var(--ds-ease),
              border-color var(--ds-dur) var(--ds-ease);
  height: 100%;
}
.ds-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--ds-shadow-lg);
  border-color: color-mix(in srgb, var(--ds-accent) 40%, var(--ds-border));
}

/* 카드 이미지 (CLS 방지: 비율 박스) */
.ds-card__media {
  position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ds-sub);
}
.ds-card__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .6s var(--ds-ease);
}
.ds-card:hover .ds-card__media img { transform: scale(1.05); }

.ds-card__body { padding: clamp(16px, 2vw, 22px); display: flex; flex-direction: column; gap: 8px; flex: 1; }
.ds-card__num {
  font-size: var(--ds-fs-caption); font-weight: 700; letter-spacing: .12em;
  color: var(--ds-accent);
}
.ds-card__body h3 { font-size: var(--ds-fs-h3); }
.ds-card__body p { font-size: .95rem; color: var(--ds-muted); line-height: 1.6; }
.ds-card__more {
  margin-top: auto; padding-top: 6px;
  font-weight: 700; font-size: .92rem; color: var(--ds-text);
  display: inline-flex; align-items: center; gap: 6px;
}
.ds-card__more .ds-btn__arrow { transition: transform var(--ds-dur) var(--ds-ease); }
.ds-card:hover .ds-card__more .ds-btn__arrow { transform: translateX(4px); }

/* 풀카드 링크 */
a.ds-card { color: inherit; }

/* 상담 카드: 다른 카드와 100% 동일 — 별도 강조/별도 색 금지.
   .ds-card--consult 는 마크업 식별용일 뿐, 시각적 차등을 주지 않는다. */
.ds-card--consult { /* intentionally identical to .ds-card — no color emphasis */ }

/* -----------------------------------------------------------------------------
 * 9. 갤러리 — 단일 사진형 (비포애프터 금지). 최대 6장.
 * -------------------------------------------------------------------------- */
.ds-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--ds-gap);
}
/* 사진 4장 갤러리는 2열(2×2) 정리 */
.ds-gallery--cols2 { grid-template-columns: repeat(2, 1fr); max-width: 880px; margin-inline: auto; }
.ds-gallery__item {
  position: relative; aspect-ratio: 3 / 4; overflow: hidden;
  border-radius: var(--ds-radius); border: 1px solid var(--ds-border);
  background: var(--ds-sub);
}
.ds-gallery__item img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .6s var(--ds-ease);
}
.ds-gallery__item:hover img { transform: scale(1.04); }

/* -----------------------------------------------------------------------------
 * 10. FAQ 아코디언
 * -------------------------------------------------------------------------- */
.ds-faq { max-width: 860px; margin-inline: auto; }
.ds-faq__item {
  border: 1px solid var(--ds-border); border-radius: var(--ds-radius);
  background: var(--ds-surface); margin-bottom: 12px; overflow: hidden;
}
.ds-faq__q {
  width: 100%; text-align: left; cursor: pointer; background: transparent;
  padding: 18px 56px 18px 20px; position: relative;
  font-weight: 700; font-size: 1.02rem; color: var(--ds-text);
}
.ds-faq__q::after {
  content: ""; position: absolute; right: 22px; top: 50%;
  width: 11px; height: 11px;
  border-right: 2px solid var(--ds-accent); border-bottom: 2px solid var(--ds-accent);
  transform: translateY(-65%) rotate(45deg);
  transition: transform var(--ds-dur) var(--ds-ease);
}
.ds-faq__item[open] .ds-faq__q::after,
.ds-faq__q[aria-expanded="true"]::after { transform: translateY(-35%) rotate(-135deg); }
.ds-faq__a { padding: 0 20px 20px; color: var(--ds-muted); line-height: 1.7; }

/* -----------------------------------------------------------------------------
 * 11. CTA 배너 (split) — 이미지 + 패널. 색상만 그라데이션 금지.
 * -------------------------------------------------------------------------- */
.ds-ctabanner {
  display: grid; grid-template-columns: 1fr 1fr;
  border-radius: var(--ds-radius-lg); overflow: hidden;
  border: 1px solid var(--ds-border); background: var(--ds-surface);
  box-shadow: var(--ds-shadow-md);
}
.ds-ctabanner__media { position: relative; min-height: 240px; }
.ds-ctabanner__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ds-ctabanner__body {
  padding: clamp(28px, 4vw, 48px);
  display: flex; flex-direction: column; justify-content: center; gap: 14px;
  background: var(--ds-sub);
}
.ds-ctabanner__body h2 { font-size: var(--ds-fs-h2); }
.ds-ctabanner__body p { color: var(--ds-muted); }

/* -----------------------------------------------------------------------------
 * 12. Trust 배지 / 스탯
 * -------------------------------------------------------------------------- */
.ds-trust { display: flex; flex-wrap: wrap; gap: 10px; }
.ds-trust__chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 16px; border-radius: var(--ds-radius-pill);
  background: var(--ds-surface); border: 1px solid var(--ds-border);
  font-size: .9rem; font-weight: 600; color: var(--ds-text);
}
.ds-trust__chip svg { width: 16px; height: 16px; stroke: var(--ds-accent); }

/* -----------------------------------------------------------------------------
 * 13. Footer
 * -------------------------------------------------------------------------- */
.ds-footer {
  background: var(--ds-sub);
  border-top: 1px solid var(--ds-border);
  padding-block: clamp(40px, 6vw, 64px);
}
.ds-footer__inner {
  max-width: var(--ds-max); margin-inline: auto; padding-inline: var(--ds-gutter);
  display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 32px;
}
.ds-footer h4 { font-size: 1rem; margin-bottom: 14px; }
.ds-footer a, .ds-footer li, .ds-footer p { color: var(--ds-muted); font-size: .92rem; line-height: 1.9; }
.ds-footer a:hover { color: var(--ds-text); }
.ds-footer__bottom {
  max-width: var(--ds-max); margin: 28px auto 0; padding: 18px var(--ds-gutter) 0;
  border-top: 1px solid var(--ds-border);
  font-size: .85rem; color: var(--ds-muted);
}

/* -----------------------------------------------------------------------------
 * 14. Floating 버튼(우하단) + Top 버튼
 * -------------------------------------------------------------------------- */
.ds-float {
  position: fixed; right: clamp(14px, 3vw, 28px); bottom: clamp(14px, 3vw, 28px);
  z-index: var(--ds-z-float);
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 22px; border-radius: var(--ds-radius-pill);
  background: var(--ds-primary); color: #fff; font-weight: 700;
  box-shadow: var(--ds-shadow-lg);
  transition: transform var(--ds-dur) var(--ds-ease);
}
.ds-float:hover { transform: translateY(-3px); }
.ds-float svg { width: 18px; height: 18px; stroke: currentColor; }

.ds-top {
  position: fixed; right: clamp(14px, 3vw, 28px);
  bottom: calc(clamp(14px, 3vw, 28px) + 66px);
  z-index: var(--ds-z-top);
  width: 46px; height: 46px; border-radius: var(--ds-radius-pill);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--ds-surface); border: 1px solid var(--ds-border);
  box-shadow: var(--ds-shadow-md);
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity var(--ds-dur) var(--ds-ease),
              transform var(--ds-dur) var(--ds-ease),
              visibility var(--ds-dur);
}
.ds-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); } /* JS: scrollY>400 */
.ds-top svg { width: 18px; height: 18px; stroke: var(--ds-primary); }

/* -----------------------------------------------------------------------------
 * 15. 인라인 SVG 아이콘 가이드 (stroke 기반 라인 아이콘) — 이모지 대체
 *     <svg class="ds-ico" viewBox="0 0 24 24">…</svg>
 *     모든 아이콘: fill=none, stroke=currentColor, stroke-width=1.7,
 *     stroke-linecap=round, stroke-linejoin=round.
 * -------------------------------------------------------------------------- */
.ds-ico {
  width: 1.25em; height: 1.25em;
  fill: none; stroke: currentColor;
  stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round;
  display: inline-block; vertical-align: middle;
}
.ds-ico--accent { stroke: var(--ds-accent); }

/* -----------------------------------------------------------------------------
 * 16. 반응형 — 브레이크포인트 768 / 480 (auto-fit 금지: 명시적 열 전환만)
 * -------------------------------------------------------------------------- */
@media (max-width: 768px) {
  .ds-grid,
  .ds-gallery { grid-template-columns: repeat(2, 1fr); }   /* 태블릿·모바일 2열 고정 */

  .ds-ctabanner { grid-template-columns: 1fr; }
  .ds-ctabanner__media { min-height: 200px; }

  .ds-footer__inner { grid-template-columns: 1fr 1fr; }

  .ds-nav { gap: 14px; }
}

@media (max-width: 480px) {
  /* 카드 6개는 2열 유지(2x3). 1열 강제하지 않음 — 네이버 이미지그리드 노출 의도 보존 */
  .ds-grid,
  .ds-gallery { grid-template-columns: repeat(2, 1fr); gap: 12px; }

  .ds-card__body { padding: 14px; }
  .ds-card__body p { font-size: .9rem; }

  .ds-footer__inner { grid-template-columns: 1fr; gap: 22px; }

  /* 제목 모바일 3줄 방지: 추가 축소 */
  :root {
    --ds-fs-display: clamp(1.75rem, 1.2rem + 2.4vw, 2.4rem);
    --ds-fs-h1:      clamp(1.55rem, 1.1rem + 2vw, 2.2rem);
  }
}

/* -----------------------------------------------------------------------------
 * 17. 접근성 / 모션 감소
 * -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}
.ds-visually-hidden {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
