/* Layout concept: a dark, lacquered salon counter — one gold thread runs through the whole page, drawing itself as you scroll. */
:root{
  --bg:#1C1016;          /* aubergine lacquer */
  --bg-2:#241620;        /* raised surface */
  --bg-3:#2E1C29;        /* card */
  --fg:#F6ECEA;          /* ivory text */
  --fg-2:#D8C6CB;        /* muted text */
  --line:rgba(246,236,234,.16);
  --thread:#D9A26F;      /* gold thread */
  --thread-2:#F2C9A6;    /* thread highlight */
  --blush:#E9A7A3;       /* blush accent */
  --blush-2:#F7D7D2;
  --on-thread:#1C1016;   /* text on gold */
  --display:"Playfair Display", "Bodoni Moda", Georgia, "Times New Roman", serif;
  --brand:"Playfair Display", Georgia, serif;
  --body:"Manrope", "Segoe UI", system-ui, -apple-system, sans-serif;
  color-scheme:dark;
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    --bg:#FBF4F2; --bg-2:#F4E9E6; --bg-3:#FFFFFF;
    --fg:#1E1219; --fg-2:#54404A;
    --line:rgba(36,22,32,.16);
    --thread:#A96A30; --thread-2:#C98A52;
    --blush:#C8706B; --blush-2:#E9A7A3; --on-thread:#FFFFFF;
    color-scheme:light;
  }
}
:root[data-theme="light"]{
  --bg:#FBF4F2; --bg-2:#F4E9E6; --bg-3:#FFFFFF;
  --fg:#1E1219; --fg-2:#54404A;
  --line:rgba(36,22,32,.16);
  --thread:#A96A30; --thread-2:#C98A52;
  --blush:#C8706B; --blush-2:#E9A7A3; --on-thread:#FFFFFF;
  color-scheme:light;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:17px;line-height:1.65;font-weight:500;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--bg)}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.08;margin:0;text-wrap:balance;letter-spacing:0}
h3{font-weight:600}
p{margin:0}
:focus-visible{outline:2px solid var(--thread);outline-offset:3px}
.wrap{max-width:1180px;margin-inline:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.eyebrow{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--thread);font-weight:800}
.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.95rem 1.6rem;border-radius:999px;font-weight:600;font-size:.95rem;border:1px solid transparent;transition:transform .35s cubic-bezier(.2,.8,.2,1),background .3s,color .3s,border-color .3s;position:relative;overflow:hidden;cursor:pointer}
.btn-gold{background:var(--thread);color:var(--on-thread)}
.btn-gold::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s ease}
.btn-gold:hover::after{transform:translateX(120%)}
.btn-gold:hover{transform:translateY(-2px)}
.btn-ghost{border-color:var(--line);color:var(--fg)}
.btn-ghost:hover{border-color:var(--thread);color:var(--thread)}
.btn svg{width:18px;height:18px}

