/* 0722 사용자 확정: prefers-reduced-motion 대응 제거 — 감소 모드 폰에서 전체 정지가 "고장"으로 읽힘(포트폴리오와 동일 결정, verdict-log 0722) */
@font-face{font-family:'Freesentation';font-weight:600;font-display:swap;
  src:url('https://cdn.jsdelivr.net/gh/projectnoonnu/2404@1.0/Freesentation-6SemiBold.woff2') format('woff2')}
@font-face{font-family:'Freesentation';font-weight:700;font-display:swap;
  src:url('https://cdn.jsdelivr.net/gh/projectnoonnu/2404@1.0/Freesentation-7Bold.woff2') format('woff2')}

:root{
  /* coal/card는 void 대비 1.06:1·1.15:1이라 8페이지에 깔아둔 밴드 교차가 눈에 안 보였다.
     실측 후 1.35:1·1.55:1로 상향 — hue 비율 유지, void는 고정(사진 밴드가 최심부에 얹히게). */
  --void:#0E0C0A; --coal:#26211C; --card:#312B25;
  --ivory:#EFE9E0; --mist:#B3A99B;
  --bronze:#C29A63; --bronze-deep:#B08D57; --champagne:#E4C89A; --cognac:#8F5B34;
  --gold-hi:#F0DDB8; /* 0722: .metal 그라디언트 최명부 — 하드코딩 승격(색테마 회전 대상) */
  --btn-ink:#1A130B;
  --hairline:rgba(194,154,99,.18);
  --hairline-2:rgba(194,154,99,.30);
  --disp-kr:'Freesentation','Pretendard Variable',Pretendard,sans-serif;
  --disp-en:'Archivo','Pretendard Variable',Pretendard,sans-serif;
  --body:'Pretendard Variable',Pretendard,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --wrap:1200px;
  /* 카피 조판 폭 — 한국 프리미엄 사이트 9곳 실렌더 실측(아난티·아모레·네이버·설화수·카카오
     ·신라·조선·삼성·토스, 1440/390 양쪽)에서 카피 컨테이너 중앙값 ≈22.8 한글자.
     1 한글자 ≈ 1.45ch(Pretendard) → 35ch. ch는 폰트 크기에 비례하므로 데스크(17px)든
     모바일(15px)든 한 줄 글자수가 같다 → 같은 <br>이 양쪽에서 맞는다(= 레퍼가 반응형
     <br> 클래스를 안 쓰는 이유). 근거 전문: design/kr-linebreak-rules.md */
  --measure:35ch;
  /* 세로 리듬 — 한쪽 면 기준(이음매 = 앞.padding-bottom + 뒤.padding-top).
     기준은 vh: 이 사이트는 원래 .sec가 13vh였다(뷰포트 높이에 비례). 그 관례를 유지한다.
     ※ --sp 는 스크롤 진행도로 이미 점유돼 있어 이름을 --rh-*로 쓴다. */
  --rh-tight:clamp(44px,7vh,80px);     /* 같은 장 안 */
  --rh-base:clamp(84px,13vh,150px);    /* 장 경계 = 기본 박자 (기존값 그대로) */
  /* ※ 시안2엔 있는 --sp-loud(장 경계 폭발)가 여기엔 없다. 필요 없어서다 —
     이 사이트는 장 경계가 전부 밴드로 표시돼 있어 여백이 그 일을 대신할 이유가 없다.
     안 쓸 토큰을 두면 죽은 CSS가 된다. 밴드 없는 경계가 새로 생기면 그때 만들 것. */
}
/* ── 색 테마(0722) — hue는 레퍼 카드에서·명도/채도는 원본 토큰별 고정(OKLCH L·C 유지, hue만 회전).
   브론즈 패밀리(5토큰+헤어라인)만 회전 — 다크 뉴트럴(void/coal/card)·아이보리·사진은 불변.
   AA: 원본 쌍(champ/void 12.11·bronze/coal 6.15·bronze/card 5.39·btn잉크 7.09) 대비 ±3% 검증.
   포폴 LiveModal이 data-theme 주입. 사용자 최종 픽 전 후보 상태. */
/* v2(0722 사용자): 유채 회전 4종(copper/olive/mauve/steel) 전부 반려 → 은색 계열만.
   실버 = hue 회전이 아니라 채도 축소(C×0.18~0.30) + 온도 캐스트. L 유지라 AA 그대로.
   titanium(h230·C×0.10)은 silver와 사실상 동일색이라 제외. */
[data-theme="platinum"]{--bronze:#AAA090;--bronze-deep:#9C9283;--champagne:#D3CBBE;--cognac:#716858;--gold-hi:#E5DED4;--hairline:rgba(170,160,144,.18);--hairline-2:rgba(170,160,144,.30)} /* 웜 플래티넘(h80·C×0.30) — 쿨 실버(h250·C×0.18)는 육안 반려(0722) */
/* jade(에메랄드 레퍼)도 반려(0722 최종) — 최종 = Gold/Platinum 2종 */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--void);color:var(--ivory);font-family:var(--body);
  font-size:16px;line-height:1.7;word-break:keep-all;-webkit-font-smoothing:antialiased}
body.lock{overflow:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
:where(a,button,summary,input,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--bronze);outline-offset:3px;border-radius:2px}
.wrap{width:min(var(--wrap),100%);margin:0 auto;padding:0 clamp(20px,4.5vw,56px)}

/* ---- shared type ---- */
.eyebrow{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11.5px;
  letter-spacing:.28em;color:var(--bronze);text-transform:uppercase}
.metal{font-family:var(--disp-en);font-stretch:125%;font-weight:700;letter-spacing:.02em;
  background:linear-gradient(120deg,var(--champagne) 0%,var(--bronze) 30%,var(--gold-hi) 50%,var(--bronze-deep) 64%,var(--cognac) 100%);
  background-size:220% 100%;background-position:0 0;
  -webkit-background-clip:text;background-clip:text;color:transparent}
.sec-h{font-family:var(--disp-kr);font-weight:700;letter-spacing:-.01em;text-wrap:balance;
  font-size:clamp(1.7rem,3.4vw,2.7rem);line-height:1.2;margin-top:20px}
.lede{color:var(--mist);font-size:clamp(15px,1.2vw,17px);max-width:var(--measure);margin-top:22px}
.lede strong{color:var(--ivory);font-weight:500}
/* 카피는 --measure 안에서 <br>로 수동 조판(16~19자/줄, 데스크=모바일 공통).
   산문(FAQ 답변·코치 소개·약관)은 조판하지 않고 흐름에 맡기며, pretty가 마지막 줄
   고아 단어만 막는다. 미지원 브라우저는 무시 → 기존 흐름 그대로. */
main p{text-wrap:pretty}

