/* Neon Moon Nail & Beauty: Countless Events palette (ivory · sand · ink · gold) */
:root{
  /* Blush & rose gold (Oct 2026). Text shades are deepened just enough to pass WCAG AA contrast. */
  --ivory:#FBF3F0;   /* page: soft blush white */
  --ivory-2:#F6E4DF; /* blush */
  --sand:#F2D3CC;    /* shell pink */
  --taupe:#E7B9B3;   /* petal: soft text on cocoa */
  --stone:#7C5357;   /* muted text on light grounds */
  --ink:#3A2326;     /* cocoa */
  --ink-2:#6B474B;
  --gold:#85523F;    /* rose gold, deep enough for small text */
  --gold-2:#D9A08A;  /* light rose gold, on cocoa */
  --rose:#A85D69;    /* dusty rose: headline accents */
  --rosegold:#B07A5E;
  --white:#FFFFFF;
  --ok:#4E7A5A;
  --bad:#9B3B3B;
  --line:color-mix(in srgb,var(--ink) 14%,transparent);
  --line-lt:rgba(255,255,255,.14);
  --ease:cubic-bezier(.16,1,.3,1);
  --serif:"Cormorant Garamond","Times New Roman",serif;
  --sans:"Jost","Helvetica Neue",Arial,sans-serif;
  --gut:clamp(20px,5vw,72px);
  --max:1320px;
  --hdr:84px;
  --r:2px;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--hdr) + 12px);-webkit-text-size-adjust:100%}
html,body{overflow-x:clip}
body{margin:0;background:var(--ivory);color:var(--ink);font:300 16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit}
em{font-style:italic}
::selection{background:var(--gold-2);color:var(--ink)}
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:12px;top:-60px;z-index:100;background:var(--ink);color:var(--ivory);padding:10px 16px;border-radius:999px;text-decoration:none;transition:top .3s var(--ease)}
.skip:focus{top:12px}
:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}

.eyebrow{margin:0 0 16px;font:400 11.5px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:14px}
.eyebrow::before{content:"";width:32px;height:1px;background:currentColor;opacity:.6}
.on-ink .eyebrow{color:var(--gold-2)}
.h2{margin:0;font:400 clamp(40px,5.8vw,78px)/1.02 var(--serif);letter-spacing:-.01em}
.h2 em{color:var(--rose)}
.on-ink .h2 em{color:var(--gold-2)}
.neon{font-style:italic;color:var(--rose);position:relative;white-space:nowrap}

/* ---------- buttons (same build as Countless Events) ---------- */
.btn{--bg:transparent;--fg:var(--ink);--bd:color-mix(in srgb,var(--ink) 30%,transparent);--sweep:var(--ink);--fg-h:var(--ivory);
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:16px 30px;border-radius:999px;border:1px solid var(--bd);background:var(--bg);color:var(--fg);
  font:400 12px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;text-decoration:none;cursor:pointer;overflow:hidden;isolation:isolate;transition:color .5s var(--ease),border-color .5s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--sweep);transform:translateY(101%);transition:transform .6s var(--ease)}
.btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round}
@media (hover:hover){.btn:hover{color:var(--fg-h);border-color:var(--sweep)}.btn:hover::before{transform:none}}
.btn--solid{--bg:var(--ink);--fg:var(--ivory);--bd:var(--ink);--sweep:var(--gold)}
.btn--ghost{}
.btn--light{--fg:var(--ivory);--bd:rgba(255,255,255,.45);--sweep:var(--ivory);--fg-h:var(--ink)}
.btn--gold{--bg:var(--gold);--fg:var(--white);--bd:var(--gold);--sweep:var(--ivory);--fg-h:var(--ink)}
.btn--sm{padding:12px 22px;font-size:11px}
.btn--lg{padding:20px 40px}
.btn--block{width:100%}

/* ---------- header ---------- */
.hdr{position:fixed;inset:0 0 auto;z-index:50;height:var(--hdr);transition:background .6s var(--ease),border-color .6s var(--ease),transform .6s var(--ease);border-bottom:1px solid transparent}
.hdr.is-solid{background:color-mix(in srgb,var(--ivory) 86%,transparent);backdrop-filter:blur(16px) saturate(1.2);border-color:var(--line)}
.hdr.is-hidden{transform:translateY(-100%)}
.hdr__in{height:100%;max-width:var(--max);margin:auto;padding-inline:var(--gut);display:flex;align-items:center;gap:30px}
.brand{display:flex;align-items:center;gap:0;text-decoration:none;margin-right:auto}
.brand__moon{width:50px;height:50px;flex:none;margin-top:-2px}
.brand__txt{display:flex;flex-direction:column;line-height:1;position:relative;z-index:1}
.brand__txt b{display:flex;flex-direction:column;font:500 22px/.86 var(--serif);letter-spacing:.01em}
.brand__txt b span{margin-left:-9px}
.brand__txt b em{font-weight:400;font-style:italic;color:var(--rose);margin-left:-2px}
.brand__txt i{white-space:nowrap;font:400 9.5px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;color:var(--stone);font-style:normal;margin-top:5px}
.nav{display:flex;gap:28px}
.nav a{position:relative;text-decoration:none;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);transition:color .4s var(--ease)}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .6s var(--ease)}
.nav a:hover,.nav a.is-on{color:var(--ink)}
.nav a:hover::after,.nav a.is-on::after{transform:scaleX(1);transform-origin:left}
.status{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.04em;color:var(--stone);white-space:nowrap}
.status i{width:7px;height:7px;border-radius:50%;background:var(--taupe)}
.status.is-open i{background:var(--ok);box-shadow:0 0 0 0 rgba(78,122,90,.5);animation:ping 2.4s infinite}
.status.is-closed i{background:var(--bad)}
@keyframes ping{70%{box-shadow:0 0 0 8px rgba(78,122,90,0)}100%{box-shadow:0 0 0 0 rgba(78,122,90,0)}}
.cta{position:relative;display:inline-flex;align-items:center;gap:9px;padding:12px 22px 12px 18px;border-radius:999px;background:var(--ink);color:var(--ivory);text-decoration:none;font:400 11.5px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;overflow:hidden;isolation:isolate}
.cta svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}
.cta__fill{position:absolute;inset:0;z-index:-1;background:var(--gold);transform:translateY(101%);transition:transform .6s var(--ease)}
.cta:hover .cta__fill{transform:none}
.magnetic{will-change:transform}
.burger{display:none;width:46px;height:46px;border:1px solid var(--line);border-radius:50%;background:none;cursor:pointer;position:relative}
.burger span{position:absolute;left:14px;right:14px;height:1px;background:var(--ink);transition:transform .5s var(--ease)}
.burger span:first-child{top:19px}.burger span:last-child{top:26px}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
.drawer{position:fixed;inset:0;z-index:45;background:var(--ink);color:var(--ivory);padding:calc(var(--hdr) + 32px) var(--gut) 32px;display:flex;flex-direction:column;justify-content:space-between}
.drawer[hidden]{display:none}
.drawer nav{display:flex;flex-direction:column;gap:4px}
.drawer nav a{font:400 clamp(40px,10vw,64px)/1.1 var(--serif);text-decoration:none;opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.drawer.is-open nav a{opacity:1;transform:none}
.drawer.is-open nav a:nth-child(2){transition-delay:.05s}.drawer.is-open nav a:nth-child(3){transition-delay:.1s}.drawer.is-open nav a:nth-child(4){transition-delay:.15s}.drawer.is-open nav a:nth-child(5){transition-delay:.2s}.drawer.is-open nav a:nth-child(6){transition-delay:.25s}
.drawer__foot{color:var(--taupe)}
body.menu-open .hdr{background:transparent;border-color:transparent;color:var(--ivory)}
body.menu-open .burger span{background:var(--ivory)}
body.menu-open .burger{border-color:var(--line-lt)}
body.menu-open .brand__txt i{color:var(--taupe)}
body.menu-open .brand__txt b em{color:var(--gold-2)}

/* ---------- hero ---------- */
.hero{position:relative;overflow-x:clip;min-height:100svh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-template-rows:1fr auto;align-items:center;gap:0 clamp(24px,4vw,72px);max-width:var(--max);margin:auto;padding:calc(var(--hdr) + 32px) var(--gut) 44px}
.hero__copy{grid-column:1;grid-row:1;position:relative;z-index:2}
.hero__title{margin:0 0 30px;font:400 clamp(60px,9.2vw,140px)/.92 var(--serif);letter-spacing:-.025em}
.hero__title .line{display:block;overflow:hidden;padding-bottom:.07em}
.hero__title .line>span{display:block;transform:translateY(105%);animation:rise 1.3s var(--ease) forwards}
.hero__title .line:nth-child(2)>span{animation-delay:.12s}
.hero__title .line:nth-child(3)>span{animation-delay:.24s}
@keyframes rise{to{transform:none}}
.hero__lede{max-width:440px;margin:0 0 36px;color:var(--ink-2);font:300 clamp(19px,1.6vw,22px)/1.45 var(--serif);opacity:0;animation:fade 1.2s .55s var(--ease) forwards}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;opacity:0;animation:fade 1.2s .7s var(--ease) forwards}
@keyframes fade{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* slideshow in an arched window so the photos show near native size */
.hero__stage{grid-column:2;grid-row:1;position:relative;z-index:1;justify-self:end;width:min(100%,520px);aspect-ratio:4/5.3;border-radius:999px 999px var(--r) var(--r);overflow:hidden;background:var(--sand);box-shadow:0 50px 100px -50px rgba(58,35,38,.45);opacity:0;animation:fade 1.4s .2s var(--ease) forwards}
.hero__stage::after{content:"";position:absolute;inset:10px;border:1px solid rgba(255,255,255,.55);border-radius:999px 999px var(--r) var(--r);pointer-events:none;z-index:2}
.slide{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.6s var(--ease)}
.slide.is-on{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 9s linear}
.slide.is-on img{transform:scale(1)}
.slide figcaption{display:none}
.hero__scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(58,35,38,0) 60%,rgba(58,35,38,.28))}
.hero::before{content:"";position:absolute;z-index:0;right:6%;top:24%;width:44vw;height:44vw;max-width:640px;max-height:640px;border-radius:50%;background:radial-gradient(circle,rgba(217,160,138,.3),rgba(217,160,138,.08) 45%,transparent 68%);pointer-events:none}
.hero__meta{grid-column:2;grid-row:2;justify-self:end;width:min(100%,520px);display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:18px}
.hero__cap{margin:0;min-width:0;font:italic 400 19px/1.2 var(--serif);color:var(--ink-2);transition:opacity .5s var(--ease)}
.dots{display:flex;gap:8px;flex:none}
.dots button{width:44px;height:24px;padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center}
.dots i{display:block;width:100%;height:1.5px;background:var(--line);overflow:hidden;position:relative}
.dots i::after{content:"";position:absolute;inset:0;background:var(--gold);transform:scaleX(0);transform-origin:left}
.dots [aria-selected="true"] i::after{animation:prog var(--dur,6s) linear forwards}
@keyframes prog{to{transform:scaleX(1)}}

