/* =========================================================
   디코 웨딩홀 — 웨딩홀 홈페이지 디자인 샘플 (가상)
   계획서: ../_plan.md · 생성기: ../_build/build.py
   원칙: 아이보리(식탁보) 바탕, 버건디는 주 버튼·현재 메뉴·강조에만, 블러시 핑크는 면·꽃잎 장식에만.
         사진은 원·둥근 모서리(꽃잎), 표·폼은 각지게. 그림자는 날짜 고르기 바·달력 상세 두 곳만.
   ========================================================= */
:root {
  --c-ivory: #FBF7F0;          /* 식탁보 아이보리: 바탕 */
  --c-linen: #F4ECE4;          /* 리넨: 보조 면 */
  --c-blush: #E8C9C4;          /* 블러시 꽃잎: 면·장식 (글자로 쓰지 않음) */
  --c-blush-soft: #F6E7E3;     /* 옅은 꽃잎: 서브 머리 */
  --c-burgundy: #5A1F2B;       /* 딥 버건디: 주 버튼·현재 메뉴 (아이보리 위 12:1) */
  --c-burgundy-deep: #44151F;
  --c-wine: #36121B;           /* 와인: 푸터·덮개 */
  --c-leaf: #2F6446;           /* 잎: 달력 예약 가능 (흰 위 6.6:1) */
  --c-rose: #A33A4E;           /* 장미: 마감 임박·공휴일 날짜 (흰 위 5.9:1) */
  --c-ink: #2A161B;            /* 제목 */
  --c-text: #3E2C31;           /* 본문 (아이보리 위 11:1) */
  --c-muted: #6B585D;          /* 보조 (아이보리 위 6.1:1) */
  --c-line: #E3D3CB;           /* 선 */
  --c-line-strong: #B9A097;
  --c-on-wine: #EBD5D1;        /* 와인 위 보조 글자 */
  --c-primary: var(--c-burgundy);

  --font-body: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
  --font-num: "Gilda Display", "Pretendard Variable", Pretendard, serif;

  --fs-h1: clamp(2rem, 1.5rem + 1.9vw, 3rem);
  --fs-h2: clamp(1.6rem, 1.25rem + 1.3vw, 2.4rem);
  --fs-body: 1.0625rem;
  --lh-body: 1.75;
  --radius: 4px;
  --radius-photo: 18px;
  --wrap: 1280px;
  --gutter: clamp(16px, 4vw, 40px);
  --header-h: 78px;
  --ease: cubic-bezier(.22, .61, .36, 1);
}
@media (max-width: 1099px) { :root { --header-h: 62px; } }

/* ---------- 기본 ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 96px); }
body {
  margin: 0; font-family: var(--font-body); font-size: var(--fs-body); line-height: var(--lh-body); letter-spacing: -0.01em;
  color: var(--c-text); background: var(--c-ivory); word-break: keep-all; overflow-wrap: anywhere; overflow-x: clip;
}
h1, h2, h3 { margin: 0; color: var(--c-ink); line-height: 1.3; letter-spacing: -0.03em; text-wrap: balance; font-weight: 700; }
p { margin: 0; text-wrap: pretty; }
ul, ol, dl, dd { margin: 0; padding: 0; }
ul[role="list"], ol[role="list"] { list-style: none; }
figure, fieldset { margin: 0; }
a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; letter-spacing: inherit; color: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--c-burgundy); outline-offset: 3px; border-radius: 2px; }
table { border-collapse: collapse; }
main:focus { outline: none; }

.wrap { width: min(100% - var(--gutter) * 2, var(--wrap)); margin-inline: auto; }
.wrap--narrow { --wrap: 940px; }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 16px; top: -80px; z-index: 400; padding: 12px 18px; background: var(--c-burgundy); color: #fff; font-weight: 700; }
.skip-link:focus { top: 12px; }
.num { font-family: var(--font-num); font-variant-numeric: tabular-nums lining-nums; letter-spacing: .01em; }
.ph { display: inline-block; padding: 0 7px; border: 1px dashed currentColor; border-radius: 4px; font-size: .9em; opacity: .85; font-weight: 500; line-height: 1.5; }
.i { width: 20px; height: 20px; flex: none; }
.note { font-size: .9375rem; color: var(--c-muted); line-height: 1.6; margin-top: 16px; }
.lead-text { font-size: clamp(1.3rem, 1.05rem + .9vw, 1.75rem); font-weight: 300; line-height: 1.5; color: var(--c-ink); letter-spacing: -0.035em; margin-bottom: 20px; }
.lead-text b { font-weight: 700; color: var(--c-burgundy); }
.br-pc { display: none; }
@media (min-width: 1100px) { .br-pc { display: inline; } }

.media { position: relative; display: block; overflow: hidden; border-radius: var(--radius-photo); background: var(--c-linen); }
.media img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- 버튼 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em; min-height: 52px; padding: 0 24px;
  border: 1.5px solid transparent; border-radius: 999px; font-weight: 700; font-size: 1rem; line-height: 1.2; white-space: nowrap;
  transition: background-color .2s, color .2s, border-color .2s;
}
.btn .i { transition: transform .25s var(--ease); width: 18px; height: 18px; }
.btn:hover .i { transform: translateX(3px); }
.btn--sm { min-height: 42px; padding: 0 16px; font-size: .9375rem; }
.btn--sm:hover .i { transform: none; }
.btn--wine { background: var(--c-burgundy); color: #fff; }
.btn--wine:hover { background: var(--c-burgundy-deep); }
.btn--line { border-color: var(--c-line-strong); background: #fff; color: var(--c-ink); }
.btn--line:hover { border-color: var(--c-burgundy); color: var(--c-burgundy); }
.btn--light { background: var(--c-ivory); color: var(--c-burgundy); }
.btn--light:hover { background: #fff; }
.btn--kakao { background: #FEE500; color: #191600; }
.btn--kakao:hover { background: #F5DA00; }
.link-arrow { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: var(--c-burgundy); text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 5px; transition: text-decoration-color .2s; white-space: nowrap; }
.link-arrow .i { width: 18px; height: 18px; transition: transform .25s var(--ease); }
.link-arrow:hover { text-decoration-color: currentColor; }
.link-arrow:hover .i { transform: translateX(4px); }
.chip-btn { margin-left: 8px; padding: 2px 12px; border: 1px solid var(--c-line-strong); border-radius: 999px; background: #fff; font-size: .875rem; font-weight: 600; color: var(--c-burgundy); }

/* 소제목: 한글 + 꽃잎 점 셋 */
.eyebrow { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 12px; font-size: .9375rem; font-weight: 700; color: var(--c-burgundy); }
.eyebrow::before { content: ""; width: 26px; height: 10px; background:
  radial-gradient(circle at 5px 5px, var(--c-blush) 4.5px, transparent 5px),
  radial-gradient(circle at 13px 5px, var(--c-burgundy) 4.5px, transparent 5px),
  radial-gradient(circle at 21px 5px, var(--c-blush) 4.5px, transparent 5px); }