/* ---- grain ---- */
.grain{position:fixed;inset:0;z-index:70;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---- header ---- */
.hd{position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px clamp(20px,4.5vw,56px);
  transition:background .45s var(--ease),padding .45s var(--ease),border-color .45s var(--ease);
  border-bottom:1px solid transparent}
.hd.solid{background:rgba(14,12,10,.92);backdrop-filter:blur(12px);
  padding-top:14px;padding-bottom:14px;border-bottom-color:var(--hairline)}
.brand{display:flex;align-items:baseline;gap:10px}
.brand .wm{font-family:var(--disp-en);font-stretch:125%;font-weight:700;font-size:19px;
  letter-spacing:.22em;color:var(--ivory)}
.brand .loc{font-size:11px;letter-spacing:.14em;color:var(--bronze)}
/* nav = 스포트라이트 + 브라스 포일. 가리킨 항목만 점등하고 나머지는 어둠으로 후퇴 —
   한 번에 하나만 비추는 것이 이 클럽의 1:1. 밑줄 없음(다른 시안과 겹치지 않게). */
.nav{display:flex;gap:clamp(18px,2.4vw,34px);align-items:center}
.nav a{font-size:13.5px;font-weight:500;letter-spacing:.02em;position:relative;padding:4px 0;
  color:var(--mist); /* text-fill 미지원 시 폴백 */
  background-image:linear-gradient(120deg,var(--champagne) 0%,var(--bronze) 30%,var(--gold-hi) 50%,var(--bronze-deep) 64%,var(--cognac) 100%);
  background-size:220% 100%;background-position:34% 0;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:var(--mist);
  transition:-webkit-text-fill-color .34s var(--ease),opacity .34s var(--ease)}
/* 항목에 실제로 올렸을 때만 딤 — gap에 커서가 놓여도 nav가 통째로 꺼지지 않게.
   :has() 미지원 시 이 두 줄만 무시되고 포일 점등은 그대로 동작. */
.nav:has(a:hover) a,
.nav:has(a:focus-visible) a{opacity:.32}
/* ⚠️ 점등 규칙에도 :has() 문맥 필수 — :has(a:hover)가 인자 특이도를 더해
   딤(0,3,2)이 점등(0,3,1)을 이겨버린다 */
.nav:has(a:hover) a:hover,
.nav:has(a:focus-visible) a:focus-visible{opacity:1}
.nav a:hover,.nav a:focus-visible{-webkit-text-fill-color:transparent;
  animation:navSheen .8s var(--ease) 1 both}
@keyframes navSheen{from{background-position:130% 0}to{background-position:34% 0}}
.hd-cta{font-size:13px;font-weight:600;color:var(--btn-ink);background:var(--bronze);
  padding:10px 20px;letter-spacing:.02em;transition:background .25s}
.hd-cta:hover{background:var(--champagne)}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:8px}
.burger span{width:24px;height:1.5px;background:var(--ivory);transition:.3s var(--ease)}

/* ---- mobile fullscreen menu ---- */
.mmenu{position:fixed;inset:0;z-index:65;background:var(--void);
  display:flex;flex-direction:column;justify-content:center;
  padding:0 clamp(28px,8vw,56px);
  opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility .4s}
.mmenu.open{opacity:1;visibility:visible}
.mmenu .m-close{position:absolute;top:22px;right:clamp(20px,4.5vw,56px);
  background:none;border:0;color:var(--ivory);font-size:26px;cursor:pointer;line-height:1;padding:8px}
.m-link{display:flex;align-items:baseline;gap:14px;padding:14px 0;
  border-bottom:1px solid var(--hairline);
  opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.mmenu.open .m-link{opacity:1;transform:none}
.mmenu.open .m-link:nth-of-type(1){transition-delay:.08s}
.mmenu.open .m-link:nth-of-type(2){transition-delay:.13s}
.mmenu.open .m-link:nth-of-type(3){transition-delay:.18s}
.mmenu.open .m-link:nth-of-type(4){transition-delay:.23s}
.mmenu.open .m-link:nth-of-type(5){transition-delay:.28s}
.mmenu.open .m-link:nth-of-type(6){transition-delay:.33s}
.mmenu.open .m-link:nth-of-type(7){transition-delay:.38s}
.m-link .en{font-family:var(--disp-en);font-stretch:125%;font-weight:600;font-size:12px;
  letter-spacing:.2em;color:var(--bronze);width:46px;flex:none}
.m-link .ko{font-family:var(--disp-kr);font-weight:600;font-size:26px;color:var(--ivory);transition:color .2s}
.m-link:hover .ko,.m-link:focus-visible .ko{color:var(--champagne)}
.m-foot{margin-top:38px;color:var(--mist);font-size:13px;line-height:2}
.m-foot a{color:var(--bronze)}

/* ---- hero ---- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden}
.hero-pic{position:absolute;inset:-8% 0;will-change:transform;transform:translateY(calc(var(--sp,0) * -7%))}
.hero-pic img{width:100%;height:100%;object-fit:cover;object-position:72% center;display:block}
.hero-scrim{position:absolute;inset:0;
  background:
    linear-gradient(90deg,var(--void) 4%,rgba(14,12,10,.78) 30%,rgba(14,12,10,.18) 58%,rgba(14,12,10,0) 74%),
    linear-gradient(0deg,var(--void) 0%,rgba(14,12,10,.42) 14%,rgba(14,12,10,0) 38%),
    linear-gradient(180deg,rgba(14,12,10,.55) 0%,rgba(14,12,10,0) 22%)}
.hero-in{position:relative;z-index:2;width:min(var(--wrap),100%);margin:0 auto;
  padding:0 clamp(20px,4.5vw,56px) clamp(64px,9vh,110px)}
.hero .eyebrow{margin-bottom:22px}
.hero h1{font-family:var(--disp-kr);font-weight:700;
  font-size:clamp(2.35rem,5.6vw,4.4rem);line-height:1.14;letter-spacing:-.01em;
  text-wrap:balance;max-width:15ch}
.hero h1 .metal{animation:sheen 2.4s var(--ease) .7s 1 both}
@keyframes sheen{from{background-position:130% 0}to{background-position:0 0}}
.hero .sub{margin-top:26px;max-width:var(--measure);color:var(--mist);font-size:clamp(15px,1.25vw,17px)}
.hero .sub strong{color:var(--ivory);font-weight:500}
.hero .sub .sub-br{display:none} /* 모바일 전용 줄바꿈 — ≤860 블록에서만 살아난다 */
/* hero load choreography — longer, graceful; headline blur-in */
.hero-in .rv{transition:opacity 1s var(--ease),transform 1s var(--ease),filter 1s var(--ease)}
.hero-in h1.rv{filter:blur(12px)}
.hero-in h1.rv.is-on{filter:none}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:38px}
.btn-main{display:inline-block;background:var(--bronze);color:var(--btn-ink);
  font-weight:600;font-size:15px;padding:16px 30px;letter-spacing:.01em;
  transition:background .25s,transform .25s var(--ease)}
.btn-main:hover{background:var(--champagne);transform:translateY(-2px)}
.btn-ghost{display:inline-block;color:var(--champagne);font-weight:500;font-size:15px;
  padding:15px 28px;border:1px solid var(--hairline);
  transition:border-color .25s,color .25s}
.btn-ghost:hover{border-color:var(--bronze);color:var(--ivory)}
.hero-meta{display:flex;gap:26px;flex-wrap:wrap;margin-top:46px;
  padding-top:20px;border-top:1px solid var(--hairline)}
.hero-meta span{font-size:12.5px;color:var(--mist);letter-spacing:.04em}
.hero-meta b{color:var(--bronze);font-weight:500;margin-right:7px;font-family:var(--disp-en);font-stretch:125%;font-size:11px;letter-spacing:.18em}

/* ---- trust strip ---- */
.trust{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);
  background:var(--coal)}
.trust-in{width:min(var(--wrap),100%);margin:0 auto;padding:0 clamp(20px,4.5vw,56px);
  display:grid;grid-template-columns:repeat(3,1fr)}
.t-cell{padding:34px clamp(16px,2.5vw,40px);position:relative}
.t-cell + .t-cell::before{content:'';position:absolute;left:0;top:26px;bottom:26px;
  width:1px;background:var(--hairline)}
.t-cell .t-num{font-family:var(--disp-en);font-stretch:125%;font-weight:600;
  font-size:11px;letter-spacing:.24em;color:var(--bronze);text-transform:uppercase;margin-bottom:10px}
.t-cell p{font-size:15px;color:var(--ivory);font-weight:500;line-height:1.55}
.t-cell small{display:block;margin-top:4px;font-size:13px;color:var(--mist);font-weight:400}

/* ---- generic section ---- */
.sec{padding:var(--rh-base) 0}
.sec.coal{background:var(--coal)}