/* ---------- Header ---------- */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:84px;gap:1rem;position:relative}
.logo-img{height:64px;width:auto;display:block;border-radius:10px;transition:height .3s}
.site-header.scrolled .logo-img{height:50px}
.logo-foot .logo-img{height:auto;width:min(100%,220px);border-radius:14px}
@media (max-width:860px){.logo-img{height:50px}.nav{height:72px}}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) .logo-img{mix-blend-mode:multiply}}
:root[data-theme="light"] .logo-img{mix-blend-mode:multiply}
.logo{font-family:var(--brand);font-weight:600;font-size:1.5rem;letter-spacing:.02em;display:flex;align-items:center;gap:.5rem}
.logo em{font-style:italic;color:var(--thread)}
.logo-mark{width:34px;height:20px}
.nav-links{display:flex;gap:1.8rem;list-style:none;margin:0;padding:0}
.nav-links a{font-size:.9rem;font-weight:600;color:var(--fg-2);position:relative;padding:.25rem 0}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--thread);transform:scaleX(0);transform-origin:right;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.nav-links a:hover{color:var(--fg)}
.nav-links a:hover::after{transform:scaleX(1);transform-origin:left}
.has-sub{position:relative}
.has-sub > a{display:inline-flex;align-items:center;gap:.3rem}
.caret{width:14px;height:14px;transition:transform .3s}
.has-sub:hover .caret,.has-sub.open .caret{transform:rotate(180deg)}
.sub{position:absolute;left:-1rem;top:calc(100% + .6rem);min-width:230px;list-style:none;margin:0;padding:.5rem;background:var(--bg-3);border:1px solid var(--line);border-radius:18px;box-shadow:0 30px 60px -25px rgba(0,0,0,.6);display:grid;gap:.1rem;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .25s,transform .35s cubic-bezier(.2,.8,.2,1),visibility .25s;z-index:60}
.sub::before{content:"";position:absolute;left:0;right:0;top:-.7rem;height:.7rem}
.has-sub:hover .sub,.has-sub:focus-within .sub,.has-sub.open .sub{opacity:1;visibility:visible;transform:none}
.sub a{display:block;padding:.6rem .8rem;border-radius:10px;font-size:.9rem;color:var(--fg);font-weight:500}
.sub a::after{display:none}
.sub a:hover{background:color-mix(in srgb,var(--thread) 14%,transparent);color:var(--thread)}
.sub .sub-all a{border-top:1px solid var(--line);border-radius:0;margin-top:.3rem;padding-top:.8rem;color:var(--thread);font-weight:700;font-size:.82rem}
.nav-cta{display:flex;gap:.6rem;align-items:center}
.nav .btn{padding:.65rem 1.2rem;font-size:.85rem}
.nav-toggle{display:none;width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:transparent;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center;order:3}
.nav-toggle span{width:20px;height:2px;background:var(--fg);border-radius:2px;transition:transform .3s,opacity .3s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (max-width:860px){
  .nav-toggle{display:flex}
  .nav .btn-ghost,.nav .btn-gold{display:none}
  .nav-links{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem max(16px,env(safe-area-inset-left,0px)) 1rem;box-shadow:0 30px 50px -30px rgba(0,0,0,.6)}
  .nav-links.open{display:flex;animation:pageIn .35s cubic-bezier(.2,.8,.2,1) both}
  .nav-links a{display:block;padding:.85rem 0;font-size:1.05rem;border-bottom:1px solid var(--line)}
  .nav-links a::after{display:none}
  .has-sub > a{display:flex;justify-content:space-between;width:100%}
  .sub{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;background:transparent;padding:0 0 .5rem 1rem;display:none}
  .has-sub.open .sub{display:grid}
  .sub a{border-bottom:0;padding:.55rem .6rem;font-size:.95rem}
  .site-header{position:sticky}
}

/* ---------- Hero (full-bleed background) ---------- */
.hero{position:relative;overflow:hidden;isolation:isolate;min-height:min(86vh,820px);display:flex;align-items:center;padding-block:clamp(3.5rem,8vw,6rem);color:#F6ECEA}
.hero-bg{position:absolute;inset:0;z-index:-3;background:#2B1A24 url(../img/hero-bg.jpg) center/cover no-repeat}
.hero-bg img{width:100%;height:112%;object-fit:cover;object-position:68% 30%;transform-origin:70% 40%;will-change:transform;animation:kenburns 22s ease-in-out infinite alternate}
.hero-copy{will-change:transform,opacity}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
.hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(100deg,rgba(28,16,22,.94) 0%,rgba(28,16,22,.86) 38%,rgba(28,16,22,.45) 62%,rgba(28,16,22,.25) 100%),linear-gradient(0deg,var(--bg) 0%,transparent 28%)}
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;opacity:.7}
.cursor-glow{position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(217,162,111,.22),transparent 60%);transform:translate(-50%,-50%);left:50%;top:40%;pointer-events:none;z-index:-1;transition:left .5s cubic-bezier(.2,.8,.2,1),top .5s cubic-bezier(.2,.8,.2,1)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:3rem;align-items:center;width:100%}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr;gap:1.5rem}.hero{min-height:0}}
.hero .eyebrow{color:var(--thread-2)}
.hero h1{font-size:clamp(2.7rem,6.6vw,5.8rem);font-weight:500;margin-block:1rem 1.4rem;color:#F6ECEA}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line > span{display:inline-block;transform:translateY(110%);animation:rise 1.1s cubic-bezier(.2,.8,.2,1) forwards}
.hero h1 .line:nth-child(2) > span{animation-delay:.12s}
.hero h1 .line:nth-child(3) > span{animation-delay:.24s}
.hero h1 em{font-style:italic;font-weight:500;background:linear-gradient(90deg,var(--thread-2),#F7D7D2,var(--thread-2));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 6s linear infinite}
@keyframes shimmer{to{background-position:200% 0}}
@keyframes rise{to{transform:translateY(0)}}
.hero-lead{max-width:46ch;color:#EADDE0;font-size:1.12rem;line-height:1.6;opacity:0;animation:fade .9s .5s ease forwards}
.hero-cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.8rem;opacity:0;animation:fade .9s .7s ease forwards}
.hero .btn-gold{background:var(--thread-2);color:#1C1016}
.hero .btn-ghost{border-color:rgba(246,236,234,.35);color:#F6ECEA}
.hero .btn-ghost:hover{border-color:var(--thread-2);color:var(--thread-2)}
@keyframes fade{to{opacity:1}}
.hero-proof{display:flex;flex-wrap:wrap;gap:1.6rem;margin-top:2.4rem;opacity:0;animation:fade .9s .9s ease forwards}
.proof{display:flex;flex-direction:column;gap:.1rem}
.proof b{font-family:var(--display);font-size:1.7rem;font-weight:500;font-variant-numeric:tabular-nums;color:#F6ECEA;display:inline-block;animation:popIn .8s 1.1s cubic-bezier(.2,.8,.2,1) both}
@keyframes popIn{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}
.proof > span{font-size:.75rem;color:#D8C6CB;letter-spacing:.08em;text-transform:uppercase}
.stars{color:var(--thread-2);letter-spacing:.1em;font-size:.9rem}
.hero-side{position:relative;min-height:320px}
@media (max-width:900px){.hero-side{min-height:120px}}
.hero-thread{position:absolute;right:0;top:-2rem;width:170px;height:250px;overflow:visible;pointer-events:none}
.hero-thread .arch{stroke-dasharray:900;stroke-dashoffset:900;stroke:var(--thread-2)}
.chip{position:absolute;background:rgba(28,16,22,.72);border:1px solid rgba(246,236,234,.18);border-radius:999px;padding:.6rem 1rem;font-size:.82rem;color:#F6ECEA;display:flex;gap:.5rem;align-items:center;box-shadow:0 20px 40px -20px rgba(0,0,0,.6);white-space:nowrap;animation:bob 7s ease-in-out infinite,fade .8s ease both}
.chip b{font-family:var(--display);font-size:1.15rem;font-weight:500}
.chip .stars{font-size:.7rem}
.chip svg{width:16px;height:16px;color:var(--thread-2)}
.chip .dot{width:8px;height:8px;border-radius:50%;background:#7BD88F;box-shadow:0 0 0 0 rgba(123,216,143,.6);animation:pulse 2s infinite}
.chip-a{top:8%;right:6%;animation-delay:.9s,.9s}
.chip-b{left:4%;bottom:12%;animation-delay:1.1s,1.1s;animation-duration:8s,.8s}
.chip-c{right:2%;bottom:30%;animation-delay:1.3s,1.3s;animation-duration:9s,.8s}
@media (max-width:900px){.chip-a{top:0;right:0}.chip-b{left:0;bottom:0}.chip-c{display:none}}
@keyframes bob{0%,100%{margin-top:0}50%{margin-top:-10px}}
.hero-scroll{position:absolute;left:50%;bottom:1.2rem;transform:translateX(-50%);width:22px;height:36px;border:1px solid rgba(246,236,234,.4);border-radius:12px;opacity:0;animation:fade 1s 1.6s ease forwards}
.hero-scroll span{position:absolute;left:50%;top:6px;width:3px;height:8px;margin-left:-1.5px;border-radius:2px;background:var(--thread-2);animation:scrollDot 1.8s ease-in-out infinite}
@keyframes scrollDot{0%{transform:translateY(0);opacity:1}100%{transform:translateY(14px);opacity:0}}
@media (max-width:900px){.hero-scroll{display:none}}

.arch{fill:none;stroke:var(--thread);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw 2.6s .3s cubic-bezier(.4,0,.2,1) forwards}
.arch.soft{stroke:var(--blush);stroke-width:1;opacity:.6;animation-delay:.8s;animation-duration:3s}
@keyframes draw{to{stroke-dashoffset:0}}
.ring{fill:none;stroke:var(--line);stroke-width:1}
.ring.spin{stroke:var(--thread);stroke-dasharray:4 14;opacity:.6;transform-origin:50% 50%;animation:spin 40s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Marquee ---------- */
.marquee{border-block:1px solid var(--line);overflow:hidden;padding-block:1rem;background:var(--bg-2)}
.marquee-track{display:flex;gap:3rem;width:max-content;animation:scroll 32s linear infinite;white-space:nowrap;will-change:transform;transform:translateZ(0)}
.paused .marquee-track,.paused .g-row,.paused .reviews-track{animation-play-state:paused}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{font-family:var(--display);font-size:1.25rem;font-style:italic;color:var(--fg-2);display:flex;align-items:center;gap:3rem}
.marquee-track span::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--thread)}
@keyframes scroll{to{transform:translateX(-50%)}}

/* ---------- Sections ---------- */
section{padding-block:clamp(3.5rem,8vw,7rem)}
.section-head{display:grid;grid-template-columns:1fr auto;gap:1.5rem;align-items:end;margin-bottom:2.8rem}
.section-head h2{font-size:clamp(2rem,4.6vw,3.6rem)}
.section-head p{max-width:46ch;color:var(--fg-2)}
@media (max-width:760px){.section-head{grid-template-columns:1fr}}

/* Reveal on scroll: visible at rest, animates in when JS is active */
.reveal{transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
.js .reveal:not(.in){opacity:0;transform:translateY(28px)}
.js .reveal.in{opacity:1;transform:none}

/* ---------- Services ---------- */
.services{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
@media (max-width:960px){.services{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.services{grid-template-columns:1fr}}
.service{position:relative;background:var(--bg-3);border:1px solid var(--line);border-radius:22px;padding:1.8rem;display:flex;flex-direction:column;gap:1rem;min-width:0;overflow:hidden;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.service:hover{transform:translateY(-6px);border-color:var(--thread)}
.service::before{content:"";position:absolute;inset:auto -30% -40% auto;width:60%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--thread),transparent 65%);opacity:0;transition:opacity .6s}
.service:hover::before{opacity:.18}
.service-img{width:calc(100% + 3.6rem);max-width:none;height:auto;margin:-1.8rem -1.8rem 0;aspect-ratio:3/2;object-fit:cover;border-radius:22px 22px 0 0;transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.service:hover .service-img{transform:scale(1.04)}
.shine{position:absolute;inset:0;z-index:2;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.22) 50%,transparent 60%);transform:translateX(-130%);pointer-events:none}
.service:hover .shine{animation:shineSweep 1s ease forwards}
@keyframes shineSweep{to{transform:translateX(130%)}}
.service{overflow:hidden}
.service-icon{margin-top:-27px;position:relative;z-index:1;box-shadow:0 10px 24px -12px rgba(0,0,0,.6);width:54px;height:54px;border-radius:14px;background:var(--bg-2);display:grid;place-items:center;border:1px solid var(--line)}
.service-icon svg{width:30px;height:30px;fill:none;stroke:var(--thread);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.service h3{font-size:1.55rem}
.service p{color:var(--fg-2);font-size:.97rem}
.service-meta{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:1rem;border-top:1px solid var(--line);font-size:.85rem}
.service-meta .meta-link{color:var(--thread);font-weight:700}
.service-meta .meta-link.ghost{color:var(--fg-2);margin-right:.9rem}
.service-meta .meta-link.ghost:hover{color:var(--fg)}
.service h3 a:hover{color:var(--thread)}
.service-meta .meta-link:hover{text-decoration:underline}
.service.wide{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-areas:"img icon" "img title" "img desc" "img meta";align-items:start;column-gap:2.4rem;padding-left:0}
.service.wide .service-img{object-position:35% 50%;grid-area:img;width:100%;max-width:100%;height:calc(100% + 3.6rem);margin:-1.8rem 0 -1.8rem 0;min-height:300px;aspect-ratio:auto;border-radius:22px 0 0 22px;align-self:stretch;object-fit:cover}
.service.wide .service-icon{grid-area:icon;margin-top:0}
.service.wide h3{grid-area:title}.service.wide p{grid-area:desc}.service.wide .service-meta{grid-area:meta;margin-top:.5rem;padding-right:1.8rem}
.service.wide h3,.service.wide p{padding-right:1.8rem}
@media (max-width:760px){.service.wide{display:flex;padding-left:1.8rem}.service.wide .service-img{width:calc(100% + 3.6rem);margin:-1.8rem -1.8rem 0;aspect-ratio:3/2;height:auto;border-radius:22px 22px 0 0;min-height:0}.service.wide h3,.service.wide p,.service.wide .service-meta{padding-right:0}}
.service-meta span{color:var(--fg-2)}
.service .thread-line{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--thread);transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.2,.8,.2,1)}
.service:hover .thread-line{transform:scaleX(1)}
.featured{grid-column:span 1;background:linear-gradient(145deg,var(--bg-3),color-mix(in srgb,var(--thread) 18%,var(--bg-3)))}

/* ---------- Why threading ---------- */
.why{background:var(--bg-2);border-block:1px solid var(--line)}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
@media (max-width:860px){.why-grid{grid-template-columns:1fr}}
.why h2{font-size:clamp(2rem,4.4vw,3.4rem);margin-bottom:1rem}
.why p{color:var(--fg-2);max-width:52ch}
.compare{display:grid;gap:.8rem;margin-top:1.6rem}
.cmp{display:grid;grid-template-columns:120px 1fr;gap:1rem;align-items:center;font-size:.85rem}
.cmp span{color:var(--fg-2)}
.bar{height:10px;border-radius:999px;background:var(--bg-3);border:1px solid var(--line);overflow:hidden}
.bar i{display:block;height:100%;width:var(--w);background:linear-gradient(90deg,var(--thread),var(--thread-2));border-radius:999px;transform:scaleX(0);transform-origin:left;transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.in .bar i{transform:scaleX(1)}
.bar.alt i{background:var(--fg-2);opacity:.45}
.why-img-wrap{margin-top:1.8rem;border-radius:22px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.why-img{aspect-ratio:4/3;object-fit:cover;width:100%;max-width:100%;display:block}
.steps{display:grid;gap:1rem;counter-reset:step}
.step{display:grid;grid-template-columns:52px 1fr;gap:1rem;padding:1.2rem;border:1px solid var(--line);border-radius:18px;background:var(--bg-3);transition:border-color .4s,transform .4s}
.step:hover{border-color:var(--thread);transform:translateX(6px)}
.step::before{counter-increment:step;content:"0" counter(step);font-family:var(--display);font-size:1.7rem;color:var(--thread);font-style:italic;line-height:1}
.step h3{font-size:1.2rem;margin-bottom:.25rem}
.step p{font-size:.9rem}

/* ---------- Locations ---------- */
.locations{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
@media (max-width:900px){.locations{grid-template-columns:1fr}}
.loc{background:var(--bg-3);border:1px solid var(--line);border-radius:22px;overflow:hidden;display:flex;flex-direction:column;min-width:0;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.loc:hover{transform:translateY(-6px);border-color:var(--thread)}
.loc-map{aspect-ratio:16/10;max-width:100%;position:relative;background:
  linear-gradient(var(--line) 1px,transparent 1px) 0 0/28px 28px,
  linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/28px 28px,
  var(--bg-2);overflow:hidden}
.loc-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;filter:saturate(.85)}
.map-fallback{position:absolute;inset:0;display:none}
.map-fallback::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,transparent 20%,var(--bg-3) 95%)}
.map-cta{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:2;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--thread);background:var(--bg-3);border:1px solid var(--line);padding:.4rem .8rem;border-radius:999px;white-space:nowrap}
.no-embed .loc-map iframe{display:none}
.no-embed .map-fallback{display:block}
.pin{position:absolute;left:50%;top:50%;width:18px;height:18px;border-radius:50%;background:var(--thread);transform:translate(-50%,-50%);z-index:1;box-shadow:0 0 0 6px color-mix(in srgb,var(--thread) 25%,transparent)}
.pin::before,.pin::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--thread);animation:ripple 2.4s ease-out infinite}
.pin::after{animation-delay:1.2s}
@keyframes ripple{to{transform:scale(3.2);opacity:0}}
.road{position:absolute;height:3px;background:var(--line);left:-10%;right:-10%;top:55%;transform:rotate(-12deg)}
.road.r2{transform:rotate(70deg);top:40%}
.loc-body{padding:1.5rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.loc-body h3{font-size:1.5rem}
.loc-body address{font-style:normal;color:var(--fg-2);font-size:.92rem;line-height:1.5}
.loc-row{display:flex;gap:.6rem;align-items:flex-start;font-size:.9rem;color:var(--fg-2)}
.loc-row svg{width:16px;height:16px;flex:none;margin-top:.2rem;fill:none;stroke:var(--thread);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.loc-row b{color:var(--fg);font-weight:600;user-select:all}
.open-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#7BD88F;font-weight:600}
.open-badge i{width:7px;height:7px;border-radius:50%;background:#7BD88F}
.loc-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:auto;padding-top:.8rem}
.loc-actions .btn{padding:.7rem 1.1rem;font-size:.85rem}
.fill{color:var(--blush);font-size:.78rem;font-style:italic}

/* ---------- Reviews ---------- */
.reviews-wrap{overflow:hidden;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px))) calc(-1 * max(16px,env(safe-area-inset-right,0px)))}
.reviews-track{display:flex;gap:1.2rem;width:max-content;padding-inline:max(16px,env(safe-area-inset-left,0px));animation:scroll 60s linear infinite}
.reviews-wrap:hover .reviews-track{animation-play-state:paused}
.review{width:340px;max-width:82vw;background:var(--bg-3);border:1px solid var(--line);border-radius:20px;padding:1.5rem;display:flex;flex-direction:column;gap:.8rem;white-space:normal}
.review q{font-family:var(--display);font-size:1.15rem;font-style:italic;line-height:1.35;quotes:"“" "”"}
.review .who{display:flex;align-items:center;gap:.7rem;font-size:.82rem;color:var(--fg-2);margin-top:auto}
.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--blush),var(--thread));display:grid;place-items:center;font-weight:700;color:var(--on-thread);font-size:.8rem}
.rating-band{display:flex;flex-wrap:wrap;gap:2rem;align-items:center;justify-content:center;margin-bottom:2.5rem;padding:1.4rem 2rem;border:1px solid var(--line);border-radius:999px;background:var(--bg-2)}
.rating-band b{font-family:var(--display);font-size:2.4rem;font-weight:500;line-height:1}
.rating-band .g{display:flex;align-items:center;gap:.6rem;font-size:.9rem;color:var(--fg-2)}

/* ---------- FAQ ---------- */
.faq{max-width:760px;margin-inline:auto;min-width:0}
details{border-bottom:1px solid var(--line);padding-block:1.1rem}
summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1rem;font-family:var(--display);font-size:1.3rem;font-weight:500}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-family:var(--body);color:var(--thread);font-size:1.4rem;transition:transform .4s}
details[open] summary::after{transform:rotate(45deg)}
details p{color:var(--fg-2);margin-top:.7rem;max-width:62ch}

