:root{
  --linen:#EFE9DF;
  --warmwhite:#FAF7F1;
  --sand:#D8CDBB;
  --stone:#A89F91;
  --champagne:#C9B48F;
  --anthracite:#26241F;
  --anthracite-deep:#201E19;
  --softblack:#191713;
  --ink:#2B2822;
  --ink-soft:#4E4A41;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
/* Global anchor safety net — every link on the site is styled by a component
   class; this catch-all just guarantees that any anchor without one (present
   or future) inherits the surrounding text colour with no underline instead
   of falling back to the browser default (blue / purple-visited / underline).
   The :visited rule is wrapped in :where() to force zero specificity: a plain
   `a:visited{color:...}` would outrank any single-class button colour (e.g.
   .btn-light), so once a patient actually visited a booking link the button
   text would silently swap to the wrong (inherited) colour and wash out —
   this is what caused the low-contrast "Book a Consultation" bug (Mod 56). */
a{color:inherit;text-decoration:none;}
a:where(:visited){color:inherit;}
a:focus-visible{outline:2px solid var(--champagne);outline-offset:3px;border-radius:2px;}
body{
  background:var(--linen);color:var(--ink);
  font-family:'Instrument Sans',sans-serif;
  font-size:17px;line-height:1.65;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  font-kerning:normal;
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1;
  overflow-x:hidden;
}
::selection{background:var(--champagne);color:var(--softblack);}

/* ---------- Typography ---------- */
.display{
  font-family:'Fraunces',serif;font-weight:300;font-optical-sizing:auto;
  letter-spacing:-0.008em;line-height:1.14;
  font-kerning:normal;font-feature-settings:"kern" 1,"liga" 1,"calt" 1;
}
.display em{font-style:italic;font-weight:300;}
.eyebrow{
  font-size:12px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--stone);font-weight:500;
}
.on-dark .eyebrow{color:var(--champagne);}

/* ---------- Signature horizon line ---------- */
.horizon{
  height:1px;background:var(--champagne);border:none;
  width:52px;margin:1.6rem 0 2.2rem;
  transition:width 1.8s cubic-bezier(.2,.6,.2,1);
}
.revealed .horizon{width:100%;max-width:320px;}

/* ---------- Layout ---------- */
.wrap{max-width:1440px;margin:0 auto;padding:0 5vw;}
section{padding:8rem 0;}
@media(min-width:1600px){
  .wrap{max-width:1580px;padding:0 4vw;}
}
@media(max-width:640px){
  section{padding:5.5rem 0;}
  .wrap{padding:0 7.5vw;}
}

/* ---------- Header + mobile menu ---------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:60;
  padding:1.4rem 6vw;
  display:flex;justify-content:space-between;align-items:center;
  transition:background .5s ease, box-shadow .5s ease;
}
header.scrolled{
  background:rgba(239,233,223,.94);
  backdrop-filter:blur(14px);
  box-shadow:0 1px 0 rgba(38,36,31,.07);
}
.wordmark{
  font-family:'Fraunces',serif;font-weight:400;
  font-size:1.1rem;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;z-index:70;position:relative;
  display:inline-flex;align-items:center;
}
.wordmark span{color:var(--stone);}
header.on-hero .wordmark{color:var(--warmwhite);}
header.on-hero .wordmark span{color:rgba(250,247,241,.6);}
header.scrolled .wordmark{color:var(--ink);}
header.scrolled .wordmark span{color:var(--stone);}

.logo-img{
  height:2.5rem;width:auto;display:block;
  filter:none;transition:filter .3s;
}
header.scrolled .logo-img{filter:invert(1);}
body.menu-open .logo-img{filter:none!important;}
@media(max-width:640px){.logo-img{height:2.05rem;}}
nav.desktop{display:flex;gap:1.5rem;align-items:center;}
nav.desktop a{
  color:var(--ink-soft);text-decoration:none;font-size:13.5px;letter-spacing:0.02em;
  transition:opacity .3s;white-space:nowrap;
}
header.on-hero nav.desktop > .mega-item > .mega-trigger{color:rgba(250,247,241,.85);}
header.scrolled nav.desktop > .mega-item > .mega-trigger{color:var(--ink-soft);}
nav.desktop > .mega-item > .mega-trigger:hover{opacity:.65;}
nav.desktop > a:hover{opacity:.65;}

/* ---------- Mega menu ---------- */
:root{--header-h:5.4rem;}
.mega-item{position:relative;display:flex;align-items:center;height:100%;}
.mega-trigger{display:inline-flex;align-items:center;gap:.35rem;}
.mega-caret{
  width:6px;height:6px;border-right:1.4px solid currentColor;border-bottom:1.4px solid currentColor;
  transform:rotate(45deg);margin-top:-3px;opacity:.55;transition:transform .3s ease;flex:none;
}
.mega-item:hover .mega-caret,.mega-item:focus-within .mega-caret{transform:rotate(225deg);margin-top:2px;}
.mega-panel{
  position:fixed;top:var(--header-h);left:0;right:0;z-index:80;
  background:var(--warmwhite);color:var(--ink);
  box-shadow:0 24px 48px rgba(20,14,9,.16);
  border-top:1px solid rgba(38,36,31,.08);
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translateY(-10px);
  transition:opacity .3s ease,transform .35s cubic-bezier(.2,.6,.2,1),visibility .3s;
}
.mega-item:hover .mega-panel,.mega-item:focus-within .mega-panel,.mega-item.is-open .mega-panel{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);
}
.mega-item.is-open .mega-caret{transform:rotate(225deg);margin-top:2px;}
.mega-panel .wrap{
  padding-top:2.4rem;padding-bottom:2.6rem;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,220px));gap:2.4rem 3vw;
}
.mega-col h5{
  font-size:11px;letter-spacing:0.16em;text-transform:uppercase;color:#96803F;
  margin-bottom:.9rem;font-weight:600;
}
.mega-col a{display:block;font-size:13.5px;color:var(--ink-soft);text-decoration:none;padding:.38rem 0;transition:color .2s,padding-left .2s;}
.mega-col a:hover{color:var(--ink);padding-left:.25rem;}
/* A column heading that links to its overview page is still a heading: without
   this, the generic .mega-col a rule above repainted it as body-copy (dark,
   13.5px), so linked headings like "Face" looked nothing like unlinked ones
   like "More". Inherit the h5's gold label styling instead. */
.mega-col h5 a{
  display:inline;padding:0;color:inherit;font-size:inherit;
  letter-spacing:inherit;text-transform:inherit;font-weight:inherit;
}
.mega-col h5 a:hover{color:var(--ink);padding-left:0;}
.mega-col .mega-also{margin-top:1.1rem;padding-top:.9rem;border-top:1px solid rgba(38,36,31,.1);}
@media(prefers-reduced-motion: reduce){
  .mega-panel{transition:opacity .15s ease,visibility .15s;transform:none;}
}
.nav-cta{
  border:1px solid currentColor;color:var(--warmwhite)!important;
  padding:.5rem 1.2rem;border-radius:99px;font-weight:500;
  transition:background .35s,color .35s,border-color .35s;
}
header.scrolled .nav-cta{color:var(--ink)!important;border-color:var(--anthracite);}
.nav-cta:hover{background:var(--anthracite);color:var(--linen)!important;border-color:var(--anthracite);opacity:1!important;}

.nav-voucher{
  font-size:12.5px;letter-spacing:0.08em;text-transform:uppercase;font-weight:500;
  color:var(--champagne)!important;opacity:1!important;
}
header.scrolled .nav-voucher{color:#96803F!important;}
.nav-voucher:hover{opacity:.7!important;}

.lang-item{position:relative;display:flex;align-items:center;height:100%;}
.lang-trigger{
  display:inline-flex;align-items:center;gap:.4rem;background:none;border:none;cursor:pointer;
  font-family:inherit;font-size:13.5px;letter-spacing:0.02em;color:inherit;padding:0;
}
header.on-hero nav.desktop > .lang-item > .lang-trigger{color:rgba(250,247,241,.85);}
header.scrolled nav.desktop > .lang-item > .lang-trigger{color:var(--ink-soft);}
.lang-item:hover .lang-trigger{opacity:.65;}
.lang-item .mega-caret{margin-top:-2px;}
.lang-panel{
  position:absolute;top:100%;right:0;margin-top:1.4rem;min-width:200px;
  background:var(--warmwhite);color:var(--ink);border-radius:8px;
  box-shadow:0 20px 44px rgba(20,14,9,.18);padding:.6rem 0;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-8px);
  transition:opacity .3s ease,transform .3s cubic-bezier(.2,.6,.2,1),visibility .3s;
  z-index:80;
}
.lang-item:hover .lang-panel,.lang-item:focus-within .lang-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);}
.lang-option{display:flex;align-items:center;gap:.6rem;padding:.6rem 1.2rem;font-size:13.5px;color:var(--ink-soft);text-decoration:none;white-space:nowrap;}
.lang-option:hover{background:rgba(38,36,31,.05);color:var(--ink);}
.lang-option.is-active{color:var(--ink);font-weight:500;}
.lang-soon{margin-left:auto;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--stone);}
@media(max-width:1240px){.lang-item{display:none;}}

/* The full desktop nav — six mega triggers plus the voucher, search, language
   and contact controls — only has room without crowding the logo at ~1530px+.
   From 1600 down we run the row at its compact size so it never overlaps the
   logo or pushes the Contact button off-screen; below 1400 we switch to the
   full-featured mobile menu instead of cramming the row. */
@media(max-width:1760px){
  header{padding:1.4rem 3.5vw;}
  nav.desktop{gap:1.3rem;}
}
@media(max-width:1600px){
  header{padding:1.3rem 2.6vw;}
  nav.desktop{gap:.75rem;}
  .mega-trigger,.nav-voucher,.lang-trigger{font-size:10.5px;letter-spacing:0.03em;}
  .nav-cta{padding:.4rem .8rem;font-size:11px;}
}
@media(max-width:1480px){
  header{padding:1.3rem 2.1vw;}
  nav.desktop{gap:.6rem;}
  .mega-trigger,.nav-voucher,.lang-trigger{font-size:10px;}
}
/* Below the desktop-nav breakpoint only the logo and Menu button remain, so
   restore a comfortable gutter for phones and tablets. */
@media(max-width:1000px){header{padding:1.2rem 6vw;}}

/* ---------- Site search (Mod 61) ---------- */
.search-item{position:relative;display:flex;align-items:center;height:100%;}
.search-trigger{
  display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;background:none;border:none;cursor:pointer;padding:0;color:inherit;
}
.search-trigger svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;}
header.on-hero nav.desktop > .search-item > .search-trigger{color:rgba(250,247,241,.85);}
header.scrolled nav.desktop > .search-item > .search-trigger{color:var(--ink-soft);}
.search-item:hover .search-trigger{opacity:.65;}
.search-item.is-open .search-trigger{opacity:1;}
.search-panel{
  position:absolute;top:100%;right:0;margin-top:1.4rem;width:320px;
  background:var(--warmwhite);color:var(--ink);border-radius:8px;
  box-shadow:0 20px 44px rgba(20,14,9,.18);padding:1rem;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-8px);
  transition:opacity .3s ease,transform .3s cubic-bezier(.2,.6,.2,1),visibility .3s;
  z-index:90;
}
.search-item.is-open .search-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);}
.search-input{
  width:100%;padding:.7rem .9rem;border:1px solid rgba(38,36,31,.18);border-radius:6px;
  font-family:'Instrument Sans',sans-serif;font-size:14px;color:var(--ink);background:var(--linen);
  outline:none;transition:border-color .3s;
}
.search-input:focus{border-color:var(--champagne);}
.search-results{max-height:0;overflow:hidden;transition:max-height .25s ease;}
.search-results.has-results{margin-top:.7rem;max-height:340px;overflow-y:auto;}
.search-result{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .55rem;border-radius:5px;text-decoration:none;color:var(--ink);}
.search-result:hover,.search-result:focus-visible{background:rgba(38,36,31,.06);}
.search-result-title{font-size:14px;}
.search-result-cat{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--stone);}
.search-empty{font-size:13px;color:var(--ink-soft);padding:.5rem .55rem;}
@media(max-width:1240px){.search-item{display:none;}}

.mm-search{margin-bottom:1.8rem;}
.mm-search .search-input{background:rgba(239,233,223,.08);color:var(--linen);border-color:rgba(239,233,223,.22);}
.mm-search .search-input::placeholder{color:rgba(239,233,223,.5);}
.mm-search .search-input:focus{border-color:var(--champagne);}
.mm-search .search-result{color:var(--linen);}
.mm-search .search-result:hover,.mm-search .search-result:focus-visible{background:rgba(239,233,223,.06);}
.mm-search .search-result-cat{color:rgba(239,233,223,.5);}
.mm-search .search-empty{color:rgba(239,233,223,.6);}

.menu-btn{
  display:none;z-index:70;position:relative;
  background:none;border:none;cursor:pointer;
  font-size:13px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--warmwhite);padding:.5rem 0;font-family:inherit;font-weight:500;
}
header.scrolled .menu-btn{color:var(--ink);}
body.menu-open .menu-btn{color:var(--linen)!important;}
@media(max-width:1400px){
  nav.desktop{display:none;}
  .menu-btn{display:block;}
}
.mobile-menu{
  position:fixed;inset:0;z-index:65;
  background:var(--anthracite);
  display:flex;flex-direction:column;justify-content:center;
  padding:0 8vw;overflow-y:auto;
  opacity:0;pointer-events:none;transition:opacity .45s ease;
}
body.menu-open .mobile-menu{opacity:1;pointer-events:auto;}
body.menu-open{overflow:hidden;}
.mobile-menu a{
  font-family:'Fraunces',serif;font-weight:300;
  font-size:clamp(1.7rem,6vw,2.4rem);
  color:var(--linen);text-decoration:none;
  padding:.55rem 0;border-bottom:1px solid rgba(201,180,143,.16);
  transition:color .3s,padding-left .4s;
}
.mobile-menu a:hover{color:var(--champagne);padding-left:.8rem;}
.mobile-menu details.mm-group{border-bottom:1px solid rgba(201,180,143,.16);}
.mobile-menu details.mm-group summary{
  font-family:'Fraunces',serif;font-weight:300;font-size:clamp(1.7rem,6vw,2.4rem);
  color:var(--linen);cursor:pointer;list-style:none;
  padding:.55rem 0;display:flex;justify-content:space-between;align-items:center;gap:1rem;
  transition:color .3s;
}
.mobile-menu details.mm-group summary::-webkit-details-marker{display:none;}
.mobile-menu details.mm-group summary::after{
  content:"+";font-family:'Instrument Sans';font-weight:400;font-size:1.6rem;color:var(--champagne);
  transition:transform .3s;flex:none;
}
.mobile-menu details.mm-group[open] summary::after{transform:rotate(45deg);}
.mobile-menu details.mm-group summary:hover{color:var(--champagne);}
.mobile-menu .mm-sub{display:flex;flex-direction:column;padding:.2rem 0 1.2rem 1rem;}
.mobile-menu .mm-sub a{
  font-family:'Instrument Sans',sans-serif;font-weight:400;font-size:1rem;
  color:rgba(239,233,223,.75);border-bottom:none;padding:.5rem 0;
}
.mobile-menu .mm-sub a:hover{color:var(--champagne);padding-left:.5rem;}
.mobile-menu .mm-contact{
  margin-top:2rem;border:none;
  font-family:'Instrument Sans';font-size:14px;letter-spacing:0.16em;
  text-transform:uppercase;color:var(--champagne);
}
.mobile-menu .mm-lang{
  display:flex;gap:1.6rem;margin-top:1.6rem;padding-top:1.6rem;
  border-top:1px solid rgba(201,180,143,.16);
}
.mobile-menu .mm-lang a{
  font-family:'Instrument Sans',sans-serif;font-weight:400;font-size:.95rem;
  color:rgba(239,233,223,.6);border-bottom:none;padding:0;
}
.mobile-menu .mm-lang a.is-active{color:var(--champagne);}

