/* ============================================================
   PEDI N NAILS LONDON — brand system
   Palette sampled directly from the gold logo:
   #b27429 → #bd873a → #ca9b4c → #d4ad5c → #debd6b
   Type: Fraunces (soft serif display) + Jost (geometric sans,
   echoing the logo wordmark)
   ============================================================ */

:root{
  /* gold ramp (from the logo) */
  --bronze:#8c5e27;
  --gold-deep:#a9792c;     /* deep gold — links, eyebrows, prices */
  --gold:#b07f32;          /* primary matte gold (buttons) */
  --gold-bright:#bd873a;
  --gold-soft:#c9a35a;
  --gold-line:#dcc79c;
  --gold-wash:#f2e9d6;

  /* rose accent (complements the gold) */
  --rose:#c06f76;         /* dusty rose accent */
  --rose-deep:#a4505b;
  --rose-soft:#e3aeb0;
  --rose-line:#edcfcd;
  --blush:#f7e9e6;        /* soft warm wash for bands */
  --blush-2:#f3e0dd;

  /* neutrals (warm) — tuned for easy reading */
  --ink:#231e15;
  --ink-2:#433a2b;
  --muted:#6b6150;
  --muted-soft:#897c66;

  /* surfaces — CREAM base (default) */
  --bg:#faf6ee;
  --bg-2:#f4ecdd;
  --surface:#fffdf8;
  --surface-2:#f7f0e3;
  --line:#e8ddc8;
  --line-soft:#efe7d6;

  /* dark band */
  --dark:#241f17;
  --dark-2:#1c1810;

  --maxw:1240px;
  --gutter:clamp(20px,5vw,72px);
  --r-card:6px;
  --r-btn:3px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* WARM TAUPE base variant */
[data-base="taupe"]{
  --bg:#ebe2d1;
  --bg-2:#e3d8c4;
  --surface:#f6efe1;
  --surface-2:#ede3d1;
  --line:#dacdb1;
  --line-soft:#e3d8c2;
  --gold-wash:#e8dbbe;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Jost",system-ui,sans-serif;
  font-size:18.5px;
  line-height:1.68;
  font-weight:350;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

/* ---------- type ---------- */
.serif{font-family:"Fraunces",Georgia,serif;}
h1,h2,h3,.display{
  font-family:"Fraunces",Georgia,serif;
  font-weight:500;
  line-height:1.04;
  letter-spacing:-.01em;
  color:var(--ink);
  text-wrap:balance;
}
h2.display{font-size:clamp(2.1rem,4.6vw,3.5rem);}
p{text-wrap:pretty;}

a{color:inherit;text-decoration:none;}

/* the logo "— LONDON —" motif → reusable eyebrow */
.kicker{
  display:inline-flex;align-items:center;gap:14px;
  font-family:"Jost",sans-serif;
  font-size:.72rem;font-weight:500;
  letter-spacing:.34em;text-transform:uppercase;
  color:var(--rose-deep);
}
.kicker::before{
  content:"";width:34px;height:1px;background:var(--rose-soft);
  display:inline-block;
}
.kicker.center{justify-content:center;}
.kicker.center::after{
  content:"";width:34px;height:1px;background:var(--rose-soft);
  display:inline-block;
}
.kicker.center::before{}

.lede{
  font-size:1.2rem;color:var(--ink-2);max-width:54ch;font-weight:360;
}

/* ---------- layout ---------- */
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}
section{position:relative;scroll-margin-top:clamp(78px,11vw,96px);}
.band{padding-block:clamp(64px,9vw,128px);}
.band-tint{background:linear-gradient(180deg,var(--blush) 0%,var(--blush-2) 100%);}
.sec-head{max-width:60ch;margin-bottom:clamp(34px,5vw,58px);}
.sec-head .display{margin-top:18px;}
.sec-head.center{margin-inline:auto;text-align:center;}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--gold);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-family:"Jost",sans-serif;font-weight:500;
  font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;
  padding:1.05em 1.9em;border-radius:var(--r-btn);white-space:nowrap;
  border:1px solid transparent;cursor:pointer;
  transition:transform .35s var(--ease),background .35s var(--ease),
             color .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease);
}
.btn-gold{
  background:var(--gold);color:#fdf8ee;
  box-shadow:0 14px 30px -18px rgba(140,94,39,.85);
}
.btn-gold:hover{background:var(--gold-deep);transform:translateY(-2px);
  box-shadow:0 20px 38px -18px rgba(140,94,39,.95);}
.btn-outline{
  background:transparent;color:var(--ink);border-color:var(--line);
}
.btn-outline:hover{border-color:var(--gold);color:var(--gold-deep);transform:translateY(-2px);}
.btn-ghost{background:transparent;color:var(--ink);padding-inline:0;letter-spacing:.14em;}
.btn-dark{background:var(--ink);color:var(--bg);}
.btn-dark:hover{background:#100d08;transform:translateY(-2px);}

/* inline gold link */
.tlink{
  font-family:"Jost",sans-serif;font-weight:500;
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-deep);display:inline-flex;align-items:center;gap:.55em;
  position:relative;padding-bottom:3px;width:max-content;white-space:nowrap;
}
.tlink::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--gold-line);transform:scaleX(.0);transform-origin:left;
  transition:transform .4s var(--ease);
}
.tlink:hover::after{transform:scaleX(1);}
.tlink .ar{transition:transform .4s var(--ease);}
.tlink:hover .ar{transform:translateX(4px);}