/* ---------- Booking CTA ---------- */
.book{position:relative;overflow:hidden;border-radius:32px;background:linear-gradient(135deg,#3A1F32,#1C1016 60%,#2B1426);border:1px solid var(--line);padding:clamp(2.5rem,6vw,5rem);text-align:center;isolation:isolate;color:#F6ECEA}
.book::before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 0deg,transparent 0 70%,rgba(217,162,111,.25) 85%,transparent 100%);animation:spin 14s linear infinite;z-index:-1}
.book h2{font-size:clamp(2.2rem,5.4vw,4.2rem);margin-bottom:1rem}
.book h2 em{font-style:italic;color:var(--thread-2)}
.book p{color:#C9B3B8;max-width:50ch;margin-inline:auto}
.book-form{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:.6rem;max-width:920px;margin:2rem auto 0;text-align:left}
@media (max-width:860px){.book-form{grid-template-columns:1fr 1fr}.book-form .btn{grid-column:span 2;justify-content:center}}
@media (max-width:480px){.book-form{grid-template-columns:1fr}.book-form .btn{grid-column:span 1}}
.field{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.field label{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#C9B3B8}
.field input,.field select{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);color:#FFFFFF;border-radius:12px;padding:.8rem .9rem;font:inherit;font-size:.92rem;width:100%;min-width:0;color-scheme:dark}
.field input:focus,.field select:focus{outline:2px solid var(--thread);border-color:transparent}
.field select{font-weight:600}
.field select option{color:#1C1016;background:#FFFFFF;font-weight:500;padding:.4rem}
.field select option:checked{background:#F2C9A6;color:#1C1016}
.book-form .btn{align-self:end}
.toast{margin-top:1rem;font-size:.9rem;color:var(--thread-2);min-height:1.4em}
.book .btn-gold{background:var(--thread-2)}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--line);padding-block:3rem 5.5rem;background:var(--bg-2)}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2rem}
@media (max-width:860px){.foot{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.foot{grid-template-columns:1fr}}
.foot h4{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--thread);margin:0 0 .8rem}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem;font-size:.9rem;color:var(--fg-2)}
.foot a:hover{color:var(--fg)}
.foot p{color:var(--fg-2);font-size:.9rem;max-width:36ch}
.copy{margin-top:2.5rem;padding-top:1.2rem;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;font-size:.78rem;color:var(--fg-2)}

/* ---------- Mobile sticky CTA ---------- */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:55;display:none;gap:.6rem;padding:.7rem max(16px,env(safe-area-inset-right,0px)) calc(.7rem + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.sticky-cta .btn{flex:1;justify-content:center;padding:.8rem 1rem;font-size:.9rem}
@media (max-width:860px){.sticky-cta{display:flex}}

/* ---------- Motion layer ---------- */
.intro{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-items:center;animation:introOut .55s .9s cubic-bezier(.7,0,.3,1) forwards;pointer-events:none}
.intro svg{width:min(60vw,320px);overflow:visible}
.intro .arch{animation:draw .9s .05s cubic-bezier(.4,0,.2,1) forwards;stroke-width:2.6}
.intro .wm-img{width:min(60vw,300px);height:auto;border-radius:12px;opacity:0;animation:fade .5s .4s ease forwards;margin:1rem auto 0;display:block}
.intro .wm{font-family:var(--display);font-size:1.4rem;letter-spacing:.3em;text-transform:uppercase;color:var(--fg);opacity:0;animation:fade .5s .5s ease forwards;margin-top:1rem}
.intro .wm em{color:var(--thread);font-style:italic;letter-spacing:.1em;text-transform:none}
@keyframes introOut{to{transform:translateY(-100%);border-radius:0 0 50% 50%/0 0 12% 12%}}
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;opacity:.9}
.cursor{position:fixed;left:0;top:0;width:10px;height:10px;border-radius:50%;background:var(--thread);pointer-events:none;z-index:90;transform:translate(-50%,-50%);mix-blend-mode:difference;transition:width .3s,height .3s,opacity .3s;opacity:0}
.cursor-ring{position:fixed;left:0;top:0;width:38px;height:38px;border-radius:50%;border:1px solid var(--thread);pointer-events:none;z-index:90;transform:translate(-50%,-50%);transition:width .35s,height .35s,opacity .3s,border-color .3s;opacity:0}
body.has-cursor .cursor,body.has-cursor .cursor-ring{opacity:1}
body.cursor-hover .cursor{width:6px;height:6px}
body.cursor-hover .cursor-ring{width:64px;height:64px;border-color:var(--blush)}
.split .w{display:inline-block;overflow:hidden;vertical-align:bottom}
.split .w > span{display:inline-block;transform:translateY(110%);transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.split.in .w > span,.no-js .split .w > span{transform:none}
.split .w:nth-child(2) > span{transition-delay:.06s}.split .w:nth-child(3) > span{transition-delay:.12s}.split .w:nth-child(4) > span{transition-delay:.18s}.split .w:nth-child(5) > span{transition-delay:.24s}.split .w:nth-child(6) > span{transition-delay:.3s}.split .w:nth-child(n+7) > span{transition-delay:.36s}
.service-img,.loc-map,.why-img{will-change:transform}
.plx{transition:transform .1s linear}
.btn{will-change:transform}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:ripple .7s ease-out forwards;pointer-events:none}
.featured{position:relative}
.featured::after{content:"";position:absolute;inset:-1px;border-radius:23px;padding:1px;background:conic-gradient(from var(--a,0deg),transparent 0 60%,var(--thread) 80%,transparent 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:spinA 6s linear infinite;pointer-events:none}
@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes spinA{to{--a:360deg}}
.site-header{transition:height .3s,box-shadow .3s}
.site-header.scrolled{box-shadow:0 10px 40px -20px rgba(0,0,0,.6)}
.site-header.scrolled .nav{height:66px}
.tilt{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.page{animation:pageIn .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes pageIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.blob{position:absolute;z-index:-1;pointer-events:none;opacity:.5;border-radius:50%;animation:drift 20s ease-in-out infinite alternate;will-change:transform;background:radial-gradient(circle,var(--blob-c,var(--blush)) 0%,transparent 62%)}
section{position:relative;overflow:hidden}
section:not(.hero){content-visibility:auto;contain-intrinsic-size:auto 600px}
.section-head .eyebrow{display:inline-flex;align-items:center;gap:.6rem}
.section-head .eyebrow::before{content:"";width:28px;height:1px;background:var(--thread);transform:scaleX(0);transform-origin:left;transition:transform .8s .2s cubic-bezier(.2,.8,.2,1)}
.in .eyebrow::before{transform:scaleX(1)}
@media (prefers-reduced-motion: reduce){.intro{display:none}.split .w > span{transform:none}.cursor,.cursor-ring{display:none}.page{animation:none}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:2rem;align-items:start}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}
.contact-form{background:var(--bg-3);border:1px solid var(--line);border-radius:28px;padding:clamp(1.4rem,3vw,2.2rem);display:grid;gap:1rem}
.contact-form .row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
@media (max-width:520px){.contact-form .row{grid-template-columns:1fr}}
.contact-form .field input,.contact-form .field select,.contact-form .field textarea{background:var(--bg-2);border:1px solid var(--line);color:var(--fg);border-radius:12px;padding:.85rem .95rem;font:inherit;font-size:.95rem;width:100%;min-width:0;resize:vertical}
.contact-form .field label{color:var(--fg-2)}
.contact-form .field input:focus,.contact-form .field select:focus,.contact-form .field textarea:focus{outline:2px solid var(--thread);border-color:transparent}
.contact-form .field select option{color:#1C1016;background:#FFFFFF}
.contact-cards{display:grid;gap:1rem}
.ccard{background:var(--bg-3);border:1px solid var(--line);border-radius:22px;padding:1.4rem;display:grid;grid-template-columns:48px 1fr;gap:1rem;align-items:start;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.ccard:hover{transform:translateX(6px);border-color:var(--thread)}
.ccard .ic{width:48px;height:48px;border-radius:14px;background:var(--bg-2);border:1px solid var(--line);display:grid;place-items:center}
.ccard .ic svg{width:22px;height:22px;fill:none;stroke:var(--thread);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ccard h3{font-size:1.25rem;margin-bottom:.3rem}
.ccard p{color:var(--fg-2);font-size:.92rem}
.ccard b{color:var(--fg);user-select:all;font-weight:600}
.ccard a.lnk{color:var(--thread);font-weight:600;font-size:.85rem}
.ccard a.lnk:hover{text-decoration:underline}
.copy-btn{font:inherit;font-size:.75rem;font-weight:600;border:1px solid var(--line);background:transparent;color:var(--thread);border-radius:999px;padding:.25rem .7rem;cursor:pointer;margin-left:.5rem}
.copy-btn:hover{border-color:var(--thread)}
.hours-table{display:grid;gap:.35rem;font-size:.9rem;font-variant-numeric:tabular-nums}
.hours-table div{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px dashed var(--line);padding-block:.3rem}
.hours-table span:last-child{color:var(--fg)}
.maps-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2.4rem}
@media (max-width:860px){.maps-row{grid-template-columns:1fr}}
.maps-row .loc-map{border-radius:20px;border:1px solid var(--line);aspect-ratio:16/10}
.maps-row figcaption{font-size:.8rem;color:var(--fg-2);margin-top:.5rem;display:flex;justify-content:space-between;gap:.5rem}
.maps-row figcaption a{color:var(--thread);font-weight:600}

/* ---------- Page thread (draws down the page on scroll) ---------- */
.page-thread{position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.page-thread path{fill:none;stroke:var(--thread);stroke-width:1.2;opacity:.35;stroke-linecap:round}
main{position:relative}
main > *{position:relative;z-index:1}
@media (max-width:1000px){.page-thread{display:none}}

/* ---------- Image wipe reveal ---------- */
.wipe{clip-path:inset(0 0 0 0);transition:clip-path 1.1s cubic-bezier(.2,.8,.2,1)}
.js .wipe:not(.in){clip-path:inset(0 100% 0 0)}
.wipe img{transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.js .wipe:not(.in) img{transform:scale(1.15)}

/* ---------- Spotlight on cards ---------- */
.spot{position:relative}
.spot::after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--thread) 22%,transparent),transparent 60%);opacity:0;transition:opacity .4s;pointer-events:none;z-index:1}
.spot:hover::after{opacity:1}

/* ---------- Photo marquee ---------- */
.gallery{padding-block:clamp(2.5rem,6vw,4.5rem);overflow:hidden}
.g-row{display:flex;gap:1rem;width:max-content;animation:scroll 48s linear infinite;margin-bottom:1rem;will-change:transform}
.g-row.rev{animation-direction:reverse;animation-duration:56s}
.gallery:hover .g-row{animation-play-state:paused}
.g-item{width:clamp(160px,22vw,260px);aspect-ratio:1;border-radius:22px;overflow:hidden;position:relative;flex:none;border:1px solid var(--line)}
.g-item img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.g-item::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%);transform:translateX(-120%);transition:transform .9s ease;pointer-events:none}
.g-item:hover::before{transform:translateX(120%)}
.g-item:hover img{transform:scale(1.08)}
.g-item span{position:absolute;left:.8rem;bottom:.7rem;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#F6ECEA;background:rgba(28,16,22,.55);backdrop-filter:blur(6px);padding:.3rem .6rem;border-radius:999px;opacity:0;transform:translateY(6px);transition:opacity .4s,transform .4s}
.g-item:hover span{opacity:1;transform:none}
.g-head{display:flex;justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.6rem}
.g-head p{color:var(--fg-2);max-width:40ch}

/* ---------- Home: why teaser ---------- */
.teaser{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:3rem;align-items:center}
@media (max-width:900px){.teaser{grid-template-columns:1fr;gap:2rem}}
.teaser-img{position:relative;border-radius:30px;overflow:hidden;aspect-ratio:4/5;max-width:100%}
.teaser-img img{width:100%;height:100%;object-fit:cover}
.teaser-img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(28,16,22,.75))}
.teaser-img .tag{position:absolute;left:1.2rem;bottom:1.2rem;color:#F6ECEA;font-family:var(--display);font-size:1.4rem;font-style:italic;z-index:1}
.teaser-frame{position:absolute;inset:0;transform:translate(16px,16px);border:1px solid var(--thread);border-radius:30px;opacity:.6;pointer-events:none;z-index:-1}
.teaser h2{font-size:clamp(2rem,4.4vw,3.4rem);margin-bottom:1rem}
.teaser > div > p{color:var(--fg-2);max-width:52ch}
.ticks{display:grid;gap:.8rem;margin:1.6rem 0}
.tick{display:flex;gap:.8rem;align-items:flex-start;font-size:.97rem}
.tick i{flex:none;width:26px;height:26px;border-radius:50%;border:1px solid var(--thread);display:grid;place-items:center;color:var(--thread);font-style:normal;font-size:.8rem;margin-top:.1rem;transform:scale(0);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.in .tick i{transform:scale(1)}
.in .tick:nth-child(2) i{transition-delay:.15s}.in .tick:nth-child(3) i{transition-delay:.3s}

/* ---------- Side image panels (FAQ / book) ---------- */
.faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:3rem;align-items:start}
@media (max-width:900px){.faq-grid{grid-template-columns:1fr}}
.side-img{position:sticky;top:calc(env(safe-area-inset-top,0px) + 90px);border-radius:30px;overflow:hidden;aspect-ratio:4/5;max-width:100%}
.side-img img{width:100%;height:100%;object-fit:cover}
.side-img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(28,16,22,.8))}
.side-img .tag{position:absolute;left:1.2rem;right:1.2rem;bottom:1.2rem;color:#F6ECEA;z-index:1;font-size:.9rem}
.side-img .tag b{display:block;font-family:var(--display);font-size:1.5rem;font-weight:500;font-style:italic;margin-bottom:.2rem}
@media (max-width:900px){.side-img{position:static;aspect-ratio:16/9}}
.book{isolation:isolate}
.book-bg{position:absolute;inset:0;z-index:-2}
.book-bg img{width:100%;height:100%;object-fit:cover;object-position:60% 30%;opacity:.35;animation:kenburns 20s ease-in-out infinite alternate}
.book::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(80% 90% at 50% 100%,rgba(28,16,22,.95),rgba(28,16,22,.6))}