/* ===== 여백 리듬 =====
   ★ 이 사이트는 이미 void/coal 밴드 교대가 Δ24(1.35:1)로 경계를 표시한다 — 실측으로 확인함.
     그래서 시안2(SPRING)와 처방이 다르다: 거기선 마커 없는 이음매가 4/11(240px 전부)이었지만
     여기선 2/10뿐이다. **밴드가 표시하는 자리엔 여백을 더 주지 않는다** — 여백은 마커가 없을 때만 커진다.

   유일하게 손대는 곳 = #membership → #faq. 둘 다 void라 밴드 경계가 없는데(실측 죽은공기 234px)
   내용은 "여기 가격 / 궁금하면 여기" = 한 생각이다. 갈라놓을 이유가 없어 조인다.
   #sessions는 club과 한 장(철학→적용)이라 같이 조인다. 거긴 밴드가 있으니 조여도 경계는 안 잃는다.

   ⚠️ 이름이 --rh-*인 이유: 이 사이트의 --sp 는 **스크롤 진행도**다(.hero-pic/.ft-wm-bg가 물고 있음).
      --sp-* 를 쓰면 운영자가 헷갈린다. 단위는 사이트 관례대로 vh(뷰포트 높이) 기준을 유지. */
.ch-cont{padding-top:var(--rh-tight)}
.sec:has(+ .ch-cont){padding-bottom:var(--rh-tight)}

/* ---- about (asymmetric 2col) ---- */
.about-grid{display:grid;grid-template-columns:minmax(0,var(--measure)) 1fr;gap:clamp(40px,5vw,72px);align-items:start}
/* img이 absolute라 .about-fig엔 내재 높이가 없다 — aspect-ratio가 유일한 높이원이다.
   stretch로 옆 텍스트 높이에 묶으면 카피 길이가 비율을 정해버려서, 짧은 절(THE INSTRUMENT)은
   3.3:1 슬릿으로 눌리고 원본이 45%만 남는다. 3/2 = detail.jpg 원본 비율(무크롭). */
.about-fig{position:relative;overflow:hidden;background:var(--card);aspect-ratio:3/2}
.about-fig img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.about-cap{position:absolute;left:0;right:0;bottom:0;margin:0;padding:26px 18px 14px;font-size:12px;color:var(--ivory);letter-spacing:.02em;background:linear-gradient(0deg,rgba(14,12,10,.72),rgba(14,12,10,0))}
/* wayfinding image (visit entrance): contained, modest landscape — never full-bleed */
/* coach assignment: goal → coach matching (echoes the two portraits above; auto-stacks on narrow) */
.match{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(20px,3vw,48px);margin-top:clamp(40px,5vw,60px);border-top:1px solid var(--hairline);padding-top:clamp(34px,4vw,48px)}
.match-col{border-left:2px solid var(--bronze);padding-left:22px}
.match-goal{font-size:12.5px;letter-spacing:.03em;color:var(--bronze)}
.match-coach{font-family:var(--disp-kr);font-weight:700;font-size:clamp(1.3rem,2.3vw,1.85rem);color:var(--ivory);margin-top:12px;letter-spacing:-.01em}
.match-coach em{font-style:normal;font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:.5em;letter-spacing:.06em;color:var(--mist);margin-left:9px}

/* ---- sessions (numbered editorial list, no card deck) ---- */
.slist{margin-top:clamp(36px,5vw,60px);border-top:1px solid var(--hairline)}
.srow{display:grid;grid-template-columns:120px 1fr auto;gap:clamp(20px,4vw,56px);align-items:baseline;
  padding:clamp(28px,3.6vw,44px) 0;border-bottom:1px solid var(--hairline)}
.srow .rn{font-family:var(--disp-en);font-stretch:125%;font-weight:700;font-size:clamp(1.6rem,2.6vw,2.2rem);
  letter-spacing:.02em}
.srow h3{font-family:var(--disp-kr);font-weight:600;font-size:clamp(1.15rem,1.8vw,1.4rem);color:var(--ivory)}
.srow p{color:var(--mist);font-size:15px;margin-top:8px;max-width:var(--measure)}
.srow .tag{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;
  letter-spacing:.16em;color:var(--bronze);white-space:nowrap;text-transform:uppercase}

/* ---- coaches ---- */
.coach-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,56px);margin-top:clamp(40px,5vw,64px)}
/* 0727 pilamin: 강사 1인(N=1) 업체 — 슬롯맵 N-변동 코치 처방. 2열에 카드 1개면 우측 빈칸이라 단일열로 축소·중앙정렬 */
.coach-grid.solo{grid-template-columns:1fr;max-width:420px;margin:0 auto}
.coach{}
.coach-fig{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--card)}
/* hover 스케일 삭제(2026-07-16). 이유 둘 — ①루브릭 AI-tell "이미지 hover 스케일"
   ②1.2s는 hover 피드백으로 그 자체가 나쁘다(손 올리고 1초 넘게 계속 자란다).
   ★리빌(.rv 0.5s / .hero-in .rv 1s)은 남긴다: 등장 애니메이션은 인터랙션 피드백과 다른 물건이고
     다크 럭스의 '느림=고급' 레지스터다. 루브릭 ⑥의 ≤0.35s는 이 둘을 한 통에 넣고 있다(레퍼 Aman도 0.6s). */
.coach-fig img{width:100%;height:100%;object-fit:cover}
.coach .role{margin-top:20px;font-family:var(--disp-en);font-stretch:125%;font-weight:500;
  font-size:11px;letter-spacing:.2em;color:var(--bronze);text-transform:uppercase}
.coach .nm{font-family:var(--disp-kr);font-weight:600;font-size:1.35rem;margin-top:8px}
.coach .nm em{font-style:normal;color:var(--mist);font-size:.85rem;font-weight:400;margin-left:8px}
.coach .bio{color:var(--mist);font-size:14.5px;margin-top:10px;max-width:42ch}