/* ---------- header ---------- */
.site-head{
  position:fixed;inset:0 0 auto 0;z-index:90;
  display:flex;align-items:center;justify-content:space-between;
  padding:18px var(--gutter);
  transition:background .4s var(--ease),box-shadow .4s var(--ease),padding .4s var(--ease),border-color .4s var(--ease);
  background:color-mix(in srgb,var(--dark) 90%,transparent);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,.07);
}
.site-head.scrolled{
  background:color-mix(in srgb,var(--dark) 95%,transparent);
  backdrop-filter:blur(18px) saturate(150%);
  -webkit-backdrop-filter:blur(18px) saturate(150%);
  border-bottom:1px solid rgba(255,255,255,.1);
  box-shadow:0 14px 40px -28px rgba(0,0,0,.7);
  padding-block:12px;
}
.brand{display:flex;align-items:center;gap:13px;}
.brand img.full-logo{height:46px;width:auto;display:block;}
.brand .bn{
  font-family:"Fraunces",serif;font-weight:500;font-size:1.06rem;
  letter-spacing:.02em;line-height:1;
}
.brand .bn small{
  display:block;font-family:"Jost",sans-serif;font-weight:500;
  font-size:.5rem;letter-spacing:.42em;color:var(--gold-deep);
  margin-top:4px;text-transform:uppercase;
}
.nav{display:flex;align-items:center;gap:30px;}
.nav a.nlink{
  font-family:"Jost",sans-serif;font-size:.82rem;font-weight:400;
  letter-spacing:.06em;color:rgba(248,242,232,.9);position:relative;padding:4px 0;white-space:nowrap;
}
.nav a.nlink::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--gold);transform:scaleX(0);transform-origin:center;
  transition:transform .35s var(--ease);
}
.nav a.nlink:hover{color:#fbf6ec;}
.nav a.nlink:hover::after{transform:scaleX(1);}
/* "Our Policy" — kept first & gently highlighted so guests find it easily */
.nav a.nlink-policy{color:var(--gold-soft);font-weight:500;}
.nav a.nlink-policy::after{transform:scaleX(1);transform-origin:left;}
.nav a.nlink-policy:hover{color:#fbf6ec;}
.nav .btn{padding:.7em 1.35em;font-size:.72rem;}
.burger{display:none;background:none;border:0;cursor:pointer;flex-direction:column;gap:5px;padding:8px;}
.burger span{width:24px;height:1.5px;background:#f5efe3;display:block;transition:.3s var(--ease);}
.mobile-menu{display:none;}

/* ---------- hero ---------- */
.hero{position:relative;padding-top:118px;}
.hero-inner{
  display:grid;grid-template-columns:1.04fr .96fr;gap:clamp(32px,5vw,76px);
  align-items:center;min-height:min(86vh,820px);
  padding-block:clamp(30px,4vw,56px);
}
.hero-copy{position:relative;z-index:2;max-width:36ch;}
.hero-copy .logo-lockup{height:clamp(78px,9vw,120px);width:auto;margin-bottom:30px;display:none;}
.hero h1{
  font-family:"Jost",sans-serif;text-transform:uppercase;
  font-size:clamp(2.2rem,5.4vw,3.9rem);line-height:1.05;margin-top:22px;
  font-weight:600;letter-spacing:.1em;
  background:linear-gradient(96deg,var(--bronze) 0%,var(--gold) 45%,var(--gold-soft) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero h1 .amp{font-style:normal;color:inherit;font-weight:600;}
.hero .tagline{
  font-family:"Fraunces",serif;font-style:italic;
  font-size:clamp(1.25rem,2.3vw,1.7rem);color:var(--gold-deep);
  margin-top:20px;font-weight:500;letter-spacing:0;
}
.hero .welcome{margin-top:20px;color:var(--muted);font-size:1.08rem;max-width:42ch;}
.hero-cta{display:flex;flex-wrap:wrap;gap:16px;margin-top:36px;align-items:center;}
.hero-policy{margin-top:16px;font-size:.92rem;}
.hero-policy a{color:var(--gold-deep);border-bottom:1px solid var(--gold-line);padding-bottom:2px;transition:color .25s var(--ease),border-color .25s var(--ease);}
.hero-policy a:hover{color:var(--gold);border-color:var(--gold);}
.hero-policy .ar{transition:transform .25s var(--ease);display:inline-block;}
.hero-policy a:hover .ar{transform:translateX(3px);}
.addr-chip{
  display:inline-flex;align-items:center;gap:9px;margin-bottom:22px;
  font-size:.92rem;color:var(--ink-2);max-width:max-content;
  border:1px solid var(--gold-line);border-radius:999px;padding:7px 15px;
  transition:border-color .3s var(--ease),background .3s var(--ease);
}
.addr-chip:hover{border-color:var(--gold);background:var(--gold-wash);}
.addr-chip .pin{color:var(--gold-deep);flex-shrink:0;display:inline-flex;}
.addr-chip b{color:var(--ink);font-weight:600;}

.hero-media{position:relative;z-index:1;overflow:hidden;}
.hero-media image-slot{width:100%;height:clamp(420px,56vw,640px);}
.hero-media .frame-deco{
  position:absolute;inset:-14px -14px auto auto;width:62%;height:60%;
  border:1px solid var(--gold-line);border-radius:var(--r-card);
  z-index:-1;
}
.hero-mono{
  position:absolute;right:-2%;bottom:-6%;width:clamp(120px,15vw,210px);
  opacity:.08;z-index:0;pointer-events:none;
}

/* hero variant: CENTERED / portrait */
[data-hero="centered"] .hero-inner{
  grid-template-columns:1fr;text-align:center;min-height:auto;gap:46px;
}
[data-hero="centered"] .hero-copy{max-width:62ch;margin-inline:auto;}
[data-hero="centered"] .hero-copy .logo-lockup{display:inline-block;margin-inline:auto;}
[data-hero="centered"] .hero h1{display:none;}
[data-hero="centered"] .hero .kicker{display:none;}
[data-hero="centered"] .hero-cta{justify-content:center;}
[data-hero="centered"] .addr-chip{justify-content:center;margin-inline:auto;text-align:left;}
[data-hero="centered"] .hero-media{order:3;}
[data-hero="centered"] .hero-media image-slot{height:clamp(340px,42vw,520px);}
[data-hero="centered"] .frame-deco,[data-hero="centered"] .hero-mono{display:none;}

/* hero variant: EDITORIAL overlay */
[data-hero="editorial"] .hero-inner{
  grid-template-columns:1fr;min-height:min(90vh,860px);align-items:end;
  padding-bottom:clamp(46px,6vw,86px);
}
[data-hero="editorial"] .hero-media{
  position:absolute;inset:0;z-index:0;margin-inline:calc(-1*var(--gutter));
}
[data-hero="editorial"] .hero-media image-slot{height:100%;border-radius:0;}
[data-hero="editorial"] .hero-media image-slot::part(frame){border-radius:0;}
[data-hero="editorial"] .hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(18,14,9,.32) 0%,rgba(18,14,9,.24) 34%,rgba(18,14,9,.7) 72%,rgba(18,14,9,.92) 100%);
}
[data-hero="editorial"] .frame-deco,[data-hero="editorial"] .hero-mono{display:none;}
[data-hero="editorial"] .hero-copy{color:#fbf5ea;max-width:40ch;}
[data-hero="editorial"] .hero h1,[data-hero="editorial"] .hero .welcome{color:#fbf5ea;}
[data-hero="editorial"] .hero .tagline{color:var(--gold-soft);}
[data-hero="editorial"] .hero h1 .amp{color:var(--gold-soft);}
[data-hero="editorial"] .addr-chip{border-top-color:rgba(255,255,255,.22);color:rgba(251,245,234,.82);}
[data-hero="editorial"] .addr-chip b{color:#fff;}
[data-hero="editorial"] .kicker{color:var(--gold-soft);}
[data-hero="editorial"] .kicker::before{background:var(--gold-soft);}

/* ---------- service cards ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.svc{
  position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-card);overflow:hidden;
  display:flex;flex-direction:column;min-height:300px;
  transition:transform .5s var(--ease),border-color .5s var(--ease),box-shadow .5s var(--ease),background .5s var(--ease);
}
.svc:hover{transform:translateY(-6px);border-color:var(--gold-line);
  box-shadow:0 30px 60px -40px rgba(140,94,39,.55);}
.svc-photo{position:relative;height:172px;overflow:hidden;background:var(--surface-2);}
.svc-photo img{width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.92);transition:transform .7s var(--ease);}
.svc:hover .svc-photo img{transform:scale(1.05);}
.svc-photo::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(36,31,23,.16) 100%);}
.svc-in{padding:24px 26px 28px;display:flex;flex-direction:column;flex:1;}
.svc .num{
  font-family:"Fraunces",serif;font-size:1.05rem;color:var(--gold-soft);
  letter-spacing:.04em;
}
.svc .ico{margin:6px 0 20px;color:var(--gold-deep);}
.svc h3{font-size:1.6rem;margin:6px 0 10px;}
.svc p{color:var(--ink-2);font-size:1.02rem;line-height:1.55;flex:1;}
.svc .tlink{margin-top:22px;}
.svc::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft));
  transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease);
  z-index:2;
}
.svc:hover::after{transform:scaleX(1);}

/* ---------- signature highlight ---------- */
.sig{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;}
.sig-card{
  position:relative;display:grid;grid-template-columns:1fr 1fr;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-card);overflow:hidden;min-height:340px;
}
.sig-card image-slot{width:100%;height:100%;min-height:340px;}
.sig-card .sig-body{padding:38px 34px;display:flex;flex-direction:column;justify-content:center;}
.sig-tag{
  display:inline-flex;align-items:center;gap:8px;align-self:flex-start;
  font-family:"Jost",sans-serif;font-size:.64rem;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);white-space:nowrap;
  border:1px solid var(--gold-line);border-radius:999px;padding:6px 13px;margin-bottom:18px;
}
.sig-body h3{font-size:1.95rem;margin-bottom:6px;}
.sig-body .price{font-family:"Fraunces",serif;font-size:1.2rem;color:var(--gold-deep);margin-bottom:16px;}
.sig-body p{color:var(--muted);font-size:.98rem;margin-bottom:24px;}

/* ---------- price menu ---------- */
.menu-tabs{
  display:flex;flex-wrap:wrap;gap:8px;margin-bottom:42px;
  border-bottom:1px solid var(--line);padding-bottom:0;
}
.menu-tab{
  font-family:"Jost",sans-serif;font-size:.86rem;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;
  background:none;border:0;cursor:pointer;padding:14px 20px;position:relative;
  transition:color .3s var(--ease);
}
.menu-tab::after{
  content:"";position:absolute;left:20px;right:20px;bottom:-1px;height:2px;
  background:var(--gold);transform:scaleX(0);transition:transform .35s var(--ease);
}
.menu-tab:hover{color:var(--ink);}
.menu-tab.active{color:var(--ink);font-weight:600;}
.menu-tab.active::after{transform:scaleX(1);height:2.5px;}
.menu-groups{column-gap:64px;}
.menu-group{display:none;}
.menu-group.active{display:block;animation:fadeUp .5s var(--ease);}
.menu-group .grp-head{display:none;}
.menu-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 64px;align-items:start;}
@media(max-width:760px){.menu-cols{grid-template-columns:1fr;gap:0;}}
.menu-list{margin-bottom:0;}

/* expandable service row (native <details> — no JS, keyboard accessible) */
details.mrow{border-bottom:1px solid var(--line-soft);}
details.mrow > summary{
  display:flex;align-items:baseline;gap:14px;padding:15px 0;
  cursor:pointer;list-style:none;
}
details.mrow > summary::-webkit-details-marker{display:none;}
details.mrow > summary:focus-visible{outline:2px solid var(--gold-line);outline-offset:3px;border-radius:3px;}
.mrow .mname{font-size:1.12rem;color:var(--ink);font-weight:370;white-space:nowrap;}
.mrow .mdesc{font-size:.82rem;color:var(--muted-soft);}
.mrow .leader{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px);min-width:18px;}
.mrow .mtime{font-family:"Jost",sans-serif;font-size:.82rem;letter-spacing:.03em;color:var(--muted);white-space:nowrap;}
.mrow .mprice{font-family:"Fraunces",serif;font-size:1.2rem;color:var(--gold-deep);white-space:nowrap;font-weight:500;}
.mrow .mprice .sub{font-size:.8rem;color:var(--muted);font-family:"Jost",sans-serif;}
.mrow .mtoggle{align-self:center;flex-shrink:0;width:8px;height:8px;margin-left:2px;
  border-right:1.5px solid var(--muted-soft);border-bottom:1.5px solid var(--muted-soft);
  transform:rotate(45deg);transition:transform .3s var(--ease);}
details.mrow[open] > summary .mtoggle{transform:rotate(-135deg);}
.mrow.rec .mname{color:var(--ink);}
.mrow-body{padding:2px 0 18px;animation:fadeUp .4s var(--ease);}
.mrow-desc{font-size:1.04rem;color:var(--ink-2);line-height:1.6;max-width:48ch;}
.mrow-steps{counter-reset:step;display:flex;flex-wrap:wrap;gap:7px;list-style:none;margin-top:13px;}
.mrow-steps li{counter-increment:step;display:inline-flex;align-items:center;gap:7px;
  font-family:"Jost",sans-serif;font-size:.72rem;letter-spacing:.02em;color:var(--ink-2);
  background:var(--gold-wash);border:1px solid var(--gold-line);border-radius:999px;padding:5px 12px 5px 6px;}
.mrow-steps li::before{content:counter(step);font-family:"Fraunces",serif;font-size:.68rem;color:var(--gold-deep);
  width:16px;height:16px;border-radius:50%;background:var(--surface);border:1px solid var(--gold-line);
  display:grid;place-items:center;flex-shrink:0;}
.rec-tag{
  font-family:"Jost",sans-serif;font-size:.56rem;letter-spacing:.18em;
  text-transform:uppercase;color:#fff;background:var(--gold);
  padding:3px 8px;border-radius:999px;font-weight:500;margin-left:2px;vertical-align:middle;
}
.menu-note{margin-top:34px;font-size:.92rem;color:var(--muted-soft);font-style:italic;font-family:"Fraunces",serif;}

/* per-category note, shown inside its menu group — plain text */
.cat-note{
  margin-top:20px;font-size:.96rem;color:var(--muted);line-height:1.55;
}
.cat-note strong{color:var(--ink-2);font-weight:500;}

/* SECTIONS mode (tweak) */
[data-menu="sections"] .menu-tabs{display:none;}
[data-menu="sections"] .menu-group{display:block !important;margin-bottom:56px;animation:none;}
[data-menu="sections"] .menu-group .grp-head{
  display:flex;align-items:baseline;gap:16px;margin-bottom:22px;
}
[data-menu="sections"] .menu-group .grp-head h3{font-size:1.7rem;}
[data-menu="sections"] .menu-group .grp-head .gline{flex:1;height:1px;background:var(--line);}
[data-menu="sections"] .menu-group .grp-head .gnum{font-family:"Fraunces",serif;color:var(--gold-soft);}

/* ---------- gallery (masonry, no crop) ----------
   CSS multi-column masonry: every photo keeps its natural aspect ratio, so the
   nails are always fully visible — nothing is cover-cropped. */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.gal-foot{margin-top:34px;display:flex;justify-content:center;gap:14px;flex-wrap:wrap;}
/* collapsed gallery: show only the first four (JS adds/removes this class) */
.gal.gal-collapsed .g-item:nth-child(n+5){display:none;}
@media(max-width:1080px){.gal{grid-template-columns:repeat(3,1fr);}}
@media(max-width:760px){.gal{grid-template-columns:repeat(2,1fr);gap:12px;}}
@media(max-width:430px){.gal{gap:10px;}}

/* ---------- google reviews ---------- */
#reviews .sec-head{margin-bottom:clamp(24px,3vw,38px);}
.greview{
  max-width:600px;margin:0 auto clamp(22px,3vw,34px);text-align:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:clamp(28px,3.4vw,40px) clamp(28px,4vw,48px) clamp(30px,3.6vw,40px);
  box-shadow:0 50px 90px -64px rgba(140,94,39,.55);
}
.gr-top{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:10px;}
.gr-top .g-logo{display:block;}
.gr-brand{font-family:"Jost",sans-serif;font-size:.74rem;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;color:var(--muted);}
.gr-score{font-family:"Fraunces",serif;font-weight:500;line-height:1;
  font-size:clamp(2.8rem,7vw,3.6rem);color:var(--ink);}
.gr-stars{position:relative;display:inline-block;font-size:1.55rem;line-height:1;
  letter-spacing:5px;margin:8px 0 2px;}
.gr-stars-bg{color:var(--line);}
.gr-stars-fg{position:absolute;top:0;left:0;color:#f4a300;overflow:hidden;white-space:nowrap;
  width:calc(var(--rate,5)/5*100%);}
.gr-count{color:var(--muted);font-size:1.02rem;margin-top:8px;}
.gr-count strong{color:var(--ink-2);font-weight:500;}
.gr-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px;}
.gr-cta .btn{font-size:.72rem;padding:.92em 1.5em;}

/* guest photos (from Google reviews) */
.guest-block{margin-top:clamp(42px,6vw,70px);}
.guest-title{text-align:center;font-size:clamp(1.55rem,3vw,2.1rem);}
.guest-sub{text-align:center;color:var(--muted);max-width:50ch;margin:10px auto clamp(24px,3vw,34px);font-size:1rem;}

/* review cards */
.grev-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:980px;margin-inline:auto;}
/* collapsed reviews: show only the first three (JS toggles this class) */
.grev-grid.revs-collapsed .grev:nth-child(n+4){display:none;}
.grev{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:28px 30px;display:flex;flex-direction:column;
  transition:transform .5s var(--ease),border-color .5s var(--ease),box-shadow .5s var(--ease);
}
.grev:hover{transform:translateY(-4px);border-color:var(--gold-line);
  box-shadow:0 30px 60px -42px rgba(140,94,39,.5);}