/* ---------- HERO — cinematic frame ---------- */
.hero{
  min-height:100vh;min-height:100svh;padding:0;position:relative;
  display:flex;align-items:flex-end;color:var(--warmwhite);
  background:var(--softblack);
}
.hero-visual{position:absolute;inset:0;overflow:hidden;}

.hero-video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;z-index:1;
}

.hero-visual .grade{
  position:absolute;inset:0;z-index:4;
  background:
    linear-gradient(180deg, rgba(35,24,14,.24) 0%, transparent 30%, transparent 48%, rgba(30,20,12,.32) 76%, rgba(20,14,9,.62) 100%),
    linear-gradient(90deg, rgba(20,14,9,.30) 0%, rgba(20,14,9,.10) 42%, transparent 68%);
}
.hero-visual .vignette{
  position:absolute;inset:0;z-index:5;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 42%, transparent 55%, rgba(20,14,9,.32) 100%);
}
.hero-visual .grain{
  position:absolute;inset:-50%;z-index:6;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 240 240' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainShift 1.6s steps(4) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0);}
  25%{transform:translate(-2%,1%);}
  50%{transform:translate(1%,-2%);}
  75%{transform:translate(-1%,2%);}
  100%{transform:translate(0,0);}
}

.hero-media-label{
  position:absolute;right:2.2rem;bottom:2rem;z-index:7;
  font-size:11px;letter-spacing:0.16em;text-transform:uppercase;
  color:rgba(250,247,241,.45);text-align:right;line-height:1.8;
}
.sound-toggle{
  position:absolute;right:2.2rem;bottom:6.4rem;z-index:9;
  display:inline-flex;align-items:center;gap:.55rem;
  background:rgba(20,14,9,.28);border:1px solid rgba(250,247,241,.35);
  border-radius:99px;padding:.5rem .95rem;
  color:rgba(250,247,241,.85);font-size:11.5px;letter-spacing:0.12em;text-transform:uppercase;
  cursor:pointer;backdrop-filter:blur(6px);transition:border-color .3s,background .3s;
}
.sound-toggle:hover{border-color:rgba(250,247,241,.7);background:rgba(20,14,9,.42);}
.sound-toggle svg{width:14px;height:14px;fill:currentColor;flex:none;}
@media(max-width:640px){.sound-toggle{right:1.3rem;bottom:1.2rem;}}
.hero-inner{position:relative;z-index:8;width:100%;padding:9rem 6vw 7rem;}
.hero-loc{
  font-size:13px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(250,247,241,.75);margin-bottom:2.2rem;
}
.hero h1{
  font-size:clamp(2.5rem,6vw,5.2rem);
  max-width:19ch;color:var(--warmwhite);text-wrap:balance;
  text-shadow:0 1px 24px rgba(25,23,19,.35);
  opacity:0;transform:translateY(18px);
  animation:heroIn 1.6s .3s cubic-bezier(.2,.6,.2,1) forwards;
}
.hero h1 .soft{color:rgba(250,247,241,.78);}
.hero-sub{
  margin-top:2.2rem;max-width:48ch;
  font-size:1.05rem;color:rgba(250,247,241,.9);
  text-shadow:0 1px 16px rgba(25,23,19,.4);
  opacity:0;transform:translateY(18px);
  animation:heroIn 1.6s .7s cubic-bezier(.2,.6,.2,1) forwards;
}
.hero-actions{
  margin-top:2.8rem;display:flex;gap:1rem;flex-wrap:wrap;align-items:center;
  opacity:0;transform:translateY(18px);
  animation:heroIn 1.6s 1.05s cubic-bezier(.2,.6,.2,1) forwards;
}
@keyframes heroIn{to{opacity:1;transform:none;}}
@media(max-width:640px){
  .hero-visual .grade{
    background:
      linear-gradient(180deg, rgba(30,20,12,.32) 0%, rgba(25,17,10,.14) 30%, rgba(25,17,10,.4) 62%, rgba(18,12,8,.7) 100%);
  }
  .hero-inner{padding:8rem 7vw 5.5rem;}
  .hero h1{font-size:clamp(2.2rem,9vw,2.9rem);}
  .hero h1 .soft{color:rgba(250,247,241,.9);}
  .hero-sub{font-size:1rem;color:rgba(250,247,241,.95);}
  .hero-actions .btn{padding:1rem 1.7rem;}
  .hero-media-label{display:none;}
  .scroll-hint{display:none;}
}
.hero-horizon{
  position:absolute;left:0;right:0;bottom:0;height:1px;z-index:4;
  background:linear-gradient(90deg,transparent,var(--champagne) 28%,var(--champagne) 72%,transparent);
}
.scroll-hint{
  font-size:12px;letter-spacing:0.2em;text-transform:uppercase;
  color:rgba(250,247,241,.5);
  display:inline-flex;align-items:center;gap:.9rem;margin-left:1rem;
}
.scroll-hint::after{
  content:"";display:block;width:1px;height:34px;background:rgba(250,247,241,.5);
  animation:drift 3.4s ease-in-out infinite;
}
@keyframes drift{0%,100%{transform:scaleY(.4);transform-origin:top;}50%{transform:scaleY(1);}}

/* ---------- Buttons ---------- */
.btn{
  text-decoration:none;font-size:15px;font-weight:500;letter-spacing:0.02em;
  padding:.95rem 2rem;border-radius:99px;display:inline-block;
  transition:transform .35s cubic-bezier(.2,.6,.2,1),background .3s,color .3s,border-color .3s;
}
.btn:hover{transform:translateY(-2px);}
.btn:active{transform:scale(.98);}
.btn-light{background:var(--warmwhite);color:var(--softblack);}
.btn-light:hover{background:var(--linen);}
.btn-outline-light{border:1px solid rgba(250,247,241,.55);color:var(--warmwhite);}
.btn-outline-light:hover{border-color:var(--warmwhite);}
.btn-primary{background:var(--anthracite);color:var(--linen);}
.btn-primary:hover{background:var(--softblack);}
.btn-ghost{border:1px solid rgba(38,36,31,.6);color:var(--ink);}
.btn-ghost:hover{border-color:var(--anthracite);background:rgba(38,36,31,.04);}
.btn:focus-visible,.nav-cta:focus-visible,.book-cta:focus-visible,.wa-float:focus-visible{
  outline:2px solid var(--champagne);outline-offset:3px;
}

