/* ================================================================
   ANGELIC RELAXATION — stylesheet (Lotusia-style layout, pink)
   1. Tokens  2. Base  3. Buttons  4. Header  5. Hero
   6. Info strip  7. Section helpers  8. About  9. Treatments carousel
   10. Pricing  11. Split CTA  12. Reviews  13. FAQ  14. Location
   15. Footer  16. Floating button  17. Status + reveal
   18. Responsive  19. Reduced motion
   ================================================================ */

/* ============================== 1. TOKENS ====================== */
:root {
  --blush-50:#FFF6FA; --blush-100:#FDF2F8; --blush-200:#FCE7F3;
  --rose-300:#F9A8D4; --rose-400:#F472B6;
  --pink-500:#EC4899; --pink-600:#DB2777; --pink-700:#BE185D; --pink-800:#9D174D;
  --wine:#831843; --wine-deep:#5A0E2E;
  --cream:#FFF9F5; --cream-2:#FDF3EE; --offwhite:#FBEDE6;
  --charcoal:#1A1316; --charcoal-2:#221A1E; --charcoal-3:#2E2228;
  --gold:#B76E79; --gold-mid:#C98A8E; --gold-light:#E6C0BA; --gold-hi:#F3DBD5;
  --ink:#34232B; --muted:#6E5560; --ink-on-dark:#FBEDE6; --muted-on-dark:#D8B7C0;

  --grad-hero: linear-gradient(135deg, #FBD3E4 0%, #F9A8D4 28%, #F472B6 60%, #EC4899 100%);
  --grad-pink: linear-gradient(135deg, var(--pink-500), var(--pink-700));
  --grad-gold: linear-gradient(135deg, var(--gold-hi), var(--gold) 55%, var(--gold-mid));
  --grad-card: linear-gradient(165deg, var(--pink-500) 0%, var(--pink-700) 55%, #3A1622 100%);
  --grad-shimmer: linear-gradient(100deg, var(--pink-700) 0%, var(--pink-500) 25%, var(--gold) 45%, #FBE3D8 52%, var(--gold) 60%, var(--pink-600) 80%, var(--pink-800) 100%);

  --shadow-sm: 0 1px 2px rgba(131,24,67,.06), 0 4px 12px rgba(131,24,67,.06);
  --shadow-md: 0 6px 18px rgba(190,24,93,.10), 0 18px 40px rgba(131,24,67,.10);
  --shadow-lg: 0 10px 30px rgba(190,24,93,.14), 0 30px 70px rgba(131,24,67,.16);
  --shadow-glow: 0 10px 40px rgba(236,72,153,.35);

  --radius-sm:14px; --radius:22px; --radius-lg:32px;
  --ease: cubic-bezier(.22,.61,.36,1);
  --container:1200px;
  --gutter: clamp(20px, 5vw, 48px);
  /* left inset that lines full-width rails (carousel) up with the centered container */
  --edge: max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter)));

  --font-script:'Great Vibes', cursive;
  --font-serif:'Cormorant Garamond', Georgia, serif;
  --font-sans:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

/* ============================== 2. BASE ======================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; font-family:var(--font-sans); font-size:17px; line-height:1.7;
  color:var(--ink); background:var(--cream);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; overflow-x:hidden;
}
img,iframe{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{ margin:0; font-weight:600; line-height:1.15; }
p{ margin:0; }
.container{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:clamp(20px,5vw,48px); }
.center{ text-align:center; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
body{ opacity:0; transition:opacity .8s var(--ease); }
body.loaded{ opacity:1; }
:focus-visible{ outline:3px solid var(--pink-500); outline-offset:3px; border-radius:4px; }
.stars{ color:var(--gold); letter-spacing:2px; line-height:1; }

/* ============================== 3. BUTTONS ===================== */
.icon{ width:1.15em; height:1.15em; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex:none; }
.btn{
  --btn-bg:var(--grad-pink);
  display:inline-flex; align-items:center; justify-content:center; gap:.55em;
  padding:.9em 1.7em; font-family:var(--font-sans); font-size:.98rem; font-weight:600; letter-spacing:.01em;
  color:#fff; background:var(--btn-bg); border:none; border-radius:100px; cursor:pointer;
  box-shadow:var(--shadow-sm);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), filter .3s var(--ease), color .3s var(--ease), background .3s var(--ease);
  will-change:transform;
}
.btn:hover{ transform:translateY(-3px); box-shadow:var(--shadow-glow); filter:brightness(1.04); }
.btn:active{ transform:translateY(-1px); }
.btn-primary{ --btn-bg:var(--grad-pink); }
.btn-gold{ --btn-bg:var(--grad-gold); color:var(--wine-deep); }
.btn-gold:hover{ box-shadow:0 10px 36px rgba(183,110,121,.45); }
.btn-lg{ padding:1.05em 2.1em; font-size:1.05rem; }
.btn-block{ display:flex; width:100%; }
.btn-outline{
  background:transparent; color:var(--pink-700); box-shadow:none;
  border:1.5px solid var(--rose-300);
}
.btn-outline:hover{ background:var(--pink-700); color:#fff; border-color:var(--pink-700); box-shadow:var(--shadow-glow); filter:none; }

/* ============================== 4. HEADER ===================== */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:50;
  background:rgba(26,19,22,.30); backdrop-filter:blur(10px) saturate(140%); -webkit-backdrop-filter:blur(10px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,.06);
  transition:background .4s var(--ease), box-shadow .4s var(--ease);
}
.site-header.scrolled{ background:rgba(20,14,17,.92); box-shadow:0 8px 30px rgba(0,0,0,.28); }
.header-inner{ display:flex; align-items:center; gap:24px; padding-block:16px; transition:padding-block .4s var(--ease); }
.site-header.scrolled .header-inner{ padding-block:11px; }
.brand-logo{ font-family:var(--font-script); font-size:1.9rem; line-height:1; color:var(--gold-hi); margin-right:auto; text-shadow:0 2px 18px rgba(236,72,153,.4); }
.main-nav ul{ display:flex; gap:28px; list-style:none; margin:0; padding:0; }
.main-nav a{ position:relative; font-size:.92rem; font-weight:500; letter-spacing:.03em; color:var(--ink-on-dark); opacity:.88; padding:6px 2px; transition:opacity .25s var(--ease), color .25s var(--ease); }
.main-nav a::after{ content:""; position:absolute; left:0; bottom:0; width:100%; height:1.5px; background:var(--grad-gold); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
.main-nav a:hover{ opacity:1; color:var(--gold-hi); }
.main-nav a:hover::after{ transform:scaleX(1); }
.btn-nav{ padding:.6em 1.2em; font-size:.9rem; }

/* contact dropdown (Book Now -> Call / Text / WhatsApp) */
.contact-menu{ position:relative; }
.contact-trigger .chev{ width:1em; height:1em; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; transition:transform .3s var(--ease); margin-left:-.1em; }
.contact-menu.open .contact-trigger .chev{ transform:rotate(180deg); }
.contact-pop{
  position:absolute; right:0; top:calc(100% + 12px); width:min(262px, calc(100vw - 36px)); z-index:60;
  background:#fff; border:1px solid var(--blush-200); border-radius:20px; padding:8px;
  box-shadow:var(--shadow-lg);
  opacity:0; visibility:hidden; transform:translateY(-10px);
  transition:opacity .28s var(--ease), transform .28s var(--ease);
}
.contact-menu.open .contact-pop{ opacity:1; visibility:visible; transform:translateY(0); }
.contact-opt{ display:flex; align-items:center; gap:14px; padding:11px 12px; border-radius:14px; transition:background .2s var(--ease); }
.contact-opt:hover{ background:var(--blush-100); }
.contact-opt-ic{ flex:none; width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center; }
.contact-opt-ic svg{ width:20px; height:20px; fill:none; stroke:#fff; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.contact-opt-ic svg.ic-fill{ fill:#fff; stroke:none; }
.contact-opt-ic.call{ background:var(--grad-pink); }
.contact-opt-ic.text{ background:var(--gold); }
.contact-opt-ic.wa{ background:#25D366; }
.contact-opt-txt strong{ display:block; color:var(--wine); font-size:.96rem; font-weight:600; line-height:1.2; }
.contact-opt-txt small{ color:var(--muted); font-size:.8rem; }

/* inline contact menus (used on section CTAs) */
.contact-menu--inline{ display:inline-flex; }
.contact-menu--block{ display:block; }
.contact-menu--block .contact-trigger{ width:100%; }
.contact-trigger{ cursor:pointer; }

/* their popups are PORTALED to <body> and shown as a fixed overlay, so no
   section, frosted card, or animation transform can ever cover them. */
.contact-pop--portal{ position:fixed; left:0; top:0; right:auto; z-index:3000; }
.contact-pop--portal.is-open{ opacity:1; visibility:visible; transform:translateY(0); }
.nav-toggle{ display:none; flex:none; flex-direction:column; gap:5px; width:44px; height:44px; padding:10px; background:transparent; border:none; cursor:pointer; }
.nav-toggle span{ display:block; height:2px; width:100%; background:var(--gold-hi); border-radius:2px; transition:transform .3s var(--ease), opacity .3s var(--ease); }
.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); }
.mobile-nav{ display:none; flex-direction:column; background:rgba(20,14,17,.97); backdrop-filter:blur(10px); padding:8px 24px 22px; border-top:1px solid rgba(255,255,255,.06); }
.mobile-nav a{ color:var(--ink-on-dark); padding:14px 4px; font-size:1.05rem; border-bottom:1px solid rgba(255,255,255,.07); }
.mobile-nav a:last-child{ border-bottom:none; }
.mobile-nav-call{ color:var(--gold-hi)!important; font-weight:600; }
.mobile-nav.open{ display:flex; animation:dropIn .35s var(--ease); }
@keyframes dropIn{ from{opacity:0; transform:translateY(-8px);} to{opacity:1; transform:translateY(0);} }

/* ============================== 5. HERO ======================= */
.hero{ position:relative; min-height:100svh; display:flex; overflow:hidden; isolation:isolate; }
.hero-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.hero-overlay{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(180deg, rgba(26,19,22,.45) 0%, rgba(90,14,46,.30) 38%, rgba(26,19,22,.85) 100%),
    linear-gradient(90deg, rgba(157,23,77,.45) 0%, rgba(157,23,77,.05) 60%);
}
.hero-inner{ display:flex; flex-direction:column; justify-content:space-between; gap:24px; padding-top:130px; padding-bottom:64px; width:100%; }
.hero-top{ display:inline-flex; align-items:center; gap:12px; }
.hero-top .stars{ font-size:1.15rem; color:var(--gold-hi); }
.hero-rating-text{ color:#fff; font-size:.9rem; font-weight:500; letter-spacing:.04em; opacity:.95; }
.hero-mid{ max-width:880px; }
.hero-eyebrow{ font-size:.8rem; font-weight:600; letter-spacing:.42em; text-transform:uppercase; color:#fff; opacity:.92; margin-bottom:.4rem; }
.hero-name{ font-family:var(--font-script); font-weight:400; font-size:clamp(3.4rem,11vw,8rem); line-height:.9; margin:0 0 .15em; filter:drop-shadow(0 6px 30px rgba(90,14,46,.5)); }
.hero-name .shimmer{ background:var(--grad-shimmer); background-size:220% auto; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent; animation:shimmer 7s linear infinite; }
@keyframes shimmer{ to{ background-position:220% center; } }
.hero-tagline{ font-family:var(--font-serif); font-style:italic; font-weight:400; font-size:clamp(1.2rem,2.8vw,1.8rem); color:#fff; max-width:600px; text-shadow:0 2px 16px rgba(90,14,46,.5); }
.hero-bottom{ }
.hero-contact{
  display:flex; flex-wrap:wrap; align-items:center; gap:18px 28px;
  background:rgba(26,19,22,.34); border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  border-radius:var(--radius); padding:18px 26px;
}
.hero-contact-item{ display:flex; flex-direction:column; gap:2px; }
.hci-label{ font-size:.68rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--gold-hi); }
.hci-value{ color:#fff; font-weight:500; font-size:1rem; }
a.hero-contact-item:hover .hci-value{ color:var(--gold-hi); }
.hero-divider{ width:1px; align-self:stretch; background:rgba(255,255,255,.2); }
.hero-status{ margin-left:auto; color:#fff; font-weight:600; font-size:.92rem; }
.scroll-cue{ position:absolute; bottom:22px; left:50%; transform:translateX(-50%); z-index:1; }
.scroll-cue-mouse{ width:24px; height:38px; border:2px solid rgba(255,255,255,.7); border-radius:14px; display:flex; justify-content:center; padding-top:7px; }
.scroll-cue-mouse span{ width:4px; height:7px; background:#fff; border-radius:4px; animation:scrollDot 1.8s var(--ease) infinite; }
@keyframes scrollDot{ 0%{opacity:0; transform:translateY(-3px);} 35%{opacity:1;} 70%{opacity:0; transform:translateY(8px);} 100%{opacity:0;} }

/* ============================== 6. INFO STRIP ================= */
.info-strip{ background:var(--charcoal); color:var(--ink-on-dark); }
.info-strip-inner{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px 28px; padding-block:16px; }
.info-item{ display:inline-flex; align-items:center; gap:.6em; font-size:.92rem; font-weight:500; color:var(--ink-on-dark); }
.info-item .icon{ color:var(--gold-light); width:1.05em; height:1.05em; }
a.info-item:hover{ color:var(--gold-hi); }

/* ============================== 7. SECTION HELPERS =========== */
.section{ padding:clamp(64px,9vw,120px) 0; position:relative; }
.eyebrow{ font-size:.78rem; font-weight:700; letter-spacing:.32em; text-transform:uppercase; color:var(--pink-600); margin-bottom:.85rem; }
.eyebrow.light{ color:var(--rose-300); }
.section-title{ font-family:var(--font-serif); font-weight:600; font-size:clamp(2rem,4.6vw,3.3rem); color:var(--wine); letter-spacing:-.01em; }
.section-title.on-dark{ color:var(--cream); }
.section-sub{ font-size:1.06rem; color:var(--muted); margin-top:.9rem; max-width:620px; }
.center .section-sub{ margin-inline:auto; }
.section-sub.on-dark{ color:var(--muted-on-dark); }
.lede{ font-size:1.12rem; color:var(--ink); margin-top:1.1rem; }

/* ============================== 8. ABOUT ===================== */
.about{ background:radial-gradient(120% 90% at 100% 0%, var(--blush-100), transparent 55%), var(--cream); }
.about-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px,6vw,80px); align-items:center; }
.about-media{ position:relative; padding-bottom:14%; }
.about-img{ margin:0; border-radius:16px; overflow:hidden; border:6px solid #fff; box-shadow:var(--shadow-lg); }
.about-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.about-img--main{ width:84%; aspect-ratio:1/1; }            /* big square */
.about-img--sub{ position:absolute; right:0; bottom:0; width:54%; aspect-ratio:1/1; }  /* smaller square, overlapping */
.check-list{ list-style:none; margin:1.6rem 0 2rem; padding:0; display:grid; gap:14px; }
.check-list li{ display:flex; align-items:flex-start; gap:12px; color:var(--ink); font-weight:500; }
.check{ flex:none; width:24px; height:24px; padding:4px; border-radius:50%; background:var(--blush-200); fill:none; stroke:var(--pink-600); stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }

/* ============================== 9. TREATMENTS CAROUSEL ======= */
.treatments{ background:var(--cream); }
.treatments-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:40px; }
.carousel-controls{ display:flex; gap:12px; flex:none; }
.carousel-btn{ width:50px; height:50px; border-radius:50%; border:1.5px solid var(--rose-300); background:#fff; color:var(--pink-700); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease), box-shadow .3s var(--ease); }
.carousel-btn svg{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.carousel-btn:hover{ background:var(--grad-pink); color:#fff; border-color:transparent; box-shadow:var(--shadow-glow); }
.carousel-btn:disabled{ opacity:.35; cursor:default; box-shadow:none; background:#fff; color:var(--pink-700); }
.carousel-track{
  display:flex; gap:24px; overflow-x:auto; scroll-snap-type:x mandatory;
  padding:8px var(--gutter) 28px var(--edge); scroll-padding-left:var(--edge);
  -ms-overflow-style:none; scrollbar-width:none;
}
.carousel-track::-webkit-scrollbar{ display:none; }
.t-card{
  position:relative; flex:0 0 330px; scroll-snap-align:start;
  min-height:430px; display:flex; flex-direction:column; justify-content:space-between;
  padding:30px; border-radius:var(--radius-lg); overflow:hidden; color:#fff;
  background:var(--grad-card); box-shadow:var(--shadow-md);
  transition:transform .4s var(--ease), box-shadow .4s var(--ease);
}
/* background photo + legibility gradient */
.t-card-bg{ position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.t-card:hover .t-card-bg{ transform:scale(1.06); }
.t-card::after{ content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(26,19,22,.20) 0%, rgba(157,23,77,.40) 42%, rgba(26,19,22,.86) 100%); }
.t-card:hover{ transform:translateY(-8px); box-shadow:var(--shadow-lg); }
.t-card--featured::after{ background:linear-gradient(180deg, rgba(190,24,93,.25) 0%, rgba(157,23,77,.50) 42%, rgba(46,16,24,.88) 100%); }
.t-card[data-badge]::before{
  content:attr(data-badge); position:absolute; top:22px; right:22px; z-index:2;
  font-size:.66rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:var(--wine-deep); background:var(--gold-hi); padding:.4em .85em; border-radius:100px;
}
.t-card-icon{ position:relative; z-index:2; display:inline-flex; align-items:center; justify-content:center; width:64px; height:64px; border-radius:18px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.25); backdrop-filter:blur(4px); }
.t-card-icon svg{ width:34px; height:34px; fill:none; stroke:#fff; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.t-card-body{ position:relative; z-index:2; }
.t-card-body h3{ font-family:var(--font-serif); font-size:1.7rem; font-weight:600; margin-bottom:.5rem; }
.t-card-body p{ color:rgba(255,255,255,.88); font-size:.98rem; }

/* ============================== 10. PRICING ================== */
.pricing{ background:
  radial-gradient(90% 70% at 80% 0%, rgba(190,24,93,.30), transparent 55%),
  radial-gradient(80% 70% at 10% 100%, rgba(236,72,153,.22), transparent 55%),
  var(--charcoal); }
.pricing-grid{ display:grid; gap:30px; margin-top:52px; grid-template-columns:1.15fr .85fr; align-items:start; }
.price-card{ background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03)); border:1px solid rgba(255,255,255,.12); border-radius:var(--radius-lg); padding:40px; backdrop-filter:blur(6px); box-shadow:var(--shadow-md); }
.price-card--accent{ border-color:rgba(230,192,186,.4); background:linear-gradient(180deg, rgba(183,110,121,.18), rgba(255,255,255,.03)); }
.price-card-head{ margin-bottom:22px; }
.price-card-head h3{ font-family:var(--font-serif); font-size:1.95rem; font-weight:600; color:var(--cream); }
.price-card-head p{ color:var(--muted-on-dark); font-size:.95rem; margin-top:.35rem; }
.price-table{ width:100%; border-collapse:collapse; margin-bottom:28px; }
.price-table th,.price-table td{ text-align:left; padding:16px 4px; border-bottom:1px solid rgba(255,255,255,.10); font-size:1.05rem; }
.price-table th{ font-weight:500; color:var(--ink-on-dark); }
.price-table td{ text-align:right; font-weight:700; color:var(--gold-hi); font-size:1.15rem; }
.price-table tr:last-child th,.price-table tr:last-child td{ border-bottom:none; }
.price-table tr.is-featured th,.price-table tr.is-featured td{ color:#fff; }
.price-table tr.is-featured{ background:linear-gradient(90deg, rgba(236,72,153,.18), rgba(236,72,153,.04)); }
.row-badge{ display:inline-block; margin-left:10px; font-size:.62rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#fff; background:var(--grad-pink); padding:.3em .7em; border-radius:100px; vertical-align:middle; }
.row-badge--value{ background:var(--grad-gold); color:var(--wine-deep); }
.price-table tr.is-value{ background:linear-gradient(90deg, rgba(183,110,121,.22), rgba(183,110,121,.04)); }
.price-table tr.is-value th,.price-table tr.is-value td{ color:#fff; }

/* ============================== 11. SPLIT CTA =============== */
.split-cta{ display:grid; grid-template-columns:1fr 1fr; min-height:520px; }
.split-cta-media img{ width:100%; height:100%; object-fit:cover; }
.split-cta-panel{ display:flex; align-items:center; padding:clamp(40px,6vw,80px); background:
  radial-gradient(100% 100% at 0% 0%, rgba(190,24,93,.45), transparent 60%), var(--charcoal); }
.split-cta-inner{ max-width:460px; }
.split-cta-inner .section-title{ margin-top:.2rem; }
.split-cta-inner .btn{ margin-top:1.8rem; }

/* ============================== 12. REVIEWS ================= */
.reviews{ background:var(--cream-2); }
.reviews-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:44px; flex-wrap:wrap; }
.rating-summary{ display:inline-flex; align-items:center; gap:12px; }
.rating-summary .stars{ font-size:1.3rem; }
.rating-text{ color:var(--muted); font-weight:600; font-size:.95rem; }
.reviews-grid{ display:grid; gap:26px; grid-template-columns:repeat(2,1fr); }
.review-card{ background:#fff; border:1px solid var(--blush-200); border-radius:var(--radius); padding:34px 30px; box-shadow:var(--shadow-sm); transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
.review-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-md); }
.review-card .stars{ font-size:1.1rem; display:block; margin-bottom:16px; }
.review-card blockquote{ margin:0 0 18px; font-family:var(--font-serif); font-size:1.3rem; line-height:1.5; font-style:italic; color:var(--ink); }
.review-card figcaption{ font-weight:600; color:var(--pink-700); font-size:.95rem; }
.review-card .rev-meta{ display:block; font-weight:500; color:var(--muted); font-size:.78rem; margin-top:2px; }

/* ============================== 13. FAQ ===================== */
.faq{ background:radial-gradient(110% 80% at 0% 0%, var(--blush-100), transparent 55%), var(--cream); }
.faq-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(36px,6vw,72px); align-items:start; }
.faq-intro .section-sub a{ color:var(--pink-700); font-weight:600; }
.faq-list{ display:grid; gap:14px; }
.faq-item{ background:#fff; border:1px solid var(--blush-200); border-radius:var(--radius); box-shadow:var(--shadow-sm); overflow:hidden; }
.faq-q{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:16px; text-align:left; cursor:pointer; background:none; border:none; padding:22px 26px; font-family:var(--font-serif); font-size:1.3rem; font-weight:600; color:var(--wine); }
.faq-icon{ position:relative; flex:none; width:22px; height:22px; }
.faq-icon::before,.faq-icon::after{ content:""; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background:var(--pink-600); border-radius:2px; transition:transform .3s var(--ease); }
.faq-icon::before{ width:14px; height:2px; }
.faq-icon::after{ width:2px; height:14px; }
.faq-item.open .faq-icon::after{ transform:translate(-50%,-50%) scaleY(0); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .4s var(--ease); }
.faq-a p{ padding:0 26px 22px; color:var(--muted); }
.faq-item.open .faq-a{ max-height:240px; }

/* ============================== 14. LOCATION =============== */
.location{ background:radial-gradient(100% 80% at 100% 0%, var(--blush-100), transparent 55%), var(--cream); }
.location-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px,5vw,56px); align-items:center; }
.location-highlight{ display:inline-flex; align-items:center; gap:.55em; margin:1.4rem 0 1.8rem; font-size:1.05rem; color:var(--pink-700); font-weight:600; background:var(--blush-200); padding:.7em 1.15em; border-radius:100px; }
.location-highlight .icon{ color:var(--pink-600); }
.location-list{ list-style:none; margin:0 0 2rem; padding:0; }
.location-list li{ display:grid; grid-template-columns:120px 1fr; gap:16px; padding:16px 0; border-bottom:1px solid var(--blush-200); }
.li-label{ font-size:.76rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--pink-600); padding-top:3px; }
.li-value{ color:var(--ink); }
.li-value a{ color:var(--pink-700); font-weight:600; }
.li-value a:hover{ text-decoration:underline; }
.li-value em{ color:var(--muted); font-style:italic; font-size:.92em; }
.location-media{ display:flex; flex-direction:column; gap:22px; }
.location-shopfront{ margin:0; border-radius:var(--radius-lg); overflow:hidden; border:6px solid #fff; box-shadow:var(--shadow-lg); }
.location-shopfront img{ width:100%; height:250px; object-fit:cover; }
.location-map{ position:relative; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-lg); border:6px solid #fff; }
.location-map iframe{ width:100%; height:330px; display:block; border:0; }
.map-facade{ width:100%; height:330px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; padding:24px; cursor:pointer; border:none; text-align:center; background:radial-gradient(120% 90% at 50% 18%, var(--blush-200), transparent 60%), linear-gradient(180deg, var(--blush-100), var(--cream)); transition:filter .3s var(--ease); }
.map-facade:hover{ filter:brightness(1.03); }
.map-facade-pin{ width:60px; height:60px; display:flex; align-items:center; justify-content:center; border-radius:50%; background:#fff; box-shadow:var(--shadow-md); }
.map-facade-pin svg{ width:30px; height:30px; fill:none; stroke:var(--pink-600); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.map-facade-text strong{ display:block; font-family:var(--font-serif); font-size:1.35rem; font-weight:600; color:var(--wine); }
.map-facade-text span{ font-size:.92rem; color:var(--muted); }
.map-open-link{ position:absolute; right:14px; bottom:14px; font-size:.82rem; font-weight:600; color:var(--pink-700); background:rgba(255,255,255,.92); padding:.45em .9em; border-radius:100px; box-shadow:var(--shadow-sm); }
.map-open-link:hover{ background:#fff; }

/* ============================== 15. FOOTER ================= */
.site-footer{ background:var(--charcoal); color:var(--ink-on-dark); }
.footer-cta{ position:relative; isolation:isolate; overflow:hidden; }
.footer-cta-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.footer-cta-overlay{ position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg, rgba(26,19,22,.78), rgba(157,23,77,.66)); }
.footer-cta-inner{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:26px; padding-block:clamp(60px,9vw,110px); }
.footer-cta-inner h2{ font-family:var(--font-serif); font-weight:600; font-size:clamp(2rem,4.6vw,3.2rem); color:#fff; }
.footer-inner{ display:grid; gap:36px; grid-template-columns:1.6fr 1fr 1fr 1.2fr; padding-block:64px 40px; }
.footer-logo{ font-family:var(--font-script); font-size:2.2rem; color:var(--gold-hi); line-height:1; }
.footer-tag{ color:var(--muted-on-dark); margin-top:.6rem; max-width:280px; }
.footer-col h4{ font-size:.8rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-light); margin-bottom:1rem; }
.footer-col a, .footer-col p{ display:block; color:var(--muted-on-dark); margin-bottom:.55rem; font-size:.96rem; }
.footer-col a:hover{ color:var(--gold-hi); }
.footer-col p a{ display:inline; color:var(--gold-hi); }
.footer-bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; padding-block:26px; border-top:1px solid rgba(255,255,255,.10); font-size:.85rem; color:var(--muted-on-dark); }

/* ============================== 16. FLOATING BOOK ========== */
.floating-contact{ position:fixed; right:18px; bottom:18px; z-index:45; display:none; flex-direction:column; align-items:flex-end; gap:12px; }
.floating-book{ display:inline-flex; align-items:center; gap:.5em; padding:.9em 1.4em; font-family:var(--font-sans); font-size:1rem; font-weight:700; color:#fff; background:var(--grad-pink); border:none; border-radius:100px; cursor:pointer; box-shadow:var(--shadow-glow); animation:pulseGlow 2.8s ease-in-out infinite; }
.floating-book .icon{ width:1.2em; height:1.2em; }
@keyframes pulseGlow{ 0%,100%{ box-shadow:0 8px 30px rgba(236,72,153,.4);} 50%{ box-shadow:0 8px 44px rgba(236,72,153,.7);} }
.floating-options{ display:flex; flex-direction:column; align-items:flex-end; gap:10px; opacity:0; visibility:hidden; transform:translateY(12px) scale(.92); transform-origin:bottom right; transition:opacity .28s var(--ease), transform .28s var(--ease); }
.floating-contact.open .floating-options{ opacity:1; visibility:visible; transform:none; }
.fab-opt{ width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; box-shadow:var(--shadow-md); }
.fab-opt .icon{ width:24px; height:24px; }
.fab-opt svg.ic-fill{ width:26px; height:26px; fill:#fff; stroke:none; }
.fab-opt.call{ background:var(--grad-pink); }
.fab-opt.text{ background:var(--gold); }
.fab-opt.wa{ background:#25D366; }

/* ============================== 17. STATUS + REVEAL ======== */
.open-status{ display:inline-flex; align-items:center; gap:.5em; white-space:nowrap; }
.status-dot{ width:9px; height:9px; flex:none; border-radius:50%; background:var(--gold-mid); }
.open-status.is-open .status-dot{ background:#2BD49B; animation:statusPulse 2.2s ease-out infinite; }
.open-status.is-closed .status-dot{ background:var(--gold-mid); }
@keyframes statusPulse{ 0%{box-shadow:0 0 0 0 rgba(43,212,155,.55);} 70%{box-shadow:0 0 0 7px rgba(43,212,155,0);} 100%{box-shadow:0 0 0 0 rgba(43,212,155,0);} }
.open-status--badge{ margin-top:12px; padding:.5em 1.05em; border-radius:100px; background:#fff; border:1px solid var(--blush-200); box-shadow:var(--shadow-sm); font-size:.9rem; font-weight:600; color:var(--ink); }

.reveal{ opacity:0; transform:translateY(30px); transition:opacity .8s var(--ease), transform .8s var(--ease); transition-delay:calc(var(--d,0) * 90ms); }
.reveal.is-visible{ opacity:1; transform:translateY(0); }

/* ============================== 18. RESPONSIVE ============= */
@media (max-width:980px){
  .about-grid{ grid-template-columns:1fr; }
  .about-media{ max-width:520px; margin-inline:auto; min-height:440px; }
  .faq-grid{ grid-template-columns:1fr; }
  .reviews-grid{ grid-template-columns:1fr; max-width:620px; margin-inline:auto; }
  .pricing-grid{ grid-template-columns:1fr; max-width:560px; margin-inline:auto; }
  .split-cta{ grid-template-columns:1fr; }
  .split-cta-media{ min-height:320px; }
  .location-grid{ grid-template-columns:1fr; }
  .footer-inner{ grid-template-columns:1fr 1fr; }
}
@media (max-width:760px){
  .main-nav,.contact-menu{ display:none; }
  .nav-toggle{ display:flex; }
  .brand-logo{ font-size:1.7rem; }
  .floating-contact{ display:flex; }
  body{ font-size:16px; }
  .hero-contact{ flex-direction:column; align-items:flex-start; gap:14px; }
  .hero-divider{ display:none; }
  .hero-status{ margin-left:0; }
  .treatments-head{ flex-direction:column; align-items:flex-start; }
  .reviews-head{ flex-direction:column; align-items:flex-start; }
  .footer-inner{ grid-template-columns:1fr; gap:28px; }
  .location-list li{ grid-template-columns:1fr; gap:4px; }
}
@media (max-width:420px){
  .price-card{ padding:28px 22px; }
  .t-card{ flex-basis:280px; }
}

/* ============================== 19. REDUCED MOTION ========= */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; }
  .reveal{ opacity:1; transform:none; }
  .hero-name .shimmer{ animation:none; }
  .carousel-track{ scroll-behavior:auto; }
}