.grev-head{display:flex;align-items:center;gap:13px;margin-bottom:15px;}
.grev-av{flex-shrink:0;width:44px;height:44px;border-radius:50%;
  background:var(--gold-wash);border:1px solid var(--gold-line);
  display:grid;place-items:center;font-family:"Fraunces",serif;color:var(--gold-deep);font-size:1.1rem;}
.grev-name{font-family:"Jost",sans-serif;font-weight:500;font-size:.98rem;
  letter-spacing:.02em;color:var(--ink);}
.grev-src{display:flex;align-items:center;gap:6px;margin-top:3px;
  font-family:"Jost",sans-serif;font-size:.72rem;letter-spacing:.04em;color:var(--muted-soft);}
.grev-stars{color:#f4a300;letter-spacing:3px;font-size:.95rem;margin-bottom:12px;}
.grev-text{color:var(--ink-2);font-size:1rem;line-height:1.62;font-weight:330;}
@media(max-width:760px){.grev-grid{grid-template-columns:1fr;max-width:560px;}}

/* ---------- testimonials ---------- */
.tst-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
.tst{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:34px 30px;display:flex;flex-direction:column;position:relative;
}
.tst .quo{font-family:"Fraunces",serif;font-size:3.4rem;line-height:.6;color:var(--rose-soft);height:28px;}
.tst .stars{color:var(--rose);letter-spacing:3px;font-size:.78rem;margin:18px 0 14px;}
.tst p{font-family:"Fraunces",serif;font-size:1.12rem;line-height:1.5;color:var(--ink-2);font-weight:330;flex:1;}
.tst .who{margin-top:24px;display:flex;align-items:center;gap:12px;}
.tst .who .av{
  width:38px;height:38px;border-radius:50%;background:var(--gold-wash);
  display:grid;place-items:center;font-family:"Fraunces",serif;color:var(--gold-deep);
  font-size:.95rem;border:1px solid var(--gold-line);
}
.tst .who .nm{font-family:"Jost",sans-serif;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);}
.tst .who .mt{font-size:.74rem;color:var(--muted-soft);letter-spacing:.04em;}