/* ---------- Photo placeholders ---------- */
.ph{
  position:relative;overflow:hidden;border-radius:2px;
  background:linear-gradient(155deg,var(--sand) 0%,var(--stone) 120%);
}
.ph.tall{aspect-ratio:3/4;}
.ph.wide{aspect-ratio:16/9;}
.ph.square{aspect-ratio:1/1;}
.ph.portrait{aspect-ratio:4/5;background:linear-gradient(170deg,#CEC3AF 0%,#A99D87 100%);}
.ph.sea{background:linear-gradient(180deg,#CFC5B2 0%,#B7AB96 60%,#9E937E 60.2%,#8D8270 100%);}
.ph.room{background:linear-gradient(200deg,#E2D8C6 0%,#BEB29B 70%,#A2937B 100%);}
.ph.dusk{background:linear-gradient(200deg,#8A7F6B 0%,#5E5646 60%,#403A2F 100%);}
.ph-label{
  position:absolute;left:1.1rem;bottom:1rem;right:1.1rem;
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(250,247,241,.85);line-height:1.7;
}
.ph::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 90% at 20% 0%,rgba(250,247,241,.3),transparent 55%);
}

.ph img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;z-index:1;
  filter:saturate(.95) contrast(1.0) brightness(1.01);
}
.ph.has-img::before{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    radial-gradient(110% 80% at 30% 0%, rgba(214,196,162,.10), transparent 60%),
    linear-gradient(180deg, rgba(239,233,223,.05), rgba(239,233,223,.05));
  mix-blend-mode:lighten;
}
.ph.has-img::after{
  background:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.05'/%3E%3C/svg%3E"),
    linear-gradient(180deg, rgba(38,36,31,0) 68%, rgba(32,30,25,.16) 100%);
  z-index:3;
}
.ph.has-img .ph-label{display:none;}
.ph.has-img{background:var(--anthracite);}

.mood-clinic img{filter:saturate(.95) contrast(1.0) brightness(1.02);}
.mood-intl img{filter:saturate(.97) contrast(1.06) brightness(.99);}
.mood-intl.has-img::after{
  background:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.05'/%3E%3C/svg%3E"),
    radial-gradient(120% 100% at 50% 40%, transparent 60%, rgba(25,23,19,.22) 100%);
  z-index:3;
}
img[data-crop="doc1"]{object-position:50% 24%;}
img[data-crop="doc2"]{object-position:50% 18%;}
img[data-crop="doc3"]{object-position:50% 28%;}
img[data-crop="doc4"]{object-position:50% 22%;}
img[data-crop="doc5"]{object-position:50% 20%;}
img[data-crop="doc6"]{object-position:50% 22%;}
img[data-crop="doc7"]{object-position:50% 20%;}
img[data-crop="doc8"]{object-position:50% 22%;}
img[data-crop="doc9"]{object-position:50% 20%;}
img[data-crop="arrival"]{object-position:50% 55%;}
img[data-crop="surgery"]{object-position:55% 40%;}
img[data-crop="pool"]{object-position:50% 60%;}

.rec-item .tag, .phase .p-label, .j-entry .kind{color:#A8905F;}
.f-treatments span{color:#45413A;border-color:rgba(38,36,31,.3);}

@media(max-width:640px){
  body{font-size:17.5px;}
  .ph-label{font-size:12px;letter-spacing:0.1em;text-shadow:0 1px 8px rgba(25,23,19,.6);}
  .ph.tall{aspect-ratio:4/5;}
  .eyebrow{color:#8A8071;}
  .hero-sub, .arrival p, .f-text .f-lede, .recovery-head p,
  .intl-head p, .team-head p, .journal .lede{font-size:1.02rem;}
  .rec-item p, .j-step p{font-size:.98rem;}
  .rec-item .tag, .phase .p-label{color:#96803F;}
  .btn{padding:1rem 1.9rem;font-size:15.5px;}
  .cta-row .btn{min-width:70%;text-align:center;}
}

.arrival{padding-top:10rem;}
.arrival-intro{max-width:70ch;}
.arrival h2{font-size:clamp(1.9rem,3.2vw,3.2rem);max-width:20ch;}
.arrival p{margin-top:1.7rem;color:var(--ink-soft);max-width:46ch;}
.arrival-video{
  margin-top:3.5rem;position:relative;overflow:hidden;border-radius:4px;
  aspect-ratio:16/9;background:var(--anthracite);
}
.arrival-video-el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
@media(max-width:640px){.arrival-video{aspect-ratio:4/5;margin-top:2.6rem;}}

.medicine{background:var(--warmwhite);}
.med-head{max-width:56ch;margin-bottom:5rem;}
.med-head h2{font-size:clamp(1.9rem,3vw,3rem);}
.med-head p{margin-top:1.4rem;color:var(--ink-soft);}
.feature{
  display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:center;
  padding:4.5rem 0;
}
.feature + .feature{border-top:1px solid rgba(38,36,31,.09);}
.feature.flip .f-text{order:2;}
.feature.flip .f-media{order:1;}
.f-text h3{
  font-family:'Fraunces',serif;font-weight:340;
  font-size:clamp(1.7rem,3vw,2.4rem);letter-spacing:-0.01em;
}
.f-text .f-lede{margin-top:1.3rem;color:var(--ink-soft);max-width:44ch;}
.f-treatments{
  margin-top:2.4rem;display:flex;flex-wrap:wrap;gap:.65rem;
}
.f-treatments span{
  font-size:12.5px;letter-spacing:0.05em;color:var(--ink-soft);
  border:1px solid rgba(38,36,31,.22);border-radius:99px;
  padding:.4rem 1rem;white-space:nowrap;
}
.f-link{
  display:inline-block;margin-top:2.2rem;
  font-size:13px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;border-bottom:1px solid var(--champagne);
  padding-bottom:.3rem;transition:color .3s;
}
.f-link:hover{color:var(--stone);}
.ba-note{
  margin-top:3rem;padding-top:1.6rem;border-top:1px dashed rgba(38,36,31,.22);
  font-size:.85rem;color:var(--stone);max-width:60ch;
}
@media(max-width:900px){
  .feature{grid-template-columns:1fr;gap:2.4rem;}
  .feature.flip .f-text{order:1;}
  .feature.flip .f-media{order:2;}
}

.recovery-head{max-width:56ch;margin-bottom:3.5rem;}
.recovery-head h2{font-size:clamp(1.9rem,3.2vw,3.2rem);}
.recovery-head p{margin-top:1.6rem;color:var(--ink-soft);max-width:50ch;}
.rec-phases{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  border-top:1px solid rgba(38,36,31,.2);border-bottom:1px solid rgba(38,36,31,.2);
  margin-bottom:4rem;
}
.phase{
  padding:2.4rem 2rem;
  border-right:1px solid rgba(38,36,31,.12);
  text-align:center;
  display:flex;flex-direction:column;align-items:center;
}
.phase:last-child{border-right:none;}
.phase h4{font-weight:500;font-size:.98rem;}
.phase p{font-size:.88rem;color:var(--ink-soft);margin-top:.5rem;max-width:28ch;}
.phase .p-label{
  font-size:11px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--champagne);display:block;margin-bottom:.9rem;
}
@media(max-width:820px){
  .rec-phases{grid-template-columns:1fr;}
  .phase{border-right:none;border-bottom:1px solid rgba(38,36,31,.12);}
  .phase:last-child{border-bottom:none;}
}
.recovery-body{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:stretch;}
.recovery-image{display:flex;}
.recovery-image .ph{flex:1;width:100%;min-height:480px;border-radius:4px;}
.rec-list{border-top:1px solid rgba(38,36,31,.16);}
.rec-item{
  padding:1.5rem 0;border-bottom:1px solid rgba(38,36,31,.16);
  display:grid;grid-template-columns:8rem 1fr;gap:1.6rem;align-items:baseline;
}
.rec-item .tag{
  font-size:11px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--champagne);
}
.rec-item h4{font-weight:500;font-size:1.02rem;}
.rec-item p{font-size:.92rem;color:var(--ink-soft);margin-top:.3rem;max-width:44ch;}
@media(max-width:900px){.recovery-body{grid-template-columns:1fr;gap:3rem;}}

.intl{background:var(--anthracite);color:var(--linen);position:relative;overflow:hidden;}
.intl::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(90% 60% at 85% 0%, rgba(201,180,143,.10), transparent 60%),
    radial-gradient(70% 50% at 0% 100%, rgba(201,180,143,.06), transparent 60%);
}
.intl .wrap{position:relative;}
.intl-head{max-width:58ch;margin-bottom:1.6rem;}
.intl-head h2{font-size:clamp(2rem,3.6vw,3.4rem);color:var(--warmwhite);}
.intl-head p{margin-top:1.5rem;color:rgba(239,233,223,.8);max-width:50ch;font-size:1.08rem;}
.intl-note{
  max-width:58ch;margin-bottom:4rem;padding:1.1rem 1.4rem;
  border-left:2px solid var(--champagne);
  font-size:1.06rem;color:rgba(239,233,223,.88);
}
.stay-blocks{display:grid;grid-template-columns:1fr 1fr;gap:4vw;margin-bottom:4.5rem;}
.stay-block{display:block;text-decoration:none;color:inherit;transition:transform .4s cubic-bezier(.2,.6,.2,1);}
.stay-block:hover{transform:translateY(-4px);}
.stay-gallery{
  display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-template-rows:1fr 1fr;
  gap:.6rem;height:380px;
}
.stay-hero{grid-row:1 / 3;}
.stay-gallery .ph{aspect-ratio:auto;height:100%;min-height:0;}
.stay-info{padding-top:1.8rem;}
.stay-desc{margin-top:.9rem;color:rgba(239,233,223,.8);font-size:1rem;line-height:1.6;max-width:52ch;}
.stay-link{
  display:inline-block;margin-top:1.3rem;
  font-size:13px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warmwhite);
  border-bottom:1px solid var(--champagne);padding-bottom:.3rem;transition:color .3s;
}
.stay-block:hover .stay-link{color:var(--champagne);}
@media(max-width:900px){
  .stay-blocks{grid-template-columns:1fr;gap:3.4rem;}
  .stay-gallery{height:340px;}
}
@media(max-width:560px){
  .stay-gallery{grid-template-columns:1fr 1fr;grid-template-rows:180px 110px 110px;height:auto;}
  .stay-hero{grid-row:1;grid-column:1 / 3;}
}
.journey-label{font-size:13px;letter-spacing:0.16em;text-transform:uppercase;color:var(--champagne);margin-bottom:1.6rem;display:block;}
.journey{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  border-top:1px solid rgba(201,180,143,.28);
}
.j-step{
  padding:2.6rem 2.2rem;
  border-right:1px solid rgba(201,180,143,.16);
  text-align:center;
  display:flex;flex-direction:column;align-items:center;
}
.j-step:nth-child(4n){border-right:none;}
.j-step .num{
  font-family:'Fraunces',serif;font-weight:300;font-style:italic;
  font-size:1.15rem;color:var(--champagne);
}
.j-step h4{margin-top:.85rem;font-weight:500;font-size:1.1rem;color:var(--warmwhite);letter-spacing:.01em;}
.j-step p{margin-top:.5rem;font-size:.98rem;color:rgba(239,233,223,.72);max-width:26ch;}
.j-step.optional h4::after{
  content:"Optional";
  font-family:'Instrument Sans';font-style:normal;
  font-size:10px;letter-spacing:0.16em;text-transform:uppercase;
  color:var(--champagne);border:1px solid rgba(201,180,143,.4);
  border-radius:99px;padding:.15rem .55rem;margin-left:.7rem;vertical-align:middle;
}
@media(max-width:1000px){
  .journey{grid-template-columns:repeat(2,1fr);}
  .j-step:nth-child(2n){border-right:none;}
  .j-step{border-bottom:1px solid rgba(201,180,143,.16);}
}
@media(max-width:560px){.journey{grid-template-columns:1fr;}.j-step{border-right:none;}}
.intl-trust{
  margin-top:4rem;padding-top:3rem;
  border-top:1px solid rgba(201,180,143,.2);
  display:grid;grid-template-columns:1.4fr 1fr;gap:5vw;align-items:center;
}
.intl-trust p.trust-line{
  font-family:'Fraunces',serif;font-weight:300;font-style:italic;
  font-size:clamp(1.15rem,2.2vw,1.5rem);line-height:1.55;
  color:var(--warmwhite);
}
.intl-trust .cta-side{text-align:right;}
.intl-trust-cta{justify-content:flex-end;margin-top:0;}
@media(max-width:820px){
  .intl-trust{grid-template-columns:1fr;gap:2rem;}
  .intl-trust .cta-side{text-align:left;}
  .intl-trust-cta{justify-content:flex-start;}
}

.reviews{background:var(--warmwhite);}
.rev-head{text-align:center;max-width:46ch;margin:0 auto 3.5rem;}
.rev-head h2{font-size:clamp(1.9rem,3vw,3rem);}

.rev-ratings{display:flex;flex-wrap:wrap;justify-content:center;gap:2rem;}
.rev-rating-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  width:260px;max-width:100%;padding:2.2rem 1.6rem;
  border:1px solid rgba(38,36,31,.16);border-radius:10px;
  text-decoration:none;color:inherit;transition:border-color .3s,transform .3s;
}
.rev-rating-card:hover{border-color:var(--anthracite);transform:translateY(-3px);}
.rev-platform{font-size:12px;letter-spacing:0.14em;text-transform:uppercase;color:var(--stone);}
.rev-stars{margin-top:.7rem;color:var(--champagne);font-size:1.05rem;letter-spacing:0.15em;}
.rev-rating-num{
  display:block;margin-top:.7rem;font-family:'Fraunces',serif;font-weight:340;font-size:1.6rem;
  color:var(--ink);line-height:1.25;overflow-wrap:anywhere;word-break:break-word;
}
.rev-rating-count{margin-top:.4rem;font-size:.85rem;color:var(--ink-soft);overflow-wrap:break-word;}

/* Slow, ambient testimonial marquee — not a commercial slider: no arrows, no dots */
.rev-carousel{
  margin-top:4rem;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
}
.rev-track{display:flex;gap:1.5rem;width:max-content;animation:revScroll 48s linear infinite;}
.rev-carousel:hover .rev-track{animation-play-state:paused;}
@keyframes revScroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.rev-card{
  flex:none;width:320px;padding:2rem;border:1px solid rgba(38,36,31,.14);
  border-radius:10px;background:var(--linen);
}
.rev-card .stars{color:var(--champagne);font-size:.95rem;letter-spacing:0.12em;}
.rev-card blockquote{
  margin-top:1.1rem;font-family:'Fraunces',serif;font-weight:300;font-style:italic;
  font-size:1.1rem;line-height:1.5;color:var(--ink);
}
.rev-card .attrib{margin-top:1.3rem;font-size:.85rem;color:var(--stone);letter-spacing:0.02em;}

.rev-note{text-align:center;margin-top:2.6rem;font-size:.92rem;color:var(--stone);max-width:52ch;margin-left:auto;margin-right:auto;}
.rev-foot{text-align:center;margin-top:2.4rem;display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;}
@media(max-width:640px){
  .rev-card{width:260px;padding:1.6rem;}
  .rev-card blockquote{font-size:1.02rem;}
}
@media(prefers-reduced-motion:reduce){.rev-track{animation:none;}}

.team{background:var(--linen);}
.team-head{max-width:54ch;margin-bottom:4rem;}
.team-head h2{font-size:clamp(1.9rem,3vw,3rem);}
.team-head p{margin-top:1.4rem;color:var(--ink-soft);}
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3rem 3vw;}
.doc{text-decoration:none;color:inherit;display:block;}
.doc .name{font-family:'Fraunces',serif;font-weight:340;font-size:1.3rem;margin-top:1.3rem;}
.doc .role{font-size:.86rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--stone);margin-top:.35rem;}
.doc .line{font-size:.95rem;color:var(--ink-soft);margin-top:.9rem;max-width:42ch;line-height:1.6;}
@media(max-width:860px){
  .team-grid{grid-template-columns:1fr 1fr;gap:2.6rem 6vw;}
}
@media(max-width:560px){
  .team-grid{grid-template-columns:1fr;max-width:420px;margin:0 auto;}
}

.modern{
  background:
    radial-gradient(110% 80% at 100% 0%, rgba(201,180,143,.09), transparent 55%),
    radial-gradient(80% 60% at 0% 100%, rgba(168,159,145,.07), transparent 55%),
    linear-gradient(180deg, var(--anthracite-deep), var(--softblack));
  color:var(--linen);position:relative;overflow:hidden;
}
.modern::after{
  content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;
  background:linear-gradient(180deg,transparent,rgba(201,180,143,.25),transparent);
  pointer-events:none;
}
.modern .wrap{display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:start;position:relative;z-index:2;}
.modern h2{font-size:clamp(2rem,3.6vw,3.5rem);color:var(--warmwhite);max-width:14ch;}
.modern .lede{margin-top:1.7rem;color:rgba(239,233,223,.78);max-width:42ch;font-size:1.06rem;line-height:1.7;}
.modern-points{display:flex;flex-direction:column;border-top:1px solid rgba(201,180,143,.22);}
.mp{padding:2rem 0;border-bottom:1px solid rgba(201,180,143,.14);}
.mp h4{font-weight:500;font-size:1.08rem;color:var(--warmwhite);display:flex;align-items:baseline;gap:1rem;}
.mp h4::before{content:"";width:22px;height:1px;background:var(--champagne);flex:none;transform:translateY(-4px);}
.mp p{margin-top:.7rem;font-size:1.02rem;line-height:1.65;color:rgba(239,233,223,.75);max-width:46ch;padding-left:calc(22px + 1rem);}
@media(max-width:900px){.modern .wrap{grid-template-columns:1fr;gap:3rem;}.modern::after{display:none;}}

.journal .wrap{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:start;}
.journal h2{font-size:clamp(1.9rem,3vw,3rem);max-width:16ch;}
.journal .lede{margin-top:1.6rem;color:var(--ink-soft);max-width:42ch;}
.j-entries{border-top:1px solid rgba(38,36,31,.16);}
.j-entry{
  display:grid;grid-template-columns:7.5rem 1fr;gap:1.8rem;align-items:baseline;
  padding:1.7rem 0;border-bottom:1px solid rgba(38,36,31,.16);
  text-decoration:none;color:inherit;transition:padding-left .45s cubic-bezier(.2,.6,.2,1);
}
.j-entry:hover{padding-left:1rem;}
.j-entry .kind{
  font-size:11px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--champagne);
}
.j-entry h4{font-family:'Fraunces',serif;font-weight:340;font-size:1.25rem;}
.j-entry p{font-size:.9rem;color:var(--ink-soft);margin-top:.35rem;}
.journal-details{
  display:grid;grid-template-columns:1.2fr .8fr;gap:1rem;
  margin-top:2.8rem;max-width:560px;
}
.journal-details .jd-large{grid-row:1 / 3;aspect-ratio:auto;height:100%;min-height:300px;}
@media(max-width:480px){
  .journal-details{grid-template-columns:1fr 1fr;}
  .journal-details .jd-large{grid-row:auto;grid-column:span 2;height:auto;aspect-ratio:16/9;min-height:0;}
}
@media(max-width:900px){.journal .wrap{grid-template-columns:1fr;gap:2.6rem;}}

/* ---------- FAQ ---------- */
.faq{background:var(--warmwhite);}
.faq-head{max-width:54ch;margin-bottom:3.5rem;}
.faq-head h2{font-size:clamp(1.9rem,3vw,3rem);}
.faq-head p{margin-top:1.4rem;color:var(--ink-soft);}
.faq-list{border-top:1px solid rgba(38,36,31,.16);max-width:880px;}
.faq-item{border-bottom:1px solid rgba(38,36,31,.16);}
.faq-item summary{
  list-style:none;cursor:pointer;padding:1.5rem 0;
  display:flex;justify-content:space-between;align-items:center;gap:1.5rem;
  font-family:'Fraunces',serif;font-weight:340;font-size:1.08rem;color:var(--ink);
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:"+";font-family:'Instrument Sans';font-weight:400;font-size:1.4rem;color:var(--champagne);
  flex:none;transition:transform .3s;
}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item .faq-a{padding:0 0 1.7rem;max-width:60ch;color:var(--ink-soft);font-size:.98rem;}
.faq-item .faq-a a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--champagne);text-underline-offset:3px;}
.faq-item .faq-a a:hover{color:var(--stone);}