/* ---------- marquee ---------- */
.marquee{border-block:1px solid var(--line);overflow:hidden;padding:24px 0;background:var(--sand)}
.marquee__track{display:flex;gap:34px;width:max-content;animation:marq 40s linear infinite;font:italic 400 clamp(24px,2.4vw,34px)/1 var(--serif);color:var(--ink-2)}
.marquee__track span:nth-child(even){color:var(--gold);font-style:normal;font-size:16px;align-self:center}
@keyframes marq{to{transform:translateX(-50%)}}

/* ---------- intro ---------- */
.intro{padding-block:clamp(90px,13vw,170px);display:grid;grid-template-columns:1.6fr 1fr;gap:clamp(32px,6vw,90px);align-items:end}
.intro__big{margin:0;font:300 clamp(30px,3.8vw,52px)/1.18 var(--serif);letter-spacing:-.005em}
.intro__big em{color:var(--gold)}
.intro__facts{list-style:none;margin:0;padding:0}
.intro__facts li{padding:18px 0;border-top:1px solid var(--line);display:grid;gap:2px}
.intro__facts li:last-child{border-bottom:1px solid var(--line)}
.intro__facts b{font-weight:400;font-size:12px;letter-spacing:.2em;text-transform:uppercase}
.intro__facts span{color:var(--ink-2);font-size:15px}

/* ---------- services: pinned horizontal glide ---------- */
.services{position:relative;background:var(--ivory-2);border-top:1px solid var(--line)}
.services__pin{position:sticky;top:0;min-height:100svh;display:flex;flex-direction:column;justify-content:center;gap:clamp(28px,4vw,48px);overflow:hidden;padding-block:calc(var(--hdr) + 10px) 40px}
.services__head{display:flex;align-items:end;gap:24px;flex-wrap:wrap}
.services__head .eyebrow{width:100%;margin-bottom:0}
.services__hint{margin:0 0 12px auto;color:var(--stone);font-size:11px;letter-spacing:.22em;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.services__hint::after{content:"";width:40px;height:1px;background:linear-gradient(90deg,var(--gold),transparent)}
.services__track{display:flex;gap:20px;padding-inline:max(var(--gut),calc((100vw - var(--max))/2 + var(--gut)));will-change:transform}
.svc{position:relative;flex:0 0 clamp(290px,30vw,390px);min-height:0;padding:28px 28px 30px;border-radius:var(--r);border:1px solid var(--line);background:var(--white);display:flex;flex-direction:column;overflow:hidden;transition:transform .7s var(--ease),box-shadow .7s var(--ease)}
.svc::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.svc:hover{transform:translateY(-6px);box-shadow:0 30px 60px -36px rgba(58,35,38,.35)}
.svc:hover::before{transform:scaleX(1)}
.svc__no{font:italic 400 20px/1 var(--serif);color:var(--gold)}
.svc h3{margin:6px 0 12px;font:400 40px/1 var(--serif)}
.svc p{margin:0 0 22px;color:var(--ink-2);font-size:15px}
.svc--shop{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
.svc--shop p{color:var(--taupe)}
.svc--shop .svc__no{color:var(--gold-2)}

/* ---------- work ---------- */
.work{padding-block:clamp(90px,12vw,160px)}
.work__head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:12px 40px;margin-bottom:48px}
.work__head .eyebrow{grid-column:1/-1;margin:0}
.work__sub{margin:0;color:var(--ink-2);max-width:320px}
.work__sub a{color:var(--gold);text-underline-offset:4px}
.tile{position:relative;padding:0;border:0;border-radius:var(--r);overflow:hidden;background:var(--sand);cursor:zoom-in;text-align:left}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.tile:hover img{transform:scale(1.06)}
.tile__cap{position:absolute;left:16px;bottom:16px;padding:9px 15px;border-radius:999px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;background:color-mix(in srgb,var(--ivory) 88%,transparent);backdrop-filter:blur(10px);transform:translateY(8px);opacity:0;transition:all .6s var(--ease)}
.tile:hover .tile__cap,.tile:focus-visible .tile__cap{transform:none;opacity:1}

/* ---------- studio (ink section) ---------- */
.studio{background:var(--ink);color:var(--ivory);overflow:hidden}
.studio__in{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(40px,7vw,110px);align-items:center;padding-block:clamp(90px,12vw,150px)}
.studio__copy .h2{margin-bottom:26px;font-size:clamp(36px,4.6vw,62px);line-height:1.04}
.studio__copy>p{color:var(--taupe);max-width:560px}
.studio__pillars{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:38px 0 0;background:var(--line-lt);border:1px solid var(--line-lt)}
.studio__pillars div{padding:24px;background:var(--ink)}
.studio__pillars dt{font:italic 400 26px/1 var(--serif);color:var(--gold-2);margin-bottom:10px}
.studio__pillars dd{margin:0;color:var(--taupe);font-size:14.5px}

/* ---------- book ---------- */
.book{padding-block:clamp(90px,12vw,160px)}
.book__head{max-width:640px;margin-bottom:50px}
.book__head>p:last-child{color:var(--ink-2);margin:20px 0 0}
.book__grid{display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:18px;align-items:start}
.person{position:relative;padding:32px 30px;border-radius:var(--r);border:1px solid var(--line);background:var(--white);cursor:pointer;transition:border-color .5s var(--ease),box-shadow .5s var(--ease)}
.person.is-picked{border-color:var(--gold);box-shadow:0 30px 60px -40px rgba(176,122,94,.7)}
.person__badge{display:inline-block;padding:7px 13px;border-radius:999px;font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;background:var(--ivory);border:1px solid var(--line);color:var(--gold)}
.person.is-picked .person__badge{background:var(--gold);border-color:var(--gold);color:var(--white)}
.person h3{margin:38px 0 2px;font:400 48px/1 var(--serif)}
.person__role{margin:0 0 16px;color:var(--stone);font-size:11px;letter-spacing:.22em;text-transform:uppercase}
.person>p:not(.person__role){color:var(--ink-2);font-size:15px;margin:0 0 22px}
.person__links{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.person__links a{display:flex;align-items:center;gap:10px;font-size:14px;text-decoration:none;word-break:break-all;transition:color .4s var(--ease)}
.person__links a:hover{color:var(--gold)}
.person__links svg{flex:none;width:16px;height:16px;fill:none;stroke:var(--gold);stroke-width:1.4;stroke-linejoin:round}
.planner{padding:32px 30px;border-radius:var(--r);background:var(--sand);border:1px solid var(--line)}
.planner h3{margin:0 0 22px;font:400 36px/1 var(--serif)}
.chips{border:0;margin:0 0 18px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.chips legend{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-2);margin-bottom:10px;padding:0}
.chips label{position:relative;cursor:pointer}
.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:block;padding:9px 15px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);font-size:13.5px;background:var(--ivory);transition:all .4s var(--ease)}
.chips label:hover span{border-color:var(--ink)}
.chips input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--ivory)}
.chips input:focus-visible+span{outline:1.5px solid var(--gold);outline-offset:2px}
.planner__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field{display:grid;gap:6px;margin-bottom:14px}
.field>span{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-2)}
.field small{text-transform:none;letter-spacing:0}
.field input,.field select,.field textarea{width:100%;padding:13px 14px;border-radius:var(--r);border:1px solid color-mix(in srgb,var(--ink) 18%,transparent);background:var(--ivory);color:var(--ink);font:inherit;font-size:15px;transition:border-color .4s var(--ease),box-shadow .4s var(--ease)}
.field textarea{resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(176,122,94,.18)}
.planner__err{margin:0 0 12px;color:var(--bad);font-size:14px}
.planner__small{margin:12px 0 0;font-size:12.5px;color:var(--ink-2);text-align:center}

/* ---------- visit ---------- */
.visit{background:var(--sand)}
.visit__in{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(32px,6vw,80px);padding-block:clamp(90px,11vw,140px);align-items:stretch}
.visit address{font:400 clamp(26px,2.6vw,36px)/1.2 var(--serif);font-style:normal;margin:26px 0 28px}
.hours{width:100%;border-collapse:collapse;margin-bottom:30px}
.hours th,.hours td{padding:15px 0;border-top:1px solid var(--line);font-weight:300;text-align:left}
.hours td{text-align:right;color:var(--ink-2)}
.hours tr:last-child th,.hours tr:last-child td{border-bottom:1px solid var(--line)}
.hours tr.is-today th,.hours tr.is-today td{color:var(--ink);font-weight:400}
.hours tr.is-today th::after{content:"Today";margin-left:10px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;padding:4px 9px;border-radius:999px;background:var(--gold);color:var(--white);vertical-align:2px}
.visit__actions{display:flex;flex-wrap:wrap;gap:12px}
.visit__actions .btn--ghost{text-transform:none;letter-spacing:.02em;font-size:14px}
.visit__pay{color:var(--ink-2);font-size:14px;margin:22px 0 0}
.visit__map{min-height:420px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);position:relative;background:var(--ivory-2)}
.visit__map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) sepia(.18) contrast(.92) brightness(1.02)}

/* ---------- faq ---------- */
.faq{padding-block:clamp(90px,12vw,160px);display:grid;grid-template-columns:1fr 1.7fr;gap:clamp(32px,6vw,90px);align-items:start}
.faq__head{position:sticky;top:calc(var(--hdr) + 30px)}
.faq__list details{border-top:1px solid var(--line)}
.faq__list details:last-child{border-bottom:1px solid var(--line)}
.faq__list summary{list-style:none;cursor:pointer;padding:26px 50px 26px 0;position:relative;font:400 clamp(22px,2vw,28px)/1.25 var(--serif);transition:color .4s var(--ease)}
.faq__list summary::-webkit-details-marker{display:none}
.faq__list summary::after,.faq__list summary::before{content:"";position:absolute;right:8px;top:50%;width:16px;height:1px;background:var(--gold);transition:transform .5s var(--ease)}
.faq__list summary::before{transform:rotate(90deg)}
.faq__list details[open] summary::before{transform:rotate(0)}
.faq__list summary:hover{color:var(--gold)}
.faq__list details p{margin:0 0 16px;color:var(--ink-2);max-width:640px}
.faq__list details>div>p:last-child{margin-bottom:28px}

/* ---------- closer (ink) ---------- */
.closer{position:relative;overflow:hidden;text-align:center;background:var(--ink);color:var(--ivory)}
.closer::before{content:"";position:absolute;left:50%;top:50%;width:900px;height:900px;transform:translate(-50%,-30%);border-radius:50%;background:radial-gradient(circle,rgba(217,160,138,.2),rgba(217,160,138,.05) 40%,transparent 62%)}
.closer__in{position:relative;padding-block:clamp(110px,15vw,200px)}
.closer__title{margin:0 0 42px;font:400 clamp(52px,9vw,130px)/.95 var(--serif);letter-spacing:-.02em}
.closer .neon{color:var(--gold-2)}