/* ---------- why us ---------- */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:42px 36px;}
.why-item{position:relative;padding-top:26px;border-top:1px solid var(--line);}
.why-item .wn{font-family:"Fraunces",serif;font-size:1.05rem;color:var(--rose);}
.why-item{border-top-color:var(--rose-line);}
.why-item h3{font-size:1.32rem;margin:16px 0 10px;}
.why-item p{color:var(--muted);font-size:.95rem;line-height:1.55;}

/* ---------- visit / location ---------- */
.visit{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(28px,4vw,56px);align-items:stretch;}
.visit-info{display:flex;flex-direction:column;}
.info-row{padding:22px 0;border-bottom:1px solid var(--line);}
.info-row:first-of-type{border-top:1px solid var(--line);}
.info-row .lab{font-family:"Jost",sans-serif;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:10px;}
.info-row .val{color:var(--ink-2);font-size:1.04rem;}
.hours-line{display:flex;justify-content:space-between;gap:18px;padding:6px 0;font-size:1rem;color:var(--ink-2);white-space:nowrap;}
.hours-line .d{color:var(--muted);}
.hours-line.today{color:var(--gold-deep);font-weight:500;}
.hours-line.today .d{color:var(--gold-deep);}
.open-pill{
  display:inline-flex;align-items:center;gap:8px;margin-top:16px;
  font-family:"Jost",sans-serif;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;
  padding:7px 13px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap;
}
.open-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--muted-soft);}
.open-pill.is-open{color:#3c7a4e;border-color:#bcd9c3;background:#f0f7f1;}
.open-pill.is-open .dot{background:#4a9a5e;box-shadow:0 0 0 3px rgba(74,154,94,.18);}

.map-card{
  position:relative;border-radius:var(--r-card);overflow:hidden;border:1px solid var(--line);
  min-height:420px;background:
    linear-gradient(0deg,var(--surface-2),var(--surface-2));
}
.map-card .streets{position:absolute;inset:0;opacity:.5;}
.map-card .pin{
  position:absolute;left:50%;top:46%;transform:translate(-50%,-100%);
  display:flex;flex-direction:column;align-items:center;z-index:2;
}
.map-card .pin .dot{
  width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);
  background:var(--gold);border:2px solid #fff;box-shadow:0 6px 14px -4px rgba(140,94,39,.7);
}
.map-card .pin .pulse{
  position:absolute;top:6px;width:18px;height:18px;border-radius:50%;
  background:var(--gold);opacity:.4;animation:pulse 2.4s var(--ease) infinite;
}
.map-card .addr-tag{
  position:absolute;left:24px;bottom:24px;right:24px;z-index:3;
  background:color-mix(in srgb,var(--surface) 96%,transparent);
  backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--r-card);
  padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  box-shadow:0 18px 40px -20px rgba(0,0,0,.5);
}
.map-card .addr-tag .at-name{font-family:"Fraunces",serif;font-size:1.15rem;}
.map-card .addr-tag .at-sub{font-size:.86rem;color:var(--muted);}