/* ---- space (full-bleed) ---- */
.space-wrap{position:relative;margin-top:clamp(40px,5vw,60px);aspect-ratio:16/8;overflow:hidden;background:var(--card)}
.space-wrap img{width:100%;height:100%;object-fit:cover}
.space-cap{position:absolute;left:0;bottom:0;right:0;padding:clamp(24px,4vw,48px);
  background:linear-gradient(0deg,rgba(14,12,10,.86),rgba(14,12,10,0));
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.space-cap h3{font-family:var(--disp-kr);font-weight:600;font-size:clamp(1.2rem,2vw,1.6rem)}
.space-cap p{color:var(--mist);font-size:14px;max-width:var(--measure);margin-top:6px}

/* ---- membership ---- */
.trial{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
  margin-top:clamp(38px,5vw,58px);padding:clamp(28px,3.5vw,44px) clamp(28px,4vw,52px);
  background:linear-gradient(115deg,var(--card),#241f19);
  border:1px solid var(--hairline-2)}
.trial .tl .k{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;
  letter-spacing:.22em;color:var(--bronze);text-transform:uppercase}
.trial .tl h3{font-family:var(--disp-kr);font-weight:700;font-size:clamp(1.3rem,2.4vw,1.9rem);margin-top:10px}
.trial .tl h3 .amt{color:var(--champagne)}
.trial .tl p{color:var(--mist);font-size:14px;margin-top:8px}
.tiers{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:28px}
.tier{border:1px solid var(--hairline);padding:clamp(26px,3vw,38px);background:var(--void)}
.tier .rn{font-family:var(--disp-en);font-stretch:125%;font-weight:700;font-size:1.8rem}
.tier h4{font-family:var(--disp-kr);font-weight:600;font-size:1.25rem;margin-top:6px}
.tier .desc{color:var(--mist);font-size:14px;margin-top:8px;max-width:var(--measure);padding-bottom:20px;border-bottom:1px solid var(--hairline)}
.plist{list-style:none;margin-top:18px;display:flex;flex-direction:column;gap:12px}
.plist li{display:flex;align-items:baseline;justify-content:space-between;gap:16px;font-size:15px}
.plist .pk{color:var(--mist)}
.plist .pv{font-family:var(--disp-en);font-stretch:125%;font-weight:600;color:var(--ivory);letter-spacing:.01em}
.mnote{color:var(--mist);font-size:13px;margin-top:24px;max-width:var(--measure)}
.mnote a{color:var(--bronze)}

/* ---- reviews ---- */
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:clamp(40px,5vw,60px)}
.qcard{border:1px solid var(--hairline);padding:clamp(26px,2.6vw,36px);background:var(--coal);position:relative}
.qcard .stars{color:var(--bronze);letter-spacing:.16em;font-size:13px}
.qcard blockquote{font-family:var(--disp-kr);font-weight:600;font-size:1.05rem;line-height:1.7;
  color:var(--ivory);margin-top:16px}
.qcard cite{display:block;margin-top:18px;color:var(--mist);font-size:13px;font-style:normal}
.rev-src{margin-top:24px;font-size:13px;color:var(--mist)}
.rev-src b{color:var(--bronze);font-weight:500}
.rev-src a{color:var(--bronze)}

/* ---- location: 2분할(정보 | 지도) ---- */
/* ★열 길이 어긋남의 원인은 정렬이 아니라 "지도가 자기 높이를 제멋대로 정한 것"이었다.
   구 규칙: .loc-grid{align-items:start} + .loc-map{aspect-ratio:4/3}
   → 실측 좌측 정보 321px vs 지도 419px. 지도의 4/3이 좌측과 무관하게 높이를 박아서
     좌측이 137px 먼저 끝났고, 그게 "좌하단이 동떨어져 보인다"의 정체였다.
   이 오진 때문에 지도를 죽이고 구조를 세 번 갈아엎었으나 전부 헛발질이었다(사용자 판정).
   → 고칠 곳은 두 줄뿐: ①지도의 aspect-ratio 제거 → 높이 기여 0(핀이 absolute라 자연높이 없음)
                        ②align-items:stretch → 행 높이는 '좌측 정보'가 결정하고 지도가 거기 맞춘다.
   순서가 중요하다. 반대로(좌측을 지도에 맞춰 늘림) 하면 버튼이 dl과 떨어져 또 뜬다 — 이미 실패한 길. */
.loc-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(36px,5vw,72px);
  margin-top:clamp(40px,5vw,58px);align-items:stretch}
/* 좌측 = 정보 dl / 액션. (구분선은 노선도를 갈라주던 것이라 노선도와 함께 제거됐다) */
.loc-info dl{display:grid;grid-template-columns:88px 1fr;gap:14px 20px;margin-top:6px}
.loc-info dt{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;
  letter-spacing:.16em;color:var(--bronze);text-transform:uppercase;padding-top:3px}
.loc-info dd{font-size:15px;color:var(--ivory);text-wrap:pretty}
.loc-info dd small{display:block;color:var(--mist);font-size:13px;margin-top:2px}
/* 한 값 안에서 줄이 갈리지 않게 — 라벨을 줄여도 더 좁은 기기는 언젠가 넘친다.
   그때 요일 구분자(·) 앞뒤로 갈려야지, 시간이 반토막 나면 안 된다. */
.loc-info dd .nb{white-space:nowrap}
.loc-btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
/* 0722: 모바일서 4버튼이 3+1로 어정쩡하게 줄바꿈 → 2×2 균등 그리드로 정돈(사용자 지적) */
@media(max-width:640px){.loc-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}.loc-btns a{text-align:center}}
.loc-btns a{font-size:13.5px;font-weight:500;color:var(--ivory);border:1px solid var(--hairline);
  padding:11px 18px;transition:border-color .25s,color .25s}
.loc-btns a:hover{border-color:var(--bronze);color:var(--champagne)}
/* 지도 — 구글맵 키리스 embed. 시안1(kyeol) .mapbox와 같은 패턴을 다크루체 톤으로 가져왔다.
   ⚠️구 .loc-map(격자배경 + 정중앙 고정 점)은 되살리지 말 것: 점 위치가 실제 좌표와 무관한데
     aria-label은 "위치 약도"라 주장했다 = placeholder 금지 위반 + 반증가능한 거짓.
   q= 는 사이트가 말하는 주소 그대로다 → 납품 시 주소 한 줄만 바꾸면 지도가 따라온다.
   height:100%가 아니라 absolute로 채운다: iframe에 %높이를 주면 stretch된 행에서 0으로 붕괴한다. */
.loc-map{border:1px solid var(--hairline);overflow:hidden;position:relative;background:var(--coal)}
/* 다크 리스킨 — 구글맵 기본 베이스맵은 흰색이라 그대로 두면 페이지에서 혼자 튄다.
   invert+hue-rotate(180)이 명도만 뒤집고 색상은 되돌리는 고전 수법.
   ★grayscale은 쓰지 말 것: 지도에서 제일 중요한 핀까지 회색 덩어리로 죽인다(실측 비교).
     saturate로 눌러야 POI 아이콘이 브론즈-앰버로 떨어져 액센트와 맞물린다. */
.loc-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
  filter:invert(1) hue-rotate(180deg) saturate(.5) contrast(1.02) brightness(.74)}
/* ---- contact page: direct-contact rail + inquiry form + follow strip ---- */
.contact-grid{display:grid;grid-template-columns:1fr;gap:clamp(36px,5vw,80px); /* 0720 폼 폐기 — 레일 단독 */
  align-items:stretch;margin-top:clamp(40px,5vw,64px)}

/* left rail — direct contact (fills form height: channels top, info anchored bottom) */
.contact-rail{display:flex;flex-direction:column}
/* 폼이 있던 폭을 레일이 받는다: 전화 카드 / 채널 2개 / 운영·위치를 가로 3열로 편다 (0720) */
@media (min-width:901px){
  .contact-rail{
    display:grid;grid-template-columns:1.1fr 1fr 1.1fr;gap:0 clamp(32px,4vw,64px);
    align-items:start;
  }
  .contact-rail .rail-lbl{grid-column:1/-1}
  .contact-rail .rail-call{border-bottom:0;padding-bottom:0}
  .contact-rail .rail-chs{display:flex;flex-direction:column}
  .contact-rail .rail-ch{padding:0 0 26px}
  .contact-rail .rail-ch:last-child{padding-bottom:0}
  .contact-rail .rail-info{padding-top:0}
}
.rail-lbl{font-family:var(--disp-en);font-stretch:125%;font-weight:600;font-size:11px;
  letter-spacing:.2em;text-transform:uppercase;color:var(--bronze);margin-bottom:clamp(20px,2.4vw,28px)}
.rail-call{display:block;padding-bottom:36px;border-bottom:1px solid var(--hairline)}
.rail-call .rc-k{display:block;font-size:12.5px;color:var(--mist);letter-spacing:.02em}
.rail-call .rc-num{display:block;font-family:var(--disp-en);font-stretch:125%;font-weight:700;
  font-size:clamp(1.5rem,2.7vw,2.05rem);color:var(--ivory);margin-top:9px;letter-spacing:.01em;transition:color .25s}
.rail-call .rc-s{display:block;font-size:12.5px;color:var(--mist);margin-top:9px}
.rail-call:hover .rc-num{color:var(--champagne)}
.rail-ch{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:32px 0;
  border-bottom:1px solid var(--hairline);color:var(--ivory);font-size:14.5px;transition:color .25s}
.rail-ch .rk-go{color:var(--bronze);font-size:1.1rem}
.rail-ch:hover{color:var(--champagne)}
.rail-info{display:grid;grid-template-columns:auto 1fr;gap:24px 20px;padding-top:clamp(34px,4vw,46px)}
.rail-info dt{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--bronze);padding-top:2px}
.rail-info dd{font-size:14px;color:var(--ivory)}
.rail-info dd small{display:block;color:var(--mist);font-size:12.5px;margin-top:4px}
.rail-info dd small a{color:var(--bronze)}
.rail-info dd small a:hover{color:var(--champagne)}