/* ---------- footer ---------- */
.ftr{background:var(--ink);color:var(--ivory);border-top:1px solid var(--line-lt)}
.ftr__in{display:grid;grid-template-columns:1.2fr .9fr .9fr 1.3fr 1fr auto;gap:32px;padding-block:64px 44px;align-items:start}
.ftr__brand{display:flex;flex-direction:column;align-items:center;gap:10px;width:fit-content}
.ftr__logo{width:190px;height:auto}
.ftr__phone{font:400 22px/1 var(--sans);letter-spacing:.14em;color:var(--ivory);text-decoration:none;font-variant-numeric:tabular-nums;transition:color .4s var(--ease)}
.ftr__phone:hover{color:var(--gold-2)}
.ftr h4{margin:0 0 12px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-2);font-weight:400}
.ftr p{margin:0;color:var(--taupe);font-size:14.5px;line-height:1.8}
.ftr a{text-decoration:none;transition:color .4s var(--ease)}
.ftr a:hover{color:var(--ivory)}
.ftr__social{display:flex;gap:10px}
.ftr__social a{width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line-lt);border-radius:50%;transition:border-color .4s var(--ease),background .4s var(--ease)}
.ftr__social a:hover{border-color:var(--gold);background:var(--gold)}
.ftr__social svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round}
.ftr__social .f,.fab .f{fill:currentColor;stroke:none}
.ftr__base{padding-block:24px 32px;border-top:1px solid var(--line-lt);color:var(--stone);font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin:0}

.ftr__svc{display:grid;gap:6px;align-content:start}
.ftr__svc a{color:var(--taupe);font-size:14.5px;width:fit-content}
/* ---------- lightbox ---------- */
.lb{border:0;padding:0;background:transparent;max-width:min(92vw,900px);max-height:92vh;color:var(--ivory);overflow:visible}
.lb::backdrop{background:rgba(58,35,38,.9);backdrop-filter:blur(6px)}
.lb[open]{animation:fade .6s var(--ease)}
.lb img{max-height:82vh;width:auto;margin:auto;border-radius:var(--r)}
.lb__cap{text-align:center;font:italic 400 20px/1.3 var(--serif);color:var(--taupe);margin:14px 0 0}
.lb__x{position:absolute;top:10px;right:10px;width:46px;height:46px;border-radius:50%;border:1px solid var(--line-lt);background:rgba(58,35,38,.7);color:var(--ivory);font-size:26px;line-height:1;cursor:pointer}

/* ---------- floating whatsapp ---------- */
.fab{position:fixed;right:18px;bottom:18px;z-index:40;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--ivory);box-shadow:0 14px 30px -10px rgba(58,35,38,.6);transform:scale(0);transition:transform .6s var(--ease),background .4s var(--ease)}
.fab:hover{background:var(--gold)}
.fab.is-on{transform:scale(1)}
.fab svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}

/* ---------- reveal (opt-in; removed if the observer never reports) ---------- */
html.js-reveal .reveal{opacity:0;transform:translateY(28px);transition:opacity 1.2s var(--ease),transform 1.2s var(--ease)}
html.js-reveal .reveal.is-in{opacity:1;transform:none}

/* ---------- service scenes (line art, RPSM-style loops) ---------- */
.sc{display:block;width:100%;height:clamp(118px,17vh,158px);margin:14px 0 18px;overflow:visible}
.sc .ln{fill:none;stroke:var(--ink);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.sc .ln.thin{stroke-width:1.4;opacity:.5}
.sc .gl{fill:none;stroke:var(--gold);stroke-width:2;stroke-linecap:round}
.sc .sil{fill:var(--ink)}
.sc .gd{fill:var(--gold)}
.sc .bl{fill:var(--sand)}
.sc .nail{fill:var(--ivory-2);stroke:var(--ink);stroke-width:1.4;opacity:.9}
.sc .fl{fill:var(--sand);stroke:var(--ink);stroke-width:1.6}
.sc .hl{fill:var(--white)}
.sc .wl{fill:none;stroke:var(--ivory);stroke-width:1.2;stroke-linecap:round;opacity:.55}
.sc *{transform-box:view-box}
.svc--shop .sc .ln{stroke:var(--ivory)}
.svc--shop .sc .sil{fill:var(--ivory)}
.svc--shop .sc .gd{fill:var(--gold-2)}
.svc--shop .sc .cover{fill:var(--ink)}
/* sparkles shared */
@keyframes tw{0%,100%{opacity:0;transform:scale(.3)}40%,60%{opacity:1;transform:scale(1)}}
.sc .tw{transform-box:fill-box;transform-origin:center;animation:tw 2.6s var(--ease) infinite}
.sc .tw.t2{animation-delay:.9s}.sc .tw.t3{animation-delay:1.7s}

/* 01 gel: brush coats each nail in turn, the lamp cures */
.s-gel .coat{fill:var(--gold);transform-box:fill-box;transform-origin:50% 100%}
@keyframes c1{0%{transform:scaleY(0);opacity:1}12%,86%{transform:scaleY(1);opacity:1}94%,100%{transform:scaleY(1);opacity:0}}
@keyframes c2{0%,22%{transform:scaleY(0);opacity:1}34%,86%{transform:scaleY(1);opacity:1}94%,100%{transform:scaleY(1);opacity:0}}
@keyframes c3{0%,44%{transform:scaleY(0);opacity:1}56%,86%{transform:scaleY(1);opacity:1}94%,100%{transform:scaleY(1);opacity:0}}
@keyframes c4{0%,66%{transform:scaleY(0);opacity:1}78%,86%{transform:scaleY(1);opacity:1}94%,100%{transform:scaleY(1);opacity:0}}
.s-gel .c1{animation:c1 7s var(--ease) infinite}.s-gel .c2{animation:c2 7s var(--ease) infinite}
.s-gel .c3{animation:c3 7s var(--ease) infinite}.s-gel .c4{animation:c4 7s var(--ease) infinite}
@keyframes brush{
  0%{transform:translate(48px,74px)}6%{transform:translate(48px,84px)}12%{transform:translate(48px,72px)}
  22%{transform:translate(82px,58px)}28%{transform:translate(82px,68px)}34%{transform:translate(82px,56px)}
  44%{transform:translate(116px,64px)}50%{transform:translate(116px,74px)}56%{transform:translate(116px,62px)}
  66%{transform:translate(150px,82px)}72%{transform:translate(150px,92px)}78%{transform:translate(150px,80px)}
  88%{transform:translate(184px,40px)}100%{transform:translate(48px,74px)}}
.s-gel .brush{transform:translate(48px,74px);animation:brush 7s cubic-bezier(.45,0,.25,1) infinite;will-change:transform}
@keyframes lamp{0%,100%{opacity:.35}50%{opacity:1}}
.s-gel .lamp{animation:lamp 2.2s ease-in-out infinite}
.s-gel .rays{animation:lamp 2.2s ease-in-out infinite}
.s-gel .rays line{stroke-dasharray:4 6;animation:rays .9s linear infinite}
@keyframes rays{to{stroke-dashoffset:-20}}

/* 02 nail art: a fine brush paints a sprig, dots pop, sparkles */
.s-art .draw{stroke-dasharray:90;stroke-dashoffset:90;animation:draw 6s var(--ease) infinite}
@keyframes draw{0%,8%{stroke-dashoffset:90;opacity:1}48%,86%{stroke-dashoffset:0;opacity:1}96%,100%{stroke-dashoffset:0;opacity:0}}
.s-art .dot{transform-box:fill-box;transform-origin:center;animation:dot 6s var(--ease) infinite}
.s-art .d2{animation-delay:.35s}.s-art .d3{animation-delay:.7s}
@keyframes dot{0%,50%{transform:scale(0)}58%,86%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes pen{0%,8%{transform:translate(0,30px)}20%{transform:translate(-3px,24px)}32%{transform:translate(-4px,10px)}44%{transform:translate(4px,4px)}
  52%{transform:translate(-12px,24px)}58%{transform:translate(12px,26px)}66%{transform:translate(8px,-6px)}80%,100%{transform:translate(40px,-30px)}}
.s-art .pen{animation:pen 6s cubic-bezier(.45,0,.25,1) infinite}

/* 03 mani/pedi: the file buffs the tip, the polish brush lifts and drips */
.s-mani .file-w{transform:rotate(16deg);transform-origin:136px 132px}
@keyframes file{0%,100%{transform:translateY(-8px)}50%{transform:translateY(10px)}}
.s-mani .file{animation:file .55s ease-in-out infinite}
@keyframes dust{0%{transform:translate(0,0);opacity:0}20%{opacity:.8}100%{transform:translate(var(--x,8px),16px);opacity:0}}
.s-mani .dust{animation:dust 1.1s linear infinite}
.s-mani .u2{--x:16px;animation-delay:.35s}.s-mani .u3{--x:-6px;animation-delay:.7s}
@keyframes cap{0%,18%{transform:translateY(0)}34%,64%{transform:translateY(-38px)}80%,100%{transform:translateY(0)}}
.s-mani .cap{animation:cap 5s var(--ease) infinite}
@keyframes drip{0%,40%{transform:translateY(-26px);opacity:0}44%{opacity:1;transform:translateY(-26px)}56%{transform:translateY(4px);opacity:1}60%,100%{transform:translateY(4px);opacity:0}}
.s-mani .drip{animation:drip 5s ease-in infinite}

/* 04 hair: comb glides, scissors snip, the ends fall */
@keyframes comb{0%{transform:translateY(0);opacity:0}8%{opacity:1}60%{transform:translateY(78px);opacity:1}70%,100%{transform:translateY(78px);opacity:0}}
.s-hair .comb{animation:comb 3.6s var(--ease) infinite}
@keyframes bla{0%,100%{transform:rotate(-11deg)}45%,55%{transform:rotate(0)}}
@keyframes blb{0%,100%{transform:rotate(11deg)}45%,55%{transform:rotate(0)}}
.s-hair .blade-a{transform-origin:196px 124px;animation:bla 1.2s ease-in-out infinite}
.s-hair .blade-b{transform-origin:196px 124px;animation:blb 1.2s ease-in-out infinite}
@keyframes snip{0%,40%{transform:translate(0,0) rotate(0);opacity:0}46%{opacity:1}100%{transform:translate(var(--x,0),34px) rotate(var(--r,30deg));opacity:0}}
.s-hair .snip{transform-box:fill-box;transform-origin:center;animation:snip 2.4s ease-in infinite}
.s-hair .s2{--x:-6px;--r:-40deg;animation-delay:.6s}.s-hair .s3{--x:8px;animation-delay:1.2s}.s-hair .s4{--x:-4px;--r:50deg;animation-delay:1.8s}

/* 05 brows: wax strip shapes, the tint brush fills the arch, a blink */
.s-brow .brow-base{fill:none;stroke:var(--taupe);stroke-width:10;stroke-linecap:round;opacity:.55}
.s-brow .brow-tint{fill:none;stroke:var(--ink);stroke-width:10;stroke-linecap:round;stroke-dasharray:150;stroke-dashoffset:150;animation:tintfill 6.4s var(--ease) infinite}
@keyframes tintfill{0%,40%{stroke-dashoffset:150;opacity:1}78%,90%{stroke-dashoffset:0;opacity:1}98%,100%{stroke-dashoffset:0;opacity:0}}
.s-brow .wax{fill:var(--gold);opacity:0;transform-box:fill-box;transform-origin:100% 50%;animation:wax 6.4s var(--ease) infinite}
@keyframes wax{0%{opacity:0;transform:translateY(-6px)}8%,26%{opacity:.6;transform:none}38%{opacity:0;transform:translate(70px,-44px) rotate(-28deg)}100%{opacity:0;transform:translate(70px,-44px) rotate(-28deg)}}
@keyframes tint{0%,36%{transform:translate(84px,86px);opacity:0}40%{opacity:1;transform:translate(90px,86px)}
  52%{transform:translate(122px,70px)}64%{transform:translate(160px,64px)}78%{transform:translate(222px,72px);opacity:1}86%,100%{transform:translate(250px,40px);opacity:0}}
.s-brow .tint{transform:translate(160px,64px);animation:tint 6.4s cubic-bezier(.45,0,.25,1) infinite}
@keyframes blink{0%,88%,94%,100%{transform:scaleY(1)}91%{transform:scaleY(.08)}}
.s-brow .eye{transform-origin:160px 124px;animation:blink 6.4s ease-in-out infinite}

/* 06 shop: a bottle comes off the shelf and drops into the bag */
@keyframes pick{0%,14%{transform:translate(0,0);opacity:1}30%{transform:translate(0,-30px)}52%{transform:translate(98px,-34px)}
  64%{transform:translate(98px,40px);opacity:1}66%,92%{transform:translate(98px,40px);opacity:0}93%{transform:translate(0,0);opacity:0}100%{transform:translate(0,0);opacity:1}}
.s-shop .pick{animation:pick 6s cubic-bezier(.45,0,.25,1) infinite}
@keyframes bag{0%,62%,78%,100%{transform:scale(1,1)}66%{transform:scale(1.04,.94)}71%{transform:scale(.98,1.03)}}
.s-shop .bag{transform-origin:262px 164px;animation:bag 6s var(--ease) infinite}
@keyframes swing{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg)}}
.s-shop .tag{transform-origin:284px 108px;animation:swing 2.4s ease-in-out infinite}
.s-shop .tw{animation:pop 6s var(--ease) infinite}
.s-shop .tw.t2{animation-delay:.15s}.s-shop .tw.t3{animation-delay:.3s}
@keyframes pop{0%,64%{opacity:0;transform:scale(.2)}72%{opacity:1;transform:scale(1)}84%,100%{opacity:0;transform:scale(.6)}}