/* ---------- Contact form ---------- */
.contact-form{
  margin-top:3.5rem;padding-top:3rem;border-top:1px solid rgba(239,233,223,.16);
  max-width:680px;margin-left:auto;margin-right:auto;text-align:left;
}
.contact-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.contact-form label{
  display:block;font-size:11.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(239,233,223,.6);margin-bottom:.5rem;
}
.contact-form input, .contact-form select, .contact-form textarea{
  width:100%;background:rgba(250,247,241,.06);border:1px solid rgba(239,233,223,.22);
  border-radius:6px;padding:.8rem 1rem;color:var(--warmwhite);font-family:inherit;font-size:.95rem;
  margin-bottom:1.2rem;transition:border-color .3s;
}
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus{
  outline:none;border-color:var(--champagne);
}
.contact-form select option{color:var(--ink);}
.contact-form textarea{min-height:110px;resize:vertical;}
.contact-form .consent{
  display:flex;gap:.7rem;align-items:flex-start;margin-bottom:1.6rem;
}
.contact-form .consent input{width:auto;margin:0.2rem 0 0;flex:none;}
.contact-form .consent label{
  text-transform:none;letter-spacing:0;font-size:.86rem;color:rgba(239,233,223,.65);margin:0;
}
.form-confirm{
  display:none;padding:1.1rem 1.3rem;border:1px solid var(--champagne);border-radius:6px;
  color:var(--warmwhite);font-size:.95rem;margin-top:1rem;
}
.form-confirm.show{display:block;}
.form-confirm.is-error{border-color:#c0564b;color:#f3d9d4;background:rgba(192,86,75,.12);}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
/* Legal pages (Legal Notice / Privacy / Cookies) — readable prose column */
.legal-prose{max-width:78ch;margin:0 auto;}
.legal-prose h2{font-family:'Fraunces',serif;font-weight:400;font-size:clamp(1.3rem,2.2vw,1.6rem);margin:2.6rem 0 .7rem;color:var(--ink);}
.legal-prose h3{font-size:1.02rem;letter-spacing:.01em;margin:1.5rem 0 .4rem;color:var(--ink);}
.legal-prose p,.legal-prose li{color:var(--ink-soft);line-height:1.75;font-size:1rem;}
.legal-prose p{margin:0 0 1rem;}
.legal-prose ul{margin:.4rem 0 1.2rem 1.2rem;}
.legal-prose li{margin-bottom:.4rem;}
.legal-prose a{color:#96803F;}
.legal-prose .legal-updated{font-size:.9rem;color:var(--stone);margin-bottom:2rem;}
.legal-prose table.legal-id{border-collapse:collapse;margin:1.2rem 0 1.6rem;width:100%;}
.legal-prose table.legal-id td{border:1px solid rgba(38,36,31,.12);padding:.6rem .85rem;vertical-align:top;font-size:.97rem;}
.legal-prose table.legal-id td:first-child{font-weight:500;color:var(--ink);width:38%;}
.foot-bottom a{color:inherit;text-decoration:none;opacity:.85;}
.foot-bottom a:hover{opacity:1;text-decoration:underline;}
@media(max-width:600px){.contact-form .form-row{grid-template-columns:1fr;}}

/* ---------- Map ---------- */
.map-block{margin-top:3.5rem;padding-top:3rem;border-top:1px solid rgba(239,233,223,.16);}
.map-wrap{position:relative;}
.map-frame{
  aspect-ratio:16/8;width:100%;border:0;border-radius:6px;filter:grayscale(.15) contrast(1.02);
}
.map-photo-card{
  position:absolute;left:1.8rem;bottom:1.8rem;z-index:5;
  width:200px;border:none;padding:0;cursor:pointer;border-radius:8px;overflow:hidden;
  box-shadow:0 14px 34px rgba(20,14,9,.4);background:var(--anthracite);
  transition:transform .4s cubic-bezier(.2,.6,.2,1),width .45s cubic-bezier(.2,.6,.2,1);
}
.map-photo-card img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;filter:saturate(.95) contrast(1.02);}
.map-photo-label{
  position:absolute;left:0;right:0;bottom:0;padding:.7rem .9rem;text-align:left;
  font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warmwhite);
  background:linear-gradient(180deg,transparent,rgba(20,14,9,.8));
}
.map-photo-card:hover{transform:translateY(-3px);}
.map-photo-card.is-expanded{width:380px;}
@media(max-width:640px){
  .map-block .map-wrap{display:flex;flex-direction:column;}
  .map-photo-card{position:static;width:100%;margin-bottom:1rem;order:-1;transform:none!important;}
  .map-photo-card img{aspect-ratio:16/9;}
  .map-photo-card.is-expanded{width:100%;}
}
.map-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.4rem;justify-content:center;}
.reg-note{margin-top:1.4rem;font-size:.86rem;color:rgba(239,233,223,.55);max-width:52ch;margin-left:auto;margin-right:auto;text-align:center;}

.visit{background:var(--anthracite);color:var(--linen);text-align:center;position:relative;overflow:hidden;}
.visit::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(80% 60% at 50% 120%, rgba(201,180,143,.12), transparent 60%);
  pointer-events:none;
}
.visit .wrap{position:relative;}
.visit h2{font-size:clamp(2.2rem,4.2vw,4rem);color:var(--warmwhite);}
.visit>.wrap>p{margin:1.6rem auto 0;color:rgba(239,233,223,.75);max-width:46ch;}
.visit .horizon{margin:2.6rem auto;}
.cta-row{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-top:2.6rem;}
.visit-note{margin-top:2.2rem;font-size:13px;color:rgba(239,233,223,.5);letter-spacing:0.04em;}

/* ---------- Doctoralia booking widget ---------- */
/* Sits on a light ground on purpose: the widget renders its own white card with
   a Doctoralia-green header, which fights the dark #visit section next to it. */
.booking-widget{background:var(--warmwhite);text-align:center;}
.booking-widget .horizon{margin:1.4rem auto 2rem;}
.bw-lede{max-width:58ch;margin:0 auto;color:var(--ink-soft);}
.bw-frame{
  max-width:860px;margin:3rem auto 0;min-height:460px;text-align:center;
}
/* Until the script swaps it for an iframe, the anchor is the fallback CTA —
   so a visitor with JS off, or if Doctoralia is down, still gets a live link. */
.bw-frame > a{
  display:inline-block;padding:1rem 1.7rem;font-size:14px;
  border:1px solid rgba(38,36,31,.6);border-radius:99px;color:var(--ink);
}
.bw-frame iframe{display:block;width:100%;border:0;}
@media(max-width:640px){
  .bw-frame{min-height:520px;margin-top:2rem;}
}

/* ---------- Trust badges ---------- */
.badge-row{
  display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center;margin-top:2.4rem;
}
.badge{
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  border:1px solid rgba(239,233,223,.3);border-radius:99px;
  padding:.5rem 1.1rem;color:rgba(239,233,223,.75);
}
.reviews .badge-row{margin-top:0;}
.reviews .badge{border-color:rgba(38,36,31,.22);color:var(--ink-soft);}

footer{background:var(--softblack);color:rgba(239,233,223,.72);padding:5rem 0 3rem;}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:4vw;}
footer h5{
  font-size:12px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--champagne);margin-bottom:1.1rem;font-weight:500;
}
footer p, footer a{font-size:.92rem;color:rgba(239,233,223,.72);text-decoration:none;line-height:1.9;display:block;}
footer a:hover{color:var(--warmwhite);}
.foot-mark{display:inline-block;line-height:0;}
.foot-logo-img{height:2.1rem;width:auto;display:block;}
.foot-social{display:flex;gap:.9rem;margin-top:1.2rem;}
.foot-social a{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid rgba(239,233,223,.22);border-radius:99px;}
.foot-social svg{width:15px;height:15px;fill:rgba(239,233,223,.75);}
.foot-social a:hover{border-color:var(--champagne);}
.foot-legal{margin-top:1.6rem;font-size:.82rem;color:rgba(239,233,223,.5);line-height:1.7;max-width:32ch;}
.foot-bottom{
  margin-top:4rem;padding-top:1.6rem;border-top:1px solid rgba(239,233,223,.12);
  font-size:12px;color:rgba(239,233,223,.42);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;
}
@media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr;gap:2.5rem;}}

/* ---------- Sticky CTA + floating WhatsApp ---------- */
.book-cta{
  position:fixed;left:1.6rem;bottom:1.6rem;z-index:55;
  background:var(--anthracite);color:var(--linen);text-decoration:none;
  font-size:13px;letter-spacing:0.06em;font-weight:500;
  padding:.85rem 1.5rem;border-radius:99px;box-shadow:0 8px 26px rgba(20,14,9,.28);
  display:inline-flex;align-items:center;gap:.5rem;transition:background .3s,transform .3s;
}
.book-cta:hover{background:var(--softblack);}
.wa-float{
  position:fixed;right:1.6rem;bottom:1.6rem;z-index:55;
  width:52px;height:52px;border-radius:50%;
  background:#25D366;color:#FAF7F1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 26px rgba(20,14,9,.28);text-decoration:none;
  transition:transform .3s,background .3s;
}
.wa-float:hover{transform:scale(1.06);background:#20BD5A;}
.wa-float svg{width:24px;height:24px;fill:currentColor;}
@media(max-width:640px){
  .book-cta{
    left:1rem;right:1rem;bottom:1rem;width:auto;justify-content:center;
    padding:.95rem 1rem;text-align:center;
  }
  .wa-float{left:auto;right:1rem;bottom:5.2rem;width:48px;height:48px;}
}

.reveal{opacity:0;transform:translateY(26px);transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.6,.2,1);}
.reveal.revealed{opacity:1;transform:none;}
.reveal-stagger.revealed > *{transition-delay:calc(var(--stagger-i, 0) * 90ms);}

/* Gentle image reveal on scroll — a slow, subtle settle-in, never a zoom effect */
.reveal .ph img{transform:scale(1.06);transition:transform 1.8s cubic-bezier(.2,.6,.2,1);}
.reveal.revealed .ph img{transform:scale(1);}

/* Subtle hover life on cards — a soft lift, no bounce */
.doc{transition:transform .5s cubic-bezier(.2,.6,.2,1);}
.doc:hover{transform:translateY(-4px);}
.doc:hover .ph img{transform:scale(1.035);transition:transform .7s cubic-bezier(.2,.6,.2,1);}
.feature:hover .f-media .ph img{transform:scale(1.03);transition:transform .8s cubic-bezier(.2,.6,.2,1);}

[data-parallax]{will-change:transform;}

@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none;}
  .scroll-hint::after{animation:none;}
  .hero-visual .grain{animation:none;}
  .hero h1,.hero-sub,.hero-actions{animation:none;opacity:1;transform:none;}
  html{scroll-behavior:auto;}
  [data-parallax]{transform:none!important;}
  .ph img,.btn,.doc{transition:none!important;transform:none!important;}
}

/* ---------- Treatments overview page ---------- */
.tx-hero{padding:11rem 0 4rem;}
.tx-jumplinks{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.6rem;}
.tx-jumplinks a{
  font-size:12.5px;letter-spacing:0.05em;color:var(--ink-soft);text-decoration:none;
  border:1px solid rgba(38,36,31,.22);border-radius:99px;padding:.55rem 1.2rem;
  transition:border-color .3s,color .3s;
}
.tx-jumplinks a:hover{border-color:var(--anthracite);color:var(--ink);}
.tx-group{padding:6rem 0;scroll-margin-top:6rem;}
.tx-group.bg-warm{background:var(--warmwhite);}
.tx-group.bg-linen{background:var(--linen);}
.tx-group h2{max-width:22ch;}
.tx-categories{display:grid;grid-template-columns:1fr 1fr;gap:3rem 5vw;margin-top:3.2rem;}
.tx-category{padding-top:2.2rem;border-top:1px solid rgba(38,36,31,.14);scroll-margin-top:6rem;}
.tx-category h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.3rem;}
.tx-category h3 a{
  background-image:linear-gradient(var(--champagne),var(--champagne));
  background-size:0% 1px;background-repeat:no-repeat;background-position:left 100%;
  padding-bottom:2px;transition:background-size .35s ease,color .3s ease;
}
.tx-category h3 a:hover{background-size:100% 1px;color:var(--stone);}
.tx-category .tx-cat-desc{color:var(--ink-soft);margin-top:.5rem;font-size:.95rem;max-width:46ch;}
.tx-category .tx-cat-desc a{text-decoration:underline;text-decoration-color:var(--champagne);text-underline-offset:3px;}
.tx-category .tx-cat-desc a:hover{color:var(--stone);}
/* same treatment inside .tx-group sections, where the rule above does not reach */
.tx-group .tx-cat-desc{color:var(--ink-soft);margin-top:1.1rem;font-size:1rem;max-width:62ch;line-height:1.65;}
.tx-group .tx-cat-desc a{text-decoration:underline;text-decoration-color:var(--champagne);text-underline-offset:3px;}
.tx-group .tx-cat-desc a:hover{color:var(--stone);}
.tx-items{margin-top:1.3rem;}
a.tx-item{
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  padding:.95rem 0;border-top:1px solid rgba(38,36,31,.08);scroll-margin-top:6rem;
  transition:padding-left .3s cubic-bezier(.2,.6,.2,1),background-color .3s ease;
}
.tx-item:first-child{border-top:none;padding-top:0;}
a.tx-item:hover{padding-left:.6rem;background:rgba(201,180,143,.07);}
a.tx-item:focus-visible{outline:2px solid var(--champagne);outline-offset:-2px;border-radius:2px;}
.tx-item-text{flex:1;min-width:0;}
.tx-item h4{
  font-size:.96rem;font-weight:500;display:inline-block;position:relative;
  background-image:linear-gradient(var(--champagne),var(--champagne));
  background-size:0% 1px;background-repeat:no-repeat;background-position:left 100%;
  padding-bottom:1px;transition:background-size .3s ease;
}
a.tx-item:hover h4{background-size:100% 1px;}
.tx-item p{font-size:.85rem;color:var(--ink-soft);margin-top:.3rem;}
.tx-item-arrow{
  flex:none;font-size:.85rem;color:var(--champagne);
  opacity:0;transform:translateX(-6px);
  transition:opacity .3s ease,transform .35s cubic-bezier(.2,.6,.2,1);
}
a.tx-item:hover .tx-item-arrow{opacity:1;transform:translateX(0);}
@media(max-width:800px){.tx-categories{grid-template-columns:1fr;}}
@media(max-width:640px){.tx-hero{padding:9.5rem 0 3rem;}}

/* ---------- Latest from Vogue Clinic (YouTube Shorts) ---------- */
.yt-latest{background:var(--warmwhite);}
/* Flex-wrap (not a fixed-column grid) so the gallery reflows cleanly whether
   it holds 1 Short or 20 — a lone card sits centered at its natural width
   instead of stretching to fill a 6-column row; adding more just wraps a
   new line. See script.js ytVideos for the only place new Shorts are added. */
.yt-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:1.4rem;margin-top:3rem;}
.yt-card{display:block;text-decoration:none;color:inherit;flex:0 0 auto;width:184px;}
.yt-thumb{
  position:relative;aspect-ratio:9/16;border-radius:8px;overflow:hidden;
  background:linear-gradient(155deg,var(--sand) 0%,var(--stone) 120%);
  background-size:cover;background-position:center;
  display:flex;align-items:center;justify-content:center;
  transition:transform .4s cubic-bezier(.2,.6,.2,1);
}
.yt-card:hover .yt-thumb{transform:translateY(-4px);}
.yt-play{
  width:44px;height:44px;border-radius:50%;background:rgba(20,14,9,.55);
  color:var(--warmwhite);display:flex;align-items:center;justify-content:center;
  font-size:14px;backdrop-filter:blur(2px);
}
.yt-title{margin-top:.8rem;font-size:.85rem;color:var(--ink-soft);line-height:1.4;}
.yt-foot{text-align:center;margin-top:3rem;}
@media(max-width:900px){.yt-card{width:160px;}}
@media(max-width:560px){.yt-grid{gap:.9rem;}.yt-card{width:calc(50% - .45rem);}.yt-title{font-size:.8rem;}}