/* follow strip — centered, deliberately unlike the form/FAQ rhythm */
.follow-strip{text-align:center;max-width:640px;margin:0 auto}
.follow-strip .fs-line{color:var(--mist);font-size:clamp(15px,1.3vw,16.5px);margin:16px auto 0;max-width:var(--measure);line-height:1.7}
.fs-links{display:flex;gap:clamp(28px,5vw,64px);justify-content:center;flex-wrap:wrap;margin-top:clamp(26px,3vw,36px)}
.fs-links a{font-family:var(--disp-kr);font-weight:600;font-size:1.08rem;color:var(--ivory);transition:color .25s}
.fs-links a span{display:block;font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:12px;
  letter-spacing:.04em;color:var(--bronze);margin-top:6px}
.fs-links a:hover{color:var(--champagne)}

@media(max-width:860px){
  .contact-grid{grid-template-columns:1fr;gap:clamp(32px,5vw,44px)}
  .rail-info{margin-top:28px;padding-top:0}
}

/* ---- footer ---- */
.ft{border-top:1px solid var(--hairline);padding:clamp(64px,9vh,110px) 0 40px}
.ft-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--hairline);
  padding-bottom:clamp(24px,4vw,52px)}
.ft-wm-bg{position:absolute;left:50%;bottom:-.08em;transform:translateX(-50%) translateY(calc(var(--sp,0) * -24px));will-change:transform;z-index:0;
  pointer-events:none;white-space:nowrap;
  font-family:var(--disp-en);font-stretch:125%;font-weight:700;
  font-size:clamp(6.5rem,29vw,22rem);line-height:.8;letter-spacing:.02em;
  color:#241f18;-webkit-text-stroke:1px color-mix(in srgb,var(--bronze) 17%,transparent)}
.ft-hero-fg{position:relative;z-index:1;padding-top:clamp(40px,7vh,88px);
  min-height:clamp(240px,30vw,400px)}
.ft-hero-fg .eyebrow{margin-bottom:18px}
.ft-hero-fg h2{font-family:var(--disp-kr);font-weight:700;
  font-size:clamp(2.2rem,5.6vw,4.3rem);line-height:1.05;letter-spacing:-.015em;text-wrap:balance}
.ft-offer{display:flex;align-items:center;gap:26px;flex-wrap:wrap;margin-top:clamp(28px,3.6vw,44px)}
.ft-offer .offer{color:var(--mist);font-size:13.5px;line-height:1.5;display:flex;flex-direction:column;gap:2px}
.ft-offer .offer b{color:var(--champagne);font-family:var(--disp-en);font-stretch:125%;
  font-weight:700;font-size:1.55rem;letter-spacing:.01em}
.btn-main.lg{padding:18px 40px;font-size:16px}
.ft-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;
  margin-top:clamp(40px,5.5vh,64px);max-width:860px}
.ft-col h5{font-family:var(--disp-en);font-stretch:125%;font-weight:600;font-size:11px;
  letter-spacing:.2em;color:var(--bronze);text-transform:uppercase;margin-bottom:14px}
.ft-col a,.ft-col p{display:block;color:var(--mist);font-size:14px;line-height:2}
.ft-col a:hover{color:var(--champagne)}
.ft-btm{margin-top:clamp(44px,6vh,64px);padding-top:24px;border-top:1px solid var(--hairline);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--mist);font-size:12px}
.ft-btm .demo{color:var(--bronze)}

/* ---- subpage closer: slim text CTA (replaces wordmark ft-hero on sub) ---- */
body.sub .ft{padding-top:0}
.ft-cta{display:flex;align-items:center;justify-content:space-between;gap:18px 32px;flex-wrap:wrap;
  border-bottom:1px solid var(--hairline);padding:clamp(32px,4.5vw,54px) 0}
.ft-cta p{color:var(--mist);font-size:15px;letter-spacing:.01em}
.ft-cta p .k{color:var(--ivory);font-weight:500}
.ft-cta p b{color:var(--champagne);font-family:var(--disp-en);font-stretch:125%;font-weight:700;
  font-size:1.25rem;margin:0 5px;letter-spacing:.01em}
@media(max-width:640px){.ft-cta .btn-main{width:100%;text-align:center}}

/* ---- bottom CTA bar (mobile) ---- */
.botbar{display:none}

/* ---- reveal ---- */
.rv{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.rv.is-on{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}



/* ---- responsive ---- */
@media (max-width:980px){
  .about-grid{grid-template-columns:1fr;gap:36px}
  /* .about-fig 예외 삭제 — 비율(3/2)이 이제 전 폭 공통이라 1열에서 다시 정할 게 없다.
     구 max-height:440은 높이를 자르며 폭까지 640으로 줄여, 819 컬럼에 179px 죽은 공간을 남겼다. */
  .coach-grid{gap:24px}
  /* 2분할 해제 — 1열이 되면 지도가 좌측 높이를 따라갈 이유가 없다(등높이 문제 자체가 없음).
     여기서만 지도에 자기 비율을 돌려준다. 데스크의 aspect-ratio 제거와 모순 아님. */
  .loc-grid{grid-template-columns:1fr;gap:36px}
  .loc-map{aspect-ratio:4/3;min-height:0}
  .ft-grid{grid-template-columns:1fr 1fr;gap:28px}
  .ft-wm{grid-column:1/-1}
}
@media (max-width:860px){
  .nav{display:none}
  .hd-cta{display:none}
  .burger{display:flex}
  .hero{min-height:96svh}
  /* 모바일 리프레이밍 — 데스크 72%는 390에서 인물이 우측으로 밀려난다. 실측으로 잡은 값. */
  .hero-pic img{object-position:64% center}
  .hero-scrim{background:
    linear-gradient(0deg,var(--void) 6%,rgba(14,12,10,.66) 40%,rgba(14,12,10,.15) 68%,rgba(14,12,10,0) 84%),
    linear-gradient(180deg,rgba(14,12,10,.6) 0%,rgba(14,12,10,0) 26%)}
  /* 76px: 실측 — 턱 끝이 CSS y≈477(뷰포트 56%)인데 클러스터 상단(아이브로)이 476에 얹혀
     정확히 턱선을 스쳤다. 바텀 패딩·내부 간격으로 클러스터를 ~16px 내려 얼굴존과 분리.
     (고정바 상단과 CTA 바닥 사이는 여전히 40px+ 확보) */
  .hero-in{padding-bottom:76px}
  .hero h1{font-size:clamp(2.1rem,9vw,2.9rem)}
  /* 0722: ①가격 숨김으로 라벨 줄여 한 줄 나란히(공간·가림↓) ②히어로 이미지를 좌측 텍스트존 확보
     구도로 재생성(인물=하단 우측, 상단=클린 다크) → 텍스트는 상단 클린존에 두고 서브 밀어내기 폐기
     ③버튼 높이↓. 인물이 하단이라 서브·버튼이 그 위에 얹혀도 검정 의상 위 밝은 글자라 읽힌다. */
  /* 0722-2차(사용자: "글자가 많고 촘촘해서 얼굴을 가린다"): 실측 — 인물 얼굴은 하단이 아니라
     화면 40~50% 높이 우측이고, 텍스트 9덩어리(아이브로 2줄+h1+서브+CTA+구분선+메타 3줄)가
     28~67%를 채워 얼굴을 관통했다. 처방 = 덩어리 감량:
     ㉮ 메타 3줄 숨김 — 가격·예약은 하단 고정바가, 위치·시간은 방문 페이지·푸터가 이미 든다(중복).
     ㉯ 아이브로 자간·크기 축소로 한 줄화(2줄 래핑 제거). */
  /* 색=ivory(모바일 한정): 667류 짧은 뷰포트에선 아이브로가 이미지의 조명 패치(L~.16)에 걸리는데
     골드(L .355)는 거기서 물리적으로 4.5가 불가(헤일로 포함 실측 2.48). 스크림 증강은 사진을
     죽인다(0721 '대비만 재지 말고 사진 생존도') → 글자를 밝히는 쪽으로. 골드 정체성은 h1 메탈·
     버튼·고정바가 유지. ivory+3겹 헤일로 = 스트로크 인접 실효 5.4(667)·7.7(390) — 아래 실측. */
  .hero .eyebrow{font-size:10px;letter-spacing:.22em;margin-bottom:14px;color:var(--ivory);
    text-shadow:0 0 5px rgba(14,12,10,.9),0 0 13px rgba(14,12,10,.65),0 1px 3px rgba(14,12,10,.6)}
  /* ㉰ 서브: 앞절(.sub-l) 숨김 — h1 "1:1입니다"와 중복 선언. 2행 조판은 사용자 지정(0722):
     설계 문구 1행 / 전담 코치·프라이빗 공간 문구 2행. */
  .hero .sub .sub-l{display:none}
  .hero .sub .sub-br{display:inline}
  .hero .sub{margin-top:16px}
  .cta-row{margin-top:22px;flex-wrap:nowrap;gap:10px}
  .cta-row .btn-main,.cta-row .btn-ghost{flex:1;min-width:0;text-align:center;white-space:nowrap;padding:11px 8px}
  .btn-amt{display:none}
  .hero-meta{display:none}
  .trust-in{grid-template-columns:1fr;padding:6px clamp(20px,4.5vw,56px)}
  .t-cell{padding:22px 0}
  .t-cell + .t-cell::before{left:0;right:0;top:0;bottom:auto;width:auto;height:1px}
  .srow{grid-template-columns:64px 1fr;gap:16px 20px}
  .srow .tag{grid-column:2;margin-top:4px}
  .coach-grid{grid-template-columns:1fr;gap:40px;max-width:420px}
  .space-wrap{aspect-ratio:4/3}
  .tiers{grid-template-columns:1fr}
  .rev-grid{grid-template-columns:1fr}
  .ft-grid{grid-template-columns:1fr}
  /* 고정바 높이만큼 문서 끝에 여유 — 없으면 마지막 콘텐츠가 바 뒤로 들어간다.
     (히어로는 .hero-in{padding-bottom:118px}로 이미 보정돼 있었고 나머지를 빠뜨렸던 것) */
  body{padding-bottom:72px}
  .botbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:55;
    background:rgba(14,12,10,.95);backdrop-filter:blur(12px);border-top:1px solid var(--hairline);
    padding:12px clamp(16px,4vw,24px);gap:12px;align-items:center}
  .botbar .bb-txt{flex:1;font-size:12.5px;color:var(--mist);line-height:1.35}
  .botbar .bb-txt b{color:var(--ivory);font-weight:600}
  /* 0722: 예약 버튼이 오른쪽에 작게 박혀 있었다 → 40% 폭으로 넓혀 CTA 존재감 확보(사용자 지적) */
  .botbar a{background:var(--bronze);color:var(--btn-ink);font-weight:600;font-size:14.5px;
    flex:0 0 40%;text-align:center;padding:14px 0;white-space:nowrap}
  .mmenu.open ~ .botbar{display:none}
}