/* ---------- gallery filters ---------- */
.filters{position:relative;display:inline-flex;flex-wrap:wrap;gap:4px;padding:5px;margin:0 0 34px;border:1px solid var(--line);border-radius:999px;background:var(--white)}
.filters button{position:relative;z-index:1;border:0;background:none;padding:12px 20px;border-radius:999px;cursor:pointer;font:400 11.5px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);transition:color .5s var(--ease)}
.filters button sup{font-size:9px;letter-spacing:.05em;margin-left:3px;color:var(--gold);transition:color .5s var(--ease)}
.filters button[aria-pressed="true"]{color:var(--ivory)}
.filters button[aria-pressed="true"] sup{color:var(--gold-2)}
.filters__ink{position:absolute;z-index:0;top:0;left:0;width:0;height:0;border-radius:999px;background:var(--ink);transition:transform .7s var(--ease),width .7s var(--ease)}
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.gallery .tile{aspect-ratio:3/4;transition:opacity .5s var(--ease),transform .7s var(--ease)}
.gallery .tile.is-hiding{opacity:0;transform:scale(.94)}
.gallery .tile[hidden]{display:none}
.tile__tag{position:absolute;left:12px;top:12px;padding:6px 11px;border-radius:999px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;background:color-mix(in srgb,var(--ivory) 90%,transparent);color:var(--ink-2)}
.tile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(58,35,38,.45));opacity:0;transition:opacity .6s var(--ease);pointer-events:none}
.tile:hover::after{opacity:1}
.gallery .tile__cap{z-index:1;right:14px;text-transform:none;letter-spacing:.01em;font-size:13px;line-height:1.35;background:none;backdrop-filter:none;padding:0;color:var(--ivory)}

/* ---------- shop ---------- */
.shop{background:var(--ink);color:var(--ivory);padding-block:clamp(90px,12vw,150px) clamp(60px,8vw,90px);overflow:hidden}
.shop .eyebrow{color:var(--gold-2)}
.shop .h2 em{color:var(--gold-2)}
.shop__head{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(28px,5vw,80px);align-items:end;margin-bottom:clamp(40px,6vw,64px)}
.shop__copy p{margin:0;color:var(--taupe);max-width:480px}
.shop__note{margin-top:16px!important;color:var(--gold-2)!important;font:italic 400 22px/1.3 var(--serif)}
.shelf{overflow:hidden}
.shelf__track{display:flex;gap:18px;width:max-content;padding-inline:max(var(--gut),calc((100vw - var(--max))/2 + var(--gut)));will-change:transform}
.shelf__item{margin:0;width:clamp(240px,24vw,340px);flex:none}
.shelf__btn{display:block;width:100%;padding:0;border:0;border-radius:var(--r);overflow:hidden;cursor:zoom-in;aspect-ratio:3/4;background:#4A2E31}
.shelf__btn img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.shelf__btn:hover img{transform:scale(1.05)}
.shelf__item figcaption{margin-top:12px;font:italic 400 19px/1.3 var(--serif);color:var(--taupe)}

/* ---------- studio photo ---------- */
.studio__photo{margin:0;position:relative;justify-self:center;width:100%;max-width:480px}
.studio__photo img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:999px 999px var(--r) var(--r)}
.studio__photo::after{content:"";position:absolute;inset:12px 12px 44px;border:1px solid rgba(255,255,255,.4);border-radius:999px 999px var(--r) var(--r);pointer-events:none}
.studio__photo figcaption{margin-top:14px;text-align:center;font:italic 400 18px/1.3 var(--serif);color:var(--taupe)}

/* ---------- lightbox arrows ---------- */
.lb__nav{position:absolute;top:50%;width:48px;height:48px;margin-top:-40px;border-radius:50%;border:1px solid var(--line-lt);background:rgba(58,35,38,.7);color:var(--ivory);font-size:22px;cursor:pointer;transition:background .4s var(--ease)}
.lb__nav:hover{background:var(--gold)}
.lb__prev{left:-64px}.lb__next{right:-64px}

/* ---------- performance: keep scrolling on the compositor ---------- */
.sc.is-off *,.is-off .slide img,.marquee.is-off .marquee__track{animation-play-state:paused!important}
@media (hover:none),(pointer:coarse){
  .hdr.is-solid{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--ivory)}
  .tile__tag{backdrop-filter:none}
}

/* ---------- service chips: each one opens WhatsApp with its own message ---------- */
.wa-list{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative;display:inline-flex;align-items:center;gap:0;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--ivory);color:var(--ink-2);font-size:12.5px;line-height:1.2;text-decoration:none;overflow:hidden;isolation:isolate;transition:color .45s var(--ease),border-color .45s var(--ease),gap .45s var(--ease),padding .45s var(--ease),transform .45s var(--ease)}
.chip::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--ink);transform:translateY(101%);transition:transform .5s var(--ease)}
.chip svg{width:0;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;opacity:0;transition:width .45s var(--ease),opacity .3s var(--ease)}
.chip:hover,.chip:focus-visible{color:var(--ivory);border-color:var(--ink);gap:7px;padding-right:12px}
.chip:hover::before,.chip:focus-visible::before{transform:none}
.chip:hover svg,.chip:focus-visible svg{width:14px;opacity:1}
.chip:active{transform:scale(.96)}
.svc__who{margin-top:auto;display:inline-flex;align-items:center;gap:10px;width:fit-content;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);text-decoration:none;padding-bottom:4px;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .6s var(--ease)}
.svc__who i{font-style:normal;transition:transform .5s var(--ease)}
.svc__who:hover{background-size:100% 1px}
.svc__who:hover i{transform:translateX(5px)}
.svc--shop .chip{background:transparent;border-color:var(--line-lt);color:var(--ivory)}
.svc--shop .chip::before{background:var(--gold-2)}
.svc--shop .chip:hover,.svc--shop .chip:focus-visible{color:var(--ink);border-color:var(--gold-2)}
.svc--shop .svc__who{color:var(--gold-2)}
@media (hover:none){.chip svg{width:14px;opacity:.55;margin-left:7px}}

/* ---------- brands: logo wall ---------- */
.brands{margin-top:clamp(64px,9vw,110px)}
.brands__head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px 40px;padding-top:30px;border-top:1px solid var(--line-lt);margin-bottom:30px}
.brands__label{margin:0;font:400 clamp(30px,3.4vw,44px)/1 var(--serif);color:var(--ivory)}
.brands__sub{margin:0;color:var(--taupe);max-width:420px}
.brands__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.brand-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;aspect-ratio:16/10;padding:22px 20px 16px;border-radius:var(--r);background:var(--white);overflow:hidden;
  opacity:0;transform:translateY(26px) scale(.97);transition:opacity .9s var(--ease) calc(var(--i)*70ms),transform .9s var(--ease) calc(var(--i)*70ms),box-shadow .6s var(--ease)}
html:not(.js-reveal) .brand-tile,.brands.is-in .brand-tile{opacity:1;transform:none}
.brand-tile img{max-width:74%;max-height:54%;width:auto;height:auto;object-fit:contain;transition:transform .8s var(--ease)}
.brand-tile span{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--stone);transition:color .5s var(--ease)}
.brand-tile::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,rgba(217,160,138,.22) 50%,transparent 65%);transform:translateX(-110%);transition:transform 1.1s var(--ease);pointer-events:none}
.brand-tile::before{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.brands.is-in .brand-tile:hover{transform:translateY(-6px);box-shadow:0 24px 50px -24px rgba(0,0,0,.6);transition-delay:0s}
.brand-tile:hover img{transform:scale(1.06)}
.brand-tile:hover::after{transform:translateX(110%)}
.brand-tile:hover::before{transform:scaleX(1)}
.brand-tile:hover span{color:var(--gold)}
.brand-tile--more{background:transparent;border:1px solid rgba(217,160,138,.45);padding:0}
.brand-tile--more a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:100%;height:100%;padding:20px;text-decoration:none;text-align:center}
.brand-tile--more b{font:italic 400 clamp(26px,2.4vw,32px)/1 var(--serif);color:var(--gold-2)}
.brand-tile--more span{color:var(--taupe);letter-spacing:.06em;text-transform:none;font-size:13.5px}
.brand-tile--more span i{font-style:normal;display:inline-block;transition:transform .5s var(--ease)}
.brand-tile--more:hover span{color:var(--ivory)}
.brand-tile--more:hover span i{transform:translateX(4px)}