/* ---------- Service pages ---------- */
.glance{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2.5rem}
@media (max-width:900px){.glance{grid-template-columns:repeat(2,1fr)}}
.glance div{background:var(--bg-3);border:1px solid var(--line);border-radius:18px;padding:1.1rem 1.2rem;min-width:0}
.glance small{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--thread);font-weight:800;margin-bottom:.3rem}
.glance b{font-weight:600;font-size:.95rem}
.svc-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:3rem;align-items:start}
@media (max-width:900px){.svc-grid{grid-template-columns:1fr}}
.svc-aside{display:grid;gap:1.2rem}
.svc-box{background:var(--bg-3);border:1px solid var(--line);border-radius:22px;padding:1.5rem}
.svc-box h3{font-size:1.3rem;margin-bottom:.8rem}
.svc-box ul{margin:0;padding-left:1.1rem;color:var(--fg-2);display:grid;gap:.4rem;font-size:.95rem}
.svc-box li::marker{color:var(--thread)}
.svc-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.6rem}
.related{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
@media (max-width:760px){.related{grid-template-columns:1fr}}
.rel{position:relative;border-radius:22px;overflow:hidden;aspect-ratio:3/2;border:1px solid var(--line);display:block}
.rel img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.rel:hover img{transform:scale(1.06)}
.rel span{position:absolute;left:1.1rem;bottom:1rem;color:#F6ECEA;font-family:var(--display);font-size:1.4rem;z-index:1}
.rel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(28,16,22,.85))}