/* ---- subpage ---- */
body.sub .hd{background:rgba(14,12,10,.92);backdrop-filter:blur(12px);
  padding-top:14px;padding-bottom:14px;border-bottom-color:var(--hairline)}
.pagehead{padding:calc(clamp(72px,10vh,120px) + 56px) 0 clamp(46px,7vh,78px);
  border-bottom:1px solid var(--hairline);background:var(--coal)}
.pagehead .eyebrow{margin-bottom:18px}
.pagehead h1{font-family:var(--disp-kr);font-weight:700;font-size:clamp(2.1rem,4.6vw,3.5rem);
  letter-spacing:-.01em;line-height:1.12;text-wrap:balance}
.pagehead p{color:var(--mist);max-width:var(--measure);margin-top:20px;font-size:clamp(15px,1.2vw,17px)}
/* 현재 페이지 = 정지 상태에서 이미 켜져 있는 하나 (색이 아니라 빛으로 표시) */
.nav a.on{-webkit-text-fill-color:transparent}
.m-link.on .ko{color:var(--champagne)}
/* club 선언문 = 디스플레이 카피(산문 아님) → 카피 조판 폭. 유일 사용처가 club.html이다. */
.prose{max-width:var(--measure)}
.prose p{color:var(--mist);margin-top:20px;font-size:clamp(15px,1.15vw,16.5px)}
.prose p strong{color:var(--ivory);font-weight:500}
.prose p.big{font-family:var(--disp-kr);font-weight:600;color:var(--ivory);max-width:var(--measure);
  font-size:clamp(1.2rem,2.2vw,1.6rem);line-height:1.5;margin-top:0}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);margin-top:clamp(36px,4vw,52px)}
.step{border-top:1px solid var(--hairline-2);padding-top:22px}
.step .sn{font-family:var(--disp-en);font-stretch:125%;font-weight:700;font-size:1.4rem;color:var(--bronze)}
.step h3{font-family:var(--disp-kr);font-weight:600;font-size:1.1rem;margin-top:12px}
.step p{color:var(--mist);font-size:14.5px;margin-top:8px}
.faq{margin-top:clamp(36px,4vw,52px);border-top:1px solid var(--hairline)}
.faq details{border-bottom:1px solid var(--hairline)}
.faq summary{cursor:pointer;list-style:none;padding:22px 0;display:flex;justify-content:space-between;
  gap:20px;align-items:baseline;font-family:var(--disp-kr);font-weight:600;font-size:1.05rem;color:var(--ivory)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';color:var(--bronze);font-size:1.35rem;line-height:1;flex:none}
.faq details[open] summary::after{content:'\2013'}
.faq details .a{color:var(--mist);font-size:15px;padding:0 0 24px;max-width:62ch}
/* 전역 a{color:inherit;text-decoration:none} 때문에 FAQ 답변 속 실제 페이지 링크가
   본문과 완전히 같게 렌더됐다 → 어포던스 부여(사이트 인라인 링크 컨벤션 = 브론즈). */
.faq details .a a{color:var(--bronze);text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:3px;
  text-decoration-color:rgba(194,154,99,.45);transition:text-decoration-color .25s}
.faq details .a a:hover{color:var(--champagne);text-decoration-color:var(--champagne)}
/* .legal은 .wrap과 같은 엘리먼트다 — 여기에 max-width를 주면 .wrap의 margin:0 auto가
   블록을 다시 중앙에 놓아 본문만 좌측 레일(x=176)에서 이탈한다(실측 423). 자식만 조판폭 제한. */
.legal>*{max-width:74ch}
.legal h2{font-family:var(--disp-kr);font-weight:600;font-size:1.15rem;margin:38px 0 4px;color:var(--ivory)}
.legal p,.legal li{color:var(--mist);font-size:14.5px;margin-top:10px}
.legal ul{padding-left:20px;margin-top:10px}
.legal li{margin-top:6px}
.detail-note{color:var(--mist);font-size:13px;margin-top:14px;max-width:var(--measure)}
@media(max-width:860px){.steps{grid-template-columns:1fr;gap:24px}}

@media(max-width:860px){
  /* 데스크는 버튼이 186px라 워터마크의 3%만 가리지만, 여기선 버튼이 width:100%가 되며
     글자 허리를 가로질러 위아래로 끊긴 조각을 남긴다(가림 40~52%, 아래 슬리버 10~23px).
     bottom은 .ft-hero 패딩박스 기준 → 패딩값이면 글자 바닥 = 콘텐츠(버튼) 바닥.
     거기서 버튼 높이(63px)만큼 더 올려 겹침을 0으로 만든다(글자 박스가 이미 24px 여유 → +40).
     버튼이 글자의 바닥선이 되고, 데스크의 "워터마크=바닥" 언어가 유지된다. */
  .ft-wm-bg{font-size:clamp(5rem,33vw,9.5rem);bottom:calc(clamp(24px,4vw,52px) + 40px)}
  .ft-hero-fg{min-height:196px;padding-top:44px}
  .ft-offer{gap:18px}
  .ft-offer .btn-main.lg{width:100%;text-align:center}
  .ft-grid{max-width:none}
}

/* ---- space slider ---- */
.space-slider{position:relative;margin-top:clamp(40px,5vw,60px)}
.slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none}
.slides::-webkit-scrollbar{display:none}
.slide{position:relative;flex:0 0 100%;scroll-snap-align:start;aspect-ratio:16/8;
  overflow:hidden;background:var(--card)}