/* ---------- pick your specialist: motion ---------- */
.bk-in{opacity:0;transform:translateY(34px);transition:opacity 1.1s var(--ease) calc(var(--d,0)*120ms),transform 1.1s var(--ease) calc(var(--d,0)*120ms)}
.person.bk-in{transform:translateY(46px) rotateX(9deg);transform-origin:50% 100%}
.planner.bk-in{transform:translateX(40px)}
html:not(.js-reveal) .bk-in,.book.is-in .bk-in{opacity:1;transform:none}
.book__grid{perspective:1200px}
.person{transition:opacity 1.1s var(--ease) calc(var(--d,0)*120ms),transform 1.1s var(--ease) calc(var(--d,0)*120ms),border-color .5s var(--ease),box-shadow .6s var(--ease)}
.book.is-in .person.is-tilting{transition:border-color .5s var(--ease),box-shadow .6s var(--ease)}
.person__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.avatar{position:relative;width:76px;height:76px;display:grid;place-items:center}
.avatar svg{position:absolute;inset:0;transform:rotate(-90deg)}
.avatar circle{fill:none;stroke-width:1.5}
.avatar__track{stroke:var(--line)}
.avatar__ring{stroke:var(--gold);stroke-dasharray:233;stroke-dashoffset:233;transition:stroke-dashoffset 1.6s var(--ease) calc(var(--d,0)*120ms + .3s)}
html:not(.js-reveal) .avatar__ring,.book.is-in .avatar__ring{stroke-dashoffset:0}
.avatar span{font:italic 400 36px/1 var(--serif);color:var(--ink);transition:color .5s var(--ease),transform .7s var(--ease)}
.avatar::before{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--gold);transform:scale(0);transition:transform .7s var(--ease)}
.avatar span{position:relative}
.person.is-picked .avatar::before{transform:scale(1)}
.person.is-picked .avatar span{color:var(--white);transform:scale(1.04)}
.person__tick{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--ink);transform:scale(0) rotate(-45deg);transition:transform .6s var(--ease)}
.person__tick svg{width:16px;height:16px;fill:none;stroke:var(--ivory);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .5s var(--ease) .25s}
.person.is-picked .person__tick{transform:none}
.person.is-picked .person__tick svg{stroke-dashoffset:0}
.person h3{margin-top:18px}
.person.is-picked{box-shadow:0 34px 70px -40px rgba(176,122,94,.8)}
.planner h3 em{display:inline-block;color:var(--gold);transition:opacity .35s var(--ease),transform .5s var(--ease)}
.planner h3 em.is-swap{opacity:0;transform:translateY(8px)}
.planner.is-pulse{animation:pulse .9s var(--ease)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(176,122,94,.45)}100%{box-shadow:0 0 0 18px rgba(176,122,94,0)}}
[data-services] label{animation:chipIn .55s var(--ease) both;animation-delay:calc(var(--i,0)*45ms)}
@keyframes chipIn{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
.planner .btn--solid svg{transition:transform .5s var(--ease)}
.planner .btn--solid:hover svg{transform:rotate(-12deg) scale(1.15)}
.field input,.field select,.field textarea{transition:border-color .4s var(--ease),box-shadow .4s var(--ease),transform .4s var(--ease)}
.field input:focus,.field select:focus,.field textarea:focus{transform:translateY(-1px)}

/* ---------- hero H1 carries the search phrase ---------- */
.hero__h1{margin:0 0 30px;font:inherit}
.hero__h1 .eyebrow{margin-bottom:18px}
.hero__title{display:block;margin:0}

/* ---------- service card titles link to their pages ---------- */
.svc__link{color:inherit;text-decoration:none;display:inline-flex;align-items:flex-start;gap:8px}
.svc__link i{font-style:normal;font-size:.45em;color:var(--gold);transform:translateY(.2em);transition:transform .5s var(--ease)}
.svc__link:hover i{transform:translate(4px,0)}
.svc--shop .svc__link i{color:var(--gold-2)}

/* ---------- booking: people on the left, live calendar on the right ---------- */
.book__grid{grid-template-columns:minmax(0,1fr) minmax(0,1.55fr);align-items:start}
.book__grid .person{grid-column:1}
.book__grid [data-booker]{grid-column:2;grid-row:1 / span 3}
.chips span small{opacity:.6;font-size:11.5px;margin-left:4px}
.bk-svc{width:100%;min-height:48px;padding:12px 40px 12px 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);background:var(--ivory) url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M6 9l6 6 6-6%27 fill=%27none%27 stroke=%27%231B1816%27 stroke-width=%271.6%27/%3E%3C/svg%3E") no-repeat right 14px center/16px;appearance:none;-webkit-appearance:none;font:inherit;font-size:15px;color:var(--ink);cursor:pointer}
.bk-svc:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(176,122,94,.18)}
.cal{margin-top:6px;padding:18px;border-radius:var(--r);background:var(--ivory);border:1px solid var(--line)}
.cal__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal__head b{font:400 26px/1 var(--serif)}
.cal__nav{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--white);font-size:20px;line-height:1;cursor:pointer;transition:background .4s var(--ease),color .4s var(--ease)}
.cal__nav:hover:not(:disabled){background:var(--ink);color:var(--ivory)}
.cal__nav:disabled{opacity:.3;cursor:default}
.cal__dow,.cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal__dow span{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);text-align:center;padding-bottom:6px}
.cal__day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:50px;padding:4px 0;border-radius:var(--r);border:1px solid transparent;background:transparent;font:inherit;color:var(--stone);cursor:default}
.cal__day b{font:400 17px/1 var(--sans)}
.cal__day i{font-style:normal;font-size:10px;letter-spacing:.04em}
.cal__day.is-open{background:var(--white);border-color:var(--line);color:var(--ink);cursor:pointer;transition:transform .35s var(--ease),border-color .35s var(--ease),background .35s var(--ease),color .35s var(--ease)}
.cal__day.is-open i{color:var(--ok)}
.cal__day.is-open:hover{border-color:var(--ink);transform:translateY(-2px)}
.cal__day.is-full{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(155,59,59,.08) 6px 7px);color:var(--stone)}
.cal__day.is-full b{text-decoration:line-through}
.cal__day.is-full i{color:var(--bad)}
.cal__day.is-closed,.cal__day.is-past,.cal__day.is-unavailable{opacity:.4}
.cal__day.is-today{box-shadow:inset 0 0 0 1.5px var(--gold)}
.cal__day.is-on,.cal__day.is-on:hover{background:var(--ink);border-color:var(--ink);color:var(--ivory)}
.cal__day.is-on i{color:var(--gold-2)}
.cal__loading{grid-column:1/-1;margin:14px 0;text-align:center;color:var(--ink-2);font-size:14px}
.cal__legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:14px;font-size:12px;color:var(--ink-2)}
.cal__legend i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:7px;vertical-align:-1px}
.lg-open{background:var(--white);border:1px solid var(--ink-2)}
.lg-full{background:repeating-linear-gradient(135deg,var(--ivory) 0 3px,rgba(155,59,59,.35) 3px 4px)}
.lg-closed{background:var(--sand)}
.slots{margin-top:16px;animation:fade .6s var(--ease)}
.slots__h{margin:0 0 12px;font:italic 400 22px/1.2 var(--serif)}
.slots__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.slot{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:44px;padding:8px 6px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);background:var(--white);font:400 14px/1 var(--sans);color:var(--ink);cursor:pointer;animation:chipIn .5s var(--ease) both;animation-delay:calc(var(--i,0)*25ms);transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.slot:hover{border-color:var(--ink)}
.slot.is-on{background:var(--ink);border-color:var(--ink);color:var(--ivory)}
.slot.is-booked{cursor:default;background:transparent;border-style:dashed;color:var(--stone);text-decoration:line-through;border-radius:var(--r)}
.slot.is-booked small{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;margin-top:3px}
.bk-form{margin-top:18px;padding-top:18px;border-top:1px solid var(--line);animation:fade .6s var(--ease)}
.bk-form__sum{margin:0 0 16px;padding:14px 16px;border-left:2px solid var(--gold);background:var(--ivory);line-height:1.55}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.bk-done{padding:24px 6px 6px;text-align:center;animation:fade .7s var(--ease)}
.bk-done:focus{outline:none}
.bk-done h4{margin:14px 0 8px;font:400 34px/1 var(--serif)}
.bk-done p{margin:0 0 20px;line-height:1.7;color:var(--ink-2)}
.bk-ref{display:inline-block;margin-top:4px;padding:3px 10px;border-radius:999px;background:var(--ink);color:var(--ivory);font-size:12px;letter-spacing:.14em}
.bk-done__tick{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--gold);animation:pop2 .7s var(--ease)}
.bk-done__tick svg{width:30px;height:30px;fill:none;stroke:var(--white);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24;animation:drawTick .6s .3s var(--ease) forwards}
@keyframes pop2{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
@keyframes drawTick{to{stroke-dashoffset:0}}
.bk-again{margin-top:14px;border:0;background:none;color:var(--ink-2);text-decoration:underline;text-underline-offset:4px;cursor:pointer;font:inherit;font-size:14px}

/* ---------- landing pages ---------- */
.lp{padding-top:var(--hdr)}
.crumbs{display:flex;gap:10px;padding-top:28px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone)}
.crumbs a{color:var(--ink-2);text-decoration:none}
.crumbs a:hover{color:var(--gold)}
.lp-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(32px,6vw,90px);align-items:center;padding-block:clamp(36px,6vw,70px) clamp(60px,8vw,100px)}
.lp-hero__title{font-size:clamp(46px,6.4vw,92px);margin-bottom:22px}
.lp-hero__lede{max-width:520px;margin:0 0 32px;color:var(--ink-2);font:300 clamp(19px,1.7vw,23px)/1.45 var(--serif)}
.lp-hero__actions{opacity:1;animation:none}
.lp-points{list-style:none;margin:30px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.lp-points li{padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--white);font-size:13px;color:var(--ink-2)}
.lp-hero__photo{margin:0;justify-self:end;width:min(100%,440px)}
.lp-hero__photo img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:999px 999px var(--r) var(--r);box-shadow:0 50px 100px -50px rgba(58,35,38,.45)}
.lp-hero__photo figcaption{margin-top:12px;font:italic 400 18px/1.3 var(--serif);color:var(--ink-2);text-align:center}
.lp-hero__scene{margin:0;justify-self:end;width:min(100%,440px);aspect-ratio:4/5;display:grid;place-items:center;padding:36px 28px;border-radius:999px 999px var(--r) var(--r);background:var(--white);border:1px solid var(--line);box-shadow:0 50px 100px -50px rgba(58,35,38,.35)}
.lp-hero__scene .sc{height:auto;margin:0}
.lp-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.8fr);gap:clamp(32px,6vw,90px);align-items:start;padding-bottom:clamp(70px,9vw,120px)}
.lp-body__text p{margin:0 0 22px;font:300 clamp(19px,1.6vw,22px)/1.6 var(--serif);color:var(--ink)}
.lp-card{position:sticky;top:calc(var(--hdr) + 24px);padding:28px;border-radius:var(--r);background:var(--ink);color:var(--ivory)}
.lp-card h2{margin:0 0 14px;font:400 30px/1 var(--serif)}
.lp-card p{margin:0 0 14px;color:var(--taupe);font-size:15px}
.lp-card a:not(.btn){color:var(--gold-2)}
.lp-gallery{padding-bottom:clamp(60px,8vw,100px)}
.lp-gallery .h2{margin-bottom:30px;font-size:clamp(34px,4vw,54px)}
.lp-more a{color:var(--gold);text-underline-offset:4px}
.lp-related{padding-bottom:clamp(70px,9vw,120px)}
.lp-related__h{margin:0 0 18px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:400;color:var(--stone)}
.lp-related__list{display:flex;flex-wrap:wrap;gap:10px}
.lp-related__list a{display:inline-flex;gap:10px;padding:14px 20px;border-radius:999px;border:1px solid var(--line);text-decoration:none;font:400 20px/1 var(--serif);transition:background .45s var(--ease),color .45s var(--ease),border-color .45s var(--ease)}
.lp-related__list a i{font-style:normal;color:var(--gold);transition:transform .45s var(--ease)}
.lp-related__list a:hover{background:var(--ink);border-color:var(--ink);color:var(--ivory)}
.lp-related__list a:hover i{transform:translateX(4px)}
.is-lp .hdr{background:color-mix(in srgb,var(--ivory) 92%,transparent);border-color:var(--line)}
@media (max-width:860px){
  .book__grid .person,.book__grid [data-booker]{grid-column:1;grid-row:auto}
  .lp-hero,.lp-body{grid-template-columns:1fr}
  .lp-hero__photo{justify-self:center}
  .lp-card{position:static}
}
@media (max-width:560px){
  .cal{padding:12px 8px}
  .cal__dow,.cal__grid{gap:4px}
  .cal__day{min-height:44px}
  .cal__day i{font-size:9px}
}