/* ---------- Phone tuning ---------- */
@media (max-width:860px){
  .hero{padding-block:2.2rem 2.6rem;min-height:0}
  .hero .eyebrow{font-size:.66rem;letter-spacing:.14em}
  .hero h1{font-size:clamp(2.5rem,12vw,3.4rem);margin-block:.7rem 1rem}
  .hero-lead{font-size:1rem;line-height:1.55}
  .hero-proof{gap:1.2rem;margin-top:1.8rem}
  .hero-bg img{animation:none;height:100%}
  .hero-canvas,.cursor-glow,.hero-scroll,.hero-thread{display:none}
  .intro{display:none}
  .blob{animation:none}
  .g-row.rev{display:none}
  .g-item{width:46vw}
  section{padding-block:clamp(2.6rem,9vw,4rem)}
  .section-head{margin-bottom:1.8rem}
  .foot a{display:inline-block;padding:.35rem 0}
  .sub a,.nav-links a{min-height:44px;display:flex;align-items:center}
  .btn{min-height:44px}
  .sl-dots button{box-sizing:content-box;border:10px solid transparent;background-clip:padding-box}
  .copy-btn{padding:.45rem .9rem}
  .loc-actions .btn,.rev-cta .btn{padding:.75rem 1.1rem}
  .book{padding:1.8rem 1.2rem}
  .reveal{transition-duration:.6s}
}
@media (pointer:coarse){.service:hover .service-img,.g-item:hover img,.loc:hover,.service:hover{transform:none}}