/* ---------- cherry blossom decorations ---------- */
.petal{position:absolute;pointer-events:none;display:block;z-index:1;
  filter:drop-shadow(0 6px 10px rgba(164,80,91,.15));}
/* hero — a soft cluster drifting off the photo corner */
.hero-media .petal{z-index:3;}
.hero-media .petal-h1{top:-34px;right:-26px;width:72px;opacity:.97;transform:rotate(-12deg);}
.hero-media .petal-h2{top:36px;right:-40px;width:42px;opacity:.9;transform:rotate(20deg);}
.hero-media .petal-h3{top:-6px;right:34px;width:28px;opacity:.8;transform:rotate(48deg);}
/* light sections — keep them faint at the margins */
.petal-s1{top:60px;right:3%;width:48px;opacity:.5;transform:rotate(16deg);}
.petal-w1{top:48px;left:2.5%;width:52px;opacity:.55;transform:rotate(-14deg);}
.petal-w2{bottom:90px;right:3%;width:34px;opacity:.5;transform:rotate(28deg);}
.petal-r1{top:54px;left:4%;width:44px;opacity:.5;transform:rotate(-20deg);}
.petal-r2{top:120px;right:4%;width:30px;opacity:.45;transform:rotate(24deg);}
.petal-y1{bottom:60px;right:4%;width:46px;opacity:.5;transform:rotate(12deg);}
.foot .petal-f1{top:34px;right:5%;width:40px;opacity:.5;transform:rotate(-18deg);}
/* dark closing band — blossoms read brightly here */
.cta-band .petal{z-index:1;}
.cta-band .petal-c1{top:44px;left:7%;width:50px;opacity:.85;transform:rotate(-16deg);}
.cta-band .petal-c2{bottom:58px;left:15%;width:30px;opacity:.7;transform:rotate(18deg);}
.cta-band .petal-c3{top:64px;right:9%;width:44px;opacity:.8;transform:rotate(10deg);}
.cta-band .petal-c4{bottom:70px;right:16%;width:26px;opacity:.62;transform:rotate(-26deg);}
@media(max-width:760px){
  .hero-media .petal-h3,
  .petal-s1,.petal-w2,.petal-r2,.petal-y1,
  .cta-band .petal-c2,.cta-band .petal-c4{display:none;}
  .hero-media .petal-h1{width:54px;}
  .hero-media .petal-h2{width:34px;}
}