/* ---------- Recovery Lounge / Recovery Loft pages ---------- */
.stay-hero-section{padding:11rem 0 4rem;}
.stay-hero-section h1{font-size:clamp(2rem,4vw,3.4rem);max-width:18ch;}
.stay-hero-desc{margin-top:1.6rem;color:var(--ink-soft);max-width:62ch;font-size:1.06rem;}
.stay-hero-actions{margin-top:2.2rem;display:flex;gap:1rem;flex-wrap:wrap;}
.stay-full-gallery{
  display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:1fr 1fr;
  gap:1rem;margin-top:3.2rem;
}
.stay-full-gallery .g-hero{grid-row:1 / 3;}
.stay-full-gallery .ph{aspect-ratio:auto;height:100%;min-height:220px;}
.stay-full-gallery .g-hero .ph{min-height:460px;}
@media(max-width:820px){
  .stay-full-gallery{grid-template-columns:1fr 1fr;}
  .stay-full-gallery .g-hero{grid-row:auto;grid-column:span 2;min-height:260px;}
}
@media(max-width:560px){
  .stay-full-gallery{grid-template-columns:1fr;}
  .stay-full-gallery .g-hero{grid-column:span 1;}
}
.stay-booking{background:var(--anthracite);color:var(--linen);text-align:center;}
.stay-booking h2{color:var(--warmwhite);font-size:clamp(2rem,3.8vw,3rem);}
.stay-booking p{margin:1.4rem auto 0;color:rgba(239,233,223,.8);max-width:52ch;}

/* ---------- Price List page ---------- */
.price-note{max-width:64ch;color:var(--ink-soft);}
.price-note strong{color:var(--ink);font-weight:500;}
.price-note a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--champagne);text-underline-offset:3px;}
.price-note a:hover{color:var(--stone);}
.price-list{margin-top:3rem;border-top:1px solid rgba(38,36,31,.16);}
.price-row{
  display:flex;justify-content:space-between;align-items:baseline;gap:2rem;
  padding:1.6rem 0;border-bottom:1px solid rgba(38,36,31,.16);
}
.price-row-name h4{font-family:'Fraunces',serif;font-weight:340;font-size:1.12rem;}
.price-row-name p{margin-top:.4rem;font-size:.9rem;color:var(--ink-soft);max-width:46ch;}
.price-row-price{
  font-family:'Fraunces',serif;font-weight:340;font-size:1.12rem;color:var(--ink);
  white-space:nowrap;flex:none;padding-left:1rem;
}
.price-row-price.on-consult{font-family:'Instrument Sans',sans-serif;font-size:.88rem;letter-spacing:0.04em;color:var(--stone);text-transform:uppercase;}
.price-download{
  text-align:center;background:var(--anthracite);color:var(--linen);
}
.price-download h2{color:var(--warmwhite);font-size:clamp(1.9rem,3.4vw,2.8rem);}
.price-download p{margin:1.3rem auto 0;color:rgba(239,233,223,.78);max-width:52ch;}
@media(max-width:560px){
  .price-row{flex-direction:column;gap:.4rem;}
  .price-row-price{padding-left:0;}
}

/* ---------- Service destination page template ---------- */
.svc-intro{padding:5rem 0 0;}
.svc-intro p{max-width:62ch;color:var(--ink-soft);font-size:1.05rem;}
.svc-placeholder{
  margin-top:3.4rem;border:1px solid rgba(38,36,31,.16);border-radius:4px;
  padding:3rem clamp(1.5rem,4vw,3.5rem);text-align:center;
}
.svc-placeholder .eyebrow{justify-content:center;}
.svc-placeholder h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.4rem;margin-top:.9rem;}
.svc-placeholder p{color:var(--ink-soft);max-width:52ch;margin:1rem auto 0;}
.svc-related-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.6rem;margin-top:2.4rem;}
.svc-related-card{
  display:flex;flex-direction:column;gap:.3rem;
  padding:1.9rem 2rem;background:var(--warmwhite);
  border:1px solid rgba(38,36,31,.13);border-radius:14px;
  text-decoration:none;color:inherit;
  transition:border-color .3s ease,transform .3s cubic-bezier(.2,.6,.2,1),box-shadow .3s ease;
}
.svc-related-card:hover{border-color:var(--champagne);transform:translateY(-4px);box-shadow:0 18px 34px rgba(20,14,9,.09);}
.svc-related-card h4{font-family:'Fraunces',serif;font-weight:340;font-size:1.1rem;color:var(--ink);text-decoration:none;}
.svc-related-card p{color:var(--ink-soft);font-size:.88rem;margin-top:.3rem;line-height:1.5;}
.svc-related-card .svc-arrow{
  margin-top:.9rem;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--champagne);
  display:inline-flex;align-items:center;gap:.4rem;transition:gap .3s ease;
}
.svc-related-card:hover .svc-arrow{gap:.7rem;}
.bg-linen .svc-related-card{background:var(--warmwhite);}
.bg-warm .svc-related-card{background:var(--linen);}
.svc-contact{padding:5rem 0 6rem;}
.svc-contact-grid{display:flex;flex-wrap:wrap;gap:2.5rem 4rem;margin-top:2.2rem;}
.svc-contact-item h5{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne);margin-bottom:.6rem;}
.svc-contact-item a,.svc-contact-item p{display:block;color:var(--ink-soft);}
.svc-contact-item a:hover{color:var(--ink);}

/* ---------- Rich treatment page template ---------- */
.tp-facts{border-top:1px solid rgba(38,36,31,.16);border-bottom:1px solid rgba(38,36,31,.16);margin-top:2.8rem;}
.tp-facts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));}
.tp-fact{
  display:flex;flex-direction:column;justify-content:center;
  min-height:7.6rem;padding:2rem 2.2rem;border-left:1px solid rgba(38,36,31,.16);
}
.tp-fact:first-child{border-left:none;padding-left:0;}
.tp-fact h5{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne);margin-bottom:.7rem;}
.tp-fact p{font-family:'Fraunces',serif;font-weight:340;font-size:1.2rem;color:var(--ink);line-height:1.3;}
.tp-body{max-width:68ch;color:var(--ink-soft);font-size:1.02rem;line-height:1.75;}
.tp-body p{margin-top:1.1rem;}
.tp-body p:first-child{margin-top:0;}
.tp-body h3{
  font-family:'Fraunces',serif;font-weight:400;color:var(--ink);
  font-size:1.5rem;letter-spacing:-0.01em;margin-top:3.2rem;margin-bottom:1rem;
  /* these headings are deep-link targets from the mega menu (e.g.
     surgery-face.html#ear-surgery) — keep them clear of the fixed header */
  scroll-margin-top:7rem;
}
.tp-body h3:first-child{margin-top:0;}
.tp-list{margin-top:1.3rem;padding-left:1.4rem;}
.tp-list li{margin-top:.75rem;color:var(--ink-soft);line-height:1.65;padding-left:.3rem;}
.tp-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:3rem 4rem;margin-top:2.6rem;}
@media(max-width:700px){
  .tp-fact{border-left:none;border-top:1px solid rgba(38,36,31,.16);padding:1.6rem 0;min-height:0;}
  .tp-fact:first-child{border-top:none;padding-left:0;}
}
.tp-hero-image{margin-top:2.8rem;}
.tp-hero-image .ph{border-radius:4px;}
.tp-overview-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:5vw;align-items:start;margin-top:2.2rem;}
.tp-overview-grid .ph{border-radius:4px;position:sticky;top:7rem;}
@media(max-width:860px){
  .tp-overview-grid{grid-template-columns:1fr;gap:2rem;}
  .tp-overview-grid .ph{position:relative;top:auto;order:-1;}
}
.tp-brands{
  margin-top:3.4rem;padding:2.1rem clamp(1.5rem,3vw,2.6rem);
  border:1px solid rgba(38,36,31,.14);border-radius:4px;background:rgba(201,180,143,.07);
}
.tp-brands h4{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne);margin-bottom:.7rem;}
.tp-brands p{color:var(--ink-soft);font-size:.92rem;max-width:60ch;}
.tp-brand-list{margin-top:.9rem;font-family:'Fraunces',serif;font-weight:340;color:var(--ink);font-size:1.05rem;line-height:1.7;}

/* ---------- Doctor profile pages ---------- */
.doc-hero{padding:11rem 0 4rem;}
.doc-hero .breadcrumb,.tx-hero .breadcrumb,.stay-hero-section .breadcrumb{font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:var(--stone);}
.doc-hero .breadcrumb a,.tx-hero .breadcrumb a,.stay-hero-section .breadcrumb a{color:var(--stone);text-decoration:none;}
.doc-hero .breadcrumb a:hover,.tx-hero .breadcrumb a:hover,.stay-hero-section .breadcrumb a:hover{color:var(--ink);}
.doc-profile{display:grid;grid-template-columns:.9fr 1.3fr;gap:6vw;align-items:start;}
.doc-profile .ph.portrait{aspect-ratio:4/5;}
.doc-block{margin-top:2.2rem;}
.doc-block h4{
  font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--champagne);margin-bottom:.6rem;
}
.doc-block p{color:var(--ink-soft);max-width:56ch;}
.doc-block .missing{color:var(--stone);font-style:italic;}
@media(max-width:900px){.doc-profile{grid-template-columns:1fr;gap:2.4rem;}}

/* ---------- Gift Voucher ---------- */
.voucher-builder-section{padding-top:2rem;}
.voucher-builder-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:6vw;align-items:start;}
.voucher-preview-wrap{position:sticky;top:calc(var(--header-h) + 2.4rem);}
.voucher-preview-caption{margin-top:1.3rem;font-size:.85rem;color:var(--ink-soft);text-align:center;}

.voucher-card{
  position:relative;aspect-ratio:8/5;width:100%;max-width:520px;margin:0 auto;
  border-radius:16px;overflow:hidden;
  background:linear-gradient(135deg,var(--sand) 0%,var(--champagne) 48%,var(--linen) 100%);
  padding:2.4rem 2.6rem;display:flex;flex-direction:column;justify-content:space-between;
  box-shadow:0 30px 70px rgba(38,36,31,.25);color:var(--softblack);
}
.voucher-card::before{
  content:"";position:absolute;inset:9px;border:1px solid rgba(255,255,255,.5);border-radius:10px;pointer-events:none;
}
.vc-top{display:flex;justify-content:space-between;align-items:flex-start;position:relative;}
.vc-logo{height:1.7rem;width:auto;display:block;filter:invert(1);}
.vc-eyebrow{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(38,36,31,.55);margin-top:.35rem;}
.vc-amount{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(2.6rem,7vw,3.7rem);line-height:1;margin:.6rem 0;position:relative;}
.vc-mid{position:relative;}
.vc-to{font-size:.94rem;}
.vc-to .vc-label{text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;color:rgba(38,36,31,.55);margin-right:.5rem;}
.vc-message{margin-top:.6rem;font-style:italic;font-size:.9rem;color:rgba(38,36,31,.78);max-width:38ch;}
.vc-bottom{
  display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;
  font-size:.74rem;letter-spacing:.06em;color:rgba(38,36,31,.6);
  margin-top:1.2rem;padding-top:1rem;border-top:1px solid rgba(38,36,31,.2);
  text-transform:uppercase;position:relative;
}
@media(max-width:480px){
  .voucher-card{padding:1.8rem 1.9rem;}
  .vc-message{max-width:100%;}
}

.voucher-form label{
  display:block;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--stone);margin:1.4rem 0 .5rem;
}
.voucher-form label:first-child{margin-top:0;}
.voucher-form input,.voucher-form select,.voucher-form textarea{
  width:100%;background:var(--warmwhite);border:1px solid rgba(38,36,31,.18);
  border-radius:6px;padding:.85rem 1rem;font-family:inherit;font-size:.95rem;color:var(--ink);
  transition:border-color .3s;
}
.voucher-form input:focus,.voucher-form select:focus,.voucher-form textarea:focus{outline:none;border-color:var(--champagne);}
.voucher-form textarea{min-height:90px;resize:vertical;}
.voucher-form .char-count{display:block;text-align:right;font-size:.75rem;color:var(--stone);margin-top:.35rem;text-transform:none;letter-spacing:0;}
.voucher-form button[type=submit]{width:100%;margin-top:1.9rem;justify-content:center;text-align:center;border:none;cursor:pointer;font-family:inherit;}
.voucher-note{margin-top:1.5rem;font-size:.85rem;color:var(--ink-soft);}
@media(max-width:900px){
  .voucher-builder-grid{grid-template-columns:1fr;}
  .voucher-preview-wrap{position:static;}
}

/* How it works */
.voucher-how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3vw;margin-top:3.2rem;}
.voucher-how-step{text-align:center;}
.voucher-how-num{
  display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;
  border-radius:50%;border:1px solid var(--champagne);font-family:'Fraunces',serif;font-size:1.05rem;
  margin-bottom:1.2rem;
}
.voucher-how-step h4{font-family:'Fraunces',serif;font-weight:340;font-size:1.1rem;margin-bottom:.6rem;}
.voucher-how-step p{color:var(--ink-soft);font-size:.92rem;max-width:32ch;margin:0 auto;}
@media(max-width:768px){.voucher-how-grid{grid-template-columns:1fr;gap:2.4rem;}}

/* Cart drawer */
.cart-overlay{
  position:fixed;inset:0;background:rgba(20,17,12,.5);z-index:90;
  opacity:0;pointer-events:none;transition:opacity .35s;
}
.cart-overlay.is-open{opacity:1;pointer-events:auto;}
.cart-drawer{
  position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:95;
  background:var(--warmwhite);box-shadow:-20px 0 50px rgba(20,17,12,.25);
  transform:translateX(100%);transition:transform .4s cubic-bezier(.2,.6,.2,1);
  display:flex;flex-direction:column;padding:2rem 1.8rem;overflow-y:auto;
}
.cart-drawer.is-open{transform:translateX(0);}
.cart-drawer-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.6rem;}
.cart-drawer-head h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.3rem;}
.cart-close{background:none;border:none;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);cursor:pointer;font-family:inherit;}
.cart-items{flex:1;border-top:1px solid rgba(38,36,31,.14);}
.cart-item{
  display:flex;justify-content:space-between;gap:1rem;padding:1.2rem 0;
  border-bottom:1px solid rgba(38,36,31,.14);
}
.cart-item-info h5{font-family:'Fraunces',serif;font-weight:340;font-size:1.02rem;}
.cart-item-info p{font-size:.82rem;color:var(--ink-soft);margin-top:.3rem;max-width:26ch;}
.cart-item-remove{background:none;border:none;font-size:.78rem;color:var(--stone);text-decoration:underline;cursor:pointer;margin-top:.5rem;font-family:inherit;padding:0;}
.cart-empty{padding:2.4rem 0;text-align:center;color:var(--ink-soft);font-size:.92rem;}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;padding:1.4rem 0;font-family:'Fraunces',serif;font-size:1.15rem;}
#cartTotalRow[hidden],#cartActions[hidden]{display:none;}
.cart-checkout-btn{display:block;text-align:center;}