/* ---------- Cindy's service scenes ---------- */
/* professional make-up: blush blooms as the brush circles the cheek */
.s-makeup .blush{fill:var(--gold);opacity:0;transform-box:fill-box;transform-origin:center;animation:blush 5.2s var(--ease) infinite}
.s-makeup .blush.b2{animation-delay:1.3s}
@keyframes blush{0%,14%{opacity:0;transform:scale(.5)}40%,82%{opacity:.42;transform:scale(1)}96%,100%{opacity:0;transform:scale(1)}}
.s-makeup .mbrush{transform:translate(170px,60px);animation:mbrush 5.2s cubic-bezier(.45,0,.25,1) infinite}
@keyframes mbrush{0%{transform:translate(170px,58px)}14%{transform:translate(126px,102px)}22%{transform:translate(112px,116px)}30%{transform:translate(128px,118px)}38%{transform:translate(114px,104px)}
  46%{transform:translate(78px,104px)}54%{transform:translate(64px,116px)}62%{transform:translate(80px,118px)}72%{transform:translate(170px,58px)}84%{transform:translate(222px,128px)}100%{transform:translate(170px,58px)}}

/* workshop: the face is sketched on the board, students nod along */
.s-workshop .draw2{stroke-dasharray:420;stroke-dashoffset:420;animation:draw2 6.4s var(--ease) infinite}
@keyframes draw2{0%,6%{stroke-dashoffset:420;opacity:1}60%,88%{stroke-dashoffset:0;opacity:1}97%,100%{stroke-dashoffset:0;opacity:0}}
.s-workshop .stu{transform-box:fill-box;transform-origin:50% 100%;animation:nod2 2.6s ease-in-out infinite}
.s-workshop .s2{animation-delay:.5s}.s-workshop .s3{animation-delay:1s}
@keyframes nod2{0%,100%{transform:rotate(0)}50%{transform:rotate(-5deg)}}
.s-workshop .pointer{animation:point 6.4s ease-in-out infinite}
@keyframes point{0%,100%{transform:translate(0,0)}20%{transform:translate(-12px,-14px)}40%{transform:translate(-6px,4px)}60%{transform:translate(-16px,14px)}80%{transform:translate(-4px,-4px)}}

/* hair styling: the wand works, the curl forms, heat rises */
.s-style .curl{stroke-dasharray:150;stroke-dashoffset:150;animation:curl 5s var(--ease) infinite}
@keyframes curl{0%,10%{stroke-dashoffset:150;opacity:1}55%,86%{stroke-dashoffset:0;opacity:1}96%,100%{stroke-dashoffset:0;opacity:0}}
.s-style .wand{animation:wand 2.5s ease-in-out infinite}
@keyframes wand{0%,100%{transform:translateY(0)}50%{transform:translateY(16px)}}
.s-style .heat path{opacity:0;animation:heat 1.8s ease-out infinite}
.s-style .heat .h2{animation-delay:.4s}.s-style .heat .h3{animation-delay:.8s}
@keyframes heat{0%{opacity:0;transform:translateY(8px)}40%{opacity:.85}100%{opacity:0;transform:translateY(-16px)}}