.sec-title { font-size: var(--fs-h2); font-weight: 700; }
.cate { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px; background: var(--c-blush-soft); color: var(--c-burgundy); font-size: .8125rem; font-weight: 700; white-space: nowrap; }
.st { display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 10px; border-radius: 999px; font-size: .8125rem; font-weight: 700; white-space: nowrap; }
.st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.st--on { background: var(--c-burgundy); color: #fff; }
.st--soon { background: #fff; color: var(--c-burgundy); box-shadow: inset 0 0 0 1px var(--c-burgundy); }
.st--end { background: #EAE3DF; color: #5B4B4F; }

/* ---------- 안내 띠 ---------- */
.sample-banner { background: var(--c-wine); color: rgba(255, 255, 255, .88); font-size: .8125rem; line-height: 1.5; }
.sample-banner__inner { display: flex; align-items: center; gap: 10px; padding-block: 8px; }
.sample-banner__tag { flex: none; padding: 2px 9px; border-radius: 999px; background: var(--c-blush); color: var(--c-wine); font-weight: 700; font-size: .75rem; }
.sample-banner__link { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* ---------- 헤더 ---------- */
.site-header { position: sticky; top: 0; z-index: 100; background: var(--c-ivory); border-bottom: 1px solid var(--c-line); }
.site-header::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: var(--mega-h, 0px); background: var(--c-ivory); box-shadow: 0 18px 28px rgba(54, 18, 27, .08); transform: scaleY(0); transform-origin: top; transition: transform .25s var(--ease); pointer-events: none; }
.site-header.is-mega::after { transform: scaleY(1); border-top: 1px solid var(--c-line); }
.site-header__inner { --wrap: 1440px; display: flex; align-items: center; gap: 20px; height: var(--header-h); }
.logo { display: inline-flex; align-items: center; gap: 10px; flex: none; color: var(--c-ink); }
.logo__mark { width: 40px; height: 40px; }
.logo__text { display: flex; flex-direction: column; line-height: 1.15; }
.logo__ko { font-weight: 700; font-size: 1.25rem; letter-spacing: -0.04em; }
.logo__en { font-family: var(--font-num); font-size: .8125rem; letter-spacing: .04em; color: var(--c-muted); }

.gnb { align-self: stretch; flex: 1; margin-left: clamp(12px, 2.5vw, 48px); }
.gnb:focus { outline: none; }
.gnb__list { display: flex; height: 100%; }
.gnb__item { position: relative; flex: 1 1 0; display: flex; flex-direction: column; }
.gnb__link { position: relative; display: flex; align-items: center; justify-content: center; height: var(--header-h); padding: 0 4px; font-size: 1.0625rem; font-weight: 600; color: var(--c-ink); white-space: nowrap; }
.gnb__link::after { content: ""; position: absolute; left: 50%; bottom: 14px; width: 6px; height: 6px; margin-left: -3px; border-radius: 50%; background: var(--c-burgundy); transform: scale(0); transition: transform .25s var(--ease); }
.gnb__item:hover > .gnb__link::after, .gnb__item:focus-within > .gnb__link::after { transform: scale(1); }
body[data-group="about"] .gnb__item[data-group="about"] > .gnb__link,
body[data-group="halls"] .gnb__item[data-group="halls"] > .gnb__link,
body[data-group="banquet"] .gnb__item[data-group="banquet"] > .gnb__link,
body[data-group="service"] .gnb__item[data-group="service"] > .gnb__link,
body[data-group="reserve"] .gnb__item[data-group="reserve"] > .gnb__link,
body[data-group="news"] .gnb__item[data-group="news"] > .gnb__link { color: var(--c-burgundy); font-weight: 800; }
body[data-group="about"] .gnb__item[data-group="about"] > .gnb__link::after,
body[data-group="halls"] .gnb__item[data-group="halls"] > .gnb__link::after,
body[data-group="banquet"] .gnb__item[data-group="banquet"] > .gnb__link::after,
body[data-group="service"] .gnb__item[data-group="service"] > .gnb__link::after,
body[data-group="reserve"] .gnb__item[data-group="reserve"] > .gnb__link::after,
body[data-group="news"] .gnb__item[data-group="news"] > .gnb__link::after { transform: scale(1); }
.gnb__sub { position: absolute; top: 100%; left: 0; right: 0; z-index: 2; padding: 18px 4px 22px; text-align: center; visibility: hidden; opacity: 0; transition: opacity .2s; }
.site-header.is-mega .gnb__sub { visibility: visible; opacity: 1; }
.gnb__sub a { display: block; padding: 6px 4px; font-size: .9375rem; color: var(--c-text); border-radius: 999px; }
.gnb__sub a:hover, .gnb__sub a[aria-current="page"] { color: var(--c-burgundy); font-weight: 700; background: var(--c-blush-soft); }

.site-header__util { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.util-tel, .util-cta { display: inline-flex; align-items: center; gap: 6px; height: 42px; padding: 0 14px; border-radius: 999px; font-size: .9375rem; font-weight: 700; white-space: nowrap; }
.util-tel { color: var(--c-burgundy); border: 1px solid var(--c-line-strong); }
.util-tel:hover { border-color: var(--c-burgundy); }
.util-cta { background: var(--c-burgundy); color: #fff; }
.util-cta:hover { background: var(--c-burgundy-deep); }
.util-tel .i, .util-cta .i { width: 18px; height: 18px; }
.util-btn, .menu-btn { display: inline-grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: none; color: var(--c-ink); }
.util-btn:hover, .menu-btn:hover { background: var(--c-linen); }
.menu-btn__bars, .menu-btn__bars::before, .menu-btn__bars::after { display: block; width: 22px; height: 2px; background: currentColor; content: ""; position: relative; }
.menu-btn__bars::before { position: absolute; top: -7px; }
.menu-btn__bars::after { position: absolute; top: 7px; width: 14px; }
@media (max-width: 1099px) {
  .gnb, .util-cta { display: none; }
  .util-tel span { display: none; }
  .util-tel { width: 44px; padding: 0; justify-content: center; }
  .logo__mark { width: 34px; height: 34px; }
  .logo__ko { font-size: 1.125rem; }
}
@media (max-width: 1360px) and (min-width: 1100px) { .util-tel span { display: none; } .util-tel { padding: 0 12px; } .gnb__link { font-size: 1rem; } }

/* 전체 메뉴 */
.site-menu { position: fixed; inset: 0; top: var(--sample-banner-h, 0px); z-index: 300; overflow-y: auto; background: var(--c-ivory); padding-bottom: 40px; }
.site-menu__head { display: flex; align-items: center; justify-content: space-between; height: var(--header-h); padding: 0 var(--gutter); border-bottom: 1px solid var(--c-line); }
.site-menu__close { width: 48px; height: 48px; border: 0; background: none; font-size: 2rem; line-height: 1; color: var(--c-ink); }
.site-menu__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px 32px; padding: 28px var(--gutter); max-width: 1280px; margin: 0 auto; }
.site-menu__group { padding: 14px 0; border-top: 2px solid var(--c-burgundy); }
.site-menu__link { display: block; font-size: 1.1875rem; font-weight: 700; color: var(--c-ink); margin-bottom: 8px; }
.site-menu__group ul a { display: block; padding: 6px 0; color: var(--c-text); }
.site-menu__group ul a:hover, .site-menu__group ul a[aria-current="page"] { color: var(--c-burgundy); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.site-menu__foot { display: flex; flex-wrap: wrap; gap: 10px; padding: 0 var(--gutter); max-width: 1280px; margin: 0 auto; }
body.nav-open { overflow: hidden; }
body.nav-open .qbar { visibility: hidden; }

/* 검색 */
.site-search { position: fixed; inset: 0; top: var(--sample-banner-h, 0px); z-index: 300; background: rgba(54, 18, 27, .55); }
.site-search__inner { background: var(--c-ivory); padding: 28px var(--gutter) 32px; width: 100%; max-width: none; }
.site-search__form { display: flex; align-items: center; gap: 12px; max-width: 920px; margin: 0 auto; border-bottom: 2px solid var(--c-burgundy); padding-bottom: 10px; }
.site-search__form input { flex: 1; min-width: 0; border: 0; background: none; font-size: clamp(1.1rem, 1rem + 1vw, 1.5rem); padding: 8px 0; }
.site-search__form input:focus { outline: none; }
.site-search__close { width: 44px; height: 44px; border: 0; background: none; font-size: 1.8rem; line-height: 1; }
.site-search__hint, .site-search__quick, .site-search__results { max-width: 920px; margin: 14px auto 0; }
.site-search__hint { font-size: .875rem; color: var(--c-muted); }
.site-search__quick { display: flex; flex-wrap: wrap; gap: 8px; }
.site-search__quick a { display: inline-block; padding: 6px 14px; border: 1px solid var(--c-line-strong); border-radius: 999px; font-weight: 600; background: #fff; }
.site-search__quick a:hover { border-color: var(--c-burgundy); color: var(--c-burgundy); }
.site-search__results a { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--c-line); }
.site-search__results small { color: var(--c-muted); }
.site-search__empty { padding: 12px 0; color: var(--c-muted); }

/* ---------- 히어로: 꽉 찬 홀 사진 + 꽃잎 프레임 전환 ---------- */
.hero { position: relative; color: #fff; background: var(--c-wine); isolation: isolate; overflow: hidden;
  height: clamp(560px, calc(100svh - var(--header-h) - var(--sample-banner-h, 40px) - 56px), 860px); }
.hero__stage { position: absolute; inset: 0; z-index: -1; }
.hero__slide { position: absolute; inset: 0; opacity: 0; }
.hero__slide.is-active { opacity: 1; }
.hero__slide img, .petal img { width: 100%; height: 100%; object-fit: cover; }
.hero__petals { position: absolute; inset: 0; z-index: 1; }
.petal { position: absolute; inset: 0; will-change: clip-path; }
.petal-ring { position: absolute; border: 1.5px solid rgba(251, 247, 240, .9); border-radius: 50%; pointer-events: none; }
.hero__stage::after { content: ""; position: absolute; inset: 0; z-index: 2; background:
  linear-gradient(0deg, rgba(54, 18, 27, .86) 0%, rgba(54, 18, 27, .5) 34%, rgba(54, 18, 27, 0) 62%),
  linear-gradient(90deg, rgba(54, 18, 27, .5) 0%, rgba(54, 18, 27, 0) 55%); }
.hero__body { position: relative; z-index: 3; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; padding-bottom: 104px; }
.hero__eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: .9375rem; font-weight: 600; color: var(--c-on-wine); margin-bottom: 14px; }
.hero__eyebrow::before { content: ""; width: 26px; height: 10px; background:
  radial-gradient(circle at 5px 5px, var(--c-blush) 4.5px, transparent 5px), radial-gradient(circle at 13px 5px, #fff 4.5px, transparent 5px), radial-gradient(circle at 21px 5px, var(--c-blush) 4.5px, transparent 5px); }
.hero__title { color: #fff; font-size: clamp(2.1rem, 1.3rem + 3.1vw, 3.75rem); font-weight: 200; line-height: 1.22; letter-spacing: -0.04em; max-width: 15em; }
.hero__title b { font-weight: 700; }
.hero__cap { margin-top: 16px; font-size: 1rem; color: #F3E3DF; }
.hero__cap b { font-weight: 700; color: #fff; margin-right: 6px; }
.hero__ctrl { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-top: 22px; }
.hero__dots { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.hero__dot { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 4px; border: 0; background: none; color: rgba(255, 255, 255, .78); font-weight: 600; font-size: .9375rem; }
.hero__dot[aria-pressed="true"] { color: #fff; }
.hero__ring { width: 22px; height: 22px; transform: rotate(-90deg); }
.hero__ring circle { fill: none; stroke: rgba(255, 255, 255, .45); stroke-width: 3; }
.hero__ring-run { stroke: var(--c-blush) !important; stroke-dasharray: 100.5; stroke-dashoffset: 100.5; }
.hero__dot[aria-pressed="true"] .hero__ring-run { stroke-dashoffset: 0; }
.hero.is-auto .hero__dot[aria-pressed="true"] .hero__ring-run { animation: ring var(--hero-dur, 7s) linear forwards; }
.hero.is-paused .hero__dot[aria-pressed="true"] .hero__ring-run { animation-play-state: paused; }
@keyframes ring { from { stroke-dashoffset: 100.5; } to { stroke-dashoffset: 0; } }
.hero__toggle { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px 0 10px; border: 1px solid rgba(255, 255, 255, .55); border-radius: 999px; background: rgba(54, 18, 27, .45); color: #fff; font-size: .875rem; font-weight: 600; }
.hero__toggle:hover { background: rgba(54, 18, 27, .8); }
.hero__toggle .i { width: 18px; height: 18px; }
.hero__toggle .i-play, .hero__toggle[aria-pressed="true"] .i-pause { display: none; }
.hero__toggle[aria-pressed="true"] .i-play { display: block; }
@media (prefers-reduced-motion: reduce) { .hero.is-auto .hero__dot[aria-pressed="true"] .hero__ring-run { animation: none; } }
@media (max-width: 767px) {
  .hero { height: auto; min-height: 600px; }
  .hero__body { min-height: 600px; padding-top: 220px; padding-bottom: 96px; }
  .hero__stage::after { background: linear-gradient(0deg, rgba(54, 18, 27, .92) 0%, rgba(54, 18, 27, .72) 45%, rgba(54, 18, 27, .2) 75%, rgba(54, 18, 27, 0) 100%); }
  .hero__dot span { font-size: .875rem; }
  .hero__dots { gap: 2px 8px; }
}

/* 날짜 고르기 바 */
.pick-wrap { position: relative; z-index: 5; margin-top: -64px; }
.pick { display: grid; grid-template-columns: auto repeat(4, minmax(0, 1fr)) auto; align-items: end; gap: 14px 16px; padding: 22px 24px;
  background: #fff; border-radius: 22px; box-shadow: 0 24px 50px rgba(54, 18, 27, .16); border-top: 3px solid var(--c-burgundy); }
.pick__title { display: flex; align-items: center; gap: 8px; align-self: center; font-size: 1.125rem; color: var(--c-burgundy); white-space: nowrap; padding-right: 8px; }
.pick__f { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pick__f label { font-size: .8125rem; font-weight: 700; color: var(--c-muted); }
.pick select, .cal select, .form select, .form input:not([type="checkbox"]), .form textarea, .cost input, .cost select { min-height: 50px; padding: 0 12px; border: 1px solid var(--c-line-strong); border-radius: var(--radius); background: #fff; font-size: 1rem; width: 100%; }
.pick__go { min-height: 50px; }
.pick__go .i { width: 18px; height: 18px; }
@media (max-width: 1099px) { .pick { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pick__title, .pick__go { grid-column: 1 / -1; } }
@media (max-width: 380px) { .pick { padding: 18px 16px; gap: 12px; } }

/* ---------- 메인 구역 ---------- */
.sec { padding-block: clamp(72px, 9vw, 120px); }
.sec--cal { padding-top: clamp(64px, 7vw, 96px); }
.sec__head { margin-bottom: 32px; max-width: 780px; }
.sec__head--row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; max-width: none; }
.sec__lead { margin-top: 12px; color: var(--c-muted); max-width: 40em; }

/* ---------- 예약 가능 날짜 달력 ---------- */
.cal__filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 14px 22px; padding: 18px 20px; border: 1px solid var(--c-line); border-radius: 16px; background: var(--c-linen); }
.cal__f { display: flex; flex-direction: column; gap: 6px; }
.cal__label { font-size: .8125rem; font-weight: 700; color: var(--c-muted); }
.cal select { min-height: 44px; width: auto; min-width: 150px; }
.seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--c-line-strong); border-radius: 999px; background: #fff; overflow: hidden; }
.seg__btn { min-height: 44px; padding: 0 14px; border: 0; background: none; font-weight: 600; font-size: .9375rem; color: var(--c-text); }
.seg__btn + .seg__btn { border-left: 1px solid var(--c-line); }
.seg__btn[aria-pressed="true"] { background: var(--c-burgundy); color: #fff; }
.seg__btn:hover:not([aria-pressed="true"]) { background: var(--c-blush-soft); }
.cal__son { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; font-size: .9375rem; }
.cal__son input { width: 20px; height: 20px; accent-color: var(--c-burgundy); }
.cal__body { display: grid; grid-template-columns: minmax(0, 7fr) minmax(300px, 5fr); gap: 24px; margin-top: 22px; align-items: start; }
.cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cal__title { font-family: var(--font-num); font-weight: 400; font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); letter-spacing: 0; }
.cal__nav { width: 46px; height: 46px; border: 1px solid var(--c-line-strong); border-radius: 50%; background: #fff; font-size: 1.6rem; line-height: 1; color: var(--c-burgundy); }
.cal__nav:hover:not(:disabled) { background: var(--c-blush-soft); }
.cal__nav:disabled { opacity: .35; cursor: default; }
.cal__week { list-style: none; margin: 0; padding: 0; }
.cal__week, .cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cal__week li { padding: 6px 0; text-align: center; font-size: .8125rem; font-weight: 700; color: var(--c-muted); }
.cal__week .is-sun { color: var(--c-rose); }
.cal__week .is-sat { color: var(--c-burgundy); }
.day { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-height: 92px; padding: 8px 8px 7px; border: 1px solid var(--c-line); border-radius: 10px; background: #fff; text-align: left; transition: border-color .15s, background-color .15s; }
.day:hover:not(:disabled) { border-color: var(--c-burgundy); }
.day__n { font-family: var(--font-num); font-size: 1.375rem; line-height: 1; color: var(--c-ink); }
.day.is-sun .day__n, .day.is-hol .day__n { color: var(--c-rose); }
.day__hol { font-size: .6875rem; font-weight: 700; color: var(--c-rose); line-height: 1.2; }
.day__son { display: inline-flex; align-items: center; gap: 3px; font-size: .6875rem; font-weight: 700; color: var(--c-burgundy); line-height: 1.2; }
.day__son::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--c-blush); box-shadow: 0 0 0 1.5px var(--c-burgundy); }
.day__halls { display: flex; flex-wrap: wrap; gap: 2px 6px; margin-top: auto; font-size: .75rem; font-weight: 700; }
.day__halls i { font-style: normal; display: inline-flex; align-items: center; gap: 3px; color: var(--c-leaf); }
.day__halls i::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.day__halls i.is-few { color: var(--c-rose); }
.day__halls i.is-none { color: #9C8A8E; }
.day.is-open { background: #F3F8F4; }
.day.is-few { background: #FBF1F2; }
.day.is-full { background: #F3EFEC; }
.day.is-full .day__n { color: #8B787C; }
.day.is-full .day__halls i { color: #9C8A8E; }
.day.is-off { background: transparent; border-style: dashed; opacity: .55; cursor: default; }
.day.is-dim { opacity: .4; }
.day.is-pad { visibility: hidden; }
.day[aria-pressed="true"] { border: 2px solid var(--c-burgundy); padding: 7px 7px 6px; box-shadow: 0 0 0 3px var(--c-blush); }
.day.is-hit:not(.is-full):not(.is-off) { outline: 2px dashed var(--c-leaf); outline-offset: -5px; }
.cal__legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 14px; font-size: .8125rem; color: var(--c-muted); }
.cal__legend li { display: inline-flex; align-items: center; gap: 6px; }
.lg { width: 14px; height: 14px; border-radius: 4px; border: 1px solid var(--c-line); }
.lg--open { background: #F3F8F4; border-color: var(--c-leaf); }
.lg--few { background: #FBF1F2; border-color: var(--c-rose); }
.lg--full { background: #F3EFEC; }
.lg--son { border-radius: 50%; background: var(--c-blush); border: 1.5px solid var(--c-burgundy); }
.lg-hol { color: var(--c-rose); font-weight: 700; }
.cal__fallback { margin-top: 18px; padding: 16px 18px; border: 1px dashed var(--c-line-strong); border-radius: 12px; font-size: .9375rem; }
.cal__fallback p { font-weight: 700; margin-bottom: 6px; }
.js .cal__fallback { display: none; }

.cal__detail { position: sticky; top: calc(var(--header-h) + 76px); padding: 22px 22px 20px; background: #fff; border-radius: 18px; border: 1px solid var(--c-line); box-shadow: 0 18px 44px rgba(54, 18, 27, .1); min-height: 300px; }
.cal__detail:focus { outline: none; }
.cd__hint { color: var(--c-muted); }
.cd__date { font-family: var(--font-num); font-size: 2.25rem; line-height: 1; color: var(--c-burgundy); }
.cd__title { font-size: 1.25rem; margin-top: 6px; }
.cd__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.cd__tag { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px; background: var(--c-linen); font-size: .8125rem; font-weight: 700; color: var(--c-text); }
.cd__tag--son { background: var(--c-blush); color: var(--c-wine); }
.cd__tag--hol { background: #FBE9EC; color: var(--c-rose); }
.cd__hall { padding: 14px 0; border-top: 1px solid var(--c-line); }
.cd__hall:first-of-type { margin-top: 16px; }
.cd__hname { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; font-weight: 700; color: var(--c-ink); }
.cd__hname small { font-weight: 500; font-size: .8125rem; color: var(--c-muted); }
.cd__warn { font-size: .8125rem; color: var(--c-rose); font-weight: 600; }
.cd__slots { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.slot { display: inline-flex; flex-direction: column; align-items: center; min-width: 66px; padding: 6px 8px; border: 1px solid var(--c-leaf); border-radius: 10px; background: #fff; line-height: 1.2; }
.slot b { font-family: var(--font-num); font-weight: 400; font-size: 1.125rem; color: var(--c-ink); }
.slot span { font-size: .75rem; font-weight: 700; color: var(--c-leaf); }
.slot:hover:not(:disabled) { background: #F3F8F4; }
.slot[aria-pressed="true"] { background: var(--c-burgundy); border-color: var(--c-burgundy); }
.slot[aria-pressed="true"] b, .slot[aria-pressed="true"] span { color: #fff; }
.slot:disabled { border-color: var(--c-line); background: #F6F2EF; cursor: not-allowed; }
.slot:disabled b { color: #9C8A8E; text-decoration: line-through; }
.slot:disabled span { color: #8B787C; }
.slot.is-out { opacity: .5; }
.cd__pick { margin-top: 16px; padding: 16px; border-radius: 14px; background: var(--c-blush-soft); }
.cd__pick p { font-weight: 700; color: var(--c-ink); }
.cd__pick .btn { margin-top: 10px; width: 100%; }
.cd__empty { margin-top: 12px; color: var(--c-muted); font-size: .9375rem; }

@media (max-width: 1023px) {
  .cal__body { grid-template-columns: 1fr; }
  .cal__detail { position: static; min-height: 0; }
}
@media (max-width: 639px) {
  .cal__filters { padding: 14px; gap: 12px; }
  .cal__f, .cal select { width: 100%; }
  .seg { width: 100%; }
  .seg__btn { flex: 1 1 auto; padding: 0 8px; font-size: .875rem; }
  .cal__week, .cal__grid { gap: 3px; }
  .day { min-height: 64px; padding: 5px 4px 5px; align-items: center; border-radius: 8px; }
  .day[aria-pressed="true"] { padding: 4px 3px; }
  .day__n { font-size: 1.125rem; }
  .day__hol, .day__son { font-size: 0; gap: 0; }
  .day__hol::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--c-rose); }
  .day__halls { justify-content: center; gap: 2px; font-size: 0; }
  .day__halls i { gap: 0; }
  .cal__detail { padding: 18px 16px; }
}

/* ---------- 세 홀 줄 ---------- */
.hrows { border-top: 1px solid var(--c-ink); }
.hrow { border-bottom: 1px solid var(--c-line); }
.hrow__link { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1.3fr) 220px; grid-template-areas: "name kind spec ph" "name go spec ph"; gap: 6px 28px; align-items: center; padding: 26px 0; }
.hrow__name { grid-area: name; display: flex; flex-direction: column; }
.hrow__ko { font-size: clamp(2rem, 1.4rem + 2.4vw, 3.5rem); font-weight: 200; letter-spacing: -0.05em; line-height: 1.1; color: var(--c-ink); transition: color .2s; }
.hrow__en { font-family: var(--font-num); font-size: 1.0625rem; color: var(--c-muted); margin-top: 4px; }
.hrow__kind { grid-area: kind; align-self: end; font-weight: 700; color: var(--c-burgundy); }
.hrow__go { grid-area: go; align-self: start; display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: .9375rem; color: var(--c-muted); }
.hrow__go .i { width: 16px; height: 16px; transition: transform .25s var(--ease); }
.hrow__spec { grid-area: spec; display: grid; gap: 4px; font-size: .9375rem; }
.hrow__spec div { display: grid; grid-template-columns: 76px 1fr; gap: 10px; }
.hrow__spec dt { color: var(--c-muted); font-weight: 600; }
.hrow__spec b { font-weight: 400; font-size: 1.25rem; color: var(--c-ink); margin-right: 2px; }
.hrow__ph { grid-area: ph; position: relative; display: block; aspect-ratio: 1; border-radius: 50%; overflow: hidden; background: var(--c-linen); transform: scale(.82); transition: transform .5s var(--ease), border-radius .5s var(--ease); }
.hrow__ph img { width: 100%; height: 100%; object-fit: cover; }
.hrow__link:hover .hrow__ko { color: var(--c-burgundy); }
.hrow__link:hover .hrow__ph { transform: scale(1); }
.hrow__link:hover .hrow__go { color: var(--c-burgundy); }
.hrow__link:hover .hrow__go .i { transform: translateX(4px); }
@media (max-width: 899px) {
  .hrow__link { grid-template-columns: minmax(0, 1fr) 112px; grid-template-areas: "name ph" "kind ph" "spec spec" "go go"; gap: 8px 16px; padding: 22px 0; }
  .hrow__ph { transform: none; }
}

/* 몇 분이 오시나요 */
.sec--rec { background: var(--c-blush-soft); }
.rec { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
.rec__label { margin: 24px 0 10px; font-weight: 700; color: var(--c-ink); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { min-height: 44px; padding: 0 16px; border: 1px solid var(--c-line-strong); border-radius: 999px; background: #fff; font-weight: 600; font-size: .9375rem; }
.chip:hover { border-color: var(--c-burgundy); }
.chip[aria-pressed="true"] { background: var(--c-burgundy); border-color: var(--c-burgundy); color: #fff; }
.rec__a { position: relative; padding: clamp(28px, 4vw, 44px); border-radius: 50% 50% 22px 22px / 34% 34% 22px 22px; background: #fff; text-align: center; }
.rec__verdict { color: var(--c-muted); font-weight: 600; }
.rec__hall { margin: 8px 0 10px; font-size: clamp(1.4rem, 1.1rem + 1vw, 1.9rem); font-weight: 300; color: var(--c-ink); letter-spacing: -0.03em; }
.rec__hall b { font-weight: 700; color: var(--c-burgundy); }
.rec__why { color: var(--c-text); margin-bottom: 20px; }
@media (max-width: 899px) { .rec { grid-template-columns: 1fr; } .rec__a { border-radius: 22px; } }

/* 연회 */
.feast { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
.feast__photo { aspect-ratio: 4 / 5; border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
.feast__list { margin-top: 26px; border-top: 1px solid var(--c-ink); }
.feast__list a { display: grid; grid-template-columns: 140px 1fr; grid-template-areas: "t p" "t price"; gap: 4px 20px; padding: 20px 0; border-bottom: 1px solid var(--c-line); }
.feast__list h3 { grid-area: t; font-size: 1.375rem; font-weight: 300; letter-spacing: -0.04em; }
.feast__list p { grid-area: p; }
.feast__price { grid-area: price; font-size: .9375rem; color: var(--c-muted); font-weight: 600; }
.feast__list a:hover h3 { color: var(--c-burgundy); font-weight: 700; }
@media (max-width: 899px) { .feast { grid-template-columns: 1fr; } .feast__photo { aspect-ratio: 4 / 3; border-radius: 160px 160px var(--radius-photo) var(--radius-photo); } }
@media (max-width: 479px) { .feast__list a { grid-template-columns: 1fr; grid-template-areas: "t" "p" "price"; } }

/* 웨딩 서비스 모자이크 */
.sec--service { background: var(--c-linen); }
.mosaic { display: grid; grid-template-columns: 1.3fr 1fr 1fr; grid-template-rows: 260px 260px; gap: 14px; }
.mosaic__a { grid-row: 1 / 3; }
.mosaic__d { grid-column: 2 / 4; }
.mosaic a { position: relative; display: block; height: 100%; }
.mosaic .media { height: 100%; }
.mosaic img { transition: transform .7s var(--ease); }
.mosaic a:hover img { transform: scale(1.04); }
.mosaic__cap { position: absolute; left: 14px; bottom: 14px; right: 14px; display: flex; flex-direction: column; gap: 2px; padding: 12px 16px; border-radius: 14px; background: rgba(251, 247, 240, .94); font-size: .9375rem; color: var(--c-text); }
.mosaic__cap b { font-size: 1.125rem; color: var(--c-ink); }
.mosaic__a .media { border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
@media (max-width: 899px) { .mosaic { grid-template-columns: 1fr 1fr; grid-template-rows: 300px 220px 220px; } .mosaic__a { grid-row: auto; grid-column: 1 / 3; } .mosaic__d { grid-column: auto; } .mosaic__a .media { border-radius: var(--radius-photo); } }
@media (max-width: 559px) { .mosaic { grid-template-columns: 1fr; grid-template-rows: none; } .mosaic__a { grid-column: auto; } .mosaic li { height: 240px; } }

/* 예식까지의 길 */
.road { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; position: relative; }
.road::before { content: ""; position: absolute; left: 22px; right: 22px; top: 22px; height: 1px; background: var(--c-line-strong); }
.road__step { position: relative; padding-right: 18px; }
.road__n { position: relative; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--c-ivory); border: 1px solid var(--c-burgundy); color: var(--c-burgundy); font-size: 1.25rem; }
.road__step:first-child .road__n { background: var(--c-burgundy); color: #fff; }
.road__when { display: block; margin: 14px 0 4px; font-size: .8125rem; font-weight: 700; color: var(--c-rose); }
.road h3 { font-size: 1.125rem; margin-bottom: 6px; }
.road p { font-size: .9375rem; color: var(--c-text); }
@media (max-width: 1023px) {
  .road { grid-template-columns: 1fr; gap: 0; }
  .road::before { left: 21px; right: auto; top: 22px; bottom: 22px; width: 1px; height: auto; }
  .road__step { display: grid; grid-template-columns: 44px 1fr; grid-template-areas: "n when" "n t" "n p"; column-gap: 16px; padding: 0 0 24px; }
  .road__n { grid-area: n; } .road__when { grid-area: when; margin: 0; } .road h3 { grid-area: t; } .road p { grid-area: p; }
}

/* 소식 */
.sec--news { padding-top: 0; }
.news-home { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: clamp(28px, 4vw, 64px); }
.mini-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--c-ink); }
.mini-head h3 { font-size: 1.375rem; }
.nw a { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--c-line); }
.nw__t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.nw a:hover .nw__t { color: var(--c-burgundy); text-decoration: underline; text-underline-offset: 4px; }
.nw__d { color: var(--c-muted); font-size: 1rem; }
.event-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 18px; padding: 16px 18px; border-radius: 14px; background: var(--c-blush-soft); }
.event-line b { color: var(--c-ink); }
.event-line span:last-child { font-size: .9375rem; color: var(--c-muted); }
.event-line:hover b { color: var(--c-burgundy); text-decoration: underline; text-underline-offset: 4px; }
.gstrip { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.gstrip__item { display: block; }
.gstrip__item .media { aspect-ratio: 4 / 3; }
.gstrip li:nth-child(1) .media, .gstrip li:nth-child(4) .media { border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
.gstrip__item img { transition: transform .6s var(--ease); }
.gstrip__item:hover img { transform: scale(1.04); }
.gstrip__cap { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-top: 8px; font-size: .9375rem; font-weight: 600; }
@media (max-width: 899px) { .news-home { grid-template-columns: 1fr; } }
@media (max-width: 479px) { .nw a { grid-template-columns: auto 1fr; } .nw__d { grid-column: 2; margin-top: -8px; font-size: .9375rem; } }

/* 상담 안내 띠 */
.visit { background: var(--c-burgundy); color: #fff; padding-block: 48px; }
.visit__inner { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 24px 48px; }
.visit__title { color: #fff; font-size: 1.625rem; font-weight: 300; letter-spacing: -0.04em; margin-bottom: 4px; }
.visit__inner > div > p { color: var(--c-on-wine); font-size: .9375rem; }
.visit__dl { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.visit__dl dt { display: flex; align-items: center; gap: 6px; font-size: .875rem; color: var(--c-on-wine); font-weight: 600; }
.visit__dl dt .i { width: 18px; height: 18px; }
.visit__dl dd { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; font-weight: 700; }
.visit__dl dd a { text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 1099px) { .visit__inner { grid-template-columns: 1fr; } .visit__dl { grid-template-columns: 1fr; } .visit .btn { justify-self: start; } }

/* ---------- 서브: 블러시 머리 + 겹친 원 사진 셋 ---------- */
.sv { background: var(--c-blush-soft); overflow: hidden; }
.sv__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 24px; min-height: clamp(240px, 24vw, 330px); }
.sv__text { padding-block: 36px; }
.sv__en { font-family: var(--font-num); font-size: 1.0625rem; color: var(--c-burgundy); }
.sv__group { font-size: clamp(2rem, 1.4rem + 2.4vw, 3.4rem); font-weight: 200; letter-spacing: -0.05em; line-height: 1.2; margin: 4px 0 12px; color: var(--c-ink); }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: 4px; font-size: .9375rem; color: var(--c-muted); }
.breadcrumb li + li::before { content: "›"; margin-right: 6px; opacity: .7; }
.breadcrumb a { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; }
.breadcrumb a:hover { text-decoration-color: currentColor; }
.breadcrumb [aria-current] { font-weight: 700; color: var(--c-burgundy); }
.sv__petals { position: relative; height: 100%; min-height: 240px; }
.sv__c { position: absolute; top: 50%; border-radius: 50%; overflow: hidden; background: var(--c-blush); box-shadow: 0 0 0 6px var(--c-blush-soft); }
.sv__c img { width: 100%; height: 100%; object-fit: cover; }
.sv__c--1 { width: clamp(150px, 17vw, 236px); aspect-ratio: 1; right: 36%; transform: translateY(-58%); }
.sv__c--2 { width: clamp(180px, 21vw, 290px); aspect-ratio: 1; right: 8%; transform: translateY(-44%); z-index: 1; }
.sv__c--3 { width: clamp(110px, 12vw, 168px); aspect-ratio: 1; right: 0; transform: translateY(-86%); z-index: 2; }
@media (max-width: 767px) {
  .sv__inner { grid-template-columns: 1fr; gap: 0; min-height: 0; }
  .sv__petals { order: -1; min-height: 150px; margin-top: 18px; }
  .sv__c--1 { width: 120px; right: auto; left: 0; transform: translateY(-50%); }
  .sv__c--2 { width: 140px; right: auto; left: 92px; transform: translateY(-50%); }
  .sv__c--3 { width: 92px; right: auto; left: 210px; transform: translateY(-80%); }
  .sv__text { padding-block: 12px 26px; }
}

/* ---------- 2차 메뉴: 좌석 명패(텐트 카드) ---------- */
.cards { position: sticky; top: var(--header-h); z-index: 50; background: var(--c-ivory); border-bottom: 1px solid var(--c-line); }
.cards::before { content: ""; position: absolute; left: 0; right: 0; bottom: 9px; height: 1px; background: var(--c-line-strong); }
.cards__inner { overflow-x: auto; scrollbar-width: none; }
.cards__inner::-webkit-scrollbar { display: none; }
.cards__list { display: flex; justify-content: center; gap: 12px; min-width: max-content; padding: 14px 4px 9px; perspective: 520px; }
.pc a { position: relative; display: block; padding-bottom: 4px; }
.pc a::after { content: ""; position: absolute; left: 10%; right: 10%; bottom: -1px; height: 6px; border-radius: 50%; background: rgba(54, 18, 27, .14); }
.pc__card { position: relative; display: flex; align-items: center; justify-content: center; min-width: 128px; height: 50px; padding: 8px 18px 0;
  background: #fff; border: 1px solid var(--c-line-strong); border-radius: 3px; box-shadow: inset 0 0 0 4px #fff, inset 0 0 0 5px var(--c-line);
  color: var(--c-text); font-weight: 600; font-size: .9375rem; white-space: nowrap;
  transform-origin: 50% 100%; transform: rotateX(34deg); transition: transform .35s var(--ease), background-color .25s, color .25s; }
.pc__card::before { content: ""; position: absolute; left: -1px; right: -1px; top: -1px; height: 9px; border: 1px solid var(--c-line-strong); border-radius: 3px 3px 0 0; background: var(--c-linen); }
.pc a:hover .pc__card, .pc a:focus-visible .pc__card { transform: rotateX(14deg); color: var(--c-burgundy); }
.pc.is-current .pc__card { transform: none; background: var(--c-burgundy); border-color: var(--c-burgundy); color: #fff; font-weight: 700; box-shadow: inset 0 0 0 4px var(--c-burgundy), inset 0 0 0 5px rgba(232, 201, 196, .7); }
.pc.is-current .pc__card::before { background: var(--c-burgundy-deep); border-color: var(--c-burgundy-deep); }
.pc.is-current a::after { background: rgba(54, 18, 27, .3); }
@media (max-width: 767px) { .cards__list { justify-content: flex-start; gap: 8px; } .pc__card { min-width: 104px; height: 46px; padding-inline: 14px; font-size: .875rem; } }
@media (prefers-reduced-motion: reduce) { .pc__card { transition: background-color .2s, color .2s; } }

/* ---------- 서브 본문 ---------- */
.page { padding-bottom: 96px; }
.page-head { padding: clamp(40px, 5vw, 64px) 0 clamp(26px, 3vw, 40px); }
.page-head__title { font-size: var(--fs-h1); font-weight: 700; }
.page-head__desc { margin-top: 12px; color: var(--c-muted); font-size: 1.0625rem; max-width: 46em; }
.block { margin-top: clamp(52px, 5vw, 76px); }
.block__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; margin-bottom: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--c-ink); }
.block__head h2 { font-size: clamp(1.25rem, 1.1rem + .6vw, 1.625rem); }
.block__head p { font-size: .9375rem; color: var(--c-muted); }
.cta-line { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-top: 64px; padding: 26px 30px; border-radius: 22px; background: var(--c-blush-soft); }
.cta-line p { font-weight: 700; color: var(--c-ink); font-size: 1.125rem; }
.cta-line__btns { display: flex; flex-wrap: wrap; gap: 8px; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(28px, 4vw, 56px); }
.two-col--tight { margin-top: 40px; gap: 16px; align-items: start; }
@media (max-width: 899px) { .two-col { grid-template-columns: 1fr; } }
.info-box { padding: 22px 24px; border-radius: 18px; background: var(--c-linen); }
.info-box h2 { font-size: 1.125rem; margin-bottom: 6px; }
.info-box a { color: var(--c-burgundy); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.dots li { position: relative; padding-left: 18px; margin-bottom: 8px; }
.dots li::before { content: ""; position: absolute; left: 2px; top: .68em; width: 7px; height: 7px; border-radius: 50%; background: var(--c-blush); box-shadow: 0 0 0 1.5px var(--c-burgundy); }
.checks { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; margin-top: 16px; }
.checks li { position: relative; padding-left: 26px; }
.checks li::before { content: ""; position: absolute; left: 0; top: .45em; width: 15px; height: 8px; border-left: 2px solid var(--c-burgundy); border-bottom: 2px solid var(--c-burgundy); transform: rotate(-45deg); }
@media (max-width: 559px) { .checks { grid-template-columns: 1fr; } }
.wide-photo { aspect-ratio: 21 / 8; }
@media (max-width: 767px) { .wide-photo { aspect-ratio: 4 / 3; } }
.photo-pair { display: grid; grid-template-columns: 1.3fr 1fr; gap: 14px; margin-top: 52px; }
.photo-pair .media { aspect-ratio: 4 / 3; }
.photo-pair .media:last-child { border-radius: 999px 999px var(--radius-photo) var(--radius-photo); aspect-ratio: auto; }
.photo-trio { display: grid; grid-template-columns: 1fr 1.3fr 1fr; gap: 14px; margin-top: 52px; }
.photo-trio .media { aspect-ratio: 3 / 4; }
.photo-trio .media:nth-child(2) { border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
@media (max-width: 559px) { .photo-pair, .photo-trio { grid-template-columns: 1fr; } .photo-pair .media:last-child { aspect-ratio: 4 / 3; border-radius: var(--radius-photo); } .photo-trio .media { aspect-ratio: 4 / 3; } }
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 64px); align-items: center; }
.split--rev .split__ph { order: 2; }
.split__ph { aspect-ratio: 4 / 5; border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
.split p + .dl-rows, .split p + .checks { margin-top: 18px; }
@media (max-width: 899px) { .split { grid-template-columns: 1fr; } .split--rev .split__ph { order: 0; } .split__ph { aspect-ratio: 4 / 3; border-radius: 180px 180px var(--radius-photo) var(--radius-photo); } }

/* 표·목록 */
.tbl-wrap { position: relative; overflow-x: auto; }
.tbl { width: 100%; min-width: 560px; border-top: 1px solid var(--c-ink); font-size: 1rem; background: #fff; }
.tbl caption:not(.sr-only) { caption-side: top; text-align: left; font-weight: 700; padding-bottom: 8px; color: var(--c-ink); }
.tbl th, .tbl td { padding: 13px 14px; border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: top; }
.tbl thead th { background: var(--c-linen); font-weight: 700; color: var(--c-ink); font-size: .9375rem; }
.tbl tbody th { font-weight: 700; color: var(--c-ink); }
.dl-rows > div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--c-line); }
.dl-rows > div:first-child { border-top: 1px solid var(--c-ink); }
.dl-rows dt { font-weight: 700; color: var(--c-ink); }
.dl-rows a { color: var(--c-burgundy); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 479px) { .dl-rows > div { grid-template-columns: 1fr; gap: 2px; } }
.menu-list { columns: 2; column-gap: 40px; }
.menu-list li { break-inside: avoid; display: grid; grid-template-columns: 100px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px dashed var(--c-line-strong); }
.menu-list__k { font-weight: 700; color: var(--c-burgundy); }
@media (max-width: 767px) { .menu-list { columns: 1; } }

.flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; }
.flow li { position: relative; padding: 22px 20px; border-radius: 18px; background: #fff; border: 1px solid var(--c-line); }
.flow__n { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--c-burgundy); color: #fff; font-size: 1.125rem; margin-bottom: 10px; }
.flow__when { font-size: .8125rem; font-weight: 700; color: var(--c-rose); }
.flow h3 { font-size: 1.0625rem; margin-bottom: 4px; }
.flow p { font-size: .9375rem; }

/* 인사말 */
.greet { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: start; }
.greet__text p + p { margin-top: 14px; }
.greet__sign { margin-top: 28px !important; font-weight: 700; color: var(--c-ink); font-size: 1.125rem; }
.greet__img { aspect-ratio: 4 / 5; position: sticky; top: calc(var(--header-h) + 110px); border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
@media (max-width: 899px) { .greet { grid-template-columns: 1fr; } .greet__img { position: static; aspect-ratio: 4 / 3; border-radius: 180px 180px var(--radius-photo) var(--radius-photo); } }
.promise { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 64px; border-top: 1px solid var(--c-ink); }
.promise li { padding: 24px 24px 24px 0; }
.promise li + li { padding-left: 24px; border-left: 1px solid var(--c-line); }
.promise h2 { font-size: 1.25rem; margin-bottom: 6px; }
@media (max-width: 767px) { .promise { grid-template-columns: 1fr; } .promise li + li { padding-left: 0; border-left: 0; border-top: 1px solid var(--c-line); } }

/* 층별 안내 */
.floors { border-top: 1px solid var(--c-ink); }
.floor { display: grid; grid-template-columns: 120px 1fr auto; gap: 16px 28px; align-items: center; padding: 22px 0; border-bottom: 1px solid var(--c-line); }
.floor__n { font-size: 2.25rem; color: var(--c-burgundy); line-height: 1; }
.floor h2 { font-size: 1.25rem; margin-bottom: 4px; }
.floor__body ul { display: flex; flex-wrap: wrap; gap: 4px 18px; color: var(--c-text); font-size: .9375rem; }
.floor__body li::before { content: "· "; color: var(--c-burgundy); }
@media (max-width: 767px) { .floor { grid-template-columns: 76px 1fr; } .floor .link-arrow { grid-column: 2; } .floor__n { font-size: 1.75rem; } }

/* 오시는 길·주차 */
.loc { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 48px); }
.loc__map { border-radius: 22px; overflow: hidden; border: 1px solid var(--c-line); }
.map-svg { width: 100%; height: auto; font-family: var(--font-body); }
.ways { margin-top: 24px; display: grid; gap: 16px; }
.ways li { display: flex; gap: 14px; }
.ways .i { width: 28px; height: 28px; color: var(--c-burgundy); }
.ways h2 { font-size: 1.0625rem; }
@media (max-width: 899px) { .loc { grid-template-columns: 1fr; } }
.park-top { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 48px); align-items: start; }
.park-top__ph { aspect-ratio: 4 / 3; }
@media (max-width: 899px) { .park-top { grid-template-columns: 1fr; } }

/* 홀 상세 */
.hall-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(28px, 5vw, 64px); margin-top: 40px; }
.hall-top__en { font-family: var(--font-num); font-size: 1.5rem; color: var(--c-burgundy); margin-bottom: 8px; }
.hall-top__btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.dl-rows--spec > div { grid-template-columns: 110px 1fr; padding: 10px 0; }
@media (max-width: 899px) { .hall-top { grid-template-columns: 1fr; } }
.plan-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 300px); gap: 28px; align-items: center; }
.plan { display: grid; justify-items: center; gap: 10px; padding: 24px; border-radius: 22px; background: var(--c-linen); }
.plan__stage { display: block; width: 46%; padding: 8px; border-radius: 999px 999px 8px 8px; background: var(--c-blush); text-align: center; font-size: .8125rem; font-weight: 700; color: var(--c-wine); }
.plan__room { display: grid; grid-template-columns: 1fr auto 1fr; gap: 16px; width: 100%; }
.plan__side { display: grid; gap: 6px; }
.plan__side i { display: block; height: 10px; border-radius: 4px; background: #fff; border: 1px solid var(--c-line-strong); }
.plan__aisle { display: flex; align-items: center; justify-content: center; width: 54px; border-radius: 6px; background: repeating-linear-gradient(180deg, #fff 0 10px, var(--c-blush-soft) 10px 20px); border: 1px solid var(--c-blush); }
.plan__aisle b { writing-mode: vertical-rl; font-weight: 400; font-size: 1.125rem; color: var(--c-burgundy); }
.plan__door { font-size: .8125rem; font-weight: 700; color: var(--c-muted); }
.plan--dark { background: #2E1219; }
.plan--dark .plan__side i { background: #4A2430; border-color: #6A3A47; }
.plan--dark .plan__aisle { background: repeating-linear-gradient(180deg, #4A2430 0 10px, #3A1A23 10px 20px); border-color: #7D4655; }
.plan--dark .plan__aisle b, .plan--dark .plan__door { color: #F3E3DF; }
.plan--garden { background: #E9F0E6; }
.plan--garden .plan__side i { height: 22px; border-radius: 50%; }
.plan-note { color: var(--c-muted); font-size: .9375rem; }
@media (max-width: 767px) { .plan-wrap { grid-template-columns: 1fr; } }
.feats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.feat { padding: 24px 22px; border-radius: 18px; background: #fff; border: 1px solid var(--c-line); }
.feat:nth-child(2) { border-radius: 120px 120px 18px 18px; padding-top: 48px; text-align: center; }
.feat h3 { font-size: 1.125rem; margin-bottom: 6px; color: var(--c-burgundy); }
@media (max-width: 899px) { .feats { grid-template-columns: 1fr; } .feat:nth-child(2) { border-radius: 18px; padding-top: 24px; text-align: left; } }
.others { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.other { display: grid; grid-template-columns: 120px 1fr; gap: 16px; align-items: center; padding: 12px; border-radius: 999px 22px 22px 999px; background: #fff; border: 1px solid var(--c-line); }
.other .media { aspect-ratio: 1; border-radius: 50%; }
.other__t { display: flex; flex-direction: column; gap: 2px; color: var(--c-muted); font-size: .9375rem; }
.other__t b { font-size: 1.5rem; font-weight: 300; letter-spacing: -0.04em; color: var(--c-ink); }
.other:hover b { color: var(--c-burgundy); font-weight: 700; }
@media (max-width: 767px) { .others { grid-template-columns: 1fr; } .other { grid-template-columns: 88px 1fr; } }

/* 홀 추천·비교 */
.rec-tool { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: clamp(24px, 4vw, 48px); align-items: start; }
.rec-tool__q { position: sticky; top: calc(var(--header-h) + 90px); display: grid; gap: 24px; padding: 26px; border-radius: 22px; background: var(--c-blush-soft); }
.rq__label { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 10px; font-weight: 700; color: var(--c-ink); }
.rq__out { font-size: 1.75rem; color: var(--c-burgundy); }
.range { width: 100%; accent-color: var(--c-burgundy); height: 32px; }
.range__scale { display: flex; justify-content: space-between; font-size: .9375rem; color: var(--c-muted); }
.rec-tool__sum { font-size: 1.125rem; font-weight: 700; color: var(--c-ink); margin-bottom: 14px; }
.rcards { display: grid; gap: 14px; }
.rcard { display: grid; grid-template-columns: 150px 1fr; gap: 20px; align-items: center; padding: 16px; border-radius: 22px; background: #fff; border: 1px solid var(--c-line); transition: border-color .2s, opacity .2s; }
.rcard__ph { aspect-ratio: 1; border-radius: 50%; }
.rcard__verdict { display: inline-flex; padding: 2px 10px; border-radius: 999px; background: var(--c-linen); font-size: .8125rem; font-weight: 700; color: var(--c-text); margin-bottom: 6px; }
.rcard h3 { font-size: 1.5rem; font-weight: 300; letter-spacing: -0.04em; }
.rcard h3 a:hover { color: var(--c-burgundy); }
.rcard h3 small { font-size: .875rem; font-weight: 500; letter-spacing: 0; color: var(--c-muted); margin-left: 4px; }
.rcard__why { margin: 8px 0 10px; font-size: .9375rem; }
.rcard__why li { position: relative; padding-left: 20px; margin-bottom: 4px; }
.rcard__why li::before { position: absolute; left: 0; font-weight: 700; }
.rcard__why .is-ok::before { content: "○"; color: var(--c-leaf); }
.rcard__why .is-mid::before { content: "△"; color: #8A5A00; }
.rcard__why .is-no::before { content: "×"; color: var(--c-rose); }
.rcard.is-best { border: 2px solid var(--c-burgundy); }
.rcard.is-best .rcard__verdict { background: var(--c-burgundy); color: #fff; }
.rcard.is-best h3 { font-weight: 700; }
.rcard.is-no { opacity: .62; }
.cmp th[data-col], .cmp td[data-col] { text-align: center; }
.cmp thead th[data-col] a { font-size: 1.125rem; }
.cmp .is-best { background: var(--c-blush-soft); }
.cmp thead .is-best { background: var(--c-burgundy); color: #fff; }
.cmp thead .is-best a { color: #fff; }
.cmp__badge { display: block; font-size: .75rem; font-weight: 700; }
@media (max-width: 899px) { .rec-tool { grid-template-columns: 1fr; } .rec-tool__q { position: static; } }
@media (max-width: 559px) { .rcard { grid-template-columns: 84px 1fr; gap: 14px; padding: 14px; } }

/* 예상 비용 구성 */
.cost { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: clamp(24px, 4vw, 48px); align-items: start; }
.cost__set { position: sticky; top: calc(var(--header-h) + 90px); display: grid; gap: 14px; padding: 26px; border-radius: 22px; background: var(--c-linen); }
.cost__h { font-size: 1.125rem; margin-top: 6px; }
.cost__h small { display: block; font-size: .8125rem; font-weight: 500; color: var(--c-muted); }
.cost__set .form__field label, .cost__in label { display: flex; justify-content: space-between; gap: 8px; font-weight: 700; font-size: .9375rem; color: var(--c-ink); margin-bottom: 4px; }
.cost__in label small { font-weight: 500; color: var(--c-muted); }
.won { display: flex; align-items: center; gap: 8px; }
.won span { flex: none; font-weight: 600; color: var(--c-muted); }
.cost input[data-money] { border-style: dashed; text-align: right; font-family: var(--font-num); font-size: 1.125rem; }
.cost input[data-money]:focus { border-style: solid; }
.cost__sheet { padding: clamp(22px, 3vw, 36px); border-radius: 22px; background: #fff; border: 1px solid var(--c-line); }
.cost__tag { font-weight: 700; color: var(--c-rose); font-size: .875rem; }
.cost__title { font-size: clamp(1.3rem, 1.1rem + .8vw, 1.75rem); font-weight: 300; letter-spacing: -0.04em; margin: 4px 0 18px; }
.cost__tbl { width: 100%; border-top: 1px solid var(--c-ink); }
.cost__tbl th, .cost__tbl td { padding: 14px 6px; border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: middle; }
.cost__tbl th { width: 120px; color: var(--c-ink); }
.cost__f { color: var(--c-muted); font-size: .9375rem; }
.cost__v { text-align: right !important; font-weight: 700; color: var(--c-ink); white-space: nowrap; }
.cost__v .num { font-size: 1.125rem; font-weight: 400; }
.cost__tbl tfoot th, .cost__tbl tfoot td { border-bottom: 0; border-top: 2px solid var(--c-burgundy); }
.cost__total { font-size: 1.5rem; color: var(--c-burgundy); }
.cost__notes { margin: 18px 0 22px; font-size: .9375rem; color: var(--c-muted); }
.cost__notes li { position: relative; padding-left: 14px; margin-bottom: 4px; }
.cost__notes li::before { content: "·"; position: absolute; left: 2px; }
@media (max-width: 899px) { .cost { grid-template-columns: 1fr; } .cost__set { position: static; } }
@media (max-width: 479px) { .cost__tbl th { width: 84px; } .cost__f { font-size: .8125rem; } }

/* 문의 문장 상자 */
.compose { margin-top: 18px; padding: 20px; border-radius: 18px; background: var(--c-ivory); border: 1px solid var(--c-line); }
.compose__title { display: flex; align-items: center; gap: 8px; font-size: 1.0625rem; color: var(--c-ink); margin-bottom: 10px; }
.compose__title .i { color: var(--c-burgundy); }
.compose__msg { padding: 14px 16px; border-radius: 12px; background: #fff; border: 1px dashed var(--c-line-strong); font-size: .9375rem; line-height: 1.65; color: var(--c-ink); }
.compose__btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.compose__btns .i { width: 16px; height: 16px; }
.compose__note { margin-top: 10px; font-size: .8125rem; color: var(--c-muted); }
.compose__note.is-done { color: var(--c-leaf); font-weight: 700; }
.cd__pick .compose { background: #fff; margin-top: 12px; }
.cd__pick .compose .btn { width: auto; margin-top: 0; }
.two-col .compose { margin-top: 0; }

/* 계절 꽃·갤러리 */
.seasons { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.season { padding: 20px; border-radius: 18px; background: #fff; border: 1px solid var(--c-line); }
.season__sw { display: block; width: 56px; height: 56px; margin-bottom: 12px; border-radius: 50%; background: var(--sw); box-shadow: 18px 0 0 -4px var(--sw), 9px -12px 0 -8px var(--sw); }
.season h3 { font-size: 1.125rem; }
@media (max-width: 899px) { .seasons { grid-template-columns: 1fr 1fr; } }
.gal { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 52px; }
.gal__item .media { aspect-ratio: 3 / 4; }
.gal__item figcaption { margin-top: 6px; font-size: .9375rem; font-weight: 600; }
@media (max-width: 767px) { .gal { grid-template-columns: 1fr 1fr; } }
.wgal { columns: 3; column-gap: 16px; margin-top: 24px; }
.wgal__item { break-inside: avoid; margin-bottom: 22px; }
.wgal__item .media { aspect-ratio: 4 / 3; }
.wgal__item:nth-child(3n+1) .media { aspect-ratio: 4 / 5; border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
.wgal__item img { transition: transform .6s var(--ease); }
.wgal__item a:hover img { transform: scale(1.04); }
.wgal__cap { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-top: 10px; font-size: .9375rem; }
.wgal__cap b { color: var(--c-ink); }
.wgal__cap .num { color: var(--c-muted); }
@media (max-width: 899px) { .wgal { columns: 2; } }
@media (max-width: 479px) { .wgal { columns: 1; } }
.ecards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px 18px; margin-top: 24px; }
.ecard a { display: block; }
.ecard .media { aspect-ratio: 4 / 3; }
.ecard:nth-child(3n+2) .media { border-radius: 999px 999px var(--radius-photo) var(--radius-photo); }
.ecard__body { display: block; padding-top: 14px; }
.ecard h2 { font-size: 1.1875rem; margin: 10px 0 2px; }
.ecard__when { display: block; color: var(--c-burgundy); margin-bottom: 6px; }
.ecard p { font-size: .9375rem; color: var(--c-text); }
.ecard[data-cate="end"] .media img { filter: grayscale(.6); }
.ecard a:hover h2 { color: var(--c-burgundy); text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 899px) { .ecards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 559px) { .ecards { grid-template-columns: 1fr; } }

/* 예약 절차 */
.psteps { display: grid; gap: 0; border-top: 1px solid var(--c-ink); }
.pstep { display: grid; grid-template-columns: 90px 1fr; gap: 20px; padding: 28px 0; border-bottom: 1px solid var(--c-line); }
.pstep__n { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--c-blush-soft); color: var(--c-burgundy); font-size: 1.75rem; }
.pstep:first-child .pstep__n { background: var(--c-burgundy); color: #fff; }
.pstep__when { font-size: .875rem; font-weight: 700; color: var(--c-rose); }
.pstep h2 { font-size: 1.375rem; margin: 2px 0 8px; }
.pstep__need { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.pstep__need li { padding: 4px 12px; border-radius: 999px; background: #fff; border: 1px solid var(--c-line); font-size: .875rem; font-weight: 600; }
@media (max-width: 559px) { .pstep { grid-template-columns: 52px 1fr; gap: 14px; } .pstep__n { width: 46px; height: 46px; font-size: 1.25rem; } }
.csteps { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; border-top: 1px solid var(--c-ink); }
.cstep { display: flex; gap: 12px; padding: 20px 16px 20px 0; border-bottom: 1px solid var(--c-line); }
.cstep + .cstep { padding-left: 16px; border-left: 1px dashed var(--c-line-strong); }
.cstep__n { font-size: 2rem; line-height: 1; color: var(--c-burgundy); }
.cstep h3 { font-size: 1.0625rem; }
.cstep p { font-size: .9375rem; }
@media (max-width: 899px) { .csteps { grid-template-columns: 1fr; } .cstep + .cstep { padding-left: 0; border-left: 0; } }

/* ---------- 폼 ---------- */
.from-cal { display: flex; align-items: center; gap: 10px; margin-bottom: 24px; padding: 14px 18px; border-radius: 14px; background: #EEF5EF; color: var(--c-leaf); font-weight: 700; }
.from-cal .i { flex: none; }
.contact-grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.4fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.contact-aside { padding: 24px; background: var(--c-linen); border-radius: 22px; }
.contact-aside h2 { font-size: 1.25rem; margin-bottom: 14px; }
.contact-aside .dl-rows > div { grid-template-columns: 1fr; gap: 2px; }
@media (max-width: 899px) { .contact-grid { grid-template-columns: 1fr; } }
.form { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 16px; }
.form__set { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 22px; border: 1px solid var(--c-line); border-radius: 18px; background: #fff; }
.form__set legend { padding: 0 8px; font-weight: 700; color: var(--c-burgundy); }
.form__req-note { grid-column: 1 / -1; font-size: .9375rem; color: var(--c-muted); }
.form__field { display: flex; flex-direction: column; gap: 6px; }
.form__field--full { grid-column: 1 / -1; }
.form label { font-weight: 700; color: var(--c-ink); font-size: .9375rem; }
.req { color: var(--c-rose); margin-left: 3px; }
.form input:not([type="checkbox"]), .form select { padding: 10px 12px; }
.form textarea { min-height: 130px; padding: 12px; resize: vertical; }
.form input.is-filled, .form select.is-filled { border-color: var(--c-leaf); background: #F3F8F4; }
.form__terms summary { cursor: pointer; font-weight: 600; color: var(--c-burgundy); }
.form__terms p { margin-top: 8px; padding: 12px 14px; background: var(--c-linen); font-size: .9375rem; border-radius: 12px; }
.form__agree { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; font-weight: 500 !important; }
.form__agree input { width: 20px; height: 20px; margin-top: 4px; accent-color: var(--c-burgundy); }
.form__note { grid-column: 1 / -1; padding: 14px 16px; border-left: 4px solid var(--c-burgundy); background: var(--c-blush-soft); font-weight: 600; color: var(--c-ink); border-radius: 0 12px 12px 0; }
@media (max-width: 559px) { .form, .form__set { grid-template-columns: 1fr; } .form__set { padding: 16px; } }

/* 자주 묻는 질문 (qna — faq 클래스는 쓰지 않는다) */
.tabs { display: flex; flex-wrap: wrap; gap: 6px; }
.tabs--left { margin-bottom: 20px; }
.tab { min-height: 42px; padding: 0 16px; border: 1px solid var(--c-line-strong); border-radius: 999px; background: #fff; font-weight: 600; font-size: .9375rem; color: var(--c-text); }
.tab:hover { border-color: var(--c-burgundy); color: var(--c-burgundy); }
.tab[aria-pressed="true"] { background: var(--c-burgundy); border-color: var(--c-burgundy); color: #fff; }
.qna { border-top: 1px solid var(--c-ink); }
.qna__item { border-bottom: 1px solid var(--c-line); }
.qna__item summary { display: flex; align-items: center; gap: 12px; padding: 18px 4px; cursor: pointer; list-style: none; font-weight: 700; color: var(--c-ink); }
.qna__item summary::-webkit-details-marker { display: none; }
.qna__item summary::after { content: "+"; margin-left: auto; font-size: 1.5rem; line-height: 1; color: var(--c-burgundy); }
.qna__item[open] summary::after { content: "−"; }
.qna__q { font-family: var(--font-num); font-size: 1.5rem; color: var(--c-burgundy); }
.qna__a { padding: 0 4px 20px 38px; }
@media (max-width: 559px) { .qna__item summary { flex-wrap: wrap; } .qna__t { flex-basis: 100%; order: 3; } }

/* ---------- 게시판 ---------- */
.board-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.board-search { display: flex; min-width: 0; max-width: 100%; border: 1px solid var(--c-line-strong); border-radius: 999px; overflow: hidden; background: #fff; }
.board-search input { min-width: 0; border: 0; padding: 0 16px; min-height: 44px; width: 220px; max-width: 50vw; background: none; }
.board-search input:focus { outline: none; }
.board-search:focus-within { outline: 3px solid var(--c-burgundy); outline-offset: 2px; }
.board-search button { width: 48px; border: 0; background: var(--c-burgundy); color: #fff; display: grid; place-items: center; }
.board-meta { margin: 16px 0 10px; font-size: .9375rem; color: var(--c-muted); display: flex; flex-wrap: wrap; gap: 6px 12px; }
.board-meta b { color: var(--c-burgundy); }
.board-table { width: 100%; border-top: 1px solid var(--c-ink); background: #fff; }
.board-table th, .board-table td { padding: 14px 10px; border-bottom: 1px solid var(--c-line); text-align: center; }
.board-table thead th { background: var(--c-linen); font-size: .9375rem; color: var(--c-ink); }
.board-table .td-subject { text-align: left; }
.board-table .td-subject a:hover { color: var(--c-burgundy); text-decoration: underline; text-underline-offset: 4px; }
.col-num { width: 80px; } .col-cate { width: 100px; } .col-date { width: 120px; } .col-hit { width: 80px; }
.td-date, .td-hit, .td-num { color: var(--c-muted); }
.is-notice { background: #FDF8F6; }
.is-notice .td-subject a { font-weight: 700; }
.badge-notice { display: inline-block; padding: 2px 9px; border-radius: 999px; background: var(--c-burgundy); color: #fff; font-size: .8125rem; font-weight: 700; }
.board-empty td { color: var(--c-muted); padding: 32px; }
.pagination { display: flex; justify-content: center; gap: 6px; margin-top: 28px; }
.pagination button { min-width: 42px; height: 42px; border: 1px solid var(--c-line); border-radius: 50%; background: #fff; font-family: var(--font-num); font-size: 1.0625rem; }
.pagination button[aria-current="page"] { background: var(--c-burgundy); border-color: var(--c-burgundy); color: #fff; }
@media (max-width: 767px) {
  .board-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .board-table tr { display: grid; grid-template-columns: auto 1fr auto; gap: 4px 10px; padding: 14px 4px; border-bottom: 1px solid var(--c-line); }
  .board-table td { padding: 0; border: 0; text-align: left; }
  .board-table .td-num { display: none; }
  .board-table .is-notice .td-num { display: block; }
  .board-table .td-subject { grid-column: 1 / -1; order: -1; font-size: 1.0625rem; }
  .board-table .td-hit::before { content: "조회 "; }
  .board-search { flex: 1 1 100%; } .board-search input { flex: 1; width: auto; max-width: none; }
}
.post-head { padding-bottom: 20px; border-bottom: 1px solid var(--c-ink); }
.post-head__title { font-size: clamp(1.4rem, 1.15rem + 1vw, 2rem); margin: 12px 0 14px; }
.post-meta { display: flex; flex-wrap: wrap; gap: 6px 24px; font-size: .9375rem; color: var(--c-muted); }
.post-meta div { display: flex; gap: 6px; }
.post-meta dt { font-weight: 700; color: var(--c-ink); }
.post-body { padding: 28px 0 40px; border-bottom: 1px solid var(--c-line); }
.post-body > * + * { margin-top: 16px; }
.post-body ul { padding-left: 20px; }
.post-body a { color: var(--c-burgundy); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.post-body .photo-pair { margin-top: 16px; }
.post-fig { aspect-ratio: 16 / 9; }
.post-body .tbl { min-width: 0; font-size: .9375rem; }
@media (max-width: 479px) { .post-body .tbl th, .post-body .tbl td { padding: 10px 6px; } }
.post-nav li { display: grid; grid-template-columns: 80px 1fr auto; gap: 12px; padding: 14px 4px; border-bottom: 1px solid var(--c-line); }
.post-nav li > span:first-child { font-weight: 700; color: var(--c-ink); }
.post-nav a:hover { color: var(--c-burgundy); text-decoration: underline; }
.post-nav .num { color: var(--c-muted); }
.post-actions { display: flex; justify-content: center; margin-top: 28px; }
@media (max-width: 559px) { .post-nav li { grid-template-columns: 64px 1fr; } .post-nav .num { display: none; } }

/* ---------- 푸터 ---------- */
.site-footer { background: var(--c-wine); color: var(--c-on-wine); padding: 56px 0 32px; font-size: .9375rem; }
.site-footer .logo { color: #fff; }
.site-footer .logo__en { color: var(--c-on-wine); }
.site-footer__top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px; padding-bottom: 24px; border-bottom: 1px solid rgba(235, 213, 209, .2); }
.site-footer__nav { display: flex; flex-wrap: wrap; gap: 6px 22px; }
.site-footer__nav a { color: #fff; font-weight: 600; }
.site-footer__nav a:hover, .site-footer__policy a:hover { text-decoration: underline; text-underline-offset: 4px; }
.site-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 20px 40px; margin-top: 22px; }
.site-footer__info, .site-footer__hours { display: flex; flex-wrap: wrap; gap: 6px 22px; align-content: start; }
.site-footer__hours { flex-direction: column; }
.site-footer__info div, .site-footer__hours div { display: flex; gap: 8px; }
.site-footer__info dt, .site-footer__hours dt { color: #fff; font-weight: 600; }
.site-footer__policy { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 22px 0 0; }
.site-footer__policy .is-strong { color: #fff; font-weight: 800; }
.site-footer__policy a { color: #fff; }
.site-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-top: 26px; padding-top: 20px; border-top: 1px solid rgba(235, 213, 209, .2); font-size: .875rem; }
.site-footer__credit { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.credit-link { display: inline-flex; align-items: center; gap: 6px; color: #fff; }
.credit-link img { filter: brightness(0) invert(1); }
@media (max-width: 899px) { .site-footer__grid { grid-template-columns: 1fr; } }

/* 휴대폰 하단 연락 막대 */
.qbar { display: none; }
@media (max-width: 1023px) {
  .qbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: grid; grid-template-columns: 1fr 1fr 1.2fr; gap: 1px; padding-bottom: env(safe-area-inset-bottom); background: var(--c-line); box-shadow: 0 -6px 20px rgba(54, 18, 27, .1); }
  .qbar a { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 56px; background: var(--c-ivory); font-weight: 700; font-size: .9375rem; color: var(--c-ink); }
  .qbar .i { width: 18px; height: 18px; color: var(--c-burgundy); }
  .qbar .qbar__cta { background: var(--c-burgundy); color: #fff; }
  .qbar .qbar__cta .i { color: #fff; }
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
}

/* ---------- 움직임 보조 ---------- */
.scroll-progress { position: fixed; left: 0; right: 0; top: var(--sample-banner-h, 0px); height: 3px; z-index: 200; background: var(--c-burgundy); transform: scaleX(0); transform-origin: left; pointer-events: none; }
.js [data-text-block]:not(.is-split) { visibility: hidden; }
.tb-timeout [data-text-block] { visibility: visible; }
.block-line { position: relative; display: block; overflow: hidden; }
.block-line__revealer { position: absolute; inset: 0; z-index: 2; transform: scaleX(0); transform-origin: left center; }

@media print {
  .sample-banner, .site-header, .cards, .site-footer, .qbar, .scroll-progress { display: none !important; }
}