/* Checkout page */
.checkout-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:6vw;align-items:start;}
.checkout-summary{background:var(--warmwhite);border-radius:10px;padding:2.2rem;}
.checkout-summary h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.2rem;margin-bottom:1.4rem;}
.checkout-line{display:flex;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid rgba(38,36,31,.14);}
.checkout-line-info p{font-size:.82rem;color:var(--ink-soft);margin-top:.3rem;}
.checkout-total-row{display:flex;justify-content:space-between;padding-top:1.2rem;font-family:'Fraunces',serif;font-size:1.25rem;}
.pay-methods{display:flex;gap:.7rem;margin:1.6rem 0;flex-wrap:wrap;}
.pay-method{
  flex:1;min-width:110px;text-align:center;padding:.9rem .6rem;border-radius:8px;
  border:1px solid rgba(38,36,31,.2);cursor:pointer;font-size:.85rem;letter-spacing:.03em;
  background:var(--warmwhite);transition:border-color .3s,background .3s;
}
.pay-method.is-active{border-color:var(--anthracite);background:var(--linen);font-weight:500;}
.pay-panel{display:none;margin-top:1.2rem;}
.pay-panel.is-active{display:block;}
.pay-bank-details{background:var(--warmwhite);border-radius:8px;padding:1.2rem 1.4rem;font-size:.9rem;line-height:1.9;}
.checkout-empty{text-align:center;padding:4rem 0;}
@media(max-width:900px){.checkout-grid{grid-template-columns:1fr;}}

.checkout-confirm{
  display:none;padding:1.4rem 1.6rem;border:1px solid var(--champagne);border-radius:8px;
  background:var(--warmwhite);color:var(--ink);font-size:.95rem;margin-top:1.5rem;text-align:center;
}
.checkout-confirm.show{display:block;}

/* ---------- Mod 59: stay-info heading (stay-blocks/stay-gallery predate this;
   they just never had a heading before — the block used to open straight
   into the description) ---------- */
.stay-info h3{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.3rem,1.8vw,1.6rem);color:var(--warmwhite);}
.stay-info .stay-desc{margin-top:.7rem;}

/* ---------- Mod 55: reviews-embedded video strip ---------- */
.rev-video-strip{margin-top:4rem;padding-top:3.5rem;border-top:1px solid rgba(38,36,31,.12);}
.rev-video-strip .eyebrow{text-align:center;}
.rev-video-strip .horizon{margin-left:auto;margin-right:auto;}
.rev-video-strip h3{text-align:center;}
.rev-video-strip .yt-grid{margin-top:2.4rem;}
.rev-video-strip .yt-foot{margin-top:2rem;text-align:center;}

/* ---------- Mod 55: de-emphasize Gift Voucher in primary nav ---------- */
.nav-voucher{
  font-size:12.5px;letter-spacing:0.06em;text-transform:uppercase;font-weight:500;
  color:inherit!important;opacity:.72!important;
}
header.scrolled .nav-voucher{color:var(--ink-soft)!important;}
.nav-voucher:hover{opacity:1!important;}

/* ---------- Mod 55: fade floating CTAs during active form input ---------- */
.book-cta.is-dimmed,.wa-float.is-dimmed{opacity:.18;pointer-events:none;transition:opacity .3s ease;}

/* ---------- Trusted brands marquee (Mod 62) ----------
   Wordmarks are typographic, not image logos — no official logo files exist
   in the project yet. Swap in real SVG/PNG logo assets here whenever they're
   available; the layout (track, gap, fade mask) works either way. */
.brands-strip{background:var(--warmwhite);}
.brands-head{text-align:center;max-width:60ch;margin:0 auto;}
.brands-head p.eyebrow{justify-content:center;}
.brands-head .horizon{margin-left:auto;margin-right:auto;}
.brands-head p.lede{margin-top:1.2rem;color:var(--ink-soft);}
.brands-marquee{
  position:relative;overflow:hidden;margin-top:3.5rem;
  mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
}
.brands-track{display:flex;align-items:center;width:max-content;animation:brandsMarquee 36s linear infinite;}
.brands-marquee:hover .brands-track{animation-play-state:paused;}
.brand-set{display:contents;}
.brand-logo{
  font-family:'Fraunces',serif;font-weight:300;font-style:italic;font-size:1.55rem;
  letter-spacing:0.01em;color:var(--stone);white-space:nowrap;
  padding:0 1.9rem;transition:color .3s;
  display:inline-flex;align-items:center;justify-content:center;
  /* Most of the uploaded logo files are OPAQUE (no alpha) with a solid white
     background baked in. Painting the same warm-white directly behind each
     logo, in the logo's own stacking context, gives the img's multiply blend
     (below) a warm-white backdrop to fold that white box into — so the box
     disappears and reads as a clean transparent-looking mark. Same colour as
     the strip, so no visible chip. */
  background:var(--warmwhite);
}
/* Real brand logo files come in wildly different canvas aspect ratios — wide
   wordmarks (SkinCeuticals 7:1) next to square, heavily-padded marks
   (SkinClinic 1:1). Height-only sizing would render the square ones as tiny
   specks, so each logo drops into a fixed landscape "cell" with
   object-fit:contain and scales to fit — the standard logo-wall normalisation.
   grayscale unifies the mixed brand colours; multiply against the warm-white
   cell background (above) removes the baked-in white box on the opaque files. */
.brand-logo-img{
  width:126px;height:46px;object-fit:contain;display:block;
  filter:grayscale(1);opacity:.72;mix-blend-mode:multiply;
  transition:opacity .3s,filter .3s;
}
/* SkinClinic (447x447) and Sculptra (400x350) are near-square canvases with a
   lot of internal whitespace, so contain-fitting to the shared cell leaves the
   actual mark visually smaller than the wide wordmarks. Scale just these two up
   (transform doesn't change the layout box, so the row stays aligned). */
.brand-logo-img[alt="SkinClinic"]{transform:scale(1.5);}
.brand-logo-img[alt="Sculptra"]{transform:scale(1.45);}
.brands-marquee:hover .brand-logo-img{opacity:1;filter:grayscale(.35);}
@keyframes brandsMarquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media(max-width:640px){
  .brand-logo{font-size:1.25rem;padding:0 1.2rem;}
  .brand-logo-img{width:96px;height:36px;}
}
@media(prefers-reduced-motion:reduce){
  .brands-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center;row-gap:1rem;}
  .brands-track .brand-set[aria-hidden="true"]{display:none;}
}

/* ============================================================
   SHOP — Vogue Clinic
   Deliberately not an e-commerce grid: wide gutters, big images,
   quiet type. Same tokens as the rest of the site.
   ============================================================ */
.shop-hero{padding:11rem 0 3.4rem;background:var(--warmwhite);}
.shop-hero .lede{margin-top:1.4rem;color:var(--ink-soft);max-width:58ch;font-size:1.05rem;line-height:1.75;}
.shop-note{
  margin-top:2.2rem;padding:1.15rem 1.4rem;border-left:2px solid var(--champagne);
  background:rgba(201,180,143,.08);max-width:62ch;color:var(--ink-soft);font-size:.95rem;line-height:1.7;
}

/* brand duo */
.shop-brands{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1rem,2.4vw,2rem);margin-top:2.6rem;}
@media(max-width:760px){.shop-brands{grid-template-columns:1fr;}}
a.shop-brand{
  display:block;padding:clamp(1.8rem,3vw,2.8rem);border:1px solid rgba(38,36,31,.14);border-radius:4px;
  background:var(--warmwhite);text-decoration:none;transition:border-color .3s ease,transform .3s ease;
}
a.shop-brand:hover{border-color:var(--champagne);transform:translateY(-2px);}
a.shop-brand .eyebrow{color:var(--champagne);}
a.shop-brand h3{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.4rem,2.2vw,1.9rem);color:var(--ink);margin:.5rem 0 .7rem;}
a.shop-brand p{color:var(--ink-soft);font-size:.95rem;line-height:1.7;max-width:42ch;}
a.shop-brand .svc-arrow{display:inline-block;margin-top:1.1rem;}

/* product rails + grid */
.shop-rail-head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;}
.shop-rail-head h2{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.5rem,2.4vw,2.1rem);letter-spacing:-.01em;}
.shop-rail-head p{color:var(--ink-soft);font-size:.93rem;max-width:52ch;margin-top:.5rem;}
.shop-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:clamp(1.4rem,2.6vw,2.4rem);margin-top:2.2rem;
}
a.shop-card{display:block;text-decoration:none;color:inherit;}
a.shop-card .shop-shot{
  position:relative;aspect-ratio:4/5;border-radius:3px;overflow:hidden;
  background:linear-gradient(165deg,#F2EDE4 0%,#E3DACB 100%);
}
a.shop-card .shop-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  padding:9%;display:block;mix-blend-mode:multiply;}
a.shop-card .shop-shot::after{
  content:attr(data-ph);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);text-align:center;padding:1rem;
}
a.shop-card .shop-shot.has-img::after{display:none;}
a.shop-card:hover .shop-shot img{transform:scale(1.03);}
a.shop-card .shop-shot img{transition:transform .6s cubic-bezier(.2,.7,.3,1);}
.shop-card-brand{margin-top:.9rem;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne);}
.shop-card-name{font-family:'Fraunces',serif;font-weight:340;font-size:1.08rem;line-height:1.35;margin-top:.35rem;color:var(--ink);}
.shop-card-meta{margin-top:.35rem;font-size:.85rem;color:var(--stone);}
.shop-card-price{margin-top:.5rem;font-size:.95rem;color:var(--ink);}
.shop-card-price .soon{color:var(--stone);font-size:.85rem;}

.shop-flag{
  display:inline-block;margin-top:.5rem;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  padding:.22rem .5rem;border:1px solid var(--champagne);color:var(--champagne);border-radius:99px;
}
.shop-flag.pro{border-color:var(--stone);color:var(--stone);}

/* filters */
.shop-filters{
  border-top:1px solid rgba(38,36,31,.12);border-bottom:1px solid rgba(38,36,31,.12);
  padding:1.4rem 0;margin-top:2.4rem;
}
.shop-filter-row{display:flex;gap:.9rem;align-items:baseline;flex-wrap:wrap;margin-bottom:.9rem;}
.shop-filter-row:last-child{margin-bottom:0;}
.shop-filter-row > span{
  flex:0 0 auto;min-width:8.5rem;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);
}
.shop-chip{
  font:inherit;font-size:.86rem;color:var(--ink-soft);background:transparent;
  border:1px solid rgba(38,36,31,.18);border-radius:99px;padding:.34rem .85rem;cursor:pointer;
  transition:.2s ease;
}
.shop-chip:hover{border-color:var(--champagne);color:var(--ink);}
.shop-chip[aria-pressed="true"]{background:var(--anthracite);border-color:var(--anthracite);color:var(--warmwhite);}
.shop-search{
  width:100%;max-width:26rem;font:inherit;font-size:.95rem;color:var(--ink);
  background:transparent;border:0;border-bottom:1px solid rgba(38,36,31,.22);padding:.6rem 0;
}
.shop-search:focus{outline:none;border-bottom-color:var(--champagne);}
.shop-count{margin-top:1.6rem;font-size:.86rem;color:var(--stone);}
.shop-empty{margin-top:2.5rem;color:var(--ink-soft);}

/* product detail */
.shop-detail{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start;margin-top:2.4rem;}
@media(max-width:860px){.shop-detail{grid-template-columns:1fr;}}
.shop-detail .shop-shot{aspect-ratio:4/5;position:relative;border-radius:3px;overflow:hidden;
  background:linear-gradient(165deg,#F2EDE4 0%,#E3DACB 100%);}
.shop-detail h1{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.8rem,3.2vw,2.7rem);line-height:1.15;margin-top:.5rem;}
.shop-detail .price{font-size:1.25rem;margin-top:1.2rem;}
.shop-detail .desc{margin-top:1.4rem;color:var(--ink-soft);line-height:1.8;}
.shop-spec{margin-top:1.8rem;border-top:1px solid rgba(38,36,31,.12);}
.shop-spec div{display:flex;gap:1.2rem;padding:.75rem 0;border-bottom:1px solid rgba(38,36,31,.09);font-size:.92rem;}
.shop-spec dt,.shop-spec .k{flex:0 0 9.5rem;color:var(--stone);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding-top:.22rem;}
.shop-spec .v{color:var(--ink-soft);}

/* cart */
.cart-line{display:grid;grid-template-columns:72px 1fr auto;gap:1.2rem;align-items:center;
  padding:1.1rem 0;border-bottom:1px solid rgba(38,36,31,.1);}
.cart-line .thumb{aspect-ratio:4/5;border-radius:2px;background:linear-gradient(165deg,#F2EDE4,#E3DACB);}
.cart-line h4{font-family:'Fraunces',serif;font-weight:340;font-size:1rem;}
.cart-line .sub{font-size:.83rem;color:var(--stone);margin-top:.2rem;}
.cart-qty{display:inline-flex;align-items:center;gap:.55rem;margin-top:.45rem;}
.cart-qty button{font:inherit;width:1.6rem;height:1.6rem;line-height:1;border:1px solid rgba(38,36,31,.2);
  background:transparent;border-radius:50%;cursor:pointer;color:var(--ink-soft);}
.cart-qty button:hover{border-color:var(--champagne);}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;
  padding-top:1.4rem;font-family:'Fraunces',serif;font-size:1.25rem;}
.shop-cart-count{
  display:inline-block;min-width:1.15rem;padding:0 .3rem;margin-left:.35rem;border-radius:99px;
  background:var(--champagne);color:var(--softblack);font-size:10px;line-height:1.15rem;text-align:center;
}
.shop-cart-count[hidden]{display:none;}

/* packshots: contain, so a bottle is never cropped whatever ratio it arrives in */
.shop-detail .shop-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  padding:8%;display:block;mix-blend-mode:multiply;}

/* nav bag — sits next to Shop, badge only appears once something is in it */
.nav-bag{display:inline-flex;align-items:center;gap:.1rem;}
#mobileMenu .shop-cart-count{margin-left:.45rem;}

/* ============================================================================
   VOGUE CLINIC CONCIERGE  (Phase 1 prototype) — extends the existing system,
   reuses the site tokens. Nothing here changes any pre-existing rule.
   ============================================================================ */

/* ---- fixed access points --------------------------------------------- */
.vcg-trigger{
  position:fixed;z-index:54;font:inherit;cursor:pointer;border:0;
  background:var(--anthracite);color:var(--linen);
  box-shadow:0 8px 26px rgba(20,14,9,.28);transition:background .3s,transform .3s;
}
.vcg-trigger:hover{background:var(--softblack);}
/* desktop: discreet vertical tab on the right edge, clear of the bottom floats */
.vcg-trigger-mobile{display:none;}
@media(min-width:861px){
  .vcg-trigger{
    right:0;top:50%;transform:translateY(-50%);
    writing-mode:vertical-rl;text-orientation:mixed;
    padding:1.15rem .55rem;border-radius:8px 0 0 8px;
    font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  }
  .vcg-trigger:hover{transform:translateY(-50%) translateX(-2px);}
}
/* mobile: a slim centred pill, raised ABOVE the Book / WhatsApp floats */
@media(max-width:860px){
  .vcg-trigger-desktop{display:none;}
  .vcg-trigger-mobile{display:inline;}
  .vcg-trigger{
    left:50%;bottom:5.4rem;transform:translateX(-50%);
    padding:.7rem 1.3rem;border-radius:99px;white-space:nowrap;
    font-size:12px;letter-spacing:.05em;
  }
}
body.vcg-open .vcg-trigger{opacity:0;pointer-events:none;}

/* ---- scrim + panel --------------------------------------------------- */
.vcg-scrim{
  position:fixed;inset:0;z-index:80;background:rgba(25,20,14,.34);
  opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s;
  backdrop-filter:saturate(.9) blur(1px);
}
.vcg-panel{
  position:fixed;z-index:81;top:0;right:0;height:100dvh;width:min(460px,100vw);
  background:var(--warmwhite);color:var(--ink);
  display:flex;flex-direction:column;
  box-shadow:-24px 0 60px rgba(20,14,9,.22);
  transform:translateX(100%);transition:transform .5s cubic-bezier(.22,.7,.24,1);
  border-left:1px solid rgba(201,180,143,.5);
}
body.vcg-open .vcg-scrim{opacity:1;visibility:visible;}
body.vcg-open .vcg-panel{transform:none;}
@media(max-width:560px){
  .vcg-panel{width:100vw;border-left:0;}
}
@media(prefers-reduced-motion:reduce){
  .vcg-panel{transition:none;}.vcg-scrim{transition:none;}
}

/* ---- header ---------------------------------------------------------- */
.vcg-head{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.15rem 1.4rem;border-bottom:1px solid rgba(38,36,31,.1);flex:0 0 auto;
}
.vcg-brand{display:inline-flex;align-items:center;gap:.6rem;}
.vcg-mark{width:8px;height:8px;border-radius:50%;background:var(--champagne);box-shadow:0 0 0 4px rgba(201,180,143,.2);}
.vcg-name{font-family:'Fraunces',serif;font-weight:340;font-size:1.02rem;letter-spacing:.01em;}
.vcg-head-actions{display:inline-flex;align-items:center;gap:.4rem;}
.vcg-lang select{
  font:inherit;font-size:12px;letter-spacing:.08em;color:var(--ink-soft);
  background:transparent;border:1px solid rgba(38,36,31,.18);border-radius:99px;
  padding:.3rem .5rem;cursor:pointer;
}
.vcg-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.vcg-x{font-size:1.5rem;line-height:1;background:none;border:0;color:var(--stone);cursor:pointer;padding:.1rem .3rem;}
.vcg-x:hover{color:var(--ink);}

/* ---- body ------------------------------------------------------------ */
.vcg-body{flex:1 1 auto;overflow-y:auto;padding:1.6rem 1.4rem 1rem;-webkit-overflow-scrolling:touch;}
.vcg-h{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.4rem,4vw,1.7rem);line-height:1.2;letter-spacing:-.01em;}
.vcg-h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.2rem;margin-bottom:.3rem;}
.vcg-sub{color:var(--ink-soft);margin-top:.6rem;font-size:.95rem;line-height:1.6;max-width:38ch;}