/* cluster lashes: tweezers place each cluster in turn */
.s-lash .cl{transform-box:fill-box;transform-origin:50% 0;transform:scale(0)}
@keyframes k1{0%,6%{transform:scale(0);opacity:1}10%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes k2{0%,20%{transform:scale(0);opacity:1}24%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes k3{0%,34%{transform:scale(0);opacity:1}38%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes k4{0%,48%{transform:scale(0);opacity:1}52%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes k5{0%,62%{transform:scale(0);opacity:1}66%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
@keyframes k6{0%,76%{transform:scale(0);opacity:1}80%,88%{transform:scale(1);opacity:1}96%,100%{transform:scale(1);opacity:0}}
.s-lash .k1{animation:k1 7.2s var(--ease) infinite}.s-lash .k2{animation:k2 7.2s var(--ease) infinite}.s-lash .k3{animation:k3 7.2s var(--ease) infinite}
.s-lash .k4{animation:k4 7.2s var(--ease) infinite}.s-lash .k5{animation:k5 7.2s var(--ease) infinite}.s-lash .k6{animation:k6 7.2s var(--ease) infinite}
.s-lash .tweez{transform:translate(260px,40px);animation:tweez 7.2s cubic-bezier(.45,0,.25,1) infinite}
@keyframes tweez{0%{transform:translate(70px,40px)}4%{transform:translate(100px,104px)}10%{transform:translate(100px,109px)}14%{transform:translate(110px,60px)}
  18%{transform:translate(125px,111px)}24%{transform:translate(125px,116px)}28%{transform:translate(138px,60px)}32%{transform:translate(150px,115px)}38%{transform:translate(150px,120px)}
  42%{transform:translate(162px,60px)}46%{transform:translate(175px,114px)}52%{transform:translate(175px,119px)}56%{transform:translate(188px,60px)}60%{transform:translate(200px,110px)}
  66%{transform:translate(200px,115px)}70%{transform:translate(210px,60px)}74%{transform:translate(220px,104px)}80%{transform:translate(220px,109px)}88%,100%{transform:translate(270px,40px)}}

/* lash lift: drooping lashes curl up behind the shield */
.s-lift .lsh{transform-box:fill-box;transform-origin:50% 100%;animation:lift 5.6s var(--ease) infinite}
@keyframes lift{0%,12%{transform:scaleY(-.55)}38%,86%{transform:scaleY(1)}96%,100%{transform:scaleY(-.55)}}
.s-lift .pad{opacity:0;stroke-dasharray:6 6;animation:pad 5.6s ease-in-out infinite}
@keyframes pad{0%,8%{opacity:0}16%,40%{opacity:1}52%,100%{opacity:0}}

/* brow lamination: the spoolie brushes every hair up into line */
.s-lamin .hr{transform-box:fill-box;transform-origin:50% 100%;animation:lam 6s var(--ease) infinite}
@keyframes lam{0%,22%{transform:rotate(var(--r,20deg))}36%,86%{transform:rotate(-14deg)}96%,100%{transform:rotate(var(--r,20deg))}}
.s-lamin .spool{transform:translate(80px,96px);animation:spool 6s cubic-bezier(.45,0,.25,1) infinite}
@keyframes spool{0%,16%{transform:translate(80px,100px) rotate(-10deg);opacity:0}22%{opacity:1;transform:translate(90px,96px) rotate(-10deg)}
  62%{transform:translate(236px,84px) rotate(10deg);opacity:1}72%,100%{transform:translate(260px,60px) rotate(10deg);opacity:0}}

/* dermaplaning: the blade glides, fuzz disappears, the skin glows */
.s-derma .fz{stroke-width:1.4;opacity:.75;animation:fz 5.2s linear infinite}
@keyframes fz{0%,6%{opacity:.75}12%,78%{opacity:0}92%,100%{opacity:.75}}
.s-derma .blade{transform:translate(70px,40px);animation:blade 5.2s cubic-bezier(.45,0,.25,1) infinite}
@keyframes blade{0%,4%{transform:translate(70px,36px) rotate(-6deg);opacity:0}10%{opacity:1;transform:translate(80px,46px) rotate(-6deg)}
  58%{transform:translate(214px,130px) rotate(6deg);opacity:1}68%,100%{transform:translate(250px,150px) rotate(6deg);opacity:0}}
.s-derma .sheen{fill:var(--gold);opacity:0;animation:sheen 5.2s ease-in-out infinite}
@keyframes sheen{0%,55%{opacity:0}68%{opacity:.16}84%,100%{opacity:0}}

/* short laptop screens: keep the pinned strip inside the viewport */
@media (max-height:860px) and (min-width:761px){
  .services__pin{gap:20px;padding-block:calc(var(--hdr) + 4px) 24px}
  .services .h2{font-size:clamp(40px,4.6vw,60px)}
  .sc{height:clamp(96px,14vh,124px);margin:8px 0 12px}
  .svc{padding:22px 24px 24px}
  .svc h3{font-size:34px;margin-bottom:8px}
  .svc p{font-size:14.5px;margin-bottom:16px;line-height:1.55}
  .svc ul{margin-bottom:16px}
}
/* ---------- responsive ---------- */
@media (max-width:1080px){
  .brands__grid{grid-template-columns:repeat(3,1fr)}
  .gallery{grid-template-columns:repeat(3,1fr)}
  .lb__prev{left:8px}.lb__next{right:8px}
  .nav,.status{display:none}
  .burger{display:block}
  .ftr__in{grid-template-columns:1fr 1fr 1fr}
  .ftr__brand{grid-column:1/-1}
}
@media (max-width:860px){
  .shop__head{grid-template-columns:1fr}
  .studio__photo{max-width:340px}
  .hero{grid-template-columns:1fr;grid-template-rows:auto auto auto;padding-top:calc(var(--hdr) + 24px);min-height:0}
  .hero__stage{grid-column:1;grid-row:2;justify-self:center;width:min(100%,440px);margin-top:40px}
  .hero__meta{grid-column:1;grid-row:3;justify-self:center;width:min(100%,440px);flex-wrap:wrap;gap:8px 16px}
  .hero__cap{flex:1 1 100%;font-size:17px}
  .dots{flex:none;margin-left:auto}
  .hero::before{width:90vw;height:90vw;right:-20%;top:40%}
  .intro,.studio__in,.visit__in,.faq{grid-template-columns:1fr}
  .faq__head{position:static}
  .work__head{grid-template-columns:1fr}
  .visit__map{min-height:340px}
}
@media (max-width:560px){
  .svc__who{letter-spacing:.12em;font-size:10.5px}
  .brand-tile span{display:none}
  .brands__grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .brand-tile{padding:16px 12px 12px;gap:10px}
  .brand-tile span{font-size:9.5px;letter-spacing:.14em}
  .planner.bk-in{transform:translateY(34px)}
  .gallery{grid-template-columns:repeat(2,1fr);gap:10px}
  .filters{display:flex;flex-wrap:nowrap;max-width:100%;overflow-x:auto;scrollbar-width:none}
  .filters::-webkit-scrollbar{display:none}
  .filters button{flex:none}
  .filters button{padding:11px 14px;letter-spacing:.12em}
  .tile__tag{display:none}
  .shelf__item{width:72vw}
  :root{--hdr:70px}
  .cta{padding:11px 16px 11px 14px}
  .brand__txt b{font-size:20px}
  .brand__moon{width:44px;height:44px}
  .brand__txt i{font-size:8.5px;letter-spacing:.24em}
  .hero__title{font-size:clamp(54px,15vw,80px)}
  .hero__actions .btn{flex:1 1 auto}
  .book__grid{grid-template-columns:1fr}
  .planner__row{grid-template-columns:1fr}
  .studio__pillars{grid-template-columns:1fr}
  .svc{flex-basis:82vw;min-height:410px}
  .svc h3{font-size:34px}
  .ftr__in{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .hero__title .line>span{transform:none}
  .slide img{transform:none!important}
  .sc *{animation:none!important}
  .s-lash .cl,.s-lift .lsh,.s-lamin .hr{transform:none}
  .s-makeup .blush{opacity:.42}
  .s-derma .fz{opacity:0}
  .bk-in,.brand-tile{opacity:1!important;transform:none!important}
  .avatar__ring{stroke-dashoffset:0}
  .s-art .draw,.s-brow .brow-tint{stroke-dashoffset:0}
  .s-art .dot{transform:none}
}

/* ============ PACKAGES & SPECIALS (owner-written, hidden when empty) ============ */
.packages{padding-block:clamp(90px,12vw,150px) 0}
.packages__head{max-width:640px;margin-bottom:clamp(36px,5vw,60px)}
.packages__head>p:last-child{color:var(--ink-2);margin:20px 0 0}
.packages__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:clamp(16px,2vw,26px)}
.packages__grid--one{max-width:520px}
.pkg{position:relative;display:flex;flex-direction:column;padding:34px 30px 30px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .5s var(--ease),box-shadow .6s var(--ease),transform .6s var(--ease)}
.pkg::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;background:linear-gradient(90deg,var(--gold),var(--gold-2));transform:scaleX(.18);transform-origin:left;transition:transform 1s var(--ease)}
.pkg.is-in::before{transform:scaleX(1)}
html.js-reveal .pkg.reveal,html.js-reveal .review.reveal{transition-delay:calc(var(--i,0)*120ms)}
@media (hover:hover){.pkg:hover{border-color:var(--gold);box-shadow:0 30px 60px -40px rgba(176,122,94,.7)}}
.pkg__tag{align-self:flex-start;margin-bottom:18px;padding:6px 12px;border:1px solid var(--gold);border-radius:99px;font:400 10.5px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.pkg h3{margin:0;font:400 clamp(30px,3vw,38px)/1.05 var(--serif)}
.pkg__who{margin:6px 0 0;font:italic 400 18px/1.3 var(--serif);color:var(--gold)}
.pkg>p:not(.pkg__who):not(.pkg__offer),.pkg__body>p:not(.pkg__who):not(.pkg__offer){color:var(--ink-2);font-size:15px;margin:16px 0 0}
.pkg__items{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:9px;font-size:15px}
.pkg__items li{position:relative;padding-left:24px}
.pkg__items li::before{content:"";position:absolute;left:2px;top:.55em;width:9px;height:5px;border:solid var(--gold);border-width:0 0 1.5px 1.5px;transform:rotate(-45deg)}
.pkg__offer{margin:22px 0 0;padding:12px 14px;background:var(--ivory);border-left:2px solid var(--gold);font:italic 400 19px/1.3 var(--serif);color:var(--ink)}
.pkg .btn{margin-top:auto}
.pkg>*:nth-last-child(2),.pkg__body>*:nth-last-child(2){margin-bottom:26px}

/* ============ REVIEWS (owner-entered, real clients only) ============ */
.reviews{padding-block:clamp(90px,12vw,150px);background:var(--ivory-2);overflow:hidden}
.reviews__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 40px;margin-bottom:clamp(36px,5vw,56px)}
.reviews__head .eyebrow{flex-basis:100%;margin-bottom:-4px}
/* reviews scroll sideways on every screen: swipe, trackpad, or the arrow buttons */
.reviews__scroller{position:relative}
.reviews__track{display:flex;gap:clamp(14px,2vw,24px);overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;margin-inline:calc(var(--gut)*-1);padding:6px var(--gut) 22px;scroll-padding-inline:var(--gut);scrollbar-width:none;align-items:stretch}
.reviews__track::-webkit-scrollbar{display:none}
.reviews__track:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.review{flex:0 0 clamp(280px,31%,400px);scroll-snap-align:start;display:flex;flex-direction:column}
.review figcaption{margin-top:auto!important}
/* only Google's cards are shortened, they link to the full review; the owner's own reviews always show in full */
.review--google .review__text{display:-webkit-box;-webkit-line-clamp:9;-webkit-box-orient:vertical;overflow:hidden}
.review__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.review__top .review__stars{margin:0}
.review__g{width:20px;height:20px;flex:none}
.review--google::after{display:none}
.review__more{align-self:flex-start;margin:4px 0 0;font-size:12.5px;letter-spacing:.06em;color:var(--gold)}
.review.review--google figcaption{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}
.review__ava{width:36px;height:36px;border-radius:50%;object-fit:cover;flex:none}
.review__who{display:flex;flex-direction:column;gap:3px;min-width:0}
.review__who a{color:inherit;text-decoration:none}
.review__who a:hover b{text-decoration:underline}
.reviews__nav{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.reviews__btn{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:22px;line-height:1;cursor:pointer;transition:border-color .3s var(--ease),opacity .3s}
.reviews__btn:hover{border-color:var(--gold)}
.reviews__btn:disabled{opacity:.35;cursor:default}
.reviews__credit{margin:14px 0 0;font-size:12.5px;color:var(--stone)}
.reviews__credit a{color:inherit}
.review{margin:0;padding:32px 30px 28px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);position:relative}
.review::after{content:"\201C";position:absolute;right:22px;top:2px;font:400 110px/1 var(--serif);color:var(--gold);opacity:.16;pointer-events:none}
.review__stars{display:flex;gap:4px;margin-bottom:18px}
.review__stars i{display:block;width:16px;height:16px}
.review__stars svg{width:100%;height:100%;fill:none;stroke:var(--gold);stroke-width:1.4;stroke-linejoin:round}
.review__stars i.on svg{fill:var(--gold)}
html.js-reveal .review.reveal .review__stars i{opacity:0;transform:scale(.4) rotate(-30deg);transition:opacity .5s var(--ease),transform .7s var(--ease)}
html.js-reveal .review.reveal.is-in .review__stars i{opacity:1;transform:none}
.review__stars i:nth-child(2){transition-delay:.42s!important}.review__stars i:nth-child(3){transition-delay:.5s!important}.review__stars i:nth-child(4){transition-delay:.58s!important}.review__stars i:nth-child(5){transition-delay:.66s!important}.review__stars i:nth-child(1){transition-delay:.34s!important}
.review blockquote{margin:0}
.review blockquote p{margin:0 0 12px;font:400 clamp(20px,1.7vw,23px)/1.4 var(--serif);color:var(--ink)}
.review figcaption{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:3px}
.review figcaption b{font-weight:500;font-size:14px;letter-spacing:.04em}
.review figcaption span{font-size:12.5px;color:var(--stone);letter-spacing:.03em}
@media (max-width:860px){
  .review{flex-basis:min(84%,380px)}
}

/* team photo in the person card, replaces the monogram */
.avatar img{position:absolute;inset:7px;width:calc(100% - 14px);height:calc(100% - 14px);border-radius:50%;object-fit:cover;transition:transform .7s var(--ease)}
.avatar--photo::before{display:none}
.person.is-picked .avatar--photo img{transform:scale(1.05)}

@media (prefers-reduced-motion:reduce){
  .pkg::before{transform:none}
  html.js-reveal .review.reveal .review__stars i{opacity:1;transform:none}
}

/* footer fine print on cocoa uses petal, the light-ground muted shade is too dark here */
.ftr__base{color:var(--taupe)}

/* Google rating badge (score and count typed by the owner, links to Google to check) */
.gbadge{display:inline-flex;align-items:center;gap:12px;padding:10px 18px 10px 14px;border:1px solid var(--line);border-radius:999px;background:var(--white);text-decoration:none;color:var(--ink);transition:border-color .4s var(--ease),box-shadow .5s var(--ease)}
.gbadge b{font:500 26px/1 var(--serif)}
.gbadge__stars{display:flex;gap:3px}
.gbadge__stars i{display:block;width:15px;height:15px}
.gbadge__stars svg{width:100%;height:100%;fill:none;stroke:var(--gold);stroke-width:1.4;stroke-linejoin:round}
.gbadge__stars i.on svg{fill:var(--gold)}
.gbadge>span:last-child{font-size:13px;letter-spacing:.04em;color:var(--ink-2)}
@media (hover:hover){.gbadge:hover{border-color:var(--gold);box-shadow:0 18px 40px -26px rgba(176,122,94,.7)}}
.reviews--badge{padding-block:clamp(60px,8vw,96px)}
.reviews--badge .reviews__head{margin-bottom:0}
.reviews__cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}

/* booking without the calendar (Oct 2026): three specialist cards, each books on WhatsApp */
.book__grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.book__grid .person{grid-column:auto;grid-row:auto;display:flex;flex-direction:column;cursor:default}
.person__links{margin-bottom:22px}
.person__book{margin-top:auto;gap:10px}
.person__book svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
@media (max-width:1000px){.book__grid{grid-template-columns:1fr;max-width:560px}}
.book__grid .person__badge{align-self:flex-start}

/* ============ manual strips (Oct 2026): services and the shop shelf scroll by hand, swipe, trackpad or arrows ============ */
.services__pin{position:relative;min-height:0;padding-block:clamp(70px,9vw,120px) clamp(40px,6vw,70px);overflow:visible}
/* scroll-padding matches the strip's inset, so the first card rests in line with the heading instead of snapping to the page edge */
.services__track{overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-inline:max(var(--gut),calc((100vw - var(--max))/2 + var(--gut)));scroll-behavior:smooth;overscroll-behavior-x:contain;padding-bottom:18px;scrollbar-width:none;will-change:auto}
.services__track::-webkit-scrollbar{display:none}
.services__track:focus-visible,.shelf:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.svc{scroll-snap-align:start}
.services__hint{margin:0}
.hnav{display:flex;align-items:center;gap:10px;margin-left:auto}
.hnav .services__hint{margin-right:6px}
.hbtn{width:46px;height:46px;flex:none;border-radius:50%;border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:22px;line-height:1;cursor:pointer;transition:border-color .3s var(--ease),opacity .3s}
.hbtn:hover{border-color:var(--gold)}
.hbtn:disabled{opacity:.35;cursor:default}
.hnav--light .hbtn{background:transparent;border-color:var(--line-lt);color:var(--ivory)}
.hnav--light .hbtn:hover{border-color:var(--gold-2)}
.hnav--light .services__hint{color:var(--taupe)}
.shop .hnav{justify-content:flex-end;margin:18px auto 0}
.shelf{overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-inline:max(var(--gut),calc((100vw - var(--max))/2 + var(--gut)));scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:none}
.shelf::-webkit-scrollbar{display:none}
.shelf__track{will-change:auto}
.shelf__item{scroll-snap-align:start}
@media (max-width:560px){.hnav .services__hint{display:none}}

/* hero: the specials slide shows first, before the photos */
.slide--specials{z-index:1;display:grid;place-items:center;padding:clamp(28px,8%,52px) clamp(24px,7%,44px);background:linear-gradient(165deg,var(--sand),var(--ivory-2) 55%,var(--white))}
.specials-card{width:100%}
.specials-card .eyebrow{margin-bottom:22px}
.specials-card ul{list-style:none;margin:0 0 26px;padding:0;display:grid;gap:14px}
.specials-card li{display:grid;gap:4px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.specials-card b{font:400 clamp(24px,2.4vw,32px)/1.08 var(--serif);color:var(--ink)}
.specials-card span{font-size:13px;letter-spacing:.06em;color:var(--rose)}
/* a special's flyer as a hero slide: the whole flyer, on a soft blur of itself */
.slide--art{background:var(--sand)}
.slide--art a{position:absolute;inset:0;display:block}
.slide--art .slide__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(26px) saturate(1.15);opacity:.9;transform:scale(1.25)}
.slide--art.is-on .slide__bg{transform:scale(1.25)}
.slide--art .slide__art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:14px;transform:scale(1.04);transition:transform 9s linear}
.slide--art.is-on .slide__art{transform:scale(1)}
/* the flyer on the specials page */
/* a special with artwork: a full-width row, the flyer large enough to read beside the details (alternating sides) */
.pkg--featured{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,46%) minmax(0,1fr);padding:0;align-items:stretch}
.pkg--featured:nth-child(even){grid-template-columns:minmax(0,1fr) minmax(0,46%)}
.pkg--featured:nth-child(even) .pkg__art{order:2}
.pkg__art{display:block;width:100%;margin:0;padding:0;border:0;background:var(--ivory-2);cursor:zoom-in;text-align:left}
.pkg__art img{display:block;width:100%;height:auto}
.pkg__body{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:clamp(28px,3.4vw,46px) clamp(24px,3.2vw,44px) clamp(26px,3vw,40px)}
.pkg__body .btn{margin-top:28px}
@media (max-width:700px){
  .pkg--featured,.pkg--featured:nth-child(even){grid-template-columns:1fr}
  .pkg--featured:nth-child(even) .pkg__art{order:0}
}
.pkg__until{margin:14px 0 0;font:400 11px/1.4 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--rose)}
.hero__actions{max-width:520px}

