@charset "utf-8";
/* =========================================================
   RIAHN HAIR 수원인계점 — 인계동미용실
   디자인 원칙: 타이포 중심 · 넓은 여백 · 사진은 조연
   ========================================================= */

/* ---------- 0. 토큰 ---------- */
:root{
  --paper:#ffffff;
  --paper2:#f7f4ef;
  --paper3:#efe9e0;
  --ink:#141210;
  --ink2:#544c43;
  --ink3:#8e857a;
  --line:#e5ded4;
  --line2:#cfc5b7;
  --gold:#a88657;
  --gold2:#c9ac7c;
  --naver:#03c75a;
  --maxw:1240px;
  --gut:clamp(20px,5vw,48px);
  --sec:clamp(76px,10vw,152px);
  --fk:"Pretendard Variable","Pretendard",-apple-system,BlinkMacSystemFont,system-ui,"Malgun Gothic",sans-serif;
  --fd:"Outfit",var(--fk);
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- 1. 리셋 ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:74px}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--fk);font-size:16px;line-height:1.8;
  letter-spacing:-.01em;font-weight:400;
  word-break:keep-all;overflow-wrap:break-word;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
h1,h2,h3,h4,p,figure,dl,dd{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
::selection{background:var(--ink);color:#fff}

/* ---------- 2. 레이아웃 유틸 ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}
.wrap-w{max-width:1520px;margin:0 auto;padding-inline:var(--gut)}
.sec{padding-block:var(--sec)}
.sec-tint{background:var(--paper2)}
.sec-dark{background:var(--ink);color:#fff}
.hr{height:1px;background:var(--line);border:0;margin:0}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- 3. 타이포 ---------- */
.kick{
  font-family:var(--fd);font-size:.7rem;font-weight:500;
  letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
  display:flex;align-items:center;gap:.9em;
}
.kick::after{content:"";flex:0 0 48px;height:1px;background:var(--line2)}
.kick-c{justify-content:center}
.kick-c::before{content:"";flex:0 0 48px;height:1px;background:var(--line2)}
/* 좁은 화면에서 킥커가 두 줄로 접히면 끝 선이 혼자 떨어진다 */
@media (max-width:560px){
  .kick{font-size:.62rem;letter-spacing:.18em;gap:.65em;white-space:nowrap}
  /* 끝선이 먼저 줄어들게 두면 글자가 두 줄로 접히지 않는다 */
  .kick::after,.kick-c::before{flex:0 1 32px;min-width:0}
}
@media (max-width:380px){
  .kick{font-size:.56rem;letter-spacing:.14em}
}

.stitle{
  font-weight:300;letter-spacing:-.035em;line-height:1.28;
  font-size:clamp(1.7rem,3.7vw,2.7rem);margin-top:1.1rem;
}
.stitle b{font-weight:600}
.stitle em{font-style:normal;color:var(--gold)}
.slead{
  margin-top:1.3rem;color:var(--ink2);font-size:clamp(.94rem,1.5vw,1.06rem);
  line-height:1.95;max-width:44em;
}
.sec-dark .slead{color:rgba(255,255,255,.72)}
.sec-dark .kick::after,.sec-dark .kick::before{background:rgba(255,255,255,.28)}
.num{font-family:var(--fd);font-weight:300;color:var(--gold);letter-spacing:.02em}
.head-c{text-align:center}
.head-c .slead{margin-inline:auto}

/* ---------- 4. 버튼 ---------- */
.btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:2.2rem}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  min-height:56px;padding:0 1.65rem;border:1px solid var(--ink);
  font-size:.94rem;font-weight:500;letter-spacing:-.01em;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease);
}
.btn svg{width:17px;height:17px;flex:none}
.btn-fill{background:var(--ink);color:#fff}
.btn-fill:hover{background:var(--gold);border-color:var(--gold)}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{background:var(--ink);color:#fff}
.btn-gold{background:var(--gold);border-color:var(--gold);color:#fff}
.btn-gold:hover{background:var(--ink);border-color:var(--ink)}
.btn-naver{background:var(--naver);border-color:var(--naver);color:#fff}
.btn-naver:hover{filter:brightness(.9)}
.sec-dark .btn-line{border-color:rgba(255,255,255,.4);color:#fff}
.sec-dark .btn-line:hover{background:#fff;color:var(--ink);border-color:#fff}
.tlink{
  display:inline-flex;align-items:center;gap:.6em;font-family:var(--fd);
  font-size:.78rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  padding-bottom:.45rem;border-bottom:1px solid var(--line2);transition:.3s var(--ease);
}
.tlink:hover{border-color:var(--ink);gap:1em}
.tlink svg{width:14px;height:14px}

/* ---------- 5. 헤더 ---------- */
.hd{
  position:fixed;inset:0 0 auto;z-index:90;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .35s var(--ease),border-color .35s var(--ease);
}
.hd-in{display:flex;align-items:center;gap:clamp(18px,3vw,44px);height:74px}
.hd.solid,.hd.open{background:var(--paper);border-bottom-color:var(--line)}
body.sub .hd{background:var(--paper);border-bottom-color:var(--line)}
.logo{display:flex;align-items:baseline;gap:.6rem;flex:none}
.logo b{font-family:var(--fd);font-size:1.32rem;font-weight:500;letter-spacing:.22em}
.logo span{font-size:.7rem;letter-spacing:.02em;color:var(--ink3)}
/* 홈 첫 화면이 어두운 사진이라 스크롤 전까지는 흰 글씨 */
.hd.light:not(.solid):not(.open) .logo,
.hd.light:not(.solid):not(.open) .nav>li>a,
.hd.light:not(.solid):not(.open) .burger{color:#fff}
.hd.light:not(.solid):not(.open) .logo span{color:rgba(255,255,255,.72)}
.hd.light:not(.solid):not(.open) .hd-cta{background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.5)}
.hd.light:not(.solid):not(.open) .hd-cta:hover{background:#fff;color:var(--ink);border-color:#fff}

.nav{display:flex;align-items:center;gap:clamp(14px,2.2vw,34px);margin-left:auto}
.nav>li{position:relative}
.nav>li>a{
  display:flex;align-items:center;gap:.35em;height:74px;
  font-size:.92rem;font-weight:500;white-space:nowrap;letter-spacing:-.02em;
  transition:color .25s var(--ease);
}
.nav>li>a::after{
  content:"";position:absolute;left:0;right:0;bottom:22px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav>li:hover>a::after,.nav>li.on>a::after{transform:scaleX(1)}
.nav .caret{width:9px;height:9px;opacity:.5}
.dd{
  position:absolute;top:100%;left:50%;transform:translate(-50%,8px);
  min-width:212px;background:var(--paper);border:1px solid var(--line);
  padding:.5rem 0;opacity:0;visibility:hidden;transition:.28s var(--ease);
  box-shadow:0 22px 54px -28px rgba(20,18,16,.45);
}
.nav>li:hover .dd,.nav>li:focus-within .dd{opacity:1;visibility:visible;transform:translate(-50%,0)}
.dd a{display:block;padding:.62rem 1.25rem;font-size:.88rem;color:var(--ink2);transition:.2s}
.dd a:hover{background:var(--paper2);color:var(--ink);padding-left:1.5rem}
.hd-cta{
  flex:none;display:inline-flex;align-items:center;gap:.5em;height:42px;padding:0 1.15rem;
  background:var(--ink);color:#fff;font-family:var(--fd);font-size:.92rem;
  font-weight:500;letter-spacing:.04em;transition:background .3s var(--ease);
}
.hd-cta:hover{background:var(--gold)}
.hd-cta svg{width:15px;height:15px}
.burger{display:none;width:44px;height:44px;margin-left:auto;position:relative}
.burger i{display:block;position:absolute;left:11px;width:22px;height:1.5px;background:currentColor;transition:.3s var(--ease)}
.burger i:nth-child(1){top:16px}
.burger i:nth-child(2){top:22px}
.burger i:nth-child(3){top:28px}
.hd.open .burger i:nth-child(1){top:22px;transform:rotate(45deg)}
.hd.open .burger i:nth-child(2){opacity:0}
.hd.open .burger i:nth-child(3){top:22px;transform:rotate(-45deg)}

@media (max-width:1079px){
  .nav{
    position:fixed;top:74px;left:0;right:0;bottom:0;display:block;margin:0;
    background:var(--paper);padding:1.4rem var(--gut) 2.4rem;overflow-y:auto;
    transform:translateY(-8px);opacity:0;visibility:hidden;transition:.3s var(--ease);
  }
  .hd.open .nav{transform:none;opacity:1;visibility:visible}
  .hd.light.open .logo,.hd.light.open .nav>li>a,.hd.light.open .burger{color:var(--ink)}
  .nav>li{border-bottom:1px solid var(--line)}
  .nav>li>a{height:auto;padding:1.05rem 0;font-size:1.02rem;justify-content:space-between}
  .nav>li>a::after{display:none}
  .dd{
    position:static;transform:none;opacity:1;visibility:visible;border:0;box-shadow:none;
    min-width:0;padding:0 0 .9rem;display:none;background:transparent;
  }
  .nav>li.exp .dd{display:block}
  .nav>li.exp .caret{transform:rotate(180deg)}
  .dd a{padding:.55rem 0 .55rem 1rem;border-left:1px solid var(--line)}
  .dd a:hover{padding-left:1.25rem;background:none}
  .hd-cta{display:none}
  .burger{display:block}
  .logo b{font-size:1.18rem}
}

/* ---------- 6. 히어로 (풀화면 사진) ---------- */
.hero{position:relative;background:var(--ink);overflow:hidden;color:#fff}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg picture{display:block;width:100%;height:100%}
.hero-bg img{
  width:100%;height:100%;object-fit:cover;object-position:52% 46%;
  filter:saturate(.76) brightness(.78) contrast(1.05);
}
/* 사진 위 스크림 — 글씨가 앉는 왼쪽을 두껍게, 오른쪽은 사진이 그대로 보이게 */
.hero::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(100deg,rgba(18,15,12,.86) 0%,rgba(18,15,12,.68) 32%,
                    rgba(18,15,12,.4) 62%,rgba(18,15,12,.26) 85%,rgba(18,15,12,.46) 100%),
    linear-gradient(to bottom,rgba(18,15,12,.52) 0%,rgba(18,15,12,.18) 36%,
                    rgba(18,15,12,.24) 70%,rgba(18,15,12,.58) 100%);
}
.hero-in{
  position:relative;z-index:2;
  max-width:1520px;margin:0 auto;padding-inline:var(--gut);
  display:flex;align-items:center;
  min-height:min(100svh,920px);
  padding-top:clamp(120px,14vh,164px);padding-bottom:clamp(92px,12vh,132px);
}
.hero-txt{max-width:44rem}
.hero .kick{color:var(--gold2)}
.hero .kick::after{background:rgba(255,255,255,.34)}
.hero h1{margin:1.5rem 0 0;display:block}
.h1-kr{
  display:block;font-size:clamp(2.6rem,7.6vw,5.3rem);font-weight:300;
  letter-spacing:-.055em;line-height:1.02;
  text-shadow:0 2px 28px rgba(0,0,0,.34);
}
.h1-kr b{font-weight:600}
.h1-sub{
  display:block;margin-top:1.15rem;font-size:clamp(1.02rem,2.2vw,1.42rem);
  font-weight:300;letter-spacing:-.03em;line-height:1.55;color:rgba(255,255,255,.88);
}
.hero-lead{
  margin-top:1.7rem;color:rgba(255,255,255,.76);
  font-size:clamp(.94rem,1.5vw,1.04rem);line-height:1.95;max-width:34em;
  text-shadow:0 1px 16px rgba(0,0,0,.4);
}
.hero-lead b{color:#fff;font-weight:600}

/* 지표 줄 — 지어낸 숫자 없이 확인된 사실만 */
.hero-stats{
  display:flex;flex-wrap:wrap;margin-top:2.6rem;
  border-top:1px solid rgba(255,255,255,.26);
}
.hero-stats div{
  flex:1 1 150px;min-width:0;padding:1.25rem 1.4rem 0 0;
  border-left:1px solid rgba(255,255,255,.18);padding-left:1.4rem;
}
.hero-stats div:first-child{border-left:0;padding-left:0}
.hero-stats b{
  display:block;font-family:var(--fd);font-weight:300;
  font-size:clamp(1.3rem,2.6vw,1.9rem);letter-spacing:-.01em;line-height:1.2;color:#fff;
}
.hero-stats span{display:block;margin-top:.45rem;font-size:.8rem;color:rgba(255,255,255,.6)}
.hero .btns{margin-top:2.4rem}

/* 어두운 사진 위 버튼 */
.btn-paper{background:var(--paper2);border-color:var(--paper2);color:var(--ink)}
.btn-paper:hover{background:#fff;border-color:#fff}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.55);color:#fff}
.btn-ghost:hover{background:#fff;border-color:#fff;color:var(--ink)}

.hero-scroll{
  position:absolute;right:calc(var(--gut) - 4px);bottom:clamp(28px,6vh,60px);z-index:2;
  writing-mode:vertical-rl;font-family:var(--fd);font-size:.66rem;font-weight:500;
  letter-spacing:.34em;text-transform:uppercase;color:rgba(255,255,255,.62);
  display:flex;flex-direction:column;align-items:center;gap:.9rem;
  transition:color .3s var(--ease);
}
.hero-scroll::after{content:"";width:1px;height:56px;background:linear-gradient(rgba(255,255,255,.55),transparent)}
.hero-scroll:hover{color:#fff}
@media (max-width:980px){
  .hero-in{min-height:min(92svh,760px);padding-top:clamp(108px,16vh,140px);padding-bottom:clamp(72px,10vh,96px)}
  /* 1단으로 접히면 글씨가 화면 전체를 쓰므로 방향 없이 고르게 덮는다 */
  .hero::after{background:
    linear-gradient(to bottom,rgba(18,15,12,.86) 0%,rgba(18,15,12,.66) 26%,
                    rgba(18,15,12,.64) 72%,rgba(18,15,12,.86) 100%);}
  .hero-scroll{display:none}
}
@media (max-width:560px){
  /* 지표가 세로로 쌓이면 CTA 가 접힘선 아래로 밀린다 → 버튼을 위로 올린다 */
  .hero-txt{display:flex;flex-direction:column}
  .hero .btns{order:5;margin-top:2rem}
  .hero-stats{order:6;margin-top:2.2rem}
  .hero-stats div{flex:1 1 100%;padding:.85rem 0 0;border-left:0;
    border-top:1px solid rgba(255,255,255,.14)}
  .hero-stats div:first-child{border-top:0}
  .hero-stats b{font-size:1.1rem}
  .hero-stats span{margin-top:.3rem;font-size:.78rem}
  .hero .btns .btn{width:100%}
}

/* ---------- 7. 티커 ---------- */
.ticker{background:var(--ink);color:#fff;overflow:hidden;padding-block:1.05rem}
.ticker-in{display:flex;width:max-content;animation:tick 34s linear infinite}
.ticker li{
  display:flex;align-items:center;gap:2.6rem;padding-right:2.6rem;
  font-family:var(--fd);font-size:.8rem;font-weight:300;
  letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;
}
.ticker li::after{content:"";width:4px;height:4px;background:var(--gold);border-radius:50%}
@keyframes tick{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ticker-in{animation:none}}

/* ---------- 8. 2단 섹션 헤더 ---------- */
.grid2{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,6vw,90px)}
.grid2-t{align-items:start}
@media (max-width:900px){.grid2{grid-template-columns:1fr;gap:clamp(28px,6vw,44px)}}

/* ---------- 9. 소개 ---------- */
.about-body p+p{margin-top:1.25rem}
.about-body{color:var(--ink2);line-height:2.05;font-size:clamp(.95rem,1.5vw,1.04rem)}
.about-body strong{color:var(--ink);font-weight:600}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:clamp(48px,7vw,84px)}
.pillars li{background:var(--paper);padding:clamp(26px,3.4vw,40px) clamp(20px,2.6vw,34px)}
.sec-tint .pillars li{background:var(--paper2)}
.pillars .num{display:block;font-size:.82rem;letter-spacing:.2em;margin-bottom:1.1rem}
.pillars h3{font-size:clamp(1.02rem,1.8vw,1.2rem);font-weight:600;letter-spacing:-.03em;line-height:1.5}
.pillars p{margin-top:.7rem;font-size:.88rem;color:var(--ink2);line-height:1.85}
@media (max-width:760px){.pillars{grid-template-columns:1fr}}

/* ---------- 10. 강점 ---------- */
.feats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:clamp(44px,6vw,72px)}
.feats li{background:var(--paper);padding:clamp(28px,3.4vw,42px)}
.sec-tint .feats li{background:var(--paper2)}
.feats .ico{width:26px;height:26px;color:var(--gold);margin-bottom:1.3rem}
.feats h3{font-size:1.01rem;font-weight:600;letter-spacing:-.03em}
.feats p{margin-top:.6rem;font-size:.875rem;color:var(--ink2);line-height:1.85}
@media (max-width:900px){.feats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.feats{grid-template-columns:1fr}}

/* ---------- 11. 시술 ---------- */
.svc{margin-top:clamp(48px,7vw,84px);border-top:1px solid var(--line)}
.svc-row{
  display:grid;grid-template-columns:minmax(0,88px) minmax(0,1fr) minmax(0,1.35fr) minmax(0,150px);
  gap:clamp(18px,3vw,42px);align-items:start;
  padding-block:clamp(30px,4vw,48px);border-bottom:1px solid var(--line);
  transition:background .35s var(--ease);
}
a.svc-row:hover{background:var(--paper2)}
.sec-tint a.svc-row:hover{background:#fff}
.svc-row .num{font-size:clamp(1.5rem,3vw,2.15rem);line-height:1}
.svc-en{font-family:var(--fd);font-size:clamp(1.22rem,2.4vw,1.7rem);font-weight:300;letter-spacing:.05em;line-height:1.25}
.svc-kr{margin-top:.5rem;font-size:.88rem;color:var(--ink3);letter-spacing:-.01em}
.svc-desc{color:var(--ink2);font-size:.95rem;line-height:1.95}
.svc-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.95rem}
.svc-tags span{
  font-size:.74rem;color:var(--ink3);border:1px solid var(--line);
  padding:.25rem .65rem;letter-spacing:-.01em;
}
.svc-go{display:flex;justify-content:flex-end;align-items:center;gap:.5em;font-family:var(--fd);font-size:.74rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3);transition:.3s var(--ease)}
.svc-go svg{width:14px;height:14px}
a.svc-row:hover .svc-go{color:var(--gold);gap:.9em}
.svc-tags span{white-space:nowrap}
@media (max-width:1000px){
  /* 자식은 num / svc-t / svc-b / svc-go 네 개다.
     래퍼(.svc-b)를 2열로 보내지 않으면 본문이 56px 칸에 끼어 한 줄에 한 단어씩 떨어진다. */
  .svc-row{grid-template-columns:56px minmax(0,1fr);gap:12px 18px}
  .svc-b{grid-column:2}
  .svc-go{grid-column:2;justify-content:flex-start;margin-top:.5rem}
}
@media (max-width:520px){
  .svc-row{grid-template-columns:44px minmax(0,1fr);gap:10px 14px;padding-block:28px}
  .svc-row .num{font-size:1.25rem}
}

/* ---------- 12. 과정 ---------- */
.flow{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(255,255,255,.16);margin-top:clamp(48px,7vw,80px)}
.flow li{background:var(--ink);padding:clamp(24px,2.6vw,34px) clamp(16px,1.8vw,24px)}
.flow .num{font-family:var(--fd);font-size:.78rem;letter-spacing:.2em;display:block;margin-bottom:1.5rem}
.flow h3{font-size:clamp(.95rem,1.5vw,1.06rem);font-weight:600;letter-spacing:-.03em;line-height:1.5}
.flow p{margin-top:.55rem;font-size:.82rem;color:rgba(255,255,255,.6);line-height:1.8}
@media (max-width:1100px){.flow{grid-template-columns:repeat(3,1fr)}}
@media (max-width:620px){.flow{grid-template-columns:repeat(2,1fr)}}

/* ---------- 13. 디자이너 ---------- */
.dsg{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.6vw,34px);margin-top:clamp(48px,7vw,80px)}
.dsg-card{display:flex;flex-direction:column}
.dsg-ph{
  position:relative;aspect-ratio:3/4;background:var(--paper3);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.9rem;
  border:1px solid var(--line);overflow:hidden;
}
.dsg-ph picture{display:block;width:100%;height:100%}
.dsg-ph img{width:100%;height:100%;object-fit:cover;object-position:50% 22%}
.dsg-ph .mono{font-family:var(--fd);font-size:2.5rem;font-weight:200;letter-spacing:.1em;color:var(--line2)}
.dsg-ph .slot{font-size:.74rem;letter-spacing:.06em;color:var(--ink3)}
.dsg-ph .slot::before{content:"";display:block;width:26px;height:1px;background:var(--line2);margin:0 auto .7rem}
.dsg-role{margin-top:1.15rem;font-family:var(--fd);font-size:.74rem;font-weight:500;letter-spacing:.1em;color:var(--gold)}
.dsg-name{margin-top:.45rem;font-size:1.12rem;font-weight:600;letter-spacing:-.03em}
.dsg-name .tbd{color:var(--ink3);font-weight:300;font-size:.96rem}
.dsg-spec{margin-top:.6rem;font-size:.85rem;color:var(--ink2);line-height:1.8}
@media (max-width:760px){.dsg{grid-template-columns:repeat(2,1fr)}}

/* ---------- 14. 갤러리 ---------- */
.gal{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(10px,1.4vw,18px);margin-top:clamp(48px,7vw,80px)}
.gal figure{position:relative;margin:0;overflow:hidden;background:var(--paper3)}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.gal figure:hover img{transform:scale(1.045)}
.gal figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:1.4rem 1.2rem .95rem;
  background:linear-gradient(to top,rgba(20,18,16,.72),transparent);
  color:#fff;font-size:.8rem;letter-spacing:-.01em;
}
/* 칸 너비·비율은 build.py 의 gallery_cells() 가 인라인 style 로 넣는다 */
@media (max-width:820px){
  .gal{grid-template-columns:repeat(2,1fr)}
  .gal figure{grid-column:span 1!important;aspect-ratio:1/1!important}
  /* .g-a 는 선택자 특이도가 .gal figure 보다 낮아 !important 만으로는 안 이긴다 */
  .gal figure.g-a{grid-column:span 2!important;aspect-ratio:4/3!important}
}

/* ---------- 15. 가격 ---------- */
.price-wrap{margin-top:clamp(44px,6vw,72px)}
.price-grp+.price-grp{margin-top:clamp(36px,4.5vw,56px)}
.price-grp>h3{
  font-family:var(--fd);font-size:.76rem;font-weight:500;letter-spacing:.24em;text-transform:uppercase;
  color:var(--gold);padding-bottom:.9rem;border-bottom:1px solid var(--ink);
}
.price-grp dl{display:grid;grid-template-columns:1fr auto;gap:0}
.price-grp dt,.price-grp dd{padding:1.05rem 0;border-bottom:1px solid var(--line);margin:0}
.price-grp dt{font-size:.98rem;font-weight:500;letter-spacing:-.02em}
.price-grp dt small{display:block;font-size:.8rem;font-weight:400;color:var(--ink3);margin-top:.25rem}
.price-grp dd{font-family:var(--fd);font-size:1rem;font-weight:400;text-align:right;white-space:nowrap;padding-left:1.5rem}
.price-note{margin-top:1.6rem;font-size:.85rem;color:var(--ink3);line-height:1.9}
.price-soon{
  border:1px solid var(--line);padding:clamp(32px,5vw,56px);text-align:center;background:var(--paper);
}
.sec-tint .price-soon{background:#fff}
.price-soon .num{font-family:var(--fd);font-size:.74rem;letter-spacing:.24em;text-transform:uppercase}
.price-soon h3{margin-top:1rem;font-size:clamp(1.15rem,2.2vw,1.45rem);font-weight:300;letter-spacing:-.035em;line-height:1.5}
.price-soon p{margin-top:1rem;color:var(--ink2);font-size:.92rem;line-height:1.95;max-width:34em;margin-inline:auto}
.price-soon .btns{justify-content:center}

/* ---------- 16. 오시는 길 ---------- */
.loc{
  margin-top:clamp(44px,6vw,72px);border:1px solid var(--line);background:var(--paper);
  display:grid;grid-template-columns:1.25fr 1fr;
}
.sec-tint .loc{background:#fff}
.loc-l{padding:clamp(30px,4vw,52px);border-right:1px solid var(--line)}
.loc-r{padding:clamp(30px,4vw,52px);display:flex;flex-direction:column;gap:1.5rem}
.loc-addr{font-size:clamp(1.05rem,2vw,1.32rem);font-weight:500;letter-spacing:-.035em;line-height:1.6}
.loc-sub{margin-top:.7rem;font-size:.88rem;color:var(--ink3)}
.loc-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:1.8rem}
.loc-btns .btn{min-height:50px;font-size:.88rem;padding:0 1.25rem}
.copy-ok{color:var(--gold)}
.loc-list{display:grid;gap:1.15rem}
.loc-list div{display:grid;grid-template-columns:78px 1fr;gap:1rem;align-items:baseline}
.loc-list dt{font-family:var(--fd);font-size:.7rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink3)}
.loc-list dd{margin:0;font-size:.94rem;letter-spacing:-.02em;line-height:1.7}
.loc-list dd a{border-bottom:1px solid var(--line2)}
@media (max-width:860px){
  .loc{grid-template-columns:1fr}
  .loc-l{border-right:0;border-bottom:1px solid var(--line)}
}

/* ---------- 17. FAQ ---------- */
.faq{margin-top:clamp(40px,5vw,64px);border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  display:flex;align-items:flex-start;gap:1rem;padding:1.5rem 0;cursor:pointer;
  font-size:clamp(.98rem,1.7vw,1.1rem);font-weight:500;letter-spacing:-.03em;line-height:1.6;
  list-style:none;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary .q{font-family:var(--fd);color:var(--gold);font-weight:400;flex:none}
.faq summary .pm{margin-left:auto;flex:none;width:16px;height:16px;position:relative;margin-top:.45rem}
.faq summary .pm::before,.faq summary .pm::after{content:"";position:absolute;background:var(--ink3);transition:.3s var(--ease)}
.faq summary .pm::before{left:0;top:7.5px;width:16px;height:1px}
.faq summary .pm::after{left:7.5px;top:0;width:1px;height:16px}
.faq details[open] summary .pm::after{transform:scaleY(0)}
.faq .ans{padding:0 0 1.7rem 2.1rem;color:var(--ink2);font-size:.94rem;line-height:2}
.faq .ans p+p{margin-top:.8rem}

/* ---------- 18. 예약 CTA ---------- */
.cta{background:var(--ink);color:#fff;text-align:center;padding-block:clamp(76px,10vw,140px)}
.cta .stitle{color:#fff}
.cta-phone{
  display:inline-flex;align-items:center;gap:.55em;margin-top:2rem;
  font-family:var(--fd);font-size:clamp(2rem,6vw,3.4rem);font-weight:200;letter-spacing:.01em;
  color:#fff;transition:color .3s var(--ease);
}
.cta-phone:hover{color:var(--gold2)}
.cta-phone svg{width:.62em;height:.62em;color:var(--gold)}
.cta .btns{justify-content:center;margin-top:2.4rem}
.cta-note{margin-top:2rem;font-size:.85rem;color:rgba(255,255,255,.55)}

/* ---------- 19. 관련 페이지 ---------- */
.rel{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:clamp(44px,6vw,72px)}
.rel a{background:var(--paper);padding:clamp(24px,3vw,34px);display:block;transition:background .3s var(--ease)}
.sec-tint .rel a{background:var(--paper2)}
.rel a:hover{background:var(--ink);color:#fff}
.rel h3{font-size:1rem;font-weight:600;letter-spacing:-.03em}
.rel p{margin-top:.55rem;font-size:.85rem;color:var(--ink2);line-height:1.8}
.rel a:hover p{color:rgba(255,255,255,.7)}
@media (max-width:860px){.rel{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.rel{grid-template-columns:1fr}}

/* ---------- 20. 서브 히어로 ---------- */
.shero{background:var(--paper2);padding-top:clamp(128px,15vw,184px);padding-bottom:clamp(56px,7vw,88px);border-bottom:1px solid var(--line)}
.shero h1{margin-top:1.2rem;font-size:clamp(2rem,5.2vw,3.5rem);font-weight:300;letter-spacing:-.05em;line-height:1.14}
.shero h1 b{font-weight:600}
.shero p{margin-top:1.4rem;color:var(--ink2);font-size:clamp(.96rem,1.6vw,1.08rem);line-height:1.95;max-width:42em}
.crumb{display:flex;flex-wrap:wrap;gap:.5em;font-size:.78rem;color:var(--ink3);margin-bottom:1.6rem}
.crumb a:hover{color:var(--ink)}
.crumb span{color:var(--line2)}

/* 본문 산문 */
.prose{color:var(--ink2);font-size:clamp(.96rem,1.5vw,1.05rem);line-height:2.05;max-width:46em}
.prose h3{margin:2.6rem 0 .9rem;color:var(--ink);font-size:clamp(1.08rem,2vw,1.3rem);font-weight:600;letter-spacing:-.035em;line-height:1.5}
.prose h3:first-child{margin-top:0}
.prose p+p{margin-top:1.1rem}
.prose ul{margin-top:1rem;display:grid;gap:.72rem}
.prose li{position:relative;padding-left:1.15rem}
.prose li::before{content:"";position:absolute;left:0;top:.85em;width:5px;height:1px;background:var(--gold)}
.prose strong{color:var(--ink);font-weight:600}
.aside-card{border:1px solid var(--line);padding:clamp(24px,3vw,34px);background:var(--paper);position:sticky;top:98px}
.sec-tint .aside-card{background:#fff}
.aside-card h3{font-family:var(--fd);font-size:.72rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.aside-card .lines{margin-top:1.3rem;display:grid;gap:.95rem}
.aside-card .lines div{display:grid;grid-template-columns:68px 1fr;gap:.9rem;align-items:baseline;font-size:.89rem}
.aside-card .lines dt{color:var(--ink3);font-size:.8rem}
.aside-card .lines dd{margin:0;letter-spacing:-.02em;line-height:1.65}
.aside-card .btns{margin-top:1.6rem;flex-direction:column;gap:8px}
.aside-card .btn{width:100%;min-height:52px}
@media (max-width:900px){.aside-card{position:static}}

/* ---------- 21. 푸터 ---------- */
.ft{background:var(--ink);color:rgba(255,255,255,.62);padding-block:clamp(56px,7vw,86px) 0;font-size:.86rem}
.ft-top{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:clamp(30px,5vw,60px);padding-bottom:clamp(40px,5vw,60px)}
.ft-logo b{font-family:var(--fd);font-size:1.3rem;font-weight:500;letter-spacing:.22em;color:#fff;display:block}
.ft-logo span{display:block;margin-top:.6rem;font-size:.82rem}
.ft-nap{margin-top:1.6rem;display:grid;gap:.5rem;line-height:1.8}
.ft-nap a:hover{color:#fff}
.ft h4{font-family:var(--fd);font-size:.7rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:1.2rem}
.ft-links{display:grid;gap:.68rem}
.ft-links a{transition:color .25s}
.ft-links a:hover{color:#fff}
.ft-bot{
  border-top:1px solid rgba(255,255,255,.14);padding-block:1.6rem;
  display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:space-between;
  font-size:.78rem;color:rgba(255,255,255,.4);
}
@media (max-width:820px){.ft-top{grid-template-columns:1fr 1fr}.ft-logo{grid-column:span 2}}

/* ---------- 22. 모바일 하단바 ---------- */
.mbar{
  position:fixed;left:0;right:0;bottom:0;z-index:80;display:none;
  grid-template-columns:repeat(3,1fr);background:var(--ink);
  border-top:1px solid rgba(255,255,255,.12);
  padding-bottom:env(safe-area-inset-bottom);
}
.mbar a{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;
  padding:.72rem 0;color:#fff;font-size:.74rem;letter-spacing:-.01em;
}
.mbar a+a{border-left:1px solid rgba(255,255,255,.12)}
.mbar a.main{background:var(--gold)}
.mbar svg{width:17px;height:17px}
@media (max-width:860px){.mbar{display:grid}body{padding-bottom:64px}}

/* ---------- 23. 스크롤 등장 ---------- */
.rv{opacity:0;transform:translateY(22px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* ---------- 24. 인쇄 ---------- */
@media print{.hd,.mbar,.ticker,.cta .btns{display:none}body{padding-bottom:0}}

/* ---------- 25. 섹션 제목 뒤 사진 워시 ----------
   원칙 네 가지
   1) 사진이 아니라 질감으로 읽혀야 한다 → 흑백 + 콘트라스트를 크게 낮춘다.
   2) 제목이 있는 쪽 세로 기둥에만 산다. 제목 아래 비어 있는 여백이 사진이 가장 잘 보이는 자리다.
   3) 본문 단 위로는 넘어오지 않는다. 본문 위에 사진이 비치면 바로 지저분해 보인다.
   4) 섹션 맨 위·맨 아래에서는 완전히 사라진다. 경계에 걸치면 배경이미지처럼 싸 보인다.
   사진은 섹션의 --bgimg 로만 지정한다(마크업 추가 없음). */
.sec{--bgr:255,255,255}
.sec-tint{--bgr:247,244,239}
.sec-dark,.cta{--bgr:20,18,16}
.shero{--bgr:247,244,239}

.sec-ph{position:relative;isolation:isolate;overflow:hidden}
.sec-ph::before,.sec-ph::after{
  content:"";position:absolute;top:0;left:0;right:0;
  height:min(100%,660px);pointer-events:none;
}
.ph-full::before,.ph-full::after{height:100%}

.sec-ph::before{
  z-index:-2;
  background:var(--bgimg) 50% 36%/cover no-repeat;
  filter:grayscale(1) sepia(.34) brightness(1.12) contrast(.66);
  opacity:.18;
}
.sec-ph::after{z-index:-1}
/* 어두운 섹션에서는 사진이 빛을 더해야 보인다 */
.sec-dark.sec-ph::before,.cta.sec-ph::before{
  filter:grayscale(1) brightness(1.55) contrast(.46);opacity:.22;
}

/* --vv : 세로 마스크. 위(제목 자리)는 두껍게 덮고, 제목 아래 여백에서 가장 옅다. */
.sec-ph::after{
  --vv:linear-gradient(to bottom,
    rgba(var(--bgr),1) 0%,rgba(var(--bgr),.74) 11%,rgba(var(--bgr),.63) 30%,
    rgba(var(--bgr),.56) 55%,rgba(var(--bgr),.86) 85%,rgba(var(--bgr),1) 100%);
}
/* 왼쪽 기둥 (제목이 왼쪽에 있을 때) */
.ph-l::after{background:
  linear-gradient(to right,rgba(var(--bgr),0) 0%,rgba(var(--bgr),.46) 34%,rgba(var(--bgr),.9) 58%,rgba(var(--bgr),1) 72%),
  var(--vv);}
/* 오른쪽 기둥 */
.ph-r::after{background:
  linear-gradient(to left,rgba(var(--bgr),0) 0%,rgba(var(--bgr),.46) 34%,rgba(var(--bgr),.9) 58%,rgba(var(--bgr),1) 72%),
  var(--vv);}
/* 가운데 정렬 헤더 — 가운데를 덮고 양쪽 가장자리만 남긴다 */
.ph-c::after{background:
  radial-gradient(ellipse 44% 64% at 50% 32%,rgba(var(--bgr),.98) 0%,rgba(var(--bgr),.76) 60%,rgba(var(--bgr),.2) 100%),
  var(--vv);}

/* 모바일: 1단으로 접히면 글씨가 화면 전체를 쓴다. 위쪽에서만 아주 옅게. */
@media (max-width:900px){
  .sec-ph::before{opacity:.13;height:min(100%,400px)}
  .ph-l::after,.ph-r::after,.ph-c::after{
    height:min(100%,400px);
    background:linear-gradient(to bottom,
      rgba(var(--bgr),1) 0%,rgba(var(--bgr),.6) 14%,rgba(var(--bgr),.74) 46%,rgba(var(--bgr),1) 92%);}
  .ph-full::before,.ph-full::after{height:100%}
}
@media print{.sec-ph::before,.sec-ph::after{display:none}}