/* start screen */
.vcg-ask{margin-top:1.4rem;display:flex;flex-direction:column;gap:.7rem;}
.vcg-ask textarea{
  font:inherit;font-size:.98rem;color:var(--ink);resize:none;
  background:#fff;border:1px solid rgba(38,36,31,.18);border-radius:10px;padding:.85rem 1rem;line-height:1.5;
}
.vcg-ask textarea:focus{outline:none;border-color:var(--champagne);}
.vcg-ask .btn{align-self:flex-start;}
.vcg-suggested{margin:1.8rem 0 .8rem;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);}
.vcg-chips{display:flex;flex-wrap:wrap;gap:.5rem;}
.vcg-chip{
  font:inherit;font-size:.86rem;color:var(--ink-soft);text-align:left;cursor:pointer;
  background:#fff;border:1px solid rgba(38,36,31,.14);border-radius:99px;padding:.45rem .9rem;
  transition:border-color .2s,color .2s,transform .2s;
}
.vcg-chip:hover{border-color:var(--champagne);color:var(--ink);transform:translateY(-1px);}

/* thread / bubbles */
.vcg-user{display:flex;justify-content:flex-end;margin-bottom:1.1rem;}
.vcg-user p{
  background:var(--linen);border:1px solid rgba(38,36,31,.08);border-radius:14px 14px 4px 14px;
  padding:.6rem .9rem;font-size:.92rem;max-width:85%;color:var(--ink);
}
.vcg-thinking{display:flex;align-items:center;gap:.6rem;color:var(--stone);font-size:.9rem;}
.vcg-dots{display:inline-flex;gap:4px;}
.vcg-dots i{width:6px;height:6px;border-radius:50%;background:var(--champagne);animation:vcgpulse 1.1s infinite ease-in-out;}
.vcg-dots i:nth-child(2){animation-delay:.18s;}
.vcg-dots i:nth-child(3){animation-delay:.36s;}
@keyframes vcgpulse{0%,60%,100%{opacity:.3;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}
@media(prefers-reduced-motion:reduce){.vcg-dots i{animation:none;opacity:.6;}}

/* answer */
.vcg-answer{animation:vcgfade .5s ease both;}
@keyframes vcgfade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
@media(prefers-reduced-motion:reduce){.vcg-answer{animation:none;}}
.vcg-intro{color:var(--ink);line-height:1.65;font-size:.98rem;}
.vcg-distinction{margin-top:1.1rem;padding-left:.9rem;border-left:2px solid var(--champagne);}
.vcg-distinction h4{font-family:'Fraunces',serif;font-weight:400;font-size:1rem;color:var(--ink);}
.vcg-distinction p{color:var(--ink-soft);font-size:.92rem;line-height:1.6;margin-top:.25rem;}

/* options card */
.vcg-options{margin-top:1.6rem;padding:1.1rem 1.15rem;background:rgba(201,180,143,.08);border:1px solid rgba(201,180,143,.4);border-radius:10px;}
.vcg-options-h{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne);margin-bottom:.7rem;}
.vcg-opt{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;padding:.5rem 0;border-top:1px solid rgba(38,36,31,.08);}
.vcg-opt:first-of-type{border-top:0;}
.vcg-opt-name{font-size:.92rem;color:var(--ink);}
.vcg-opt-price{font-family:'Fraunces',serif;font-size:.95rem;color:var(--ink);white-space:nowrap;}
.vcg-sample{font-family:'Instrument Sans',sans-serif;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--stone);border:1px solid rgba(168,159,145,.5);border-radius:99px;padding:.05rem .35rem;margin-left:.25rem;vertical-align:middle;}
.vcg-pricenote{margin-top:.9rem;font-size:.78rem;color:var(--stone);line-height:1.55;}

/* flags */
.vcg-flag{display:inline-block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;
  padding:.3rem .7rem;border-radius:99px;margin-bottom:.9rem;}
.vcg-flag-amber{background:#F6E9DA;color:#9A6420;border:1px solid rgba(154,100,32,.3);}

/* actions */
.vcg-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.5rem;}
.vcg-answer .btn,.vcg-lead .btn,.vcg-done .btn{font-size:12.5px;}
.btn.btn-outline{background:transparent;border:1px solid rgba(38,36,31,.28);color:var(--ink);}
.btn.btn-outline:hover{border-color:var(--champagne);}

/* red / emergency */
.vcg-red{text-align:center;padding:1.5rem .5rem;animation:vcgfade .4s ease both;}
.vcg-red-mark{width:52px;height:52px;border-radius:50%;margin:0 auto 1.1rem;
  display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-size:1.6rem;
  color:#fff;background:#B23A2E;}
.vcg-red-title{font-family:'Fraunces',serif;font-weight:400;font-size:1.4rem;color:var(--ink);margin-bottom:.9rem;}
.vcg-red p{color:var(--ink-soft);line-height:1.6;font-size:.95rem;margin-top:.7rem;max-width:40ch;margin-left:auto;margin-right:auto;}
.vcg-red-contact{color:var(--ink);font-weight:600;background:#F7ECEA;border:1px dashed rgba(178,58,46,.4);border-radius:8px;padding:.6rem .8rem;}

/* lead form */
.vcg-lead{animation:vcgfade .4s ease both;}
.vcg-field{display:block;margin-top:.9rem;}
.vcg-field span{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--stone);margin-bottom:.3rem;}
.vcg-field input,.vcg-field select{width:100%;font:inherit;font-size:.95rem;color:var(--ink);
  background:#fff;border:1px solid rgba(38,36,31,.18);border-radius:8px;padding:.65rem .8rem;}
.vcg-field input:focus,.vcg-field select:focus{outline:none;border-color:var(--champagne);}
.vcg-consent{display:flex;gap:.6rem;align-items:flex-start;margin-top:1.1rem;font-size:.85rem;color:var(--ink-soft);line-height:1.5;}
.vcg-consent input{margin-top:.2rem;flex:0 0 auto;}

/* done */
.vcg-done{text-align:center;padding:2rem .5rem;animation:vcgfade .4s ease both;}
.vcg-done-mark{width:52px;height:52px;border-radius:50%;margin:0 auto 1.2rem;
  display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:#fff;background:var(--champagne);}
.vcg-done p{color:var(--ink-soft);line-height:1.65;max-width:38ch;margin:0 auto 1.4rem;}

/* footer */
.vcg-foot{flex:0 0 auto;padding:.9rem 1.4rem 1.1rem;border-top:1px solid rgba(38,36,31,.1);background:var(--linen);}
.vcg-disclaimer{font-size:11px;color:var(--stone);line-height:1.5;}

/* keep the site un-scrolled behind an open panel on mobile */
@media(max-width:560px){ body.vcg-open{overflow:hidden;} }

/* Concierge homepage invitation — a calm band between "What we do" and Team */
.concierge-invite{padding:clamp(3rem,7vw,5.5rem) 0;background:var(--warmwhite);}
.concierge-invite .btn{font-size:13px;}

/* ============================================================================
   CONCIERGE — homepage consultation module (visible entry point)
   ============================================================================ */
.cgh{padding:clamp(3.4rem,8vw,6.5rem) 0;background:linear-gradient(180deg,var(--warmwhite),var(--linen));}
.cgh-grid{display:grid;grid-template-columns:0.92fr 1.08fr;gap:clamp(1.6rem,4vw,3.4rem);align-items:stretch;}
@media(max-width:860px){.cgh-grid{grid-template-columns:1fr;}}

/* photo */
.cgh-photo{position:relative;margin:0;border-radius:6px;overflow:hidden;min-height:340px;
  box-shadow:0 24px 60px rgba(20,14,9,.14);}
.cgh-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.cgh-caption{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:.5rem;
  padding:1.4rem 1.3rem .95rem;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#fff;
  background:linear-gradient(0deg,rgba(20,14,9,.55),transparent);}
.cgh-dot{width:7px;height:7px;border-radius:50%;background:var(--champagne);box-shadow:0 0 0 3px rgba(201,180,143,.35);}
@media(max-width:860px){.cgh-photo{min-height:230px;}}

/* card */
.cgh-card{
  background:var(--warmwhite);border:1px solid rgba(201,180,143,.5);border-radius:8px;
  padding:clamp(1.5rem,3vw,2.4rem);display:flex;flex-direction:column;
  box-shadow:0 20px 50px rgba(20,14,9,.1);
}
.cgh-badge{display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;
  font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne);font-weight:600;
  border:1px solid rgba(201,180,143,.5);border-radius:99px;padding:.32rem .75rem;}
.cgh-badge-dot{width:7px;height:7px;border-radius:50%;background:var(--champagne);
  animation:cghpulse 2.4s infinite ease-in-out;}
@keyframes cghpulse{0%,100%{box-shadow:0 0 0 0 rgba(201,180,143,.5);}50%{box-shadow:0 0 0 5px rgba(201,180,143,0);}}
@media(prefers-reduced-motion:reduce){.cgh-badge-dot{animation:none;}}
.cgh-title{font-family:'Fraunces',serif;font-weight:340;font-size:clamp(1.6rem,3vw,2.2rem);
  line-height:1.12;letter-spacing:-.01em;margin-top:1rem;color:var(--ink);text-wrap:balance;}
.cgh-lead{color:var(--ink-soft);line-height:1.7;font-size:.98rem;margin-top:.9rem;max-width:52ch;}

/* the live preview */
.cgh-preview{margin-top:1.6rem;background:#fff;border:1px solid rgba(38,36,31,.1);border-radius:12px;padding:1.1rem;}
.cgh-bubble{display:inline-block;background:var(--linen);border:1px solid rgba(38,36,31,.08);
  border-radius:14px 14px 14px 4px;padding:.6rem .9rem;font-size:.95rem;color:var(--ink);
  animation:cghfade .5s ease both;}
@keyframes cghfade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
.cgh-ask{display:flex;gap:.5rem;margin-top:.9rem;}
.cgh-ask input{flex:1;font:inherit;font-size:.95rem;color:var(--ink);background:var(--warmwhite);
  border:1px solid rgba(38,36,31,.18);border-radius:99px;padding:.7rem 1rem;}
.cgh-ask input:focus{outline:none;border-color:var(--champagne);}
.cgh-send{flex:0 0 auto;width:44px;border:0;border-radius:50%;background:var(--anthracite);color:var(--linen);
  font-size:1.15rem;cursor:pointer;transition:background .3s,transform .3s;}
.cgh-send:hover{background:var(--softblack);transform:translateX(2px);}
.cgh-chips{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.95rem;}
.cgh-chip{font:inherit;font-size:.85rem;color:var(--ink-soft);cursor:pointer;
  background:var(--warmwhite);border:1px solid rgba(38,36,31,.14);border-radius:99px;padding:.4rem .85rem;
  transition:border-color .2s,color .2s,transform .2s;}
.cgh-chip:hover{border-color:var(--champagne);color:var(--ink);transform:translateY(-1px);}
.cgh-note{margin-top:1.1rem;font-size:.8rem;color:var(--stone);line-height:1.55;}

/* Concierge — booking choice screen */
.vcg-choice{animation:vcgfade .4s ease both;}
.vcg-recap{margin-top:1.3rem;padding:1rem 1.1rem;background:rgba(201,180,143,.08);
  border:1px solid rgba(201,180,143,.4);border-radius:10px;}
.vcg-recap-row{display:flex;gap:.8rem;padding:.35rem 0;font-size:.9rem;}
.vcg-recap-row span{flex:0 0 auto;min-width:6.5rem;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);padding-top:.2rem;}
.vcg-recap-row b{color:var(--ink);font-weight:500;line-height:1.5;}
.vcg-choice-actions{display:flex;flex-direction:column;gap:.7rem;margin-top:1.6rem;}
.vcg-choice-actions .btn{width:100%;justify-content:center;text-align:center;}
.vcg-wa{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  background:#25D366;color:#0b3d24;border:0;}
.vcg-wa:hover{background:#1fbb59;}
.vcg-back{display:block;margin:1.3rem auto 0;background:none;border:0;color:var(--stone);
  font:inherit;font-size:.85rem;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.vcg-back:hover{color:var(--ink);}

/* ============================================================= *
 * Treatment Packages page (packages.html) — Mod 61              *
 * Filterable grid of combo packages, each with Doctoralia /     *
 * WhatsApp / phone routes to reserve. Uses the existing tokens. *
 * ============================================================= */
/* ZO physician-dispensed: alt contact line + protocols section */
.shop-rx-or{margin-top:1.8rem;font-size:13px;letter-spacing:.02em;color:var(--stone);text-align:center;}
.shop-rx-alt{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap;margin-top:.9rem;}
.btn.btn-pill{background:transparent;border:1px solid rgba(38,36,31,.22);color:var(--ink);
  padding:.62rem 1.35rem;font-size:13px;border-radius:999px;text-decoration:none;white-space:nowrap;}
.btn.btn-pill:hover{border-color:var(--champagne);background:rgba(38,36,31,.03);}
/* Unified bag checkout (products + optional ZO assessment reservation) */
.cart-checkout{margin-top:2.2rem;padding:1.8rem 1.9rem;border:1px solid var(--sand);border-radius:16px;background:var(--linen);}
.cart-zo-note{color:var(--ink-soft);font-size:13.5px;line-height:1.6;margin:0 0 1.3rem;}
.cart-sum{margin-bottom:1.4rem;}
.cart-sum-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;
  padding:.7rem 0;font-size:14.5px;color:var(--ink-soft);}
.cart-sum-row + .cart-sum-row{border-top:1px solid var(--sand);}
.cart-sum-total{border-top:1px solid var(--stone);margin-top:.2rem;padding-top:.9rem;
  font-family:'Fraunces',serif;font-size:1.15rem;color:var(--ink);}
.cart-sum-total span:last-child{white-space:nowrap;}
.cart-checkout #cartPay{width:100%;}
.cart-confirm{margin-top:1.6rem;padding-top:1.4rem;border-top:1px dashed var(--stone);}
.cart-confirm h4{font-size:1.05rem;margin:0 0 .5rem;}
.cart-confirm p{color:var(--ink-soft);font-size:14px;line-height:1.6;margin:0 0 1.1rem;}
.cart-confirm .btn-primary{display:inline-block;}
.cart-confirm-alt,.cart-fallback{margin-top:1.1rem;font-size:12.5px;color:var(--stone);}
.cart-fallback{margin-top:1.3rem;text-align:center;}
.cart-confirm-alt a,.cart-fallback a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--sand);}
.cart-confirm-alt a:hover,.cart-fallback a:hover{border-bottom-color:var(--stone);}
.cart-remove{background:none;border:0;padding:0;margin-top:.4rem;font:inherit;font-size:12.5px;color:var(--stone);
  text-decoration:none;border-bottom:1px solid var(--sand);cursor:pointer;}
.cart-remove:hover{color:var(--ink);border-bottom-color:var(--stone);}
/* Breadcrumbs — clearly navigable, arrow separators, sitewide */
.breadcrumb a{text-decoration:none;border-bottom:1px solid transparent;transition:color .2s,border-color .2s;}
.breadcrumb a:hover{color:var(--ink);border-bottom-color:var(--champagne);}
.breadcrumb .crumb-sep{margin:0 .5em;color:var(--sand);}
.breadcrumb .crumb-current,#pdCrumb{color:var(--ink);}
.shop-crumb{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);}
.shop-crumb a{color:var(--stone);}
.zo-protocols{background:var(--linen);}
.zo-proto-grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:1.8rem;}
.zo-proto{background:var(--warmwhite);border:1px solid var(--sand);border-radius:14px;padding:1.4rem 1.5rem;}
.zo-proto h3{font-family:'Fraunces',serif;font-weight:340;font-size:1.15rem;color:var(--ink);margin:0 0 .2rem;}
.zo-proto .zo-proto-for{font-size:11.5px;color:var(--champagne);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .7rem;}
.zo-proto ol{margin:0;padding-left:1.15rem;}
.zo-proto li{font-size:12.5px;color:var(--ink-soft);padding:.18rem 0;line-height:1.4;}
.zo-proto li b{color:var(--ink);font-weight:500;}
.zo-proto-note{text-align:center;max-width:60ch;margin:1.8rem auto 0;font-size:12.5px;color:var(--stone);}

