/* Bodacious Beauty Barr — "Luminous" v2 · Adam Gurski Creative
   Dark drama + light sanctuary. Palette + glow from the client inspiration hero. */

:root{
  /* dark */
  --wine-deep:#26060f; --wine:#4a1226; --wine-rim:#c33a56;
  --plum-deep:#2a0a16; --plum:#3a2258; --plum2:#5b3a86;
  /* light */
  --lav:#9a7dc0; --lav-soft:#c7b0e6; --lav-pale:#efe7f8; --cream:#fbf7fb;
  /* rose-gold */
  --rose:#e6a897; --rose2:#d1917d; --rose-hi:#f5cdc0;
  /* ink */
  --ink:#2b2438; --ink-2:#5c5175; --charcoal:#33303a; --near:#f6eef7;
  --plum-ink:#472a80;
  /* type */
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Inter',system-ui,-apple-system,sans-serif;
  /* rhythm */
  --sp:clamp(64px,9vw,124px);
  --wrap:1080px;
  --ease:cubic-bezier(.16,1,.3,1);
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--sans);color:var(--ink);background:var(--cream);line-height:1.6;font-size:17px;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
img{max-width:100%;display:block;}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.08;letter-spacing:-.02em;}
a{color:inherit;}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(20px,5vw,48px);position:relative;z-index:3;}
.eyebrow{font-size:12px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;font-size:15px;text-decoration:none;white-space:nowrap;
  padding:14px 30px;border-radius:999px;transition:transform .25s var(--ease),box-shadow .25s,filter .25s;}
.btn-glow{color:#fff;background:linear-gradient(100deg,var(--wine-rim),var(--plum2));
  box-shadow:0 12px 34px rgba(160,40,80,.42),inset 0 0 0 1px rgba(255,255,255,.10);}
.btn-glow:hover{transform:translateY(-2px);filter:brightness(1.08);box-shadow:0 16px 44px rgba(160,40,80,.55),inset 0 0 0 1px rgba(255,255,255,.16);}
.btn-solid{color:#fff;background:var(--wine-rim);box-shadow:0 8px 24px rgba(195,58,86,.32);}
.btn-solid:hover{transform:translateY(-2px);background:#a82a44;}
.learn-link{color:var(--rose-hi);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(245,205,192,.42);padding-bottom:2px;transition:color .2s,border-color .2s;}
.learn-link:hover{color:#fff;border-color:#fff;}
.cred a{color:var(--wine-rim);text-decoration:none;border-bottom:1px dotted var(--rose2);}
.cred a:hover{color:var(--plum-ink);}

/* ---------- nav (dark glass, always legible) ---------- */
header.nav{position:sticky;top:0;z-index:50;background:rgba(30,10,22,.66);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(245,205,192,.14);}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:72px;}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;}
.brand img{height:50px;width:auto;filter:drop-shadow(0 3px 12px rgba(230,168,151,.28));}
.brand .bt{display:flex;flex-direction:column;line-height:1.1;}
.brand .bt b{font-family:var(--serif);font-size:18px;color:var(--rose-hi);font-weight:500;letter-spacing:.02em;}
.brand .bt span{font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.55);}
.nav-links{display:flex;gap:24px;align-items:center;}
.nav-links a{text-decoration:none;font-size:14px;font-weight:500;color:rgba(240,232,248,.82);transition:color .2s;}
.nav-links a:hover{color:var(--rose-hi);}
@media(max-width:900px){.nav-links a:not(.btn){display:none;} .brand .bt span{display:none;}}
/* keep the nav "Book now" a tidy one-line pill on phones (no wrap, don't get squeezed) */
@media(max-width:520px){.nav-links{flex-shrink:0;} .nav .btn-solid{padding:11px 22px;font-size:14px;} .brand{min-width:0;} .brand .bt b{font-size:16px;}}