/* section pages: shop, specials, salon, gallery */
.sp-hero{padding-block:clamp(36px,6vw,70px) clamp(24px,4vw,44px);max-width:860px}
.sp-hero .lp-hero__title{margin-bottom:22px}
.sp-hero .lp-hero__lede{margin-bottom:0}
.sp-extra{margin-top:26px}
.sp-extra p{margin:0 0 18px;font:300 clamp(18px,1.5vw,21px)/1.6 var(--serif);color:var(--ink)}
.sp .services{border-top:0}
.sp .services__pin{padding-block:clamp(40px,6vw,70px) clamp(40px,6vw,70px)}
.sp .book{padding-block:clamp(30px,5vw,60px) clamp(50px,7vw,90px)}
.sp .work{padding-block:clamp(30px,5vw,60px) clamp(90px,12vw,160px)}
.sp .shop{margin-top:clamp(30px,5vw,60px)}
.sp-empty{padding-block:20px 70px;color:var(--ink-2);max-width:720px;font-size:17px}
.sp-empty p{margin:0 0 26px}
.sp-empty a:not(.btn){color:var(--gold)}
.packages--page{padding-block:10px clamp(70px,9vw,120px)}
.packages__more{margin:30px 0 0}
.packages__more a{color:var(--gold);text-decoration:none;font:400 20px/1 var(--serif)}
.packages__more a:hover{text-decoration:underline;text-underline-offset:4px}

/* ============ home trim (Oct 2026): a slim booking band (the full cards live on /salon) and a bigger shop pitch ============ */
.book--band{padding-block:clamp(70px,9vw,120px)}
.book__band{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center;padding:clamp(28px,5vw,56px);background:var(--white);border:1px solid var(--line);border-radius:var(--r)}
.book__band-copy .eyebrow{margin-bottom:14px}
.book__band-copy .h2{margin-bottom:16px;font-size:clamp(38px,5vw,64px)}
.book__band-copy p:last-child{margin:0;color:var(--ink-2)}
.book__band-btns{display:grid;gap:10px}
.book__band-btns .btn{justify-content:center;gap:10px}
.book__band-btns .btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.book__band-more{margin-top:8px;font:400 18px/1.3 var(--serif);color:var(--gold);text-decoration:none;text-align:center}
.book__band-more:hover{text-decoration:underline;text-underline-offset:4px}
@media (max-width:860px){.book__band{grid-template-columns:1fr;padding:24px 20px}}
.shop__cats{list-style:none;margin:24px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.shop__cats .chip{background:transparent;border-color:var(--line-lt);color:var(--ivory)}
.shop__cats .chip::before{background:var(--gold-2)}
.shop__cats .chip:hover,.shop__cats .chip:focus-visible{color:var(--ink);border-color:var(--gold-2)}
.shop__cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.shop__head--page{grid-template-columns:1fr;align-items:start;margin-bottom:clamp(28px,4vw,44px)}
.shop__head--page .shop__copy p{max-width:620px}
.shop__head--page .shop__note{margin-top:0!important}
.shop__walk{margin:16px 0 0!important;color:var(--taupe)!important;font-size:14px!important}

/* ---------- the team at work (specialist cards): three small scenes in the service-card style ---------- */
.person .sc{height:clamp(116px,15vw,144px);margin:-6px 0 18px}
/* Maryka: the brush dabs along the nail while the colour spreads across it, the lamp glows */
@keyframes dab{0%,100%{transform:translate(0,0)}25%{transform:translate(-4px,2px)}50%{transform:translate(0,0)}75%{transform:translate(4px,2px)}}
.s-at-nails .pbrush{animation:dab 1.5s ease-in-out infinite}
@keyframes coatx{0%,10%{transform:scaleX(0);opacity:1}62%,86%{transform:scaleX(1);opacity:1}95%,100%{transform:scaleX(1);opacity:0}}
.s-at-nails .coat{fill:var(--gold);transform-box:fill-box;transform-origin:0 50%;animation:coatx 6s var(--ease) infinite}
.s-at-nails .lamp{animation:lamp 2.2s ease-in-out infinite}
/* Cindy: the brush sweeps the cheek, blush blooms, lashes appear one by one */
@keyframes sweep{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(7deg)}}
.s-at-face .fbrush{transform-origin:188px 96px;animation:sweep 2.2s ease-in-out infinite}
@keyframes bloom{0%,12%{opacity:0;transform:scale(.4)}46%,84%{opacity:.5;transform:scale(1)}95%,100%{opacity:0;transform:scale(1)}}
.s-at-face .blush{fill:var(--gold);opacity:0;transform-box:fill-box;transform-origin:center;animation:bloom 5.6s var(--ease) infinite}
@keyframes lashin{0%,24%{transform:scale(0)}34%,84%{transform:scale(1)}95%,100%{transform:scale(0)}}
.s-at-face .cl{transform-box:fill-box;transform-origin:50% 0;transform:scale(0);animation:lashin 5.6s var(--ease) infinite}
.s-at-face .k2{animation-delay:.25s}.s-at-face .k3{animation-delay:.5s}.s-at-face .k4{animation-delay:.75s}
/* Engela: scissors snip at the ends, trimmed ends fall, a mist from the spray */
.s-at-hair .blade-a{transform-origin:168px 94px;animation:bla 1.2s ease-in-out infinite}
.s-at-hair .blade-b{transform-origin:168px 94px;animation:blb 1.2s ease-in-out infinite}
.s-at-hair .snip{transform-box:fill-box;transform-origin:center;animation:snip 2.4s ease-in infinite}
.s-at-hair .s2{--x:-6px;--r:-40deg;animation-delay:.6s}.s-at-hair .s3{--x:8px;animation-delay:1.2s}.s-at-hair .s4{--x:-4px;--r:50deg;animation-delay:1.8s}
@keyframes mist{0%,60%{opacity:0}70%,80%{opacity:.8}90%,100%{opacity:0}}
.s-at-hair .mist{animation:mist 3.6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.s-at-face .cl{transform:none}.s-at-face .blush{opacity:.42}.s-at-nails .coat{transform:none}}