/* ---------- Scroll thread ---------- */
.scroll-thread{position:fixed;left:0;top:env(safe-area-inset-top,0px);height:3px;width:100%;background:var(--thread);transform-origin:left;transform:scaleX(0);z-index:70;pointer-events:none}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important;scroll-behavior:auto !important}
  .arch{stroke-dashoffset:0}
  .hero h1 .line > span{transform:none}
  .hero-lead,.hero-cta,.hero-proof{opacity:1}
  .js .reveal:not(.in){opacity:1;transform:none}
  .bar i{transform:scaleX(1)}
}

.page-hero{padding-block:clamp(3rem,7vw,5.5rem) 0;text-align:center}
.page-hero h1{font-size:clamp(2.5rem,5.6vw,4.6rem);font-weight:500;margin-block:.8rem 1rem}
.page-hero h1 em{font-style:italic;color:var(--thread)}
.page-hero p{color:var(--fg-2);max-width:56ch;margin-inline:auto}
.crumb{font-size:.78rem;color:var(--fg-2);display:flex;gap:.5rem;justify-content:center;margin-bottom:.4rem}
.crumb a:hover{color:var(--thread)}
.page-hero + section{padding-top:clamp(2rem,4vw,3rem)}
.page-banner-wrap{border-radius:28px;overflow:hidden;margin-top:2.2rem;box-shadow:0 40px 80px -30px rgba(0,0,0,.6)}
.page-banner{width:100%;max-width:100%;aspect-ratio:8/3;object-fit:cover;display:block}
.wrap:has(.page-banner) + section{padding-top:clamp(2rem,4vw,3rem)}
/* ---- Reviews page ---- */
.rev-hero{position:relative;overflow:hidden;border-radius:32px;min-height:420px;display:flex;align-items:flex-end;padding:clamp(1.6rem,4vw,3rem);color:#F6ECEA;isolation:isolate;margin-top:2rem}
.rev-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 30%;z-index:-2;animation:kenburns 18s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
.rev-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(28,16,22,.05) 0%,rgba(28,16,22,.55) 55%,rgba(28,16,22,.9) 100%)}
.rev-hero h1{font-size:clamp(2.3rem,5.4vw,4.4rem);font-weight:500;margin-block:.5rem .8rem;max-width:14ch}
.rev-hero h1 em{font-style:italic;color:var(--thread-2)}
.rev-hero p{color:#E4D3D6;max-width:48ch}
.rev-hero .eyebrow{color:var(--thread-2)}
.rev-score{position:absolute;top:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem);background:rgba(28,16,22,.55);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.18);border-radius:20px;padding:.9rem 1.1rem;display:flex;gap:.8rem;align-items:center;color:#F6ECEA}
.rev-score b{font-family:var(--display);font-size:2.2rem;font-weight:500;line-height:1}
.rev-score small{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#E4D3D6}
.rev-score .stars{font-size:.8rem}
.rating-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
@media (max-width:860px){.rating-cards{grid-template-columns:1fr}}
.rc{background:var(--bg-3);border:1px solid var(--line);border-radius:22px;padding:1.5rem;display:flex;flex-direction:column;gap:.6rem;min-width:0;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.rc:hover{transform:translateY(-5px);border-color:var(--thread)}
.rc-top{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.rc h3{font-size:1.4rem}
.rc .num{font-family:var(--display);font-size:2.6rem;font-weight:500;line-height:1;font-variant-numeric:tabular-nums}
.rc .meta{font-size:.85rem;color:var(--fg-2)}
.starbar{display:grid;gap:.3rem;margin-top:.4rem}
.starbar > div{display:grid;grid-template-columns:1.6rem 1fr 2rem;gap:.5rem;align-items:center;font-size:.72rem;color:var(--fg-2);font-variant-numeric:tabular-nums}
.starbar .bar{height:6px}
.rc a{margin-top:auto;padding-top:.8rem;font-size:.85rem;font-weight:600;color:var(--thread);display:inline-flex;gap:.4rem;align-items:center}
.rc a:hover{text-decoration:underline}
.rev-grid{columns:3;column-gap:1.2rem}
@media (max-width:960px){.rev-grid{columns:2}}
@media (max-width:620px){.rev-grid{columns:1}}
.rev-card{break-inside:avoid;margin-bottom:1.2rem;background:var(--bg-3);border:1px solid var(--line);border-radius:20px;padding:1.4rem;display:flex;flex-direction:column;gap:.7rem;position:relative;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.rev-card:hover{transform:translateY(-4px);border-color:var(--thread)}
.rev-card .chip{position:static;animation:none;box-shadow:none;align-self:flex-start;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--thread);border:1px solid var(--line);border-radius:999px;padding:.25rem .6rem}
.rev-card .stars{font-size:.85rem}
.rev-card q{font-family:var(--display);font-size:1.18rem;font-style:italic;line-height:1.4;quotes:"“" "”"}
.rev-card .who{display:flex;align-items:center;gap:.7rem;font-size:.82rem;color:var(--fg-2);margin-top:.2rem}
.rev-card .svc{margin-left:auto;font-size:.72rem;color:var(--fg-2)}
.rev-card .gmark{position:absolute;top:1.1rem;right:1.1rem;width:18px;height:18px;opacity:.7}
.rev-cta{border:1px solid var(--line);border-radius:28px;padding:clamp(1.6rem,4vw,2.6rem);display:grid;grid-template-columns:1.2fr 1fr;gap:1.5rem;align-items:center;background:var(--bg-2)}
@media (max-width:760px){.rev-cta{grid-template-columns:1fr}}
.rev-cta h2{font-size:clamp(1.7rem,3.6vw,2.6rem)}
.rev-cta p{color:var(--fg-2);margin-top:.5rem;max-width:44ch}
.rev-cta .links{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:flex-end}
@media (max-width:760px){.rev-cta .links{justify-content:flex-start}}
.rev-cta .btn{padding:.75rem 1.1rem;font-size:.85rem}
.rev-slider-sec{overflow:visible}
.rev-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.6rem}
.rtab{font:inherit;font-size:.85rem;font-weight:600;color:var(--fg-2);background:transparent;border:1px solid var(--line);border-radius:999px;padding:.55rem 1rem;cursor:pointer;display:inline-flex;gap:.5rem;align-items:center;transition:border-color .3s,color .3s,background .3s}
.rtab .rt-meta{font-weight:500;font-size:.72rem;color:var(--thread)}
.rtab:hover{border-color:var(--thread);color:var(--fg)}
.rtab.is-on{background:var(--bg-3);border-color:var(--thread);color:var(--fg)}
.slider{position:relative;padding-inline:0}
.sl-viewport{overflow:hidden;border-radius:22px}
.sl-track{display:flex;gap:20px;transition:transform .7s cubic-bezier(.2,.8,.2,1);will-change:transform;backface-visibility:hidden}
.sl-card{flex:0 0 calc((100% - 40px)/3);background:var(--bg-3);border:1px solid var(--line);border-radius:20px;padding:1.4rem 1.4rem 1.4rem;display:flex;flex-direction:column;gap:.6rem;position:relative;min-height:230px;color:inherit;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-color .4s}
.sl-card:hover{transform:translateY(-4px);border-color:var(--thread)}
.sl-card .gmark{position:absolute;top:1.2rem;right:1.2rem;width:20px;height:20px}
.sl-card .avatar{width:40px;height:40px;font-size:.9rem}
.sl-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}
.sl-head{display:flex;flex-direction:column;line-height:1.3}
.sl-head b{font-weight:600}.sl-head span{font-size:.75rem;color:var(--fg-2)}
.sl-card .stars{font-size:.85rem;letter-spacing:.08em}
.sl-card p{font-family:var(--display);font-size:1.1rem;font-style:italic;line-height:1.4;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.sl-card .chip{position:static;animation:none;box-shadow:none;margin-top:auto;align-self:flex-start;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--thread);border:1px solid var(--line);border-radius:999px;padding:.25rem .6rem}
.sl-empty{justify-content:center;text-align:center;flex-basis:100%}
@media (max-width:959px){.sl-card{flex-basis:calc((100% - 20px)/2)}}
@media (max-width:619px){.sl-card{flex-basis:100%}}
.sl-empty p{font-style:normal;color:var(--fg-2)}.sl-empty a{color:var(--thread);font-weight:600}
.sl-btn{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--bg-3);color:var(--fg);display:grid;place-items:center;cursor:pointer;z-index:2;transition:border-color .3s,transform .3s;box-shadow:0 16px 30px -16px rgba(0,0,0,.6)}
.sl-btn svg{width:20px;height:20px}
.sl-btn:hover{border-color:var(--thread);transform:translateY(-50%) scale(1.06)}
.sl-prev{left:-22px}.sl-next{right:-22px}
@media (max-width:700px){.sl-prev{left:-8px}.sl-next{right:-8px}.sl-btn{width:38px;height:38px}}
.sl-dots{display:flex;gap:.45rem;justify-content:center;margin-top:1.2rem}
.sl-dots button{width:8px;height:8px;border-radius:999px;border:0;background:var(--line);padding:0;cursor:pointer;transition:width .3s,background .3s}
.sl-dots button.on{width:26px;background:var(--thread)}
.rev-source{margin-top:1rem;font-size:.8rem;color:var(--fg-2);text-align:center}
.rev-source a{color:var(--thread);font-weight:600}
.toast-ok{color:#7BD88F}