.slide img{width:100%;height:100%;object-fit:cover}
.s-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:46px;height:46px;border-radius:50%;border:1px solid var(--hairline-2);
  background:rgba(14,12,10,.55);backdrop-filter:blur(6px);color:var(--ivory);
  font-size:22px;line-height:1;cursor:pointer;
  transition:background .25s,border-color .25s,color .25s}
.s-arrow:hover{background:rgba(14,12,10,.85);border-color:var(--bronze);color:var(--champagne)}
.s-arrow.prev{left:16px}.s-arrow.next{right:16px}
.dots{display:flex;gap:8px;justify-content:center;margin-top:22px}
.dots button{width:8px;height:8px;border-radius:50%;background:var(--hairline-2);border:0;
  padding:0;cursor:pointer;transition:width .3s var(--ease),background .3s}
.dots button.on{background:var(--bronze);width:24px;border-radius:4px}

@media(max-width:860px){
  .slide{aspect-ratio:4/3}
  .s-arrow{width:40px;height:40px;font-size:19px}
  .s-arrow.prev{left:10px}.s-arrow.next{right:10px}
}
/* 좁은 폭에선 화살표를 내린다.
   실측(320): 슬라이드 높이 210 중 캡션이 158(75%)을 차지해 화살표(top:50%)가 캡션 텍스트와
   세로로 3~20px 겹쳤다 — 피할 빈 세로 공간이 아예 없다. 가로로도 전 폭에서 26px 겹친다
   (.s-arrow.prev{left:10~16px} vs 캡션 padding:clamp(24px,4vw,48px)).
   화살표는 마우스 전용 어포던스이고, 이 폭대는 터치라 .slides의 scroll-snap 스와이프가 본 수단이다.
   .dots(role=tablist, JS 생성)가 위치 표시와 키보드 이동을 계속 담당하므로 접근성 손실 없음. */
@media(max-width:520px){
  .s-arrow{display:none}
  /* 88px 라벨은 350px 칸에서 값을 목 조른다 — 375에서 Hours가 "…· 토" / "09:00 – 18:00"으로
     시간이 반토막 났다(실측: dd 227px vs 값 230px). 라벨을 줄여 값에 폭을 돌려준다. */
  .loc-info dl{grid-template-columns:72px 1fr;gap:14px 16px}
}

/* ---- home enrichment blocks ---- */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,44px);
  margin-top:clamp(48px,6vw,72px);border-top:1px solid var(--hairline);padding-top:clamp(28px,3vw,40px)}
.pil .pn{font-family:var(--disp-en);font-stretch:125%;font-weight:700;font-size:1.15rem;color:var(--bronze)}
.pil h4{font-family:var(--disp-kr);font-weight:600;font-size:1.12rem;color:var(--ivory);margin-top:12px;letter-spacing:-.01em}
.pil p{color:var(--mist);font-size:14.5px;line-height:1.62;margin-top:8px}

.incl{margin-top:clamp(36px,5vw,58px);border-top:1px solid var(--hairline);padding-top:clamp(28px,3vw,40px)}
.incl .k,.perks .k,.amen .k{display:block;font-family:var(--disp-en);font-stretch:125%;font-weight:600;
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--bronze);margin-bottom:clamp(20px,2.6vw,30px)}
.incl-list{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,30px) clamp(32px,4vw,64px);list-style:none}
.incl-list li{display:flex;gap:14px;align-items:baseline;color:var(--ivory);font-size:15.5px;font-weight:500}
.incl-list li::before{content:'';width:16px;height:1px;background:var(--bronze);flex:none;transform:translateY(-5px)}
.incl-list li span{display:block;color:var(--mist);font-size:13.5px;font-weight:400;margin-top:4px;line-height:1.5}

.creds{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.creds .chip{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--mist);border:1px solid var(--hairline);border-radius:2px;padding:5px 11px;white-space:nowrap}
.coach .exp{margin-top:14px;color:var(--bronze);font-family:var(--disp-en);font-stretch:125%;font-weight:600;
  font-size:11.5px;letter-spacing:.1em;text-transform:uppercase}

.perks{margin-top:clamp(36px,5vw,54px);border-top:1px solid var(--hairline);padding-top:clamp(28px,3vw,40px)}
.perks-list{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.2vw,26px) clamp(32px,4vw,60px);list-style:none}
.perks-list li{display:flex;gap:14px;align-items:flex-start;color:var(--ivory);font-size:15px;font-weight:500}
.perks-list li::before{content:'';width:6px;height:6px;margin-top:7px;flex:none;background:var(--bronze);border-radius:50%}
.perks-list li span{display:block;color:var(--mist);font-size:13.5px;font-weight:400;margin-top:3px;line-height:1.5}

.amen{margin-top:clamp(28px,3.4vw,42px);border-top:1px solid var(--hairline);padding-top:clamp(22px,2.6vw,30px);
  display:flex;flex-wrap:wrap;gap:14px 30px}
.amen span{color:var(--mist);font-size:14.5px}
.amen span b{color:var(--ivory);font-weight:500}

@media(max-width:860px){
  .pillars{grid-template-columns:1fr;gap:28px}
  .incl-list,.perks-list{grid-template-columns:1fr}
  /* ★1열이 돼도 li는 [대시][라벨][설명]이 한 행에 남아 라벨을 82px로 쥐어짰다 —
     "몸 상태 · 자세 평가"(8자)가 "평가"를 떨구고, 설명도 꼬리가 남았다.
     대조군: 같은 8자를 자유 350px 박스에 넣으면 113px 1줄 → 카피가 아니라 레이아웃 문제.
     설명을 자기 줄로 내린다(span의 margin-top:4px가 원래 의도했던 배치). */
  .incl-list li{flex-wrap:wrap}
  .incl-list li span{flex:1 0 calc(100% - 30px);margin-left:30px}  /* 30px = 대시 16 + gap 14 */
}

/* ---- subpage enrichment ---- */
.cert{margin-top:12px;color:var(--mist);font-size:13px;line-height:1.7}
.cert b{color:var(--ivory);font-weight:500;font-family:var(--disp-en);font-stretch:125%;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;display:block;margin-bottom:4px}
.director{display:grid;grid-template-columns:0.9fr 1.4fr;gap:clamp(32px,5vw,72px);align-items:center}
/* 1/1 인 이유: 4/5는 사진을 497px로 세우는데 옆 텍스트는 227px라 270px(54%)이 빈 채로 남았다
   (align-items:center라 위아래로 갈려 앉음 = "여백 너무 많다"의 정체).
   ⚠️4/3은 구멍을 71px까지 줄이지만 **머리 위가 잘린다** — 사용자 육안 판정. 1/1이 여백(171px)과
   초상 프레이밍을 둘 다 만족하는 지점. 사진을 바꾸면 이 비율도 다시 정할 것. */
.director .d-fig{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--card)}
.director .d-fig img{width:100%;height:100%;object-fit:cover}
.director blockquote{font-family:var(--disp-kr);font-weight:600;color:var(--ivory);
  font-size:clamp(1.3rem,2.2vw,1.8rem);line-height:1.45;letter-spacing:-.01em}