/* ---------- closing CTA ---------- */
.cta-band{position:relative;background:var(--dark);color:#f5efe3;overflow:hidden;text-align:center;}
.cta-band .wrap{position:relative;z-index:2;padding-block:clamp(72px,10vw,130px);}
.cta-band .kicker{color:var(--gold-soft);}
.cta-band .kicker::before,.cta-band .kicker.center::after{background:var(--gold-soft);}
.cta-band h2{color:#fbf6ec;font-size:clamp(2.3rem,5vw,4rem);margin:20px auto 0;max-width:18ch;}
.cta-band p{color:rgba(245,239,227,.72);margin:22px auto 0;max-width:46ch;}
.cta-band .hero-cta{justify-content:center;margin-top:38px;}
.cta-band .btn-outline{color:#f5efe3;border-color:rgba(255,255,255,.28);}
.cta-band .btn-outline:hover{border-color:var(--gold-soft);color:var(--gold-soft);}
.cta-mono{position:absolute;right:-40px;bottom:-60px;width:min(40vw,420px);opacity:.06;z-index:1;}
.cta-mono.l{left:-60px;right:auto;top:-70px;bottom:auto;transform:scaleX(-1);}

/* ---------- footer ---------- */
.foot{background:var(--dark-2);color:rgba(245,239,227,.74);padding-block:64px 30px;}
.foot-top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:40px;padding-bottom:46px;border-bottom:1px solid rgba(255,255,255,.08);}
.foot img.flogo{height:40px;width:auto;margin-bottom:20px;}
.foot .fabout{font-size:.94rem;line-height:1.62;max-width:34ch;color:rgba(245,239,227,.72);}
.foot h4{font-family:"Jost",sans-serif;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft);font-weight:500;margin-bottom:18px;}
.foot ul{list-style:none;display:flex;flex-direction:column;gap:11px;}
.foot a{color:rgba(245,239,227,.8);font-size:.95rem;transition:color .3s var(--ease);}
.foot a:hover{color:var(--gold-soft);}
.foot .socials{display:flex;gap:12px;margin-top:6px;}
.foot .socials a{
  width:38px;height:38px;border:1px solid rgba(255,255,255,.16);border-radius:50%;
  display:grid;place-items:center;color:rgba(245,239,227,.7);transition:.3s var(--ease);
}
.foot .socials a:hover{border-color:var(--gold-soft);color:var(--gold-soft);transform:translateY(-2px);}
.foot-bot{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;padding-top:26px;font-size:.82rem;color:rgba(245,239,227,.6);}

/* back-to-top button */
.foot-totop{display:flex;justify-content:center;padding:30px 0 4px;}
.to-top{
  font-family:"Jost",sans-serif;font-size:.74rem;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:rgba(245,239,227,.82);
  display:inline-flex;align-items:center;gap:9px;
  border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:11px 22px;
  transition:color .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease);
}
.to-top:hover{border-color:var(--gold-soft);color:var(--gold-soft);transform:translateY(-2px);}

/* branch / hours notes */
.branch-note{
  margin-top:14px;font-size:.92rem;color:var(--muted);line-height:1.55;
  border-left:2px solid var(--gold-line);padding-left:13px;max-width:46ch;
}
.branch-note strong{color:var(--ink-2);font-weight:500;}
.hours-note{margin-top:10px;font-size:.86rem;color:var(--gold-deep);font-style:italic;font-family:"Fraunces",serif;}

/* ---------- real photos (hero / signature / gallery / map) ----------
   object-position keeps the nail/subject in frame so nothing crops ugly. */
.hero-media .hero-photo{
  width:100%;height:clamp(420px,56vw,640px);object-fit:cover;object-position:center 42%;display:block;
  border-radius:var(--r-card);
}
.svc-photo img{object-position:center 48%;}
.sig-card .sig-photo{
  width:100%;height:100%;min-height:340px;object-fit:cover;object-position:center 40%;display:block;
}
.gal .g-item{width:100%;aspect-ratio:4/5;height:auto;display:block;object-fit:cover;object-position:center 42%;
  border-radius:var(--r-card);border:1px solid var(--line);
  transition:transform .6s var(--ease),box-shadow .5s var(--ease);}
.map-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 62%;display:block;}
.map-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;filter:saturate(.92);}
.map-card::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent 45%,rgba(28,24,16,.45) 100%);}
@media(max-width:900px){
  .hero-media .hero-photo{height:clamp(300px,60vw,420px);}
}
@media(max-width:560px){
  .sig-card .sig-photo{min-height:240px;height:240px;}
}

/* ---------- reveal entrance — SCROLL-TRIGGERED ----------
   Resilience first: content is VISIBLE BY DEFAULT (opacity:1). The hidden-start
   state exists ONLY under html.reveal-on, which a self-contained inline <head>
   gate (data-cfasync="false", see index.html) adds *together with* the
   IntersectionObserver that reveals it — and a failsafe. So no script-blocking
   proxy (Cloudflare Rocket Loader), print, PDF, reduced-motion preference, or JS
   error can ever trap a section hidden: in every one of those cases the gate
   simply never runs and the page renders exactly as the static site always has. */
.reveal{opacity:1;}
html.reveal-on .reveal{
  opacity:0;transform:translateY(12px);
  transition:opacity .6s var(--ease),transform .6s var(--ease);
}
html.reveal-on .reveal.in{opacity:1;transform:none;}
html.reveal-on .reveal.d1{transition-delay:.08s;}
html.reveal-on .reveal.d2{transition-delay:.16s;}
html.reveal-on .reveal.d3{transition-delay:.24s;}

@keyframes fadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
@keyframes pulse{0%{transform:scale(1);opacity:.4;}70%{transform:scale(3.2);opacity:0;}100%{opacity:0;}}