/* Shared Shop sub-navigation (Treatment Combos · Skincare · Gift Vouchers).
   Sits just below the fixed header; the hero that follows drops its large
   top padding since the bar now provides the header clearance. */
.shop-tabs{
  display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem;
  background:var(--warmwhite);border-bottom:1px solid var(--sand);
  padding:calc(var(--header-h) + .8rem) 1rem .8rem;
  position:relative;z-index:2;
}
.shop-tabs + section{padding-top:2.6rem !important;}
.shop-tab{
  font-family:'Instrument Sans',sans-serif;font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--stone);text-decoration:none;padding:.5rem .95rem;border-radius:99px;
  transition:color .25s,background .25s;
}
.shop-tab:hover{color:var(--ink);}
.shop-tab.is-active{color:var(--anthracite);background:var(--linen);font-weight:500;}
@media(max-width:520px){ .shop-tab{font-size:11px;letter-spacing:.06em;padding:.45rem .7rem;} }

.pkg-hero{background:var(--warmwhite);text-align:center;padding-top:clamp(7rem,12vh,10rem);}
.pkg-hero .horizon{margin:1.4rem auto 1.8rem;}
.pkg-lede{max-width:60ch;margin:0 auto;color:var(--ink-soft);}
.pkg-changenote{max-width:66ch;margin:1.1rem auto 0;font-size:12.5px;line-height:1.55;color:var(--stone);}
.pkg-filters{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:center;margin-top:1.9rem;}
.pkg-chip{
  font-family:inherit;font-size:13px;letter-spacing:.01em;cursor:pointer;
  padding:.5rem 1.05rem;border-radius:99px;border:1px solid var(--sand);
  background:transparent;color:var(--ink-soft);transition:background .25s,color .25s,border-color .25s;
}
.pkg-chip:hover{border-color:var(--stone);color:var(--ink);}
.pkg-chip.is-active{background:var(--anthracite);border-color:var(--anthracite);color:var(--linen);}

.pkg-section{background:var(--linen);padding-top:clamp(2.4rem,5vw,3.6rem);}
.pkg-grid{
  display:grid;gap:1.4rem;
  grid-template-columns:repeat(auto-fill,minmax(310px,1fr));
  align-items:stretch;
}
.pkg-card{
  display:flex;flex-direction:column;
  background:var(--warmwhite);border:1px solid var(--sand);border-radius:16px;
  padding:1.5rem 1.5rem 1.35rem;
}
.pkg-card-top{margin-bottom:.9rem;}
.pkg-tag{
  display:inline-block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--stone);border:1px solid var(--sand);border-radius:99px;padding:.2rem .6rem;margin-bottom:.85rem;
}
.pkg-concern{
  font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--champagne);
  margin:0 0 .35rem;line-height:1.35;font-weight:500;
}
.pkg-name{
  font-family:'Fraunces',serif;font-weight:340;font-size:1.32rem;line-height:1.2;
  color:var(--ink);margin:0;text-wrap:balance;
}
.pkg-price-row{margin:.2rem 0 .6rem;}
.pkg-price{font-family:'Fraunces',serif;font-size:1.7rem;font-weight:400;color:var(--anthracite);}
.pkg-price .pkg-from{font-family:'Instrument Sans',sans-serif;font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--stone);margin-right:.15rem;vertical-align:.28em;}
.pkg-price.is-consult{font-size:1.12rem;color:var(--ink-soft);font-style:italic;}
.pkg-vat{display:block;margin-top:.15rem;font-size:10.5px;letter-spacing:.04em;color:var(--stone);}
.pkg-note{
  font-size:11.5px;line-height:1.5;color:var(--ink-soft);
  background:rgba(201,180,143,.13);border-left:2px solid var(--champagne);
  padding:.55rem .7rem;border-radius:0 6px 6px 0;margin:.1rem 0 1rem;
}
.pkg-incl{border-top:1px solid var(--sand);margin-top:auto;padding-top:.85rem;}
.pkg-incl-head{
  margin:0 0 .35rem;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);
}
.pkg-incl ul{list-style:none;margin:0 0 .2rem;padding:0;}
.pkg-incl li{
  display:flex;justify-content:space-between;gap:1rem;
  font-size:12.5px;color:var(--ink-soft);padding:.3rem 0;border-bottom:1px dotted rgba(168,159,145,.35);
}
.pkg-incl li:last-child{border-bottom:0;}
.pkg-incl-p{white-space:nowrap;color:var(--ink);}

.pkg-cta{margin-top:1rem;display:flex;flex-direction:column;gap:.6rem;}
.pkg-cta .pkg-book{width:100%;text-align:center;font-size:13.5px;padding:.85rem 1rem;}

/* ============================================================= *
 * The 50 Vogue Facials (facials.html) — Mod 62                  *
 * ============================================================= */
.fac-hero{background:var(--warmwhite);text-align:center;padding-top:clamp(7rem,12vh,10rem);}
.fac-hero .horizon{margin:1.4rem auto 1.8rem;}
.fac-lede{max-width:64ch;margin:0 auto;color:var(--ink-soft);}
.fac-filters{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:center;margin-top:1.9rem;}
.fac-chip{
  font-family:inherit;font-size:13px;letter-spacing:.01em;cursor:pointer;
  padding:.5rem 1.05rem;border-radius:99px;border:1px solid var(--sand);
  background:transparent;color:var(--ink-soft);transition:background .25s,color .25s,border-color .25s;
}
.fac-chip:hover{border-color:var(--stone);color:var(--ink);}
.fac-chip.is-active{background:var(--anthracite);border-color:var(--anthracite);color:var(--linen);}

.fac-section{background:var(--linen);padding-top:clamp(2.4rem,5vw,3.6rem);}
.fac-grid{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));align-items:stretch;}
.fac-card{display:flex;flex-direction:column;background:var(--warmwhite);border:1px solid var(--sand);border-radius:16px;padding:1.6rem 1.6rem 1.4rem;}
.fac-tag{display:inline-block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);
  border:1px solid var(--sand);border-radius:99px;padding:.2rem .6rem;margin-bottom:.75rem;}
.fac-name{font-family:'Fraunces',serif;font-weight:340;font-size:1.3rem;line-height:1.22;color:var(--ink);margin:0;text-wrap:balance;}
.fac-badges{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem;}
.fac-badge{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--anthracite);
  background:var(--linen);border-radius:99px;padding:.25rem .6rem;}
.fac-badge-soft{background:transparent;border:1px solid var(--sand);color:var(--stone);}
.fac-blurb{font-size:13.5px;line-height:1.55;color:var(--ink-soft);margin:.9rem 0 .2rem;}
.fac-bestfor{font-size:12px;line-height:1.5;color:var(--stone);margin:.5rem 0 0;}
.fac-bestfor-k{color:var(--champagne);text-transform:uppercase;letter-spacing:.08em;font-size:10.5px;}
.fac-protocol{border-top:1px solid var(--sand);margin-top:1rem;padding-top:.85rem;}
.fac-protocol-head{margin:0 0 .4rem;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);}
.fac-protocol ol{margin:0;padding-left:1.1rem;}
.fac-protocol li{font-size:12.5px;color:var(--ink-soft);padding:.16rem 0;line-height:1.4;}
.fac-metas{margin-top:.9rem;display:flex;flex-direction:column;gap:.45rem;}
.fac-meta{margin:0;font-size:11.5px;line-height:1.45;}
.fac-meta-k{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:9.5px;color:var(--champagne);}
.fac-meta-v{color:var(--ink);}
.fac-price{margin:1rem 0 0;padding-top:1rem;border-top:1px solid rgba(38,36,31,.1);display:flex;align-items:baseline;gap:.35rem;}
.fac-price-k{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--stone);}
.fac-price-v{font-family:'Fraunces',serif;font-size:1.3rem;color:var(--ink);}
.fac-cta{margin-top:auto;padding-top:1.1rem;display:flex;flex-direction:column;gap:.55rem;align-items:center;}
.fac-cta .fac-book{width:100%;text-align:center;font-size:13.5px;padding:.85rem 1rem;}
.fac-alt{font-size:12.5px;color:var(--ink-soft);text-decoration:none;border-bottom:1px solid transparent;transition:color .2s,border-color .2s;}
.fac-alt:hover{color:var(--ink);border-bottom-color:var(--stone);}
.fac-note{text-align:center;max-width:60ch;margin:2.4rem auto 0;font-size:13px;color:var(--stone);}
@media(max-width:640px){ .fac-grid{grid-template-columns:1fr;} }
.pkg-cta-sub{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:12.5px;}
.pkg-alt{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid transparent;transition:color .2s,border-color .2s;}
.pkg-alt:hover{color:var(--ink);border-bottom-color:var(--stone);}
.pkg-alt-sep{color:var(--sand);}

.pkg-help{
  text-align:center;max-width:52ch;margin:2.4rem auto 0;
  font-size:13px;color:var(--stone);
}
@media(max-width:640px){
  .pkg-grid{grid-template-columns:1fr;}
}
.pkg-cta-sub{flex-wrap:wrap;}
.pkg-alt-lead{color:var(--stone);}

/* Package checkout (package-checkout.html) */
.pkgco-name{font-family:'Fraunces',serif;font-weight:340;font-size:1.25rem;color:var(--ink);margin:.5rem 0 .9rem;}
.pkgco-incl{list-style:none;margin:0 0 .4rem;padding:0;}
.pkgco-incl li{display:flex;justify-content:space-between;gap:1rem;font-size:12.5px;color:var(--ink-soft);
  padding:.35rem 0;border-bottom:1px dotted rgba(168,159,145,.35);}
.pkgco-incl li:last-child{border-bottom:0;}
.pkgco-incl-p{white-space:nowrap;color:var(--ink);}
.pkgco-tax{margin-top:.6rem;padding-top:.6rem;border-top:1px dotted rgba(168,159,145,.45);}
.pkgco-tax-row{display:flex;justify-content:space-between;gap:1rem;font-size:12.5px;color:var(--ink-soft);padding:.22rem 0;}
.pkgco-confirm{background:var(--warmwhite);border:1px solid var(--champagne);border-radius:14px;padding:1.6rem 1.5rem;}
.pkgco-confirm .pkgco-book{display:inline-block;text-align:center;}
.pkgco-confirm .pkg-note{border-left-color:var(--champagne);}
.pkgco-alt .pkg-alt{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px;}
.pkgco-alt .pkg-alt:hover{color:var(--ink);}

/* Team group photo (Our Team) */
.team-group{margin:0 0 clamp(2rem,5vw,3.5rem);border-radius:16px;overflow:hidden;box-shadow:0 24px 60px -34px rgba(30,26,20,.45);}
.team-group img{width:100%;height:auto;display:block;}
