@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");
/* 세리프 역할(숫자·인용·섹션 번호)은 웹폰트를 실제로 싣는다 — 안 실으면 기기에 있는 옛 명조로 떨어지고,
   그 폰트가 없는 기기에서는 숫자만 라틴 세리프로 갈라져 한 줄 안에서 서체가 둘이 된다(실측으로 확인).
   한글 세리프 = 마루 부리(네이버 · 무료 상업 이용 · 아래 @font-face). 웹폰트를 <b>둘</b> 걸어 두면
   swap 대기 동안 폴백 웹폰트까지 내려받아 첫 방문에 두 벌이 다운로드된다(실측) — 그래서 하나만 싣는다. */
/* 배경 대형 워드마크·브랜드 레터링용 라틴 디스플레이 세리프 — 명조의 라틴 글자는 장식으로 쓰기엔 약하다. */
@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&display=swap");

/* ── 마루 부리 (네이버 · 무료 상업 이용) ─────────────────────────────────────────
   네이버가 주는 CSS 는 굵기를 <b>패밀리 이름</b>으로 나눠 준다(MaruBuriSemiBold …) —
   그대로 쓰면 font-weight 가 먹지 않아 굵기를 못 바꾼다. 한 패밀리로 묶어 쓴다.
   윈도우에서 얇아 보이는 것을 막으려고 <b>본선 굵기는 600</b> 이고, 13px 이하 작은 글씨에는 세리프를 쓰지 않는다.
   배포 시에는 이 3개 woff2 를 내려받아 자체 호스팅한다(외부 CDN 의존 제거). */
@font-face{font-family:"MaruBuri"; font-style:normal; font-weight:400; font-display:swap;
  src:url("https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Regular.woff2") format("woff2")}
@font-face{font-family:"MaruBuri"; font-style:normal; font-weight:600; font-display:swap;
  src:url("https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-SemiBold.woff2") format("woff2")}
@font-face{font-family:"MaruBuri"; font-style:normal; font-weight:700; font-display:swap;
  src:url("https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Bold.woff2") format("woff2")}
/* ══════════════════════════════════════════════════════════
   오브의원 · 필러&보톡스 상세페이지
   색 2축: hue = 오브 로고 실측 H24.3° #725948 / 명도 = 레퍼 하이키 상속
   설계 순서는 모바일 먼저, 데스크톱은 그 확장.
   ══════════════════════════════════════════════════════════ */

:root{
  /* 색 — 역할 구조 */
  --brand:#725948;          /* 로고 실측색 · 헤더/버튼/강조 */
  --brand-d:#4E3D31;        /* 브랜드 어두운 단 */
  --accent:#AD7A57;         /* 로고 hue 24.3° 유지, 명도만 올림 */
  --accent-w:#F3E7DC;       /* 액센트 워시 */

  --bg:#FFFFFF;
  --soft:#F8F5F1;
  --sand:#F0E9E1;
  --dark:#2B221C;           /* 어두운 색면 — 페이지에서 한 곳(11 mood)만 */

  --ink:#241D18;
  --body-c:#4E443D;
  --muted:#77685E;
  --line:#E6DCD1;
  --line-s:#F0E9E1;

  /* 타이포 — clamp 한 스케일 */
  --f-body: clamp(1rem, 0.97rem + 0.16vw, 1.075rem);        /* 16 → 17.2 */
  --f-lead: clamp(1.0625rem, 1rem + 0.30vw, 1.25rem);       /* 17 → 20 */
  --f-h3:   clamp(1.25rem, 1.13rem + 0.52vw, 1.5rem);
  --f-h2:   clamp(1.625rem, 1.28rem + 1.48vw, 2.75rem);
  --f-h1:   clamp(2.125rem, 1.62rem + 2.16vw, 3.75rem);
  --f-cap:  clamp(0.8125rem, 0.79rem + 0.10vw, 0.875rem);   /* 13 → 14 */
  --f-sub:  clamp(0.875rem, 0.85rem + 0.12vw, 0.9375rem);   /* 14 → 15 */

  /* 리듬 */
  /* 상한만 낮춘다 — 1440 에서 실제로 걸리는 항이 상한이라 여기가 효과 지점이다.
     375 에서는 중간항(52.15px)이 이겨 모바일 리듬은 그대로 유지된다.
     근거: 레퍼 antiaging 4장 1440 실측 경계 중앙값 100px, 우리는 184px(1.84배)였다. */
  --sec-y: clamp(3.25rem, 1.9rem + 5.8vw, 4.125rem);
  --wrap: 1200px;
  --gut: clamp(1.125rem, 0.55rem + 2.45vw, 2.5rem);

  /* 박스 규격 — 한 페이지 2종만 */
  --r-card:3px;
  --r-pill:999px;

  --serif: "MaruBuri", "Nanum Myeongjo", "Apple SD Gothic Neo", Georgia, serif;   /* 뒤는 로컬 폴백 — 다운로드되지 않는다 */
  --display: "Cormorant Garamond", "MaruBuri", Georgia, serif;   /* 라틴 장식 전용 */
  --sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
/* 한국어 줄바꿈 — 이게 없으면 브라우저가 어절 한가운데를 자른다.
   모바일 375px 에서 「고민에 따라, 들어오는 문이 다릅니 / 다」 처럼 났다(실측).
   keep-all 은 어절 안에서 안 자르고, overflow-wrap 은 끊을 데가 없는 긴 문자열(메일·URL)만 예외로 자른다. */
body{word-break:keep-all; overflow-wrap:break-word}
body{
  margin:0; background:var(--bg); color:var(--body-c);
  font-family:var(--sans); font-size:var(--f-body); line-height:1.75;
  letter-spacing:-0.01em;
  overflow-x:hidden;
  padding-bottom:66px;            /* 하단 고정 CTA 자리 — 여기 한 곳에서만 준다 */
}
img,svg,video{max-width:100%; display:block}
img{height:auto}
a{color:inherit}
h1,h2,h3{margin:0; color:var(--ink); line-height:1.28; letter-spacing:-0.028em; font-weight:700}
p{margin:0}
ul,ol,dl,dd{margin:0; padding:0; list-style:none}
/* <figure> 는 UA 기본이 margin-inline:40px 다 — 안 지우면 도해가 컨테이너보다 80px 좁아지고,
   SVG viewBox 스케일이 함께 줄어 라벨이 읽을 수 없는 크기가 된다(실측 339→259px). */
figure,blockquote{margin:0}

.wrap{width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gut)}

/* ── 리빌 ────────────────────────────────────────────── */
[data-reveal]{opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s cubic-bezier(.22,.7,.3,1)}
[data-reveal].is-in{opacity:1; transform:none}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{opacity:1 !important; transform:none !important; transition:none}
}