/* ---------- responsive ---------- */
@media(max-width:1080px){
  .svc-grid{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:repeat(2,1fr);gap:36px 32px;}
  .tst-grid{grid-template-columns:1fr;max-width:620px;margin-inline:auto;}
}
@media(max-width:900px){
  .nav .nlink{display:none;}
  .burger{display:flex;}
  .hero-inner{grid-template-columns:1fr;gap:40px;min-height:auto;padding-top:20px;}
  .hero-media{order:-1;}
  .hero-copy{max-width:none;}
  .hero .welcome,.hero .addr-chip{max-width:none;}
  .hero-media .frame-deco,.hero-mono{display:none;}
  .hero-media image-slot{height:clamp(300px,60vw,420px);}
  [data-hero="editorial"] .hero-media{position:relative;inset:auto;margin-inline:0;order:-1;}
  [data-hero="editorial"] .hero-media image-slot{height:clamp(320px,62vw,440px);border-radius:var(--r-card);}
  [data-hero="editorial"] .hero-media image-slot::part(frame){border-radius:var(--r-card);}
  [data-hero="editorial"] .hero-copy,[data-hero="editorial"] .hero h1,[data-hero="editorial"] .hero .welcome{color:var(--ink);}
  [data-hero="editorial"] .hero .tagline{color:var(--gold-deep);}
  [data-hero="editorial"] .hero h1 .amp{color:var(--gold-deep);}
  [data-hero="editorial"] .hero-media::after{display:none;}
  [data-hero="editorial"] .kicker{color:var(--gold-deep);}
  [data-hero="editorial"] .addr-chip{border-top-color:var(--line);color:var(--muted);}
  [data-hero="editorial"] .addr-chip b{color:var(--ink-2);}
  .sig{grid-template-columns:1fr;}
  .visit{grid-template-columns:1fr;}
  .foot-top{grid-template-columns:1fr 1fr;gap:32px;}
  .mobile-menu.open{display:block;}
}
@media(max-width:560px){
  body{font-size:17.5px;}
  .mrow > summary{flex-wrap:wrap;column-gap:10px;row-gap:3px;}
  .mrow .mname{white-space:normal;}
  .mrow .mname .rec-tag{white-space:nowrap;}
  .mrow .mdesc{white-space:normal;}
  .mrow .leader{display:none;}
  .mrow .mprice{margin-left:auto;}
  .svc-grid{grid-template-columns:1fr;}
  .why-grid{grid-template-columns:1fr;}
  .gal{grid-template-columns:repeat(2,1fr);}
  .sig-card{grid-template-columns:1fr;}
  .sig-card image-slot{min-height:240px;height:240px;}
  .foot-top{grid-template-columns:1fr;}
  .hero-cta .btn{flex:1;}
  /* phones: drop the inline header CTA so the menu button stays on-screen (the
     mobile menu carries its own "Book an appointment"). Fixes the off-screen
     burger / horizontal scroll at narrow widths. */
  .nav .btn-gold.js-book{display:none;}
}
@media(max-width:400px){
  .brand img.full-logo{height:40px;}
}

/* mobile menu panel */
.mobile-menu{
  position:fixed;inset:0 0 auto 0;top:0;z-index:80;background:var(--bg);
  padding:90px var(--gutter) 36px;border-bottom:1px solid var(--line);
  transform:translateY(-100%);transition:transform .45s var(--ease);
}
.mobile-menu.open{transform:translateY(0);display:block;}
.mobile-menu a{display:block;font-family:"Fraunces",serif;font-size:1.7rem;padding:12px 0;border-bottom:1px solid var(--line-soft);}
.mobile-menu .btn{margin-top:24px;width:100%;}

/* ============================================================
   MODERN MOTION — "Quiet Bloom, Lacquered"
   A calm cream room that breathes at golden hour: a drifting gold-and-rose
   salon-light background, petals caught in a soft draft, scroll-reveals that
   wake the page band by band, and a few real-material touches (gold sheen,
   a star bar that fills, a 4.6 that counts up).

   ALL continuous/ambient motion is gated under html.ambient-on, added by the
   inline head gate ONLY when IntersectionObserver exists AND the visitor has no
   reduced-motion preference. Everything below degrades to today's static page.
   ============================================================ */

/* ---- aurora: drifting salon-light background (behind everything) ---- */
.aurora{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;display:none;}
html.ambient-on .aurora{display:block;}
.aurora .blob{position:absolute;border-radius:50%;filter:blur(60px);mix-blend-mode:multiply;will-change:transform;}
.aurora .b1{width:120vmax;height:120vmax;top:-42vmax;left:-32vmax;
  background:radial-gradient(circle,rgba(201,163,90,.16) 0%,transparent 60%);
  animation:drift1 34s ease-in-out infinite;}
.aurora .b2{width:120vmax;height:120vmax;bottom:-46vmax;right:-30vmax;
  background:radial-gradient(circle,rgba(227,174,176,.15) 0%,transparent 60%);
  animation:drift2 42s ease-in-out infinite;}
.aurora .b3{width:104vmax;height:104vmax;top:6vmax;right:-22vmax;
  background:radial-gradient(circle,rgba(140,94,39,.08) 0%,transparent 60%);
  animation:drift3 50s ease-in-out infinite;}
@keyframes drift1{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(4vw,3vh,0)}}
@keyframes drift2{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(-3.5vw,-2vh,0)}}
@keyframes drift3{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(-2vw,2.5vh,0)}}
/* mobile/low-power: one near-screen-sized bloom instead of three viewport-fillers */
@media(max-width:900px){
  .aurora .b2,.aurora .b3{display:none;}
  .aurora .b1{width:150vw;height:95vh;top:-12vh;left:-28vw;filter:blur(38px);}
}
/* pause the ambient loops while the tab is hidden (battery/heat); visibility unaffected */
html.anim-paused .aurora .blob,
html.anim-paused .cta-band::before,
html.anim-paused .petal{animation-play-state:paused;}

/* dark closing band breathes too — a single faint gold bloom behind the text */
.cta-band::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;display:none;
  background:radial-gradient(circle at 30% 38%,rgba(201,163,90,.13) 0%,transparent 58%);}