/* ---------- section base ---------- */
section{padding:var(--sp) 0;position:relative;overflow:hidden;}
.dark{color:var(--near);}
.dark::before{content:"";position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;}
.dark::after{content:"";position:absolute;inset:0;z-index:1;}
.light{background:var(--cream);color:var(--ink);}
.light.botanical::before{content:"";position:absolute;inset:0;z-index:0;
  background:url("bg/bg-light.webp") center/cover;opacity:.5;}

/* dark backgrounds + contrast scrims */
.bg-hero::before{background-image:url("bg/bg-hero.webp");}
.bg-hero::after{background:linear-gradient(92deg,rgba(20,6,14,.28) 0%,rgba(24,8,18,.42) 46%,rgba(30,12,26,.66) 100%);}
.bg-aurora::before{background-image:url("bg/bg-dark-a.webp");}
.bg-aurora::after{background:linear-gradient(180deg,rgba(22,7,16,.34),rgba(30,12,26,.48));}
.bg-alt::before{background-image:url("bg/bg-dark-b.webp");}
.bg-alt::after{background:linear-gradient(180deg,rgba(20,6,14,.32),rgba(28,10,24,.48));}

/* section headings */
.sec-eyebrow{text-align:center;}
.sec-title{text-align:center;font-size:clamp(28px,4.2vw,46px);max-width:20ch;margin:10px auto 14px;}
.sec-intro{text-align:center;max-width:60ch;margin:0 auto;font-size:17px;}
.light .sec-eyebrow{color:var(--plum2);}
.light .sec-title{color:var(--plum-ink);}
.light .sec-intro{color:var(--ink-2);}
.dark .sec-eyebrow{color:var(--rose);}
.dark .sec-title{color:var(--near);}
.dark .sec-intro{color:rgba(240,232,248,.82);}

/* section dividers — a rose-gold botanical flourish between tapered hairlines (masked silhouette, tints on any bed) */
:root{--div-tint:var(--rose2);}
.dark{--div-tint:var(--rose-hi);}
#story .wrap::before,#services .wrap::before,#why .wrap::before,#results .wrap::before,#insurance .wrap::before,#trust .wrap::before,#contact .wrap::before{
  content:"";display:block;height:26px;background:var(--div-tint);
  width:100vw;margin-left:calc(50% - 50vw);margin-top:calc(4px - var(--sp));margin-bottom:calc(var(--sp) - 30px);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 26'%3E%3Cg fill='%23fff'%3E%3Cpath d='M22 7L26 13L22 19L18 13Z'/%3E%3Cpath d='M18 13C13 13 9 10 4 11C7.5 15.5 14 15 18 13Z'/%3E%3Cpath d='M26 13C31 13 35 10 40 11C36.5 15.5 30 15 26 13Z'/%3E%3C/g%3E%3C/svg%3E") center/auto 26px no-repeat,linear-gradient(90deg,transparent 3%,#fff 15%,#fff 44%,transparent 47.5%,transparent 52.5%,#fff 56%,#fff 85%,transparent 97%) center/100% 1.6px no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 26'%3E%3Cg fill='%23fff'%3E%3Cpath d='M22 7L26 13L22 19L18 13Z'/%3E%3Cpath d='M18 13C13 13 9 10 4 11C7.5 15.5 14 15 18 13Z'/%3E%3Cpath d='M26 13C31 13 35 10 40 11C36.5 15.5 30 15 26 13Z'/%3E%3C/g%3E%3C/svg%3E") center/auto 26px no-repeat,linear-gradient(90deg,transparent 3%,#fff 15%,#fff 44%,transparent 47.5%,transparent 52.5%,#fff 56%,#fff 85%,transparent 97%) center/100% 1.6px no-repeat;
}

/* ---------- hero ---------- */
.hero .wrap{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(24px,4vw,56px);align-items:center;
  padding-top:clamp(40px,7vw,84px);padding-bottom:clamp(48px,7vw,90px);}