.director .d-body{color:var(--mist);font-size:15px;line-height:1.75;margin-top:20px}
.director .d-sign{margin-top:24px;color:var(--bronze);font-family:var(--disp-en);font-stretch:125%;
  font-weight:600;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.equip{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.5vw,32px);
  margin-top:clamp(36px,4.5vw,54px);border-top:1px solid var(--hairline);padding-top:clamp(28px,3vw,40px)}
.equip .eq h4{font-family:var(--disp-kr);font-weight:600;font-size:1.02rem;color:var(--ivory)}
.equip .eq p{color:var(--mist);font-size:13.5px;line-height:1.55;margin-top:8px}
.equip .eq .en{font-family:var(--disp-en);font-stretch:125%;font-weight:500;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--bronze);display:block;margin-bottom:10px}
@media(max-width:860px){
  .director{grid-template-columns:1fr;gap:28px}
  .equip{grid-template-columns:1fr 1fr;gap:24px}
}

/* ── 코칭 밴드 (풀블리드) ──────────────────────────────────────────────
   히어로 외 유일한 풀블리드. sessions(설명) → 이 장면 → coaches(사람) 순으로
   서사를 잇고, 동일리듬 반복이던 홈에 두 번째 봉우리를 만든다.
   카피는 듀엣(2:1)에도 참인 문장만 쓴다("두 사람뿐"류 금지 — 반증가능해짐). */
.coachband{position:relative;min-height:clamp(430px,60vh,640px);display:flex;align-items:flex-end;
  overflow:hidden;background:var(--void)}
.cb-pic{position:absolute;inset:0}
/* ⚠️실측: 데스크 1440에서 밴드는 1440x440(비 3.27) > 이미지 비 1.778 → cover가 *폭* 기준으로 맞춰
   cropX=0이 된다. 즉 X값(20%)은 ~1138px 위에서 죽은 CSS이고, 실제로 잘리는 건 세로다.
   기본값 50%로는 소스 y[206..694]가 남아 코치 머리(y57~200)가 통째로 날아갔다
   ("코치는 옆에 앉아…"라는 카피를 사진이 배신). → Y를 12%로 올려 머리·시선·큐잉 손을 살린다.
   모바일(390x455)은 세로가 꽉 차 cropY=0이라 Y 변경이 무동작 → 안전. */
.cb-pic img{width:100%;height:100%;object-fit:cover;object-position:20% 12%;display:block}
.cb-scrim{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(0deg,rgba(14,12,10,.92) 0%,rgba(14,12,10,.55) 36%,rgba(14,12,10,.14) 66%,rgba(14,12,10,0) 88%)}
.cb-in{position:relative;z-index:2;width:100%;padding-block:130px 56px}
.cb-h{font-family:var(--disp-kr);font-weight:700;letter-spacing:-.01em;line-height:1.3;
  font-size:clamp(1.55rem,3.2vw,2.7rem);color:var(--ivory);margin-top:14px}
@media(max-width:860px){
  .coachband{min-height:clamp(390px,54vh,500px)}
  .cb-in{padding-block:100px 40px}
  .cb-pic img{object-position:40% 50%}
}

/* ── 한글 슬롯 교정 ────────────────────────────────────────────────
   --disp-en(Archivo)에는 한글 글리프가 없다(실측: canvas 11px "직접 연락" → Archivo 41.66px
   == 폴백 40.71px == sans 40.95px. 라틴 "PRIVATE"는 Archivo 58.44 vs 폴백 42.42 로 38% 차이).
   즉 한글은 이미 Pretendard로 폴백되고 있고, 그 위에 라틴용 트래킹(.14~.22em)만 얹혀
   "직 접  연 락" 꼴로 흩어진다(Range 실측: 자간이 먹은 폭 +6.6%~+26.5%).
   font-stretch:125%(Archivo 폭축)·text-transform:uppercase(한글엔 대소문자 없음)도 함께 무효.
   → 한글 슬롯만 실제 렌더 폰트(--body)로 명시하고 자간·대문자·폭축을 뺀다.
   라틴 슬롯(.eyebrow +34.9% / .srow .tag / .t-cell .t-num / .coach .role / .trial .tl .k /
   .loc-info dt / .ft-col h5 / .cert b / .equip .eq .en)은 트래킹이 시그니처라 그대로 둔다. */
.brand .loc,
.rail-lbl,
.rail-info dt,
.incl .k, .perks .k, .amen .k,
.creds .chip,
.coach .exp,
.director .d-sign{
  font-family:var(--body);
  font-stretch:normal;
  letter-spacing:.02em;   /* 한글 라벨 레지스터 유지선 — 라틴용 .14~.22em은 흩어짐 */
  text-transform:none;
}

/* ── 폼 인라인 검증 ────────────────────────────────────────────────
   form[novalidate] + required 만 있고 JS 검증이 없어 빈 제출도 "접수됐다"로 넘어갔다(리드 유실).
   브라우저 기본 말풍선은 다크럭스 위에서 이물이라 novalidate는 유지하고 인라인 에러로 처리한다.
   --err = #E08379: card(#312B25) 대비 5.12:1 = WCAG AA 통과, cognac/bronze와 같은 웜 계열. */

/* ── 데모 표기 체계 (실업체 데모 전용 — HTML 삽입은 _variants/demo-notes.html, 프로토타입 미사용) ── */
p,li,blockquote{text-wrap:pretty}
.imgnote{display:block;font-size:12px;letter-spacing:.04em;color:var(--mist);margin:10px 0 0}
.exnote{font-size:13px;color:var(--mist);margin:0 0 16px;max-width:var(--measure)}
.ft .demo-note{margin-top:20px;font-size:12px;color:var(--mist)}
.ft .demo-note a{color:var(--bronze);text-decoration:underline}

/* ═══ 모션 트랙 0726 — PILAMIN 시그니처: 금선 트레이스 + aperture 리빌 ═══
   실측 근거 = design/motion-ref-library.md 프로브 절(마스크 900ms대·expo-out) + §6 브랜드 연출 밴드.
   ① 섹션 헤딩 아래 금선이 좌→우로 그려지고(1.15s) ② 어두운 사진은 가로 슬릿(46%)에서
   aperture처럼 열린다. 고급감은 속도·절제로 — glow·반짝임 추가 금지(리뷰 §5.4 피하기). */
:root{--mt-brand:1.15s;--me-expo:cubic-bezier(.19,1,.22,1)}
.sec-h{position:relative}
.sec-h.rv::after{content:"";position:absolute;left:0;bottom:-12px;width:100%;height:1px;
  background:linear-gradient(90deg,var(--champagne),var(--bronze) 42%,var(--hairline-2) 78%,transparent 100%);
  transform:scaleX(0);transform-origin:left;transition:transform var(--mt-brand) var(--me-expo) .3s}
.sec-h.rv.is-on::after{transform:scaleX(1)}
/* ⚠️클립은 반드시 img(자식)에 — 관찰 대상(.rv)에 걸면 IO 가시비율이 슬릿 8%로 깎여
   threshold .12에 영원히 미달, is-on이 안 붙는다(0726 실측 디버그). */
.rv.apr{opacity:1;transform:none}
.rv.apr img{clip-path:inset(46% 0 46% 0);transform:scale(1.05);
  transition:clip-path var(--mt-brand) var(--me-expo),transform calc(var(--mt-brand) + .35s) var(--me-expo)}
.rv.apr.is-on img{clip-path:inset(0 0 0 0);transform:scale(1)}
.coach.rv .coach-fig img{clip-path:inset(46% 0 46% 0);transition:clip-path var(--mt-brand) var(--me-expo) .12s}
.coach.rv.is-on .coach-fig img{clip-path:inset(0 0 0 0)}