html.ambient-on .cta-band::before{display:block;animation:drift2 46s ease-in-out infinite;}

/* ---- hero photo "develops" in (clip-path wipe + settle) + whisper parallax ----
        The hero photo is the page's signature entrance; the `round` keyword keeps
        the 6px rounded corners during and after the wipe. ---- */
html.reveal-on .hero-media{opacity:1;transform:none;}   /* the frame itself doesn't fade; its photo develops */
html.reveal-on .hero-media .hero-photo{
  clip-path:inset(0 0 100% 0 round var(--r-card));transform:scale(1.05);
  transition:clip-path .95s var(--ease),transform 1.05s var(--ease);
}
html.reveal-on .hero-media.in .hero-photo{clip-path:inset(0 round var(--r-card));transform:scale(1);}
/* sub-20px magazine-spread depth, driven by --heroP (set by one rAF scroll listener) */
html.ambient-on .hero-media{translate:0 calc(var(--heroP,0) * -18px);}
html.ambient-on .hero-mono{translate:0 calc(var(--heroP,0) * 14px);}

/* ---- gold sheen — a lacquer highlight sweeps the gold buttons on hover, and a
        soft "catch the light" glow crosses the wordmark once on entry ---- */
.btn-gold{position:relative;overflow:hidden;}
.btn-gold::before{content:"";position:absolute;top:-10%;left:0;width:55%;height:120%;pointer-events:none;
  background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,.34) 50%,transparent 100%);
  transform:translateX(-180%) skewX(-14deg);transition:transform .8s var(--ease);}
.btn-gold:hover::before{transform:translateX(360%) skewX(-14deg);}
html.reveal-on .hero h1.sheen{animation:goldGlow 1.7s var(--ease) .35s 1;}
@keyframes goldGlow{0%{filter:none}42%{filter:brightness(1.16) drop-shadow(0 1px 1px rgba(255,238,200,.35))}100%{filter:none}}

/* ---- sakura petals caught in a soft draft.
        Uses the independent translate/rotate properties, which COMPOSE on top of
        each petal's existing transform:rotate(...) — so no per-petal edits and
        no base-rotation to capture. ---- */
html.ambient-on .petal{animation:petalSway 11s ease-in-out infinite;}
@keyframes petalSway{0%,100%{translate:0 0;rotate:0deg}50%{translate:1px 5px;rotate:3deg}}
html.ambient-on .petal-h2,html.ambient-on .petal-w1,html.ambient-on .petal-r1,
html.ambient-on .cta-band .petal-c2,html.ambient-on .foot .petal-f1{animation-duration:13s;animation-delay:-4s;}
html.ambient-on .petal-h3,html.ambient-on .petal-w2,html.ambient-on .petal-r2,
html.ambient-on .cta-band .petal-c3{animation-duration:9.5s;animation-delay:-7s;}
html.ambient-on .petal-s1,html.ambient-on .petal-y1,
html.ambient-on .cta-band .petal-c4{animation-duration:12.5s;animation-delay:-2.5s;}

/* ---- google review score: star bar fills + numbers count up on scroll-in ----
        The literal 4.6 / 382 stay in the HTML and the bar's full width is the
        default, so no-JS shows the finished card; only html.reveal-on starts it
        at zero and the dedicated observer (or failsafe) fills it. */
html.reveal-on .gr-stars-fg{width:0;transition:width 1.1s var(--ease);}
html.reveal-on .greview.counted .gr-stars-fg{width:calc(var(--rate,5)/5*100%);}

/* ---- price menu "writes out" when a category opens or scrolls in ----
        Purely additive: default rows show full prices + leaders; .typed just
        plays a one-shot fade-rise / draw that ends in the visible state. */
html.reveal-on .menu-group.typed .mrow > summary .mprice{animation:priceRise .5s var(--ease) both;}
@keyframes priceRise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
html.reveal-on .menu-group.typed .menu-list .mrow:nth-child(2) .mprice{animation-delay:.05s}
html.reveal-on .menu-group.typed .menu-list .mrow:nth-child(3) .mprice{animation-delay:.10s}
html.reveal-on .menu-group.typed .menu-list .mrow:nth-child(4) .mprice{animation-delay:.15s}
html.reveal-on .menu-group.typed .menu-list .mrow:nth-child(5) .mprice{animation-delay:.20s}
html.reveal-on .menu-group.typed .menu-list .mrow:nth-child(n+6) .mprice{animation-delay:.24s}

/* ---- gallery hover: a gentle zoom inside the rounded frame (promote only on hover) ---- */
.gal .g-item:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 24px 44px -30px rgba(140,94,39,.6);will-change:transform;}

/* ---- reduced motion: kill every continuous loop, collapse reveals to instant.
        (Belt-and-suspenders: the inline gate also never adds the classes here.) ---- */
@media (prefers-reduced-motion:reduce){
  .aurora,.cta-band::before{display:none!important;}
  .petal{animation:none!important;translate:none!important;rotate:none!important;}
  .map-card .pin .pulse{animation:none!important;}
  .btn-gold::before{display:none!important;}
  html.reveal-on .reveal{opacity:1!important;transform:none!important;transition:none!important;}
  html.reveal-on .hero-media .hero-photo{clip-path:none!important;transform:none!important;}
  html.ambient-on .hero-media,html.ambient-on .hero-mono{translate:none!important;}
  html.reveal-on .gr-stars-fg{width:calc(var(--rate,5)/5*100%)!important;transition:none!important;}
  .hero h1.sheen{animation:none!important;}
}

/* ---- print: force the full static page (incl. the gold star bar, which would
        otherwise print at width:0 if Reviews was never scrolled into view) ---- */
@media print{
  .aurora,.cta-band::before{display:none!important;}
  .reveal,html.reveal-on .reveal{opacity:1!important;transform:none!important;}
  html.reveal-on .hero-media .hero-photo{clip-path:none!important;transform:none!important;}
  html.reveal-on .gr-stars-fg{width:calc(var(--rate,5)/5*100%)!important;}
}

/* ---- screen-reader-only (authoritative review count, since the animating
        digits are aria-hidden) ---- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