.hero-logo{width:min(460px,94%);height:auto;margin:0 auto;
  filter:drop-shadow(0 8px 34px rgba(230,168,151,.34));}
.hero-eyebrow{color:var(--lav-soft);}
.hero h1{font-size:clamp(34px,5.2vw,66px);color:var(--near);margin-top:14px;max-width:15ch;}
.hero h1 .loved{font-style:italic;color:var(--rose-hi);}
.heartrule{display:flex;align-items:center;gap:12px;margin:20px 0 18px;max-width:400px;}
.heartrule::before,.heartrule::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,rgba(245,205,192,.55),transparent);}
.heartrule span{color:var(--rose);font-size:14px;}
.hero .lede{font-size:clamp(16px,1.9vw,20px);color:rgba(240,232,248,.88);max-width:46ch;}
.hero-cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:26px;align-items:center;}
.hero-cta .call{font-weight:600;color:var(--rose-hi);text-decoration:none;font-size:15px;}
.hero-cta .call:hover{color:#fff;}
.trust-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px;}
.trust-row .chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#f2ecfa;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);padding:8px 15px;border-radius:999px;backdrop-filter:blur(6px);}
.trust-row .chip i{width:6px;height:6px;border-radius:50%;background:var(--rose);flex:none;}
@media(max-width:780px){.hero .wrap{grid-template-columns:1fr;text-align:center;}
  .hero h1{margin-left:auto;margin-right:auto;} .heartrule,.hero .lede{margin-left:auto;margin-right:auto;}
  .hero-cta,.trust-row{justify-content:center;}}

/* ---------- story (dark quote) ---------- */
.story .wrap{max-width:760px;text-align:center;}
.story blockquote{font-family:var(--serif);font-style:italic;font-size:clamp(24px,3.6vw,40px);line-height:1.24;color:var(--near);}
.story p{margin-top:20px;color:rgba(240,232,248,.82);font-size:17px;}
.story .sig{margin-top:22px;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--rose-hi);}

/* ---------- services (light) ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:50px;}
.svc{background:#fff;border:1px solid #ece0f5;border-radius:16px;padding:26px;transition:transform .25s var(--ease),box-shadow .25s,border-color .25s;}
.svc:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(122,79,191,.14);border-color:var(--lav-soft);}
.svc .ic{width:56px;height:56px;border-radius:15px;overflow:hidden;margin-bottom:14px;box-shadow:0 4px 14px rgba(122,79,191,.1);}
.svc .ic img{width:100%;height:100%;display:block;object-fit:cover;}
.svc h3{font-size:20px;color:var(--plum-ink);font-weight:500;}
.svc p{margin-top:8px;font-size:14.5px;color:var(--ink-2);}
.svc.soon{background:linear-gradient(180deg,#faf3fc,#f5ecfa);border-style:dashed;}
.svc.soon .tag{display:inline-block;margin-top:12px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--wine-rim);font-weight:600;}
@media(max-width:820px){.svc-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:540px){.svc-grid{grid-template-columns:1fr;}}

/* conditions accent card (dark, inside light services) */
.conditions{margin-top:48px;border-radius:22px;padding:clamp(28px,4vw,44px);color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(120deg,var(--plum-deep),var(--plum));}
.conditions h3{color:#fff;font-size:24px;font-weight:500;}
.conditions p{color:var(--lav-soft);margin-top:6px;font-size:15px;}
.cond-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;}
.cond-list span{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);padding:8px 16px;border-radius:999px;font-size:14px;}