/* ══ 장식 레이어 ═══════════════════════════════════════ */
.eyebrow{
  font-size:var(--f-cap); letter-spacing:.22em; text-transform:uppercase;
  color:var(--accent); font-weight:600; margin-bottom:.65rem;
}
.eyebrow--light{color:#E8D7C6}
.eyebrow--mt{margin-top:2.5rem}

.sec-num{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:44px; height:26px; padding-inline:.4rem; margin-bottom:.9rem;
  font-family:var(--serif); font-size:var(--f-sub); font-weight:700;
  color:var(--accent); letter-spacing:.08em;
  border:1px solid var(--line); border-radius:var(--r-pill);
}

/* 배경 대형 타이포 — 여백을 '설계된 여백'으로 */
.sec-bigtype{
  position:absolute; left:-.04em; top:.35em; z-index:0; pointer-events:none;
  font-family:var(--display); font-weight:600; letter-spacing:.01em;
  font-size:clamp(4.5rem, 2rem + 12vw, 11rem); line-height:.8;
  color:var(--sand); opacity:.55; white-space:nowrap;
}
.sec-bigtype--r{left:auto; right:-.04em}
/* 모바일에서는 섹션 위 여백이 52px 로 줄어 대형 타이포(27~89px)가 번호 배지(76~102px)를 뚫고 지나갔다.
   배지는 테두리만 있고 배경이 없어서 글자가 배지 안으로 비쳤다 — 실측하고 위로 올린다. */
@media (max-width:760px){ .sec-bigtype{top:0} }

/* 제목 밑 이중 룰 — 렌즈형 끝단(로고 모티프) */
.rule2{display:flex; flex-direction:column; gap:4px; margin:1.15rem 0 1.35rem; width:74px}
.rule2 i{display:block; height:2px; background:var(--accent); border-radius:var(--r-pill)}
.rule2 i:last-child{width:34px; background:var(--line); height:2px}

/* ── 공통 타이포 ─────────────────────────────────────── */
.h2{font-size:var(--f-h2)}
.h3{font-size:var(--f-h3)}
.h3--mb{margin-bottom:1rem}
.lead{font-size:var(--f-lead); color:var(--body-c); margin-top:1rem; line-height:1.72}
.lead b{color:var(--ink); font-weight:700}
.body{margin-top:1rem; line-height:1.85}
.body b{color:var(--ink)}
.cap{font-size:var(--f-cap); color:var(--muted); margin-top:.7rem; line-height:1.62}
.cap--center{text-align:center; margin-top:1.7rem}
.txtlink{
  display:inline-flex; align-items:center; min-height:44px; margin-top:.7rem;
  color:var(--brand); font-weight:600; font-size:var(--f-sub);
  border-bottom:1px solid var(--accent); text-decoration:none;
}
.ico{width:28px; height:28px; fill:none; stroke:var(--accent); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round}
.ico--l{width:34px; height:34px}

.btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:52px; padding:0 1.6rem; margin-top:1.4rem;
  font-size:var(--f-sub); font-weight:600; text-decoration:none;
  border-radius:var(--r-pill); transition:background .2s, color .2s;
}
.btn--line{border:1px solid var(--brand); color:var(--brand)}
.btn--line:hover{background:var(--brand); color:#fff}
.btn--solid{background:var(--brand); color:#fff; border:1px solid var(--brand)}
.btn--solid:hover{background:var(--brand-d)}

/* ── 섹션 뼈대 ───────────────────────────────────────── */
.sec{position:relative; padding-block:var(--sec-y); overflow:hidden}
.sec--soft{background:var(--soft)}
.sec--sand{background:var(--sand)}
.sec > .wrap{position:relative; z-index:1}
.shead{max-width:56ch}
.shead--center{max-width:60ch; margin-inline:auto; text-align:center}
.shead--center .rule2{margin-inline:auto}

.grid2{display:grid; gap:clamp(1.75rem, 1rem + 3.2vw, 3.5rem); align-items:start}
@media (min-width:900px){
  .grid2{grid-template-columns:1fr 1fr; align-items:center}
  .grid2--wide{grid-template-columns:1.05fr .95fr}
  .grid2--flip .col:first-child{order:2}
  .grid2--flip .col:last-child{order:1}
}

/* ══ 01 hero ═══════════════════════════════════════════ */
.hero{position:relative; min-height:clamp(460px, 62vh, 660px); display:flex; align-items:flex-start}
.hero__bg{position:absolute; inset:0; margin:0; background:var(--sand)}
.hero__img{width:100%; height:100%; object-fit:cover}
/* 한 장으로 두 비율을 만족시키지 않는다 — 모바일은 세로 컷을 따로 쓴다.
   가로 컷을 세로 프레임에 cover 하면 좌우가 먼저 잘려, 비워 둔 여백이 살아남지 않는다. */
.hero__img--d{display:none; --phero-pos:72% 42%}
.hero__img--m{display:block; --phero-pos:50% 46%}
@media (min-width:760px){
  .hero__img--d{display:block}
  .hero__img--m{display:none}
}
.hero__layer{
  position:relative; z-index:1; width:100%;
  padding-top:clamp(6.5rem, 4rem + 11vw, 9rem);
  padding-bottom:2.5rem;
  /* 모바일 세로 컷은 인물 머리가 프레임의 40% 지점에서 시작한다(프롬프트로 그렇게 잡았다).
     텍스트 블록은 그보다 길어 마지막 줄이 얼굴 위에 얹힌다 — 그 구간까지 그늘을 끌고 간다. */
  /* 이미지를 하이키로 재생성한 뒤 이 값을 다시 잡았다 — 리드 영역 이미지 L 이 215.7 로 올라가
     기존 알파(.66/.52/.34)로는 합성 배경이 L≈123 이 되어 흰 글씨 대비가 3.5:1 로 떨어졌다.
     이미지를 바꾸면 그 위에 얹힌 그늘도 다시 재야 한다. */
  background:linear-gradient(180deg, rgba(38,29,23,.80) 0%, rgba(38,29,23,.70) 44%, rgba(38,29,23,.44) 72%, rgba(38,29,23,0) 100%);
}
/* 데스크톱은 텍스트가 좌측에만 있다 — 세로 그늘은 가로 전체를 덮어 우측 인물을 죽인다.
   방향을 가로로 돌리면 글자 뒤에만 그늘이 남고 인물은 그대로 보인다. */
@media (min-width:760px){
  .hero__layer{
    background:linear-gradient(90deg, rgba(38,29,23,.84) 0%, rgba(38,29,23,.72) 32%, rgba(38,29,23,.34) 52%, rgba(38,29,23,0) 66%);
  }
}
.hero__h{font-size:var(--f-h1); color:#fff; letter-spacing:-.035em}
.hero__lead{
  margin-top:1.05rem; color:#F3E9E0; font-size:var(--f-lead); line-height:1.7;
  max-width:34ch; text-shadow:0 1px 12px rgba(30,22,16,.35);
}
.hero__crumb{margin-bottom:.55rem; font-size:var(--f-cap); color:#DCCBBB; letter-spacing:.02em}

/* ══ 02 spec ═══════════════════════════════════════════ */
.spec{background:var(--bg); padding-block:0}
.spec .wrap{position:relative; z-index:2}
.spec__list{
  display:grid; grid-template-columns:1fr; gap:0;
  margin-top:-2.25rem; background:#fff; border:1px solid var(--line);
  border-radius:var(--r-card); box-shadow:0 14px 44px rgba(64,48,36,.09);
  overflow:hidden;
}
.spec__list li{
  display:flex; align-items:center; gap:.95rem;
  padding:1.05rem var(--gut); border-bottom:1px solid var(--line-s);
}
.spec__list li:last-child{border-bottom:0}
.spec__k{font-size:var(--f-cap); color:var(--muted); min-width:5.5em}
.spec__v{margin-left:auto; color:var(--ink); font-size:var(--f-body); font-weight:700; font-family:var(--serif); letter-spacing:-.01em}
.spec__note{font-size:var(--f-cap); color:var(--muted); margin-top:.9rem; text-align:center}
@media (min-width:760px){
  .spec__list{grid-template-columns:repeat(3,1fr); margin-top:-3rem}
  .spec__list li{
    flex-direction:column; align-items:flex-start; gap:.45rem;
    padding:1.6rem 1.75rem; border-bottom:0; border-right:1px solid var(--line-s);
  }
  .spec__list li:last-child{border-right:0}
  .spec__v{margin-left:0; font-size:var(--f-h3)}
}

/* ── 사진 프레임 — 세로 스타디움(로고 모티프) + 액센트 오프셋 ── */
.fig{position:relative; margin:0}
.fig img{width:100%}
.fig--stadium img{border-radius:var(--r-pill); aspect-ratio:3/4; object-fit:cover}
/* 오프셋 프레임 — 사진과 「같은 중심」의 동심 알약.
   예전에는 top/left/right + aspect-ratio 로 대각선 오프셋을 줬는데,
   알약(반지름=폭/2)을 대각선으로 밀면 위·아래 반원의 간격이 좌우와 달라져
   테두리가 「틀어진」 것처럼 보인다 — 실제로 그렇게 보였다.
   그래서 figure 를 그리드로 만들어 사진과 프레임을 같은 칸에 겹치고,
   음수 마진으로 사방 12px 씩만 키운다. 알약끼리 반지름 차가 어디서나 12px = 완전히 평행.
   figcaption 은 2행이라 프레임 안에 들어가지 않는다. */
.fig--stadium{display:grid; grid-template-rows:auto auto}
.fig--stadium > img{grid-area:1 / 1}
.fig--stadium .fig__frame{
  grid-area:1 / 1; position:static; margin:-12px; align-self:stretch;
  border:1px solid var(--accent); border-radius:var(--r-pill); opacity:.55; pointer-events:none;
}
.fig--stadium figcaption{grid-area:2 / 1; margin-top:1.15rem}
.fig--stadium img{position:relative; z-index:1}
/* 스튜디오 원본(2:3 · 무릎까지)을 3:4 알약에 넣으면 가운데 크롭은 머리 꼭대기(원본 12%)를 스친다.
   위쪽을 보이게 당겨 머리 위 여백을 확보한다(실측: 12~88% → 6~82%). */
.fig--dr img{object-position:50% 25%; background:#fff}

/* ══ 05 two-axis ═══════════════════════════════════════ */
.axis{display:grid; gap:1.25rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:820px){.axis{grid-template-columns:1fr 1fr; gap:1.75rem}}
.axis__card{
  position:relative; padding:clamp(1.4rem,1rem + 1.6vw,2.1rem);
  border:1px solid var(--line); border-radius:var(--r-card); background:#fff;
  display:flex; flex-direction:column;
}
.axis__card--btx{background:var(--soft)}
.axis__tag{
  display:inline-flex; align-items:center; align-self:flex-start;
  height:26px; padding-inline:.8rem; margin-bottom:.9rem;
  font-size:var(--f-cap); letter-spacing:.16em; text-transform:uppercase; font-weight:600;
  color:#fff; background:var(--accent); border-radius:var(--r-pill);
}
.axis__card--btx .axis__tag{background:var(--brand)}
.axis__dia{width:100%; height:auto; margin:1.15rem 0 .35rem}
.dia-ln{fill:none; stroke:var(--line); stroke-width:2.5}
.dia-ln2{fill:none; stroke:var(--accent); stroke-width:2.5}
.dia-fill{fill:var(--accent-w); stroke:none}
.dia-ar path{fill:none; stroke:var(--brand); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round}
.dia-t{fill:var(--muted); font-family:var(--sans); letter-spacing:.02em}
.axis__n{
  margin-top:auto; padding-top:1.1rem; font-family:var(--serif);
  font-size:var(--f-h3); color:var(--ink); font-weight:700;
}
.axis__n span{color:var(--accent)}

/* ══ 06 filler-depth — SVG 단면 도해 ══════════════════ */
.layers{width:100%; height:auto; border-radius:var(--r-card); overflow:visible; margin-top:1rem}
.ly1{fill:#FBF7F3}.ly2{fill:#F3E7DC}.ly3{fill:#EADCCC}.ly4{fill:#DCC7B2}.ly5{fill:#C9B098}
.lyline{stroke:#fff; stroke-width:1; opacity:.7}
.lyt{fill:var(--brand-d); font-family:var(--sans); font-weight:600}
.pin line{stroke:var(--brand); stroke-width:1.4; stroke-dasharray:3 3}
.pin circle{fill:var(--accent); stroke:#fff; stroke-width:2}
.pin--deep circle{fill:var(--brand)}
.pint{fill:var(--brand-d); font-family:var(--sans); font-weight:600; text-anchor:middle}

/* ══ 07 filler-area — 얼굴 도해 ═══════════════════════ */
.face{display:grid; gap:clamp(1.6rem,1rem + 2.4vw,2.75rem); margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:900px){.face{grid-template-columns:.85fr 1.15fr; align-items:center}}
.face__svg{width:100%; max-width:420px; margin-inline:auto; height:auto}
.fc{fill:none; stroke:var(--line); stroke-width:2; stroke-linecap:round}
.fc--face{fill:var(--soft)}
.pt circle{fill:var(--accent); stroke:#fff; stroke-width:2.5}
.pt text{
  fill:#fff; font-family:var(--serif); font-weight:700;
  text-anchor:middle; letter-spacing:.02em;
}
.face__list{display:grid; gap:.2rem}
.face__list li{
  display:grid; grid-template-columns:auto 1fr; column-gap:.9rem; align-items:baseline;
  padding:.85rem 0; border-bottom:1px solid var(--line-s);
}
.face__list li:last-child{border-bottom:0}
.face__n{
  font-family:var(--serif); font-size:var(--f-sub); font-weight:700;
  color:var(--accent); grid-row:span 2;
}
.face__list b{color:var(--ink); font-size:var(--f-body)}
.face__list span:last-child{grid-column:2; font-size:var(--f-sub); color:var(--muted); line-height:1.6}

/* ══ 08 botox-mech — 영상 ═════════════════════════════ */
.sec--mech{background:var(--bg)}
.mech{margin:clamp(1.9rem,1.2rem + 2.6vw,3rem) 0 0}
.mech__box{
  position:relative; border-radius:var(--r-card); overflow:hidden;
  background:var(--sand); aspect-ratio:16/9;
}
.mech__v{width:100%; height:100%; object-fit:cover; display:block}
@media (prefers-reduced-motion:reduce){
  .mech__v{display:none}
  .mech__box{background:var(--sand) center/cover no-repeat}
}

/* ── SVG 애니 도해: 신호가 잦아들며 수축 폭이 완만해진다 ──
   Veo 포토리얼 CGI 를 2회 만들어 이 자리에 넣어 봤다가 물렸다 —
   확대된 신경 조직이 촉수·뿌리 다발로 읽혀 「보기 불편하다」. 미용의료에서는 특히 안 된다.
   같은 내용을 도식적으로(납작하고 추상적으로) 그리면 거부감이 사라진다. */
.nmj{width:100%; height:100%; display:block}
.nmj-bg{fill:#FBF7F3}
.nmj-nerve path{fill:none; stroke:var(--brand); stroke-width:5; stroke-linecap:round}
.nmj-nerve circle{fill:var(--brand)}
.nmj-t{fill:var(--muted); font-family:var(--sans); font-weight:600}
.nmj-t--c{text-anchor:middle}
.nmj-t--r{text-anchor:end}
.nmj-lead{stroke:var(--line); stroke-width:1.2}
.nmj-gap line{stroke:var(--line); stroke-width:1.5; stroke-dasharray:5 5}
.fb{fill:none; stroke:#DCC7B2; stroke-width:9; stroke-linecap:round; transform-origin:center; transform-box:fill-box}
.sg{fill:var(--accent)}
.amp{fill:none; stroke:var(--accent); stroke-width:3.5; stroke-linecap:round}

/* 신호 알갱이: 틈을 건너간다 → 뒤로 갈수록 뜸해진다(opacity 키프레임) */
@keyframes sigcross{
  0%{transform:translateX(0); opacity:0}
  8%{opacity:1}
  38%{transform:translateX(56px); opacity:1}
  46%{transform:translateX(60px); opacity:0}
  100%{transform:translateX(60px); opacity:0}
}
/* 수축: 초반엔 또렷하게, 후반엔 거의 잔잔하게 */
@keyframes twitch{
  0%,100%{transform:scaleX(1)}
  6%{transform:scaleX(.965)}
  12%{transform:scaleX(1)}
  30%{transform:scaleX(.978)}
  36%{transform:scaleX(1)}
  56%{transform:scaleX(.99)}
  62%{transform:scaleX(1)}
  80%{transform:scaleX(.997)}
}
/* 수축 폭 그래프: 파형이 납작해진다 */
@keyframes flatten{
  0%,10%{transform:scaleY(1)}
  55%{transform:scaleY(.5)}
  85%,100%{transform:scaleY(.16)}
}
.sg{animation:sigcross 9s linear infinite}
.sg1{animation-delay:0s}
.sg2{animation-delay:1.5s}
.sg3{animation-delay:2.9s}
.sg4{animation-delay:4.6s}
.sg5{animation-delay:6.4s}
.fb{animation:twitch 9s ease-in-out infinite}
.fb2{animation-delay:.12s}.fb3{animation-delay:.05s}
.fb4{animation-delay:.18s}.fb5{animation-delay:.09s}.fb6{animation-delay:.15s}
.nmj-amp{animation:flatten 9s ease-in-out infinite; transform-origin:50% 412px}
.sg{opacity:0}

@media (prefers-reduced-motion:reduce){
  .sg,.fb,.nmj-amp{animation:none}
  /* 애니메이션을 끄면 keyframes 가 opacity 를 못 올린다 — 기본값(0)이 그대로 남아 알갱이가 사라진다.
     뒤로 갈수록 뜸해지는 것을 정지 상태로 표현한다. */
  .sg{opacity:1}
  .sg4,.sg5{opacity:.35}
  .nmj-amp{transform:scaleY(.4); transform-origin:50% 412px}
}

/* ══ 09 botox-area ════════════════════════════════════ */
.barea{display:grid; gap:clamp(1.5rem,1rem + 2vw,2.5rem); margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:900px){.barea{grid-template-columns:.9fr 1.1fr; align-items:start}}
.barea__lead{margin:0}
.barea__lead img{border-radius:var(--r-card); width:100%; aspect-ratio:4/3; object-fit:cover; object-position:60% 30%}
.barea__grid{display:grid; grid-template-columns:1fr 1fr; gap:.75rem}
@media (min-width:560px){.barea__grid{grid-template-columns:repeat(3,1fr)}}
.barea__grid li{
  display:flex; flex-direction:column; gap:.35rem;
  padding:1.05rem .9rem; background:#fff;
  border:1px solid var(--line); border-radius:var(--r-card);
}
.sec--soft .barea__grid li{background:#fff}
.barea__grid b{color:var(--ink); font-size:var(--f-body); margin-top:.15rem}
.barea__grid span{font-size:var(--f-cap); color:var(--muted); line-height:1.55}

/* ══ 10 botox-types ═══════════════════════════════════ */
.types{display:grid; grid-template-columns:1fr; gap:1rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:600px){.types{grid-template-columns:1fr 1fr}}
@media (min-width:1000px){.types{grid-template-columns:repeat(4,1fr); gap:1.25rem}}
.types__c{
  display:flex; flex-direction:column;
  border:1px solid var(--line); border-radius:var(--r-card); overflow:hidden; background:#fff;
}
.types__c img{width:100%; aspect-ratio:16/9; object-fit:cover}
.types__c b{display:block; padding:1.05rem 1.1rem .35rem; color:var(--ink); font-size:var(--f-body)}
.types__c b i{font-style:normal; color:var(--muted); font-weight:500; font-size:var(--f-sub)}
.types__c span{padding:0 1.1rem 1.25rem; font-size:var(--f-sub); color:var(--muted); line-height:1.6}

/* ══ 11 mood — 페이지에서 유일한 어두운 색면 ══════════ */
.mood{position:relative; min-height:clamp(300px,44vh,430px); display:grid; place-items:center; background:var(--dark)}
.mood__bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 40%; opacity:.42}
/* <img> 였던 자리를 <video> 로 바꿔 끼운다 — 같은 .mood__bg 규칙을 그대로 받는다 */
.mood__v{display:block}
@media (prefers-reduced-motion:reduce){
  .mood__v{display:none}
  .mood{background:var(--dark) center/cover no-repeat}
}
.mood__layer{position:relative; z-index:1; text-align:center; padding:3rem var(--gut)}
.mood__t{
  font-family:var(--serif); font-weight:700; color:#F7F0E9;
  font-size:clamp(1.5rem,1.1rem + 1.9vw,2.5rem); line-height:1.5; letter-spacing:-.02em;
}
.mood__s{margin-top:1.15rem; font-size:var(--f-cap); letter-spacing:.24em; text-transform:uppercase; color:#C9B49F}

/* ══ 12 process — 연결선은 모바일에도 있다 ════════════ */
.steps{
  position:relative; display:grid; gap:0;
  margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem);
}
.steps__i{position:relative; padding:0 0 1.9rem 3.6rem}
.steps__i:last-child{padding-bottom:0}
.steps__i::before{                 /* 세로 연결선 — 모바일 */
  content:""; position:absolute; left:21px; top:34px; bottom:-4px;
  width:1px; background:var(--line);
}
.steps__i:last-child::before{display:none}
.steps__n{
  position:absolute; left:0; top:0;
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; border-radius:var(--r-pill);
  border:1px solid var(--line); background:#fff;
  font-family:var(--serif); font-weight:700; color:var(--accent); font-size:var(--f-sub);
}
.steps__i:last-child .steps__n{background:var(--brand); border-color:var(--brand); color:#fff}
.steps__i b{display:block; color:var(--ink); font-size:var(--f-h3); line-height:1.5}
.steps__d{display:block; margin-top:.25rem; font-size:var(--f-sub); color:var(--muted); line-height:1.65}
@media (min-width:900px){
  .steps{grid-template-columns:repeat(5,1fr); gap:1.25rem}
  .steps__i{padding:3.6rem 0 0}
  .steps__i::before{left:44px; right:-1.25rem; top:21px; bottom:auto; width:auto; height:1px}
  .steps__i:last-child::before{display:none}
  .steps__n{top:0}
}

/* ══ 13 doctor ════════════════════════════════════════ */
.quote{margin:1.35rem 0 0; padding-left:2.4rem; position:relative}
.quote::before{
  content:"\201C"; position:absolute; left:0; top:-.25em;
  font-family:var(--serif); font-size:3.6rem; line-height:1; color:var(--accent); opacity:.6;
}
.quote p{font-family:var(--serif); font-size:var(--f-lead); color:var(--ink); line-height:1.65}
.creds{margin-top:1.5rem; display:grid; gap:.55rem}
.creds li{
  position:relative; padding-left:1.1rem; font-size:var(--f-sub); color:var(--body-c); line-height:1.6;
}
.creds li::before{
  content:""; position:absolute; left:0; top:.62em; width:5px; height:5px;
  border-radius:var(--r-pill); background:var(--accent);
}

/* ══ 14 care ══════════════════════════════════════════ */
.acc{margin-top:.35rem; border-top:1px solid var(--line)}
.acc details{border-bottom:1px solid var(--line)}
.acc summary{
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  min-height:56px; padding:.9rem 0; cursor:pointer; list-style:none;
  color:var(--ink); font-weight:600; font-size:var(--f-body);
}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{
  content:""; width:11px; height:11px; flex:0 0 auto;
  border-right:1.5px solid var(--accent); border-bottom:1.5px solid var(--accent);
  /* 45° 회전하면 11px 사각형의 외곽이 15.5px 로 커져 오른쪽으로 삐져나간다(모바일 실측 328>324).
     margin 으로 그만큼 되돌린다 — 화살표가 화면 끝에 더 붙어 보이던 것도 같이 잡힌다. */
  margin-inline-end:3px;
  transform:rotate(45deg) translateY(-3px); transition:transform .25s;
}
.acc details[open] summary::after{transform:rotate(-135deg) translateY(-3px)}
.acc p{padding:0 0 1.15rem; font-size:var(--f-sub); color:var(--muted); line-height:1.75}

.links{display:grid; gap:.6rem}
/* .shead 는 아래 여백이 없고, 뒤따르는 블록이 저마다 margin-top 을 갖는 규약이다.
   .links 만 그 규약에서 빠져 있어 「상담 예약 신청」 버튼 바로 아래에 카드가 붙었다. */
.shead + .links{margin-top:clamp(1.6rem,1.1rem + 1.6vw,2.4rem)}
.links a{
  display:block; padding:1.05rem 1.15rem; text-decoration:none;
  background:var(--soft); border:1px solid var(--line); border-radius:var(--r-card);
  transition:border-color .2s, background .2s;
}
.links a:hover{border-color:var(--accent); background:#fff}
.links b{display:block; color:var(--ink); font-size:var(--f-body); line-height:1.5}
.links span{display:block; margin-top:.25rem; font-size:var(--f-cap); color:var(--muted); line-height:1.6}
.links em{font-style:normal; color:var(--brand); font-weight:600}

.chips{display:flex; flex-wrap:wrap; gap:.5rem}
.chips a{
  display:inline-flex; align-items:center; min-height:44px; padding-inline:1.05rem;
  border:1px solid var(--line); border-radius:var(--r-pill);
  font-size:var(--f-sub); color:var(--brand); text-decoration:none; background:#fff;
}
.chips a:hover{border-color:var(--accent)}

/* ══ 15 visit ═════════════════════════════════════════ */
.visit{padding-bottom:0}
.visit__cards{
  /* align-items:start 를 쓰지 않는다 — grid 기본 stretch 가 3장을 같은 높이로 만든다.
     start 로 두고 자식에 height:100% 를 주면 부모 높이가 auto 라 순환 참조가 되어
     카드가 내용보다 작아지고(실측 169px) .sec{overflow:hidden} 이 내용을 잘라낸다. */
  display:grid; gap:1rem;
  margin-top:clamp(1.9rem, 1.2rem + 2.6vw, 3rem);
  padding-bottom:var(--sec-y);
}
@media (min-width:860px){.visit__cards{grid-template-columns:repeat(3,1fr); gap:1.25rem}}
.vc{
  background:#fff; border:1px solid var(--line); border-radius:var(--r-card);
  padding:clamp(1.35rem, 1rem + 1.4vw, 1.9rem);
  display:flex; flex-direction:column;
}
.vc__k{font-size:var(--f-cap); letter-spacing:.16em; text-transform:uppercase; color:var(--accent); font-weight:600; margin-bottom:.85rem}
.vc__v{color:var(--ink); line-height:1.72}
.vc__sub{margin-top:.6rem; font-size:var(--f-sub); color:var(--muted); line-height:1.6}
.vc__sub b{color:var(--brand)}
/* 노선 배지는 부모의 글자색 규칙(.vc__sub b 등)에 먹히면 안 된다 — 짙은 남색 위에 갈색 글씨가 되어 「1호선」이 안 읽혔다. */
.vc__sub b.line, .vc__ways b.line{color:#fff}
/* 오시는 길 카드의 지하철 안내와 같은 모양으로 — 배지와 역명이 줄바꿈에 갈라지지 않는다 */
.vc__ways{display:grid; gap:.45rem; margin-top:.8rem}
.vc__ways li{display:flex; align-items:center; flex-wrap:wrap; gap:.35rem; font-size:var(--f-sub); color:var(--body-c); line-height:1.6}
.vc__ways li span{color:var(--ink)}
.vc__note{margin-top:.5rem; font-size:var(--f-cap); color:var(--muted); line-height:1.6}
.vc__tel{font-family:var(--serif); font-size:var(--f-h3); font-weight:700}
.vc .txtlink{margin-top:auto}
.vc__tel{margin-top:auto; padding-top:1.1rem}
.vc__tel a{
  display:inline-flex; align-items:center; min-height:44px; color:var(--ink); text-decoration:none;
  border-bottom:1px solid var(--accent);
}
.hours{display:grid; grid-template-columns:auto 1fr; column-gap:1rem; row-gap:.5rem; font-size:var(--f-sub)}
.hours dt{color:var(--muted)}
.hours dd{color:var(--ink); text-align:right}
.hours dd i{font-style:normal; color:var(--muted); font-size:var(--f-cap)}
.vc .btn{margin-top:auto}

.brandcut{margin:0}
/* 우측 정렬 — 원본에서 'AUBE' 워드마크가 오른쪽 끝(93%)까지 간다. 중앙 정렬이면 마지막 글자가 잘린다.
   왼쪽은 빈 벽면이라 잘려도 잃는 것이 없다. */
.brandcut img{
  width:100%; aspect-ratio:21/9; object-fit:cover; object-position:100% 45%;
  /* aspect-ratio 만 주면 높이가 폭에 비례해 끝없이 커진다 — 2000px 화면에서 857px 가 됐다.
     뷰포트 높이 상한을 함께 걸어 「마무리 컷」이 한 화면을 통째로 먹지 않게 한다. */
  max-height:min(46vh, 420px);
}
@media (max-width:600px){.brandcut img{aspect-ratio:16/9}}

/* ══ 헤더 ═════════════════════════════════════════════ */
.hd{
  position:fixed; inset:0 0 auto; z-index:60;
  transition:background .3s, box-shadow .3s, border-color .3s;
  border-bottom:1px solid transparent;
}
.hd__in{
  display:flex; align-items:center; gap:1rem;
  width:100%; max-width:var(--wrap); margin-inline:auto;
  padding:.75rem var(--gut); min-height:64px;
}
.hd__logo{display:flex; align-items:center; min-height:44px}
.hd__logo img{width:132px; height:auto; filter:brightness(0) invert(1); transition:filter .3s}
.hd__nav{display:none}
.hd__cta{display:none}
.hd.solid{background:rgba(255,255,255,.96); border-bottom-color:var(--line); box-shadow:0 2px 20px rgba(64,48,36,.06)}
.hd.solid .hd__logo img{filter:none}
.hd.solid .hd__nav a{color:var(--ink)}
.hd.solid .hd__burger span{background:var(--ink)}

.hd__burger{
  margin-left:auto; width:44px; height:44px; padding:0;
  display:flex; flex-direction:column; justify-content:center; gap:5px; align-items:center;
  background:none; border:0; cursor:pointer;
}
.hd__burger span{display:block; width:22px; height:1.5px; background:#fff; transition:background .3s, transform .3s, opacity .3s}
.hd__burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.hd__burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.hd__burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

@media (min-width:1024px){
  .hd__nav{display:flex; gap:1.6rem; margin-left:auto}
  .hd__nav a{
    display:inline-flex; align-items:center; min-height:44px;
    font-size:var(--f-sub); color:#fff; text-decoration:none; font-weight:500;
  }
  .hd__nav a.is-on{color:#E8D7C6}
  .hd.solid .hd__nav a.is-on{color:var(--accent)}
  .hd__cta{
    display:inline-flex; align-items:center; min-height:44px; padding-inline:1.25rem;
    border:1px solid rgba(255,255,255,.6); border-radius:var(--r-pill);
    font-size:var(--f-sub); color:#fff; text-decoration:none; font-weight:600;
  }
  .hd.solid .hd__cta{border-color:var(--brand); background:var(--brand)}
  .hd__burger{display:none}
}

/* ── 드로어 ─────────────────────────────────────────── */
.dw{
  position:fixed; inset:64px 0 0; z-index:55; background:#fff;
  display:flex; flex-direction:column;
  overflow-y:auto; padding:1.5rem var(--gut) 6rem;
  animation:dwin .28s ease;
}
@keyframes dwin{from{opacity:0; transform:translateY(-10px)}to{opacity:1; transform:none}}
.dw[hidden]{display:none}
/* 세로 flex — 메뉴는 위, 예약 버튼·전화 안내는 아래로 내린다(예전에는 가운데가 뜨고 아래 250px 가 비었다) */
.dw__nav{display:flex; flex-direction:column; gap:.15rem; flex:1; width:100%; max-width:var(--wrap); margin-inline:auto}
.dw__nav > a, .dw__tog{
  display:flex; align-items:center; width:100%; min-height:56px;
  padding:0; background:none; border:0; border-bottom:1px solid var(--line-s);
  font-family:inherit; font-size:var(--f-lead); color:var(--ink); font-weight:600;
  text-decoration:none; text-align:left; cursor:pointer;
}
.dw__sub{display:grid; padding:.35rem 0 .9rem .95rem; border-bottom:1px solid var(--line-s)}
.dw__tog[aria-expanded="false"] + .dw__sub{display:none}
.dw__sub a{
  display:flex; align-items:center; min-height:48px;
  font-size:var(--f-body); color:var(--muted); text-decoration:none;
}
.dw__sub a.is-on{color:var(--accent); font-weight:600}
/* `.dw__nav > a`(0,1,1) 가 `.dw__cta`(0,1,0) 를 이겨서 배경이 none 으로 지워졌었다 —
   모바일 메뉴의 대표 버튼이 테두리만 남은 글자로 보였다. 같은 깊이로 올려 이긴다. */
.dw__nav > a.dw__cta{
  display:flex; align-items:center; justify-content:center; min-height:56px;
  margin-top:auto; padding-top:1.5rem; padding-bottom:0;
  background:none; border:0; border-radius:0;
}
.dw__nav > a.dw__cta > span, .dw__cta{
  display:flex; align-items:center; justify-content:center; width:100%; min-height:56px;
  background:var(--brand); color:#fff; border:0; border-radius:var(--r-pill);
  font-size:var(--f-body); font-weight:600; text-decoration:none;
}
body.is-locked{overflow:hidden}

/* ══ 푸터 ═════════════════════════════════════════════ */
.ft{background:var(--dark); color:#BCA894; padding-block:clamp(2.75rem,1.8rem + 4vw,4rem)}
.ft__logo{width:150px; filter:brightness(0) invert(1); opacity:.85}
.ft__cols{display:grid; gap:1.6rem; margin-top:1.9rem}
@media (min-width:760px){.ft__cols{grid-template-columns:1.2fr 1fr; gap:2.5rem}}
.ft__k{font-size:var(--f-cap); letter-spacing:.16em; text-transform:uppercase; color:#C9B49F; margin-bottom:.6rem}
.ft__v{font-size:var(--f-sub); line-height:1.8}
.ft__nav{display:flex; flex-wrap:wrap; gap:1.4rem; margin-top:1.9rem; padding-top:1.5rem; border-top:1px solid rgba(255,255,255,.12)}
.ft__nav a{display:inline-flex; align-items:center; min-height:44px; font-size:var(--f-sub); color:#C9B49F; text-decoration:none}
.ft__cr{margin-top:.4rem; font-size:var(--f-cap); color:#8E7B69}

/* ══ 하단 고정 CTA ════════════════════════════════════ */
.fixcta{
  position:fixed; inset:auto 0 0; z-index:70;
  display:grid; grid-template-columns:repeat(4,1fr);
  background:rgba(255,255,255,.97); border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.fixcta__a{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  min-height:66px; text-decoration:none; color:var(--body-c);
  font-size:var(--f-cap); border-right:1px solid var(--line-s);
}
.fixcta__a:last-child{border-right:0}
.fixcta__a .ico{width:22px; height:22px; stroke:var(--brand)}
.fixcta__a--on{background:var(--brand); color:#fff}
.fixcta__a--on .ico{stroke:#fff}

/* 데스크톱에서는 가로 전체를 먹지 않는다 — 우측 세로 스택.
   대상 사이트도 데스크톱에서 우측 세로 플로팅을 쓴다(관습이라 그대로 빌린다). */
@media (min-width:1024px){
  .fixcta{
    inset:50% 20px auto auto; transform:translateY(-50%);
    grid-template-columns:1fr; width:88px;
    border:1px solid var(--line); border-radius:var(--r-card);
    box-shadow:0 10px 34px rgba(64,48,36,.12); overflow:hidden;
  }
  .fixcta__a{min-height:80px; border-right:0; border-bottom:1px solid var(--line-s)}
  .fixcta__a:last-child{border-bottom:0}
  body{padding-bottom:0}
}

/* ══ 검수용 배지 — body.no-review 로 한 번에 끈다 ═════ */
/* 검수용 배지는 사진 위에 얹지 않는다 — 얹으면 정작 그 사진을 검수할 수 없다.
   흐름 안에 넣어 아래로 밀어낸다(배포 전 body.no-review 로 끈다). */
[data-request]::after{
  content:"요청 " attr(data-request);
  display:block; margin-top:.7rem;
  padding:.65rem .85rem; font-size:13px; line-height:1.55; text-align:left;
  background:#FFE8A3; color:#4A3A16; font-weight:600;
  border-left:3px solid #E0B93F;
}
/* 개발 예정 배지 — 예전에는 요소 위에 떠 있는 말풍선(absolute)이었는데,
   블로그 목록처럼 배지가 여럿이면 서로와 탭·검색창을 덮어 화면이 깨진 것처럼 보였다(실제로 그랬다).
   요청 배지(data-request)와 같이 흐름 안의 블록으로 내린다 — 아무것도 덮지 않는다. */
[data-dev]{position:relative}
[data-dev]::after{
  content:"개발 예정 " attr(data-dev);
  display:block; margin-top:.7rem; flex:0 0 100%;   /* .search 는 flex — 한 줄을 통째로 차지하게 */
  padding:.6rem .8rem; font-size:13px; line-height:1.55; text-align:left;
  background:#D9E7F8; color:#123055; font-weight:600;
  border-left:3px solid #6E9BD0;
}
.search[data-dev]{flex-wrap:wrap}
body.no-review [data-request]::after,
body.no-review [data-dev]::after{display:none}


/* ══ SVG 안의 글자 — viewBox 스케일을 타므로 폭마다 다시 잡는다 ═══
   G4(타이포 ≥13px)는 HTML 텍스트만 센다. SVG 라벨은 그 검사를 그냥 통과하는데,
   375 에서 실제로 6~11px 로 찍혀 읽을 수가 없었다. 화면 px 로 환산해 잡는다. */
.nmj-t{font-size:32px}          /* viewBox 800 · 375 에서 폭 339 → 스케일 .42 → 13.6px */
.dia-t{font-size:13px}          /* 375 에서 화면 12.8px 로 찍혀 하한 미달이었다 → 13.9px */
.lyt,.pint{font-size:17px}      /* viewBox 420 · 폭 339 → 스케일 .81 → 13.7px */
.pt text{font-size:17px}
@media (min-width:760px){
  .nmj-t{font-size:16px}
  .dia-t{font-size:9px}
  .lyt{font-size:14px}
  .pint{font-size:13px}
  .pt text{font-size:15px}
}


/* ══════════════════════════════════════════════════════════════════
   사이트 전체 모드 추가 컴포넌트 — 2026-09-08
   위 규칙(newpc-3 필러&보톡스 기준본)은 손대지 않고 아래에 덧붙인다.
   박스 규격은 여전히 2종(--r-card · --r-pill). 액센트는 하나.
   ══════════════════════════════════════════════════════════════════ */

/* ── 접근성 skip ─────────────────────────────────────── */
.skip{position:absolute; left:-999px; top:8px; z-index:100; padding:.6rem 1rem; background:var(--brand); color:#fff; border-radius:var(--r-card)}
.skip:focus{left:8px}

/* ── 헤더 드롭다운(데스크톱) · 정적 헤더 ────────────── */
.hd__grp{position:relative}
.hd__sub{
  display:none; position:absolute; left:50%; top:100%; transform:translateX(-50%);
  min-width:190px; padding:.55rem 0; background:rgba(255,255,255,.98);
  border:1px solid var(--line); border-radius:var(--r-card); box-shadow:0 12px 34px rgba(64,48,36,.12);
}
.hd__sub a{
  display:flex; align-items:center; min-height:44px; padding:0 1.1rem;
  font-size:var(--f-sub); color:var(--body-c) !important; text-decoration:none; white-space:nowrap;
}
.hd__sub a:hover, .hd__sub a.is-on{color:var(--accent) !important; background:var(--soft)}
@media (min-width:1024px){
  .hd__grp:hover .hd__sub, .hd__grp.is-open .hd__sub{display:block}
  .hd__grp::after{content:""; position:absolute; left:0; right:0; top:100%; height:14px}  /* 호버 이음 */
  .hd__nav a[data-grp].is-on{color:#E8D7C6}
  .hd.solid .hd__nav a[data-grp].is-on{color:var(--accent)}
}
/* 사진 히어로가 없는 페이지(목록·예약·문서)는 처음부터 고체 헤더 */
/* 밝은 히어로(.phero--light) 위에서도 흰 로고·흰 메뉴는 안 읽힌다 — 같은 규칙을 :has 로 건다 */
body.hd-static .hd, body:has(.phero--light) .hd{background:rgba(255,255,255,.96); border-bottom-color:var(--line)}
body.hd-static .hd__logo img, body:has(.phero--light) .hd__logo img{filter:none}
body.hd-static .hd__nav a, body:has(.phero--light) .hd__nav a{color:var(--ink)}
body.hd-static .hd__burger span, body:has(.phero--light) .hd__burger span{background:var(--ink)}
body.hd-static .hd__cta, body:has(.phero--light) .hd__cta{border-color:var(--brand); background:var(--brand)}
body:has(.phero--light) .hd__nav a[data-grp].is-on{color:var(--accent)}
.dw__tel{margin-top:1.1rem; font-size:var(--f-cap); color:var(--muted); line-height:1.6}
.dw__tel a{color:var(--brand); font-weight:600}
.dw__tog.is-on{color:var(--accent)}

/* ── 서브페이지 히어로 .phero — 풀블리드 사진 + 라벨 + 제목 + 리드 (레퍼 807px 관습) ──
   텍스트는 하단에 잡는다(크롭을 견딘다). 사진은 페이지마다, 그늘 방향은 폭마다. */
.phero{position:relative; min-height:clamp(400px, 56vh, 560px); display:flex; align-items:stretch; background:var(--sand); overflow:hidden}
.phero__bg{position:absolute; inset:0; margin:0}
/* 크롭 위치는 변수로 받는다 — 페이지 CSS 가 `object-position` 을 직접 쓰면
   이 규칙(.phero__bg img = 0,1,1)이 클래스 하나(0,1,0)를 이겨 **전 페이지 크롭이 죽는다**.
   실제로 8개 페이지가 전부 기본값으로 렌더되고 있었다(오시는 길은 로고월이 프레임 밖으로 밀려났다).
   페이지에서는 `--phero-pos: 76% 46%` 처럼 변수만 준다. */
.phero__bg img, .phero__bg video{width:100%; height:100%; object-fit:cover; object-position:var(--phero-pos, 50% 35%)}
/* 레이어는 히어로 전체 높이를 덮는다 — flex 아이템으로 아래쪽에만 두면 그늘이 시작되는 자리에
   사진을 가로지르는 경계선이 생기고, 그 위(헤더 자리)에서는 흰 로고·흰 메뉴가 밝은 사진에 묻힌다.
   내용은 안에서 아래로 민다(justify-content). */
.phero__layer{
  position:relative; z-index:1; width:100%; flex:1;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding-top:7rem; padding-bottom:clamp(2.2rem,1.4rem + 3vw,3.6rem);
  background:linear-gradient(180deg, rgba(38,29,23,.30) 0%, rgba(38,29,23,.22) 40%, rgba(38,29,23,.78) 100%);
}
@media (min-width:760px){
  .phero__layer{background:linear-gradient(180deg, rgba(38,29,23,.45) 0%, rgba(38,29,23,0) 30%), linear-gradient(90deg, rgba(38,29,23,.80) 0%, rgba(38,29,23,.62) 36%, rgba(38,29,23,.18) 62%, rgba(38,29,23,0) 78%)}
}
.phero__h{font-size:var(--f-h1); color:#fff; letter-spacing:-.035em}
.phero__lead{margin-top:.9rem; color:#F3E9E0; font-size:var(--f-lead); line-height:1.65; max-width:36ch; text-shadow:0 1px 12px rgba(30,22,16,.35)}
.phero__facts{margin-top:1.1rem; font-size:var(--f-cap); letter-spacing:.04em; color:#E3D6C8; text-shadow:0 1px 10px rgba(30,22,16,.35)}
.phero--light .phero__facts{color:var(--muted); text-shadow:none}
.phero__crumb{margin-bottom:.55rem; font-size:var(--f-cap); color:#DCCBBB; letter-spacing:.02em}
/* 빵부스러기 링크는 글자가 13px 라 손가락으로는 16px 높이밖에 안 된다.
   레이아웃은 그대로 두고 위아래 패딩만큼 음수 마진을 줘 손가락 영역만 44px 로 넓힌다. */
.phero__crumb a, .tband__crumb a{display:inline-block; padding-block:.85rem; margin-block:-.85rem}
.phero__crumb a{color:inherit; text-decoration:none}
/* 밝은 히어로 변형 — 실사진이 밝고 텍스트를 어두운 글자로 얹을 때 */
.phero--light .phero__layer{background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(248,245,241,.85) 100%)}
@media (min-width:760px){.phero--light .phero__layer{background:linear-gradient(90deg, rgba(248,245,241,.94) 0%, rgba(248,245,241,.80) 40%, rgba(248,245,241,.1) 70%, rgba(248,245,241,0) 85%)}}
.phero--light .phero__h{color:var(--ink)} .phero--light .phero__lead{color:var(--body-c); text-shadow:none} .phero--light .phero__crumb{color:var(--muted)}
.phero--light + * .hd{}

/* ── 타이틀 밴드 .tband — 목록·예약·문서 페이지(사진 없음 · 레퍼 588px 관습) ── */
.tband{position:relative; padding:calc(64px + clamp(2.4rem,1.6rem + 3vw,3.6rem)) 0 clamp(2rem,1.4rem + 2.4vw,3rem); background:var(--soft); overflow:hidden; border-bottom:1px solid var(--line-s)}
.tband .wrap{position:relative; z-index:1}
.tband__h{font-size:var(--f-h2); color:var(--ink)}
.tband__lead{margin-top:.6rem; color:var(--muted); font-size:var(--f-body); max-width:48ch}
.tband .sec-bigtype{top:.15em; color:#EFE6DC; opacity:.9}
.tband__crumb{font-size:var(--f-cap); color:var(--muted); margin-bottom:.6rem}
.tband__crumb a{color:inherit; text-decoration:none}

/* ── 서브 내비(형제 페이지 탭) ─────────────────────── */
.subnav{display:flex; gap:.4rem; overflow-x:auto; padding:.7rem 0; border-bottom:1px solid var(--line-s); scrollbar-width:none}
.subnav::-webkit-scrollbar{display:none}
/* 옆으로 밀 수 있다는 걸 알려준다 — 스크롤바를 숨겨 놨더니 「블로그·리얼모델」처럼
   뒤쪽 탭이 화면 밖에 있을 때 그게 있는 줄 모른다(지적). 오른쪽 끝을 흐리게 덮어 「더 있다」를 보인다. */
.cm-subnav .wrap{position:relative}
.cm-subnav .wrap::after{
  content:""; position:absolute; top:0; right:0; width:2.4rem; height:100%;
  pointer-events:none; opacity:0; transition:opacity .2s;
  background:linear-gradient(90deg, rgba(255,255,255,0), #fff 72%);
}
.cm-subnav .wrap:has(.subnav[data-more="1"])::after{opacity:1}
.subnav{scroll-behavior:smooth; scroll-padding-inline:1rem}
.subnav a{flex:0 0 auto; display:inline-flex; align-items:center; min-height:44px; padding:0 1rem; border-radius:var(--r-pill); font-size:var(--f-sub); color:var(--body-c); text-decoration:none; border:1px solid transparent}
.subnav a.is-on{color:var(--brand); border-color:var(--accent); background:#fff; font-weight:600}

/* ── 공통 꼬리 ───────────────────────────────────────── */
.tail{position:relative; overflow:hidden}
.chan{background:var(--soft); padding-block:clamp(2rem,1.3rem + 2.6vw,3rem); border-top:1px solid var(--line-s)}
.chan__list{display:grid; gap:.75rem}
@media (min-width:700px){.chan__list{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1024px){.chan__list{grid-template-columns:repeat(4,1fr); gap:1rem}}
.chan__list a{
  display:grid; grid-template-columns:auto 1fr; column-gap:.9rem; align-items:center;
  padding:1.05rem 1.15rem; min-height:64px; background:#fff; border:1px solid var(--line); border-radius:var(--r-card);
  text-decoration:none; transition:border-color .2s, transform .2s;
}
.chan__list a:hover{border-color:var(--accent); transform:translateY(-2px)}
.chan__list a .ico{grid-row:span 2}
/* 네 카드 높이를 맞춘다 — 전화 카드만 글이 길어 혼자 컸다(지적). 제목 글자 크기도 통일. */
.chan__list{align-items:stretch}
.chan__list li{display:grid}          /* <li> 가 그리드 칸, 그 안의 <a> 가 칸 높이를 채우게 */
.chan__list a{align-content:center; height:100%}
.chan__list b{color:var(--ink); font-size:var(--f-body); line-height:1.4}
.chan__list b .chan__tel{display:inline; font-size:inherit; font-weight:700; letter-spacing:.01em; margin:0; color:inherit}
.chan__list span{display:block; font-size:var(--f-cap); color:var(--muted); line-height:1.55; margin-top:.15rem}
.chan__list a.is-on{background:var(--brand); border-color:var(--brand)}
.chan__list a.is-on b{color:#fff} .chan__list a.is-on span{color:#E8D7C6} .chan__list a.is-on .ico{stroke:#fff}
.visit{background:var(--bg); padding-block:var(--sec-y)}
.visit__cards{padding-bottom:0}
.vc--map{padding:0; overflow:hidden}
.vc--map .vc__k{padding:1.1rem 1.35rem 0}
.map{position:relative; margin-top:.8rem; aspect-ratio:4/3; background:var(--soft); overflow:hidden}
.map iframe{position:absolute; inset:0; width:100%; height:100%; border:0; filter:saturate(.85)}
/* 지도 API 키가 오기 전까지 보이는 안내 카드 — 빈 회색 박스를 남기지 않는다. 지도가 그려지면 가려진다. */
.map__fb{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.9rem;
  padding:1.4rem; text-align:center; background:
    radial-gradient(120% 90% at 50% 0%, #fff 0%, var(--soft) 60%, var(--sand) 100%);}
.map__fb .btn{margin-top:0}
.map__k{font-size:var(--f-sub); color:var(--ink); line-height:1.6}
.map__s{font-size:var(--f-cap); color:var(--muted); line-height:1.6}
/* 네이버 SDK 가 이 요소의 인라인 스타일을 `position:relative; overflow:hidden` 으로 덮어쓴다 —
   그러면 inset:0 이 무력화돼 높이가 0 이 되고, 타일은 내려오는데 화면에는 아무것도 안 보인다(실측).
   폭·높이를 명시해 두면 SDK 가 position 을 바꿔도 부모(.map, aspect-ratio)를 그대로 채운다. */
.map__canvas{position:absolute; inset:0; width:100%; height:100%}
.map.is-live .map__fb{display:none}
/* 지도가 그려진 뒤에도 「Client ID 를 알려주세요」 배지가 전 페이지에 남아 있었다 —
   해결된 요청은 화면에서 접는다(속성은 남겨 REQUEST 목록의 원천으로 쓴다). */
[data-request].is-live::after{display:none}
@media (min-width:860px){.visit__cards{grid-template-columns:1.25fr 1fr 1fr}}
/* 실제 세상의 색 — 지하철 노선 실색 배지 */
.line{display:inline-block; padding:.12em .62em; border-radius:var(--r-pill); color:#fff; font-size:var(--f-cap); font-weight:700; line-height:1.5; vertical-align:middle}
.line--1{background:#0052A4} .line--4{background:#00A5DE} .line--k{background:#77C4A3}
.ft__note{display:block; margin-top:.5rem; font-size:13px; color:#8E7B69}

/* ── 수치 스트립 .stats ───────────────────────────────── */
/* 히어로에 겹쳐 올라타는 카드다 — .sec 의 overflow:hidden 을 물려받으면 올라간 만큼(실측 29px)이 잘려
   숫자가 반으로 썰린다. 이 섹션에는 배경 대형 타이포가 없으므로 클리핑이 필요 없다. */
.stats{position:relative; z-index:2; background:var(--bg); padding-block:0; overflow:visible}
/* 히어로에 올라타는 스트립은 본문 열(1200px)보다 조금 넓게 — 히어로 폭에 가깝게 벌려 앵커처럼 보이게 한다. */
.stats > .wrap{max-width:1360px}
.stats__list{
  display:grid; grid-template-columns:1fr 1fr; gap:0; margin-top:-2.4rem;
  background:#fff; border:1px solid var(--line); border-radius:var(--r-card); box-shadow:0 14px 44px rgba(64,48,36,.09); overflow:hidden;
}
.stats__list li{padding:1.15rem var(--gut); border-bottom:1px solid var(--line-s); border-right:1px solid var(--line-s)}
.stats__list li:nth-child(2n){border-right:0}
.stats__list li:nth-last-child(-n+2){border-bottom:0}
.stats__v{display:block; font-family:var(--serif); font-size:var(--f-h2); font-weight:600; color:var(--ink); line-height:1.15}
.stats__v i{font-style:normal; font-size:.55em; color:var(--accent); margin-left:.15em}
.stats__k{display:block; margin-top:.3rem; font-size:var(--f-cap); color:var(--muted)}
@media (min-width:860px){
  .stats__list{grid-template-columns:repeat(4,1fr); margin-top:-3.2rem}
  .stats__list li{border-bottom:0; border-right:1px solid var(--line-s); padding:1.9rem 2.1rem}
  .stats__list li:last-child{border-right:0}
}

/* ── 분기 카드 .fork — 대표 1 크게 + 나머지 (위계) ──── */
.fork{display:grid; gap:1rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:900px){.fork{grid-template-columns:1.3fr 1fr 1fr; grid-template-rows:auto auto} .fork__c--lead{grid-row:span 2}}
.fork__c{
  position:relative; display:flex; flex-direction:column; min-height:180px; padding:clamp(1.3rem,1rem + 1.4vw,1.9rem);
  background:#fff; border:1px solid var(--line); border-radius:var(--r-card); text-decoration:none; overflow:hidden;
  transition:border-color .2s, transform .2s;
}
.fork__c:hover{border-color:var(--accent); transform:translateY(-3px)}
.fork__c--lead{background:var(--brand); border-color:var(--brand); color:#fff; min-height:320px; justify-content:flex-end}
.fork__c--lead img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.55}
.fork__c--lead .fork__t, .fork__c--lead .fork__d{position:relative; z-index:1; color:#fff}
.fork__c--lead .fork__d{color:#EADCCF}
.fork__c--lead .eyebrow{position:relative; z-index:1; color:#E8D7C6}
.fork__c--soft{background:var(--soft)}
.fork__t{font-size:var(--f-h3); color:var(--ink); line-height:1.4}
.fork__d{margin-top:.45rem; font-size:var(--f-sub); color:var(--muted); line-height:1.6}
.fork__go{margin-top:auto; padding-top:1.1rem; font-size:var(--f-cap); letter-spacing:.14em; text-transform:uppercase; color:var(--accent); font-weight:600}
.fork__c--lead .fork__go{position:relative; z-index:1; color:#E8D7C6}

/* ── 에디토리얼 큰 번호 행 .edit — 좌우 교차 ─────────── */
.edit{display:grid; gap:0; margin-top:clamp(1.5rem,1rem + 2vw,2.5rem); border-top:1px solid var(--line)}
.edit__r{position:relative; display:grid; gap:1rem; padding:clamp(1.4rem,1rem + 1.8vw,2.4rem) 0; border-bottom:1px solid var(--line)}
.edit__n{font-family:var(--serif); font-size:clamp(2.4rem,1.6rem + 3.4vw,4.2rem); font-weight:700; line-height:.9; color:var(--accent); opacity:.85}
.edit__t{font-size:var(--f-h3); color:var(--ink); line-height:1.45}
.edit__d{margin-top:.6rem; font-size:var(--f-body); color:var(--body-c); line-height:1.8; max-width:52ch}
.edit__d b{color:var(--ink)}
.edit__fig{margin:0}
.edit__fig img{width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--r-card)}
/* 제조사 컷아웃(흰 배경 누끼)은 cover 로 자르면 장비가 잘린다 — contain + 흰 바탕 + 선 */
.edit__fig--cut img{object-fit:contain; background:#fff; border:1px solid var(--line); padding:6%}
.edit__fig--cut figcaption{margin-top:.6rem}
/* 세로로 긴 장비 실사진 — 4:3 으로 자르면 본체가 잘린다 */
.edit__fig--tall img{aspect-ratio:4/5}
.edit__fig--tall figcaption{margin-top:.6rem}
@media (min-width:860px){
  .edit__r{grid-template-columns:110px 1fr 1fr; align-items:center; column-gap:2.4rem}
  .edit__r--flip .edit__fig{order:-1} .edit__r--flip .edit__n{order:-2}
  .edit__r--text{grid-template-columns:110px 1fr}
}
.edit__r--lead{background:var(--soft); margin-inline:calc(var(--gut) * -1); padding-inline:var(--gut)}
@media (min-width:1240px){.edit__r--lead{margin-inline:-2rem; padding-inline:2rem; border-radius:var(--r-card)}}

/* ── 시술 카드 그리드 .tx (라인업) — 대표 1 넓게 ───── */
.tx{display:grid; gap:.9rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:640px){.tx{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.tx{grid-template-columns:repeat(4,1fr)} .tx__c--lead{grid-column:span 2; grid-row:span 2}}
.tx__c{position:relative; display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-radius:var(--r-card); overflow:hidden; text-decoration:none; transition:border-color .2s, transform .2s}
.tx__c:hover{border-color:var(--accent); transform:translateY(-3px)}
.tx__c img{width:100%; aspect-ratio:4/3; object-fit:cover}
.tx__c--lead img{aspect-ratio:auto; flex:1; min-height:240px}
.tx__b{padding:1.05rem 1.15rem 1.25rem}
.tx__n{font-family:var(--serif); font-size:var(--f-cap); color:var(--accent); letter-spacing:.1em}
.tx__t{display:block; margin-top:.25rem; color:var(--ink); font-size:var(--f-body); font-weight:700; line-height:1.4}
.tx__c--lead .tx__t{font-size:var(--f-h3)}
.tx__d{display:block; margin-top:.3rem; font-size:var(--f-cap); color:var(--muted); line-height:1.6}

/* ── 무드 밴드(밝은 색면) .band — 메인은 다크를 푸터에만 둔다 ── */
.band{position:relative; min-height:clamp(260px,38vh,400px); display:grid; place-items:center; background:var(--sand); overflow:hidden}
.band__bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 45%; opacity:.9}
.band__layer{position:relative; z-index:1; text-align:center; padding:2.6rem var(--gut); max-width:44ch}
.band__t{font-family:var(--serif); font-weight:700; color:var(--ink); font-size:clamp(1.4rem,1.05rem + 1.8vw,2.3rem); line-height:1.5; letter-spacing:-.02em}
.band__s{margin-top:1rem; font-size:var(--f-cap); letter-spacing:.24em; text-transform:uppercase; color:var(--brand)}
.band--dark{background:var(--dark)} .band--dark .band__bg{opacity:.42} .band--dark .band__t{color:#F7F0E9} .band--dark .band__s{color:#C9B49F}

/* ── lite 유튜브 .yt ─────────────────────────────────── */
.yt{position:relative; aspect-ratio:16/9; background:var(--dark); border-radius:var(--r-card); overflow:hidden}
.yt img{width:100%; height:100%; object-fit:cover; opacity:.85}
.yt button{position:absolute; inset:0; width:100%; height:100%; background:none; border:0; cursor:pointer; display:grid; place-items:center}
.yt button span{display:grid; place-items:center; width:72px; height:72px; border-radius:var(--r-pill); background:rgba(255,255,255,.92); box-shadow:0 10px 30px rgba(0,0,0,.25)}
.yt button svg{width:26px; height:26px; fill:var(--brand); margin-left:4px}
.yt iframe{position:absolute; inset:0; width:100%; height:100%; border:0}
.yt[data-yt=""] button span{opacity:.5}
.yt__cap{margin-top:.8rem; font-size:var(--f-cap); color:var(--muted)}
.ytgrid{display:grid; gap:1.25rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:900px){.ytgrid{grid-template-columns:1.4fr 1fr; align-items:center}}

/* ── 게시판 표 .tbl · 페이징 · 빈 상태 ───────────────── */
.tblwrap{overflow-x:auto; margin-top:1.5rem; border-top:2px solid var(--brand)}
.tbl{width:100%; border-collapse:collapse; min-width:560px; font-size:var(--f-sub)}
.tbl th{padding:.85rem .75rem; font-size:var(--f-cap); color:var(--muted); font-weight:600; letter-spacing:.06em; text-align:left; border-bottom:1px solid var(--line)}
.tbl td{padding:1rem .75rem; border-bottom:1px solid var(--line-s); color:var(--body-c); vertical-align:top}
.tbl td.t{color:var(--ink); font-weight:600}
.tbl td.t a{text-decoration:none; color:inherit; display:flex; align-items:center; min-height:44px}
.tbl td.t a:hover{color:var(--brand)}
.tbl .num,.tbl .date,.tbl .views{white-space:nowrap; color:var(--muted); font-family:var(--serif)}
.tbl .tag{display:inline-block; margin-right:.5rem; padding:.05em .55em; border-radius:var(--r-pill); background:var(--accent-w); color:var(--brand); font-size:var(--f-cap); font-weight:700}
.tbl .sum{display:block; margin-top:.25rem; font-size:var(--f-cap); color:var(--muted); font-weight:400; line-height:1.55}
.pager{display:flex; justify-content:center; gap:.35rem; margin-top:1.6rem}
.pager a, .pager button, .pager span{display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:0 .8rem; border:1px solid var(--line); border-radius:var(--r-card); font-size:var(--f-sub); color:var(--body-c); background:#fff; text-decoration:none; font-family:inherit; cursor:pointer}
.pager .is-on{background:var(--brand); border-color:var(--brand); color:#fff}
.search{display:flex; gap:.5rem; margin-top:1.25rem; max-width:420px}
.search input{flex:1; min-height:48px; padding:0 1rem; border:1px solid var(--line); border-radius:var(--r-card); font:inherit; font-size:var(--f-sub)}
.search button{min-height:48px; padding:0 1.1rem; border:1px solid var(--brand); background:var(--brand); color:#fff; border-radius:var(--r-card); font:inherit; font-size:var(--f-sub); cursor:pointer}
.empty{margin-top:1.5rem; padding:2.4rem 1.5rem; text-align:center; border:1px dashed var(--line); border-radius:var(--r-card); color:var(--muted); font-size:var(--f-sub); line-height:1.7}
.empty b{display:block; color:var(--ink); font-size:var(--f-body); margin-bottom:.35rem}

/* ── 카드 목록 .clist (이벤트·블로그) ────────────────── */
.clist{display:grid; gap:1rem; margin-top:1.5rem}
@media (min-width:640px){.clist{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.clist{grid-template-columns:repeat(3,1fr); gap:1.25rem}}
.clist article{display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-radius:var(--r-card); overflow:hidden}
.clist .thumb{aspect-ratio:16/10; background:var(--sand); display:grid; place-items:center; color:var(--muted); font-size:var(--f-cap); overflow:hidden}
.clist .thumb img{width:100%; height:100%; object-fit:cover}
.clist .cb{padding:1.05rem 1.15rem 1.25rem; display:flex; flex-direction:column; flex:1}
.clist .cb b{color:var(--ink); font-size:var(--f-body); line-height:1.45}
.clist .cb b a{text-decoration:none; color:inherit}
.clist .cb p{margin-top:.45rem; font-size:var(--f-sub); color:var(--muted); line-height:1.6}
.clist .meta{margin-top:auto; padding-top:.9rem; font-size:var(--f-cap); color:var(--muted); font-family:var(--serif)}
.clist .meta .tag{display:inline-block; margin-right:.5rem; padding:.05em .55em; border-radius:var(--r-pill); background:var(--accent-w); color:var(--brand); font-family:var(--sans); font-weight:700}

/* ── 갤러리 .gal + 카테고리 탭 ─────────────────────── */
.tabs{display:flex; gap:.4rem; flex-wrap:wrap; margin-top:1.4rem}
.tabs a, .tabs button{display:inline-flex; align-items:center; min-height:44px; padding:0 1rem; border:1px solid var(--line); border-radius:var(--r-pill); background:#fff; font:inherit; font-size:var(--f-sub); color:var(--body-c); text-decoration:none; cursor:pointer}
.tabs .is-on{background:var(--brand); border-color:var(--brand); color:#fff}
.gal{display:grid; grid-template-columns:repeat(2,1fr); gap:.75rem; margin-top:1.4rem}
@media (min-width:760px){.gal{grid-template-columns:repeat(3,1fr); gap:1rem}}
.gal figure{margin:0; background:#fff; border:1px solid var(--line); border-radius:var(--r-card); overflow:hidden}
.gal img{width:100%; aspect-ratio:1/1; object-fit:cover}
.gal figcaption{padding:.8rem .9rem 1rem; font-size:var(--f-cap); color:var(--muted); line-height:1.55}
.gal figcaption b{display:block; color:var(--ink); font-size:var(--f-sub); margin-bottom:.15rem}
.gal figure.is-lead{grid-column:span 2}
.gal figure.is-lead img{aspect-ratio:16/9}

/* ── 게이트 카드 .lock (로그인 뒤 콘텐츠) ────────────── */
.lock{margin-top:1.5rem; display:grid; gap:1rem; padding:clamp(1.4rem,1rem + 1.6vw,2.2rem); background:var(--soft); border:1px solid var(--line); border-radius:var(--r-card)}
@media (min-width:760px){.lock{grid-template-columns:auto 1fr auto; align-items:center; gap:1.5rem}}
.lock__ico{width:56px; height:56px; border-radius:var(--r-pill); background:#fff; border:1px solid var(--line); display:grid; place-items:center; font-size:1.4rem}
/* 제목만 잡는다 — 예전에는 `.lock b` 가 본문 속 <b> 까지 잡아
   「개인차가 있습니다」가 제목 크기로 혼자 줄바꿈돼 튀어나왔다(지적). */
.lock > div > b{display:block; color:var(--ink); font-size:var(--f-h3); line-height:1.45}
.lock p{margin-top:.45rem; font-size:var(--f-sub); color:var(--muted); line-height:1.7}
.lock p b{color:var(--ink); font-weight:600}
/* 잠금 카드는 「막힌 곳」이 아니라 「이유가 있는 곳」으로 읽혀야 한다 — 액센트 테두리와 자물쇠에 색을 준다 */
.lock{position:relative; overflow:hidden; border-color:var(--accent-w, var(--line)); box-shadow:inset 3px 0 0 var(--accent)}
.lock__ico{background:var(--accent-w, #fff); border-color:var(--accent); color:var(--brand)}
.lock .btn{margin-top:0}

/* ── 폼 .form ────────────────────────────────────────── */
.form{margin-top:1.6rem; display:grid; gap:1.1rem}
.form--card{padding:clamp(1.4rem,1rem + 1.8vw,2.4rem); background:#fff; border:1px solid var(--line); border-radius:var(--r-card)}
.form__row{display:grid; gap:1.1rem}
@media (min-width:700px){.form__row--2{grid-template-columns:1fr 1fr}}
/* 2열 행에서 이웃 칸(연락처)에 힌트가 한 줄 더 있으면 이 칸은 남는 높이를 입력창에 나눠 줘
   이름 입력창만 길어졌다(지적). 행을 위에 붙여 입력창 높이를 고정한다. */
.field{display:grid; gap:.4rem; align-content:start}
.field label{font-size:var(--f-sub); color:var(--ink); font-weight:600}
.field label i{font-style:normal; color:var(--accent); margin-left:.2em}
.field input, .field select, .field textarea{
  width:100%; min-height:50px; padding:.7rem 1rem; border:1px solid var(--line); border-radius:var(--r-card);
  font:inherit; font-size:var(--f-body); color:var(--ink); background:#fff;
}
.field textarea{min-height:140px; resize:vertical; line-height:1.6}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--accent); outline-offset:1px; border-color:var(--accent)}
.field .hint{font-size:var(--f-cap); color:var(--muted)}
.field .err{display:none; font-size:var(--f-cap); color:#A3412D}
.field.is-err .err{display:block} .field.is-err input, .field.is-err textarea{border-color:#A3412D}
.fchips{display:flex; flex-wrap:wrap; gap:.5rem}
.fchips label{display:inline-flex; align-items:center; gap:.45rem; min-height:44px; padding:0 1rem; border:1px solid var(--line); border-radius:var(--r-pill); font-size:var(--f-sub); color:var(--body-c); cursor:pointer; background:#fff; font-weight:500}
.fchips label:has(input:checked){border-color:var(--brand); background:var(--brand); color:#fff}
.fchips input{width:16px; height:16px; margin:0; accent-color:var(--brand)}
.fchips .etc{display:inline-flex; align-items:center; gap:.5rem}
.fchips .etc input[type="text"]{min-height:44px; padding:0 .8rem; border:1px solid var(--line); border-radius:var(--r-pill); font:inherit; font-size:var(--f-sub); width:150px}
.chk{display:flex; align-items:flex-start; gap:.65rem; font-size:var(--f-sub); color:var(--body-c); line-height:1.6; min-height:44px}
.chk input{width:18px; height:18px; margin-top:.2em; accent-color:var(--brand); flex:0 0 auto}
.chk a{color:var(--brand)}
.chk .err{display:none; font-size:var(--f-cap); color:#A3412D; margin-left:.4rem}
.chk.is-err .err{display:inline}
.form__foot{display:grid; gap:.8rem}
.form__foot .btn{margin-top:0; width:100%}
@media (min-width:700px){.form__foot{grid-template-columns:auto 1fr; align-items:center} .form__foot .btn{width:auto; min-width:220px}}
.form__msg{font-size:var(--f-sub); color:var(--brand); min-height:1.4em}
.form.is-sent .form__msg{color:var(--brand); font-weight:600}
.file{display:grid; gap:.4rem}
/* 파일 선택 버튼은 브라우저 기본이 22px 라 손가락으로 누르기 어렵다 — 누를 영역을 44px 로 키운다. */
.file input[type="file"]{
  font-size:var(--f-cap); color:var(--muted);
  min-height:44px; padding:.6rem .8rem; width:100%;
  border:1px dashed var(--line); border-radius:var(--r-card); background:var(--soft);
}
.file input[type="file"]::file-selector-button{
  min-height:32px; margin-right:.7rem; padding:0 .9rem;
  border:1px solid var(--line); border-radius:var(--r-pill); background:#fff;
  font:inherit; font-size:var(--f-cap); color:var(--brand); cursor:pointer;
}

/* ── 타임라인 .tl (연도) ─────────────────────────────── */
.tl{position:relative; margin-top:1.5rem; display:grid; gap:0; border-left:1px solid var(--line); padding-left:1.4rem}
.tl__i{position:relative; padding:0 0 1.5rem}
.tl__i::before{content:""; position:absolute; left:calc(-1.4rem - 5px); top:.55em; width:9px; height:9px; border-radius:var(--r-pill); background:var(--accent); border:2px solid #fff}
.tl__y{font-family:var(--serif); font-weight:700; color:var(--accent); font-size:var(--f-sub); letter-spacing:.06em}
.tl__i b{display:block; color:var(--ink); font-size:var(--f-body); margin-top:.15rem; line-height:1.5}
.tl__i span{display:block; margin-top:.2rem; font-size:var(--f-sub); color:var(--muted); line-height:1.6}
@media (min-width:860px){.tl{grid-template-columns:1fr 1fr; column-gap:2.5rem; border-left:0; padding-left:0} .tl__i{padding-left:1.4rem; border-left:1px solid var(--line)} .tl__i::before{left:-5px}}

/* ── 비교표 .cmp ───────────────────────────────────── */
.cmpwrap{overflow-x:auto; margin-top:1.6rem}
.cmp{width:100%; min-width:600px; border-collapse:separate; border-spacing:0; font-size:var(--f-sub)}
.cmp th{padding:.9rem 1rem; font-size:var(--f-cap); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600; border-bottom:1px solid var(--line); text-align:left}
.cmp th.us{color:#fff; background:var(--brand); border-radius:var(--r-card) var(--r-card) 0 0}
.cmp td{padding:1rem; border-bottom:1px solid var(--line-s); color:var(--body-c); line-height:1.65; vertical-align:top}
.cmp td.k{color:var(--ink); font-weight:700; white-space:nowrap}
.cmp td.us{background:var(--soft); color:var(--ink)}
.cmp tr:last-child td.us{border-radius:0 0 var(--r-card) var(--r-card)}

/* ── 비교표: 「오브의원」 열을 눈에 띄게 ──
   같은 값이 나란히 있을 때 어느 쪽이 우리 이야기인지 한눈에 안 보였다(지적). */
.cmp th.us{position:relative}
.cmp col.us, .cmp .us{--us:1}
.cmp td.us{background:var(--soft); box-shadow:inset 3px 0 0 var(--accent)}
.cmp th.us{box-shadow:inset 3px 0 0 var(--accent-d, var(--accent))}

/* ── 모바일: 표를 옆으로 밀지 않게 카드로 접는다 ──
   가로 스크롤은 「스크롤이 있다」는 걸 알아야 보인다 — 안 밀면 오른쪽 칸을 통째로 못 본다(지적).
   thead 를 숨기고 각 칸이 자기 열 이름(data-th)을 앞에 달면, 행 하나가 카드 하나가 된다. */
@media (max-width:760px){
  .cmpwrap{overflow-x:visible}
  .cmp{min-width:0; display:block; font-size:var(--f-sub)}
  .cmp caption{display:block}
  .cmp thead{position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%)}
  .cmp tbody, .cmp tr, .cmp td{display:block; width:auto}
  .cmp tr{
    margin-top:.9rem; padding:.35rem 1.05rem 1rem;
    background:#fff; border:1px solid var(--line); border-radius:var(--r-card);
  }
  .cmp td{padding:.7rem 0 0; border-bottom:0}
  /* 첫 칸(.k)은 카드 제목 — 열 이름을 달지 않는다 */
  .cmp td.k{
    padding:.85rem 0 .75rem; margin-bottom:.15rem;
    border-bottom:1px solid var(--line); white-space:normal;
    color:var(--ink); font-size:var(--f-body); font-weight:700;
  }
  .cmp td.k::before{display:none}
  .cmp td::before{
    content:attr(data-th); display:block; margin-bottom:.15rem;
    font-size:var(--f-cap); letter-spacing:.06em; color:var(--muted); font-weight:600;
  }
  .cmp td[data-th=""]::before{display:none}
  /* 「오브의원」 칸은 색면으로 확실히 구분 */
  .cmp td.us{
    margin-top:.7rem; padding:.7rem .85rem; border-radius:var(--r-card);
    background:var(--soft); box-shadow:inset 3px 0 0 var(--accent);
  }
  .cmp td.us::before{color:var(--brand)}
  .cmp tr:last-child td.us{border-radius:var(--r-card)}
}

/* ── 문서 페이지 .doc ─────────────────────────────── */
.doc{max-width:76ch; margin-top:1.5rem}
.doc h2{font-size:var(--f-h3); margin-top:2.2rem}
.doc h3{font-size:var(--f-body); margin-top:1.4rem; color:var(--brand)}
.doc p, .doc li{font-size:var(--f-sub); line-height:1.8; color:var(--body-c); margin-top:.6rem}
.doc ol, .doc ul{padding-left:1.2rem} .doc ol li{list-style:decimal} .doc ul li{list-style:disc}
.doc table{width:100%; border-collapse:collapse; margin-top:.8rem; font-size:var(--f-cap)}
.doc th, .doc td{padding:.6rem .7rem; border:1px solid var(--line); text-align:left; vertical-align:top; line-height:1.6}
.doc th{background:var(--soft); color:var(--ink)}

/* ── 원장 신뢰 밴드 .drband (전환·커뮤니티 하단 공통 요소) ── */
.drband{margin-top:var(--sec-y); display:grid; gap:1.25rem; padding:clamp(1.4rem,1rem + 1.8vw,2.4rem); background:var(--soft); border:1px solid var(--line); border-radius:var(--r-card); align-items:center}
@media (min-width:760px){.drband{grid-template-columns:120px 1fr auto}}
.drband img{width:120px; height:120px; object-fit:cover; object-position:50% 15%; border-radius:var(--r-pill); background:#fff}
.drband b{display:block; color:var(--ink); font-size:var(--f-h3); line-height:1.45}
.drband p{margin-top:.35rem; font-size:var(--f-sub); color:var(--muted); line-height:1.65}
.drband .btn{margin-top:0}

/* ── 전후 슬라이더 .ba ─────────────────────────────── */
.ba{position:relative; aspect-ratio:4/3; border-radius:var(--r-card); overflow:hidden; background:var(--sand); touch-action:none; user-select:none; cursor:ew-resize}
.ba img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.ba__after{position:absolute; inset:0; width:50%; overflow:hidden}
.ba__after img{width:100%; height:100%; object-fit:cover}
.ba__handle{position:absolute; top:0; bottom:0; left:50%; width:2px; background:#fff; transform:translateX(-1px)}
.ba__handle::after{content:"⇔"; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:44px; height:44px; border-radius:var(--r-pill); background:#fff; color:var(--brand); display:grid; place-items:center; font-weight:700; box-shadow:0 4px 16px rgba(0,0,0,.2)}

/* ── 메인 영상 히어로 .vhero — 16:9 영상(PC) · 모바일은 같은 스틸의 4:5 poster ── */
.vhero{position:relative; min-height:clamp(660px, 100svh, 820px); display:flex; align-items:stretch; background:var(--sand); overflow:hidden}   /* 모바일: 텍스트 블록이 머리(55% 지점) 위에서 끝나야 한다 */
@media (min-width:760px){.vhero{min-height:clamp(560px, 86vh, 820px)}}
.vhero__bg{position:absolute; inset:0; margin:0}
.vhero__v{display:none; width:100%; height:100%; object-fit:cover; object-position:50% 40%}
/* 모바일 3:4 스틸은 머리가 프레임 55% 지점에서 시작한다(프롬프트로 그렇게 잡았다) — 텍스트는 위, 인물은 아래 */
.vhero__p{display:block; width:100%; height:100%; object-fit:cover; object-position:50% 100%}
@media (min-width:760px){.vhero__v{display:block} .vhero__p{display:none}}
@media (prefers-reduced-motion:reduce){.vhero__v{display:none} .vhero__p{display:block}}
/* 모바일: 텍스트는 위(빈 배경천 구간), 인물은 아래 — 세로 스틸의 머리가 40% 지점에서 시작하므로 그 위 구간에 텍스트를 둔다.
   그늘은 위에서 아래로. 데스크톱: 텍스트 좌하단, 그늘은 좌→우 + 상단 띠(헤더 가독성). */
.vhero__layer{
  position:relative; z-index:1; width:100%; flex:1;
  display:flex; flex-direction:column; justify-content:flex-start;      /* 모바일 = 텍스트 위 */
  padding-top:6.25rem; padding-bottom:clamp(3rem,2rem + 4vw,5rem);
  background:linear-gradient(180deg, rgba(38,29,23,.62) 0%, rgba(38,29,23,.50) 42%, rgba(38,29,23,.16) 70%, rgba(38,29,23,0) 100%);
}
@media (min-width:760px){
  .vhero__layer{
    justify-content:flex-end;                                            /* 데스크톱 = 텍스트 아래 */
    padding-top:8rem;
    background:linear-gradient(180deg, rgba(38,29,23,.55) 0%, rgba(38,29,23,0) 26%), linear-gradient(90deg, rgba(38,29,23,.78) 0%, rgba(38,29,23,.58) 34%, rgba(38,29,23,.14) 60%, rgba(38,29,23,0) 78%);
  }
}
.vhero__h{font-size:clamp(2.25rem, 1.6rem + 3vw, 4.4rem); color:#fff; letter-spacing:-.035em; line-height:1.18; max-width:14ch}
/* 강조어는 색으로만 준다 — 한글 헤드라인 한 줄 안에서 세리프와 산세리프를 섞으면 두 글자만 다른 서체로 튄다. */
.vhero__h em{font-style:normal; color:#E8D7C6; font-weight:700}
.vhero__lead{margin-top:1.1rem; color:#F3E9E0; font-size:var(--f-lead); line-height:1.7; max-width:38ch; text-shadow:0 1px 12px rgba(30,22,16,.35)}
.vhero__cta{display:flex; flex-wrap:wrap; gap:.6rem; margin-top:1.6rem}
.vhero__cta .btn{margin-top:0}
.vhero__cta .btn--ghost{border:1px solid rgba(255,255,255,.7); color:#fff}
.vhero__cta .btn--ghost:hover{background:#fff; color:var(--brand)}
.vhero__word{position:absolute; right:-.03em; bottom:-.12em; z-index:0; pointer-events:none; font-family:var(--display); font-weight:600; font-size:clamp(5rem,2rem + 18vw,17rem); line-height:.8; color:rgba(255,255,255,.10); letter-spacing:.02em}
.vhero__scroll{position:absolute; right:var(--gut); bottom:1.4rem; z-index:2; display:none; align-items:center; gap:.6rem; color:#E8D7C6; font-size:var(--f-cap); letter-spacing:.2em; text-transform:uppercase}
.vhero__scroll i{display:block; width:1px; height:40px; background:linear-gradient(#E8D7C6, transparent)}
@media (min-width:760px){.vhero__scroll{display:flex}}

/* ── 리뷰·소식 미리보기 .news (메인) ────────────────── */
.news{display:grid; gap:1rem; margin-top:clamp(1.9rem,1.2rem + 2.6vw,3rem)}
@media (min-width:860px){.news{grid-template-columns:1fr 1fr; gap:1.25rem}}
.news__col{padding:clamp(1.3rem,1rem + 1.4vw,1.9rem); background:#fff; border:1px solid var(--line); border-radius:var(--r-card)}
.news__col h3{display:flex; justify-content:space-between; align-items:baseline; font-size:var(--f-h3)}
.news__col h3 a{display:inline-flex; align-items:center; min-height:44px; padding-left:.6rem; font-size:var(--f-cap); color:var(--accent); text-decoration:none; letter-spacing:.14em; text-transform:uppercase; font-weight:600}
.news__list{margin-top:.9rem; display:grid}
.news__list li{display:grid; grid-template-columns:1fr auto; gap:1rem; align-items:baseline; padding:.7rem 0; border-top:1px solid var(--line-s)}
.news__list a{color:var(--ink); text-decoration:none; font-size:var(--f-sub); line-height:1.55; display:flex; align-items:center; min-height:44px}
.news__list time{font-family:var(--serif); font-size:var(--f-cap); color:var(--muted); white-space:nowrap}