/* ---------- why (dark point cards) ---------- */
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:52px;}
.why-card{background:rgba(255,255,255,.06);border:1px solid rgba(245,205,192,.16);border-radius:18px;padding:30px;backdrop-filter:blur(4px);transition:transform .25s var(--ease),background .25s;}
.why-card:hover{transform:translateY(-4px);background:rgba(255,255,255,.1);}
.why-card .n{font-family:var(--serif);font-style:italic;font-size:34px;color:var(--rose-hi);}
.why-card h3{font-size:21px;color:var(--near);margin-top:8px;font-weight:500;}
.why-card p{font-size:15px;color:rgba(240,232,248,.8);margin-top:10px;}
@media(max-width:820px){.why-grid{grid-template-columns:1fr;}}

/* ---------- gallery (light) ---------- */
.gallery-guard{position:relative;margin-top:48px;border-radius:20px;overflow:hidden;}
.gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.gal{border-radius:15px;overflow:hidden;position:relative;background:var(--lav-pale);aspect-ratio:4/3;box-shadow:0 12px 34px rgba(71,42,128,.12);}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease);}
.gal:hover img{transform:scale(1.04);}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 12px;color:#fff;font-size:13px;font-weight:600;
  background:linear-gradient(transparent,rgba(42,10,22,.8));}
.ba-badge{display:inline-block;background:var(--wine-rim);color:#fff;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  font-weight:700;padding:3px 9px;border-radius:999px;margin-bottom:7px;}
@media(max-width:820px){.gal-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.gal-grid{grid-template-columns:1fr;}}
/* consent wall — gentle gate over sensitive medical before/afters */
.gallery-guard .gal-grid{transition:filter .6s var(--ease),transform .6s var(--ease);}
.gallery-guard:not(.revealed) .gal-grid{filter:blur(22px) saturate(1.04);transform:scale(1.04);pointer-events:none;user-select:none;}
.reveal-wall{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(130% 130% at 50% 38%, rgba(250,246,251,.66), rgba(233,221,246,.9));
  transition:opacity .55s var(--ease),visibility .55s;}
.gallery-guard.revealed .reveal-wall{opacity:0;visibility:hidden;pointer-events:none;}
/* pre-reveal: the consent card drives the guard height; the blurred grid sits behind it as a
   contained teaser. Without this, the guard is as tall as the full grid (~9 stacked tiles on
   mobile) and the centered card floats in a huge blank blurred band. */
.gallery-guard:not(.revealed) .reveal-wall{position:relative;}
.gallery-guard:not(.revealed) .gal-grid{position:absolute;inset:0;z-index:0;}
.rw-card{max-width:440px;text-align:center;background:rgba(255,255,255,.92);border:1px solid var(--lav-soft);border-radius:22px;
  padding:36px 30px;box-shadow:0 26px 64px rgba(71,42,128,.2);}
.rw-icon{width:54px;height:54px;margin:0 auto 15px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:24px;color:#fff;background:linear-gradient(135deg,var(--wine-rim),var(--plum2));box-shadow:0 8px 24px rgba(160,40,80,.34);}
.rw-card h3{font-family:var(--serif);font-size:25px;color:var(--plum-ink);font-weight:500;}
.rw-card p{color:var(--ink-2);font-size:15px;margin:10px 0 24px;line-height:1.55;}
.rw-fine{display:block;margin-top:16px;font-size:12px;color:var(--ink-2);font-style:italic;opacity:.85;}
@media (prefers-reduced-motion:reduce){.gallery-guard .gal-grid,.reveal-wall{transition:none;}}

/* lightbox — click a tile to see the full uncropped image */
.gallery-guard.revealed .gal img{cursor:zoom-in;}
.lightbox{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:clamp(16px,4vw,40px);
  background:rgba(20,6,14,.94);backdrop-filter:blur(6px);}
.lightbox.open{display:flex;animation:lbFade .25s var(--ease);}
@keyframes lbFade{from{opacity:0}to{opacity:1}}
.lb-img{max-width:95vw;max-height:90vh;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 30px 90px rgba(0,0,0,.6);}
.lb-close{position:absolute;top:clamp(14px,3vw,22px);right:clamp(14px,3vw,26px);width:46px;height:46px;border:none;border-radius:50%;
  cursor:pointer;background:rgba(255,255,255,.14);color:#fff;font-size:26px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s;}
.lb-close:hover{background:rgba(255,255,255,.26);}
@media (prefers-reduced-motion:reduce){.lightbox{backdrop-filter:none;} .lightbox.open{animation:none;}}

/* ---------- closing CTA / insurance (dark) ---------- */
.closing .wrap{text-align:center;max-width:820px;}
.closing h2{color:var(--near);font-size:clamp(28px,4vw,46px);max-width:20ch;margin:0 auto;}
.closing p{color:rgba(240,232,248,.85);max-width:56ch;margin:16px auto 0;font-size:17px;}
.ins-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin:26px auto 0;}
.ins-row span{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);padding:7px 16px;border-radius:999px;font-size:13.5px;}
.closing .btn{margin-top:30px;}

/* ---------- credentials (light) ---------- */
.cred-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:48px;text-align:center;}
.cred{background:#fff;border:1px solid #ece0f5;border-radius:15px;padding:26px 18px;}
.cred b{font-family:var(--serif);font-size:26px;color:var(--wine-rim);display:block;font-weight:500;}
.cred span{font-size:14px;color:var(--ink-2);margin-top:6px;display:block;}
@media(max-width:640px){.cred-grid{grid-template-columns:1fr 1fr;}}

/* ---------- contact (light) ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,64px);margin-top:44px;}
.contact h3{font-size:22px;color:var(--plum-ink);margin-bottom:10px;font-weight:500;}
.contact .line{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid #ece0f5;font-size:16px;color:var(--ink-2);}
.contact .line b{color:var(--ink);min-width:92px;font-weight:600;}
.contact a.hl{color:var(--wine-rim);font-weight:600;text-decoration:none;}
.mapembed{aspect-ratio:4/3;border-radius:16px;overflow:hidden;border:1px solid #ece0f5;box-shadow:0 12px 30px rgba(122,79,191,.1);}
.mapembed iframe{width:100%;height:100%;border:0;display:block;}
.socials{display:inline-flex;gap:10px;align-items:center;}
.social{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:#fff;border:1px solid #ece0f5;transition:transform .2s,box-shadow .2s;flex:none;}
.social:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(122,79,191,.2);}
.social svg{width:19px;height:19px;display:block;}
@media(max-width:720px){.contact-grid{grid-template-columns:1fr;}}

/* ---------- footer (dark) ---------- */
footer{background:linear-gradient(120deg,var(--plum-deep),var(--wine));color:var(--lav-soft);padding:52px 0 34px;font-size:14px;}
footer .wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:flex-start;}
footer .fbrand{display:flex;align-items:center;gap:11px;}
footer .flogo{display:inline-block;background:#fff;border-radius:18px;padding:13px 18px;line-height:0;box-shadow:0 10px 26px rgba(0,0,0,.28);}
footer .flogo img{height:82px;width:auto;display:block;}
footer .flinks{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
footer .fbook{color:#fff;text-decoration:none;font-weight:500;margin-left:4px;}
footer .fbook:hover{color:var(--rose-hi);}
footer .fine{margin-top:22px;font-size:12px;color:rgba(255,255,255,.42);width:100%;border-top:1px solid rgba(255,255,255,.12);padding-top:18px;}

/* ---------- motion ---------- */
.js-reveal .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.js-reveal .reveal.in{opacity:1;transform:none;}
.dark::before{animation:auroraDrift 22s ease-in-out infinite alternate;will-change:transform;}
@keyframes auroraDrift{from{transform:scale(1.04) translate3d(0,0,0);}to{transform:scale(1.12) translate3d(-2.5%,1.5%,0);}}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .js-reveal .reveal{opacity:1!important;transform:none!important;transition:none;}
  .dark::before{animation:none;}
  .btn,.svc,.gal img,.why-card{transition:none;}
}
