﻿/* BellasGlow Beauty — quiet luxury design system */
/* Fonts loaded via <link rel="preconnect"/"stylesheet"> in each page <head>, not @import (avoids an extra render-blocking round trip). */

:root{
  --bg:            #FAF7F3;
  --bg-alt:        #F1EAE2;
  --ink:           #211D1A;
  --ink-soft:      #5B554E;
  --ink-faint:     #6B6459; /* AA-safe (5.5:1) on light backgrounds */
  --ink-faint-on-dark: #A39A8E; /* AA-safe (6:1) on --ink backgrounds */
  --line:          #E3D9CD;
  --accent:        #8F5F49; /* AA-safe (5:1) on light backgrounds */
  --accent-on-dark: #AD8571; /* AA-safe (5:1) on --ink backgrounds */
  --cta:           #211D1A;
  --cta-ink:       #FAF7F3;
  --white:         #FFFFFF;

  --font-display:  'Fraunces', Georgia, serif;
  --font-body:     'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --container:     1180px;
  --gutter:        clamp(20px, 5vw, 64px);
  --radius:        2px;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--bg);
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  padding-bottom:calc(58px + env(safe-area-inset-bottom)); /* space for mobile sticky CTA bar */
  overflow-x:hidden;
}
img,video{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }
button{ font:inherit; cursor:pointer; border:none; background:none; color:inherit; }

.container{
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

h1,h2,h3,.serif{
  font-family:var(--font-display);
  font-weight:400;
  letter-spacing:-0.01em;
  line-height:1.1;
}

.eyebrow{
  font-size:12px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:500;
}

.lede{
  font-size:clamp(16px,2vw,19px);
  color:var(--ink-soft);
  max-width:46ch;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:16px 32px;
  border-radius:var(--radius);
  font-size:14px;
  letter-spacing:0.04em;
  text-transform:uppercase;
  font-weight:500;
  transition:opacity .2s ease, transform .2s ease;
  white-space:nowrap;
}
.btn:active{ transform:scale(.98); }
.btn-primary{ background:var(--cta); color:var(--cta-ink); }
.btn-primary:hover{ opacity:.85; }
.btn-outline{ border:1px solid var(--ink); color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:var(--cta-ink); }
.btn-ghost{ color:var(--ink); border-bottom:1px solid var(--ink); padding:4px 0; border-radius:0; text-transform:none; letter-spacing:0; font-size:15px; }
.btn-block{ width:100%; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(250,247,243,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.site-header .container{
  display:flex; align-items:center; justify-content:space-between;
  height:76px;
}
.logo{
  display:flex; align-items:center; gap:10px;
  font-family:var(--font-display);
  font-size:clamp(17px,4.6vw,22px);
  letter-spacing:0.01em;
  white-space:nowrap;
}
.logo-mark{ width:38px; height:38px; border-radius:50%; object-fit:cover; flex:none; }
.logo span{ color:var(--accent); }

.main-nav{ display:none; }
.main-nav ul{ display:flex; gap:36px; }
.main-nav a{
  font-size:13px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft);
  transition:color .2s ease;
}
.main-nav a:hover{ color:var(--ink); }

.header-cta{ display:none; }

.lang-switch{
  display:flex; gap:6px; font-size:12px; letter-spacing:.05em; color:var(--ink-faint);
}
.lang-switch a{ padding:10px 6px; display:inline-flex; align-items:center; min-height:44px; }
.lang-switch a[aria-current="true"]{ color:var(--ink); border-bottom:1px solid var(--ink); }

.nav-toggle{
  display:flex; flex-direction:column; gap:5px;
  width:44px; height:44px; align-items:center; justify-content:center;
  margin:-10px -10px -10px 0;
}
.nav-toggle span{ height:1px; background:var(--ink); width:24px; }

@media(min-width:900px){
  .main-nav{ display:block; }
  .header-cta{ display:inline-flex; }
  .nav-toggle{ display:none; }
}

/* Mobile drawer */
.mobile-nav{
  position:fixed; inset:0; background:var(--bg);
  z-index:200; padding:24px var(--gutter);
  display:flex; flex-direction:column; gap:28px;
  transform:translateX(100%); transition:transform .3s ease;
}
.mobile-nav.is-open{ transform:translateX(0); }
.mobile-nav .close-nav{ align-self:flex-end; font-size:28px; width:44px; height:44px; display:flex; align-items:center; justify-content:center; margin:-10px; }
.mobile-nav ul{ display:flex; flex-direction:column; gap:22px; }
.mobile-nav a{ font-family:var(--font-display); font-size:28px; }

/* ---------- Sticky booking bar (mobile, 3 tabs) ---------- */
.booking-bar{
  position:fixed; bottom:0; left:0; right:0; z-index:150;
  display:flex; border-top:1px solid var(--line);
  background:var(--white);
  padding-bottom:env(safe-area-inset-bottom);
}
.booking-bar a,.booking-bar button{
  flex:1; text-align:center; padding:14px 6px;
  min-height:58px; display:flex; align-items:center; justify-content:center;
  font-size:12px; text-transform:uppercase; letter-spacing:.04em; font-weight:500;
  border-right:1px solid var(--line);
}
.booking-bar a:last-child,.booking-bar button:last-child{ border-right:none; }
.booking-bar .bar-primary{ background:var(--cta); color:var(--cta-ink); }
.booking-bar .bar-secondary{ color:var(--ink); }
@media(min-width:900px){ .booking-bar{ display:none; } body{ padding-bottom:0; } }

/* ---------- Reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *{ animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important; }
}

/* ---------- Hero ---------- */
.hero{
  display:grid;
  grid-template-columns:1fr;
}
.hero-media{
  aspect-ratio:4/5; overflow:hidden; background:var(--bg-alt);
}
.hero-media img{ width:100%; height:100%; object-fit:cover; object-position:center 30%; }
.hero-copy{
  padding:56px var(--gutter) 48px;
  display:flex; flex-direction:column; gap:22px;
}
.hero-copy h1{ font-size:clamp(34px,6vw,58px); }
.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; margin-top:8px; }
.hero-trust{ display:flex; gap:22px; margin-top:12px; flex-wrap:wrap; }
.hero-trust li{ font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); }

@media(min-width:900px){
  .hero{ grid-template-columns:1.1fr 1fr; align-items:stretch; min-height:88vh; }
  .hero-media{ aspect-ratio:auto; order:2; }
  .hero-copy{ order:1; justify-content:center; padding:0 64px; }
}

/* ---------- Section scaffolding ---------- */
section{ padding:88px 0; }
.section-head{ margin-bottom:48px; max-width:640px; }
.section-head h2{ font-size:clamp(28px,4vw,42px); margin-top:10px; }
.section-foot{ margin-top:40px; }

.bg-alt{ background:var(--bg-alt); }
.bg-ink{ background:var(--ink); color:var(--bg); }
.bg-ink .eyebrow{ color:var(--accent-on-dark); }
.bg-ink .lede{ color:#C9C2B8; }

/* ---------- Results (editorial before/after) ---------- */
.results-grid{
  display:grid; gap:16px;
}
.result-card{ position:relative; overflow:hidden; background:var(--bg-alt); }
.result-card img{ width:100%; height:100%; object-fit:cover; }
.result-card .tag{
  position:absolute; top:16px; left:16px;
  font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  background:rgba(250,247,243,.9); padding:6px 12px;
}
.result-feature{ grid-column:1 / -1; aspect-ratio:16/10; }
.result-small{ aspect-ratio:1/1; }

@media(min-width:760px){
  .results-grid{ grid-template-columns:repeat(3,1fr); }
  .result-feature{ grid-column:span 2; }
}

/* ---------- Treatments ---------- */
.treatment-feature{
  display:grid; gap:32px;
  border-top:1px solid var(--line);
  padding:48px 0;
}
.treatment-feature .t-media{ aspect-ratio:4/5; overflow:hidden; background:var(--bg-alt); }
.treatment-feature .t-media img,.treatment-feature .t-media video{ width:100%; height:100%; object-fit:cover; }
.treatment-feature .t-copy{ display:flex; flex-direction:column; justify-content:center; gap:16px; }
.treatment-feature .t-copy h3{ font-size:clamp(26px,3.4vw,36px); }
.treatment-feature:first-of-type{ border-top:none; }

@media(min-width:900px){
  .treatment-feature{ grid-template-columns:1fr 1fr; align-items:center; }
  .treatment-feature.reverse .t-media{ order:2; }
}

.treatment-list-compact{
  display:grid; gap:1px; background:var(--line); margin-top:16px;
  border:1px solid var(--line);
}
.treatment-list-compact a{
  background:var(--bg); padding:22px 24px;
  display:flex; align-items:center; justify-content:space-between;
  font-family:var(--font-display); font-size:19px;
  transition:background .2s ease;
}
.treatment-list-compact a:hover{ background:var(--bg-alt); }
.treatment-list-compact small{
  display:block; font-family:var(--font-body); font-size:12px; color:var(--ink-faint);
  text-transform:uppercase; letter-spacing:.05em; margin-top:4px;
}
@media(min-width:760px){ .treatment-list-compact{ grid-template-columns:1fr 1fr; } }

/* ---------- How we work (process steps) ---------- */
.steps{ display:grid; gap:40px; counter-reset:step; }
.step{ display:flex; gap:20px; }
.step::before{
  counter-increment:step; content:counter(step,decimal-leading-zero);
  font-family:var(--font-display); font-size:15px; color:var(--accent);
  border:1px solid var(--line); border-radius:50%;
  width:40px; height:40px; flex:none;
  display:flex; align-items:center; justify-content:center;
}
.step h3{ font-size:19px; font-weight:500; font-family:var(--font-body); margin-bottom:6px; }
.step p{ color:var(--ink-soft); font-size:15px; }
@media(min-width:760px){ .steps{ grid-template-columns:repeat(4,1fr); } .step{ flex-direction:column; } }

/* ---------- Social proof ---------- */
.proof-strip{
  display:flex; flex-wrap:wrap; gap:32px 48px;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:32px 0;
}
.proof-strip li{ font-size:13px; letter-spacing:.04em; color:var(--ink-soft); }

.ig-block{ display:flex; flex-direction:column; gap:20px; align-items:flex-start; }

/* ---------- FAQ ---------- */
.faq-item{ border-top:1px solid var(--line); }
.faq-item:last-child{ border-bottom:1px solid var(--line); }
.faq-q{
  width:100%; display:flex; justify-content:space-between; align-items:center;
  padding:22px 0; text-align:left; font-family:var(--font-display); font-size:19px;
}
.faq-q .plus{ font-size:22px; transition:transform .2s ease; color:var(--accent); }
.faq-item.is-open .faq-q .plus{ transform:rotate(45deg); }
.faq-a{
  max-height:0; overflow:hidden; transition:max-height .25s ease;
  color:var(--ink-soft); font-size:15px;
}
.faq-item.is-open .faq-a{ padding-bottom:22px; }

/* ---------- Final CTA / Book ---------- */
.book-cta{ text-align:center; }
.book-cta h2{ font-size:clamp(30px,5vw,48px); max-width:16ch; margin-inline:auto; }
.book-cta .btn{ margin-top:28px; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--ink); color:var(--bg); padding:56px 0 28px; }
.footer-grid{ display:grid; gap:32px; margin-bottom:40px; }
.footer-grid h4{ font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--accent-on-dark); margin-bottom:14px; }
.footer-grid a,.footer-grid button{ display:block; width:100%; text-align:left; font-size:14px; color:#C9C2B8; padding:5px 0; }
.footer-grid a:hover,.footer-grid button:hover{ color:var(--bg); }
.footer-bottom{
  border-top:1px solid rgba(250,247,243,.15); padding-top:22px;
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px;
  font-size:12px; color:var(--ink-faint-on-dark);
}
@media(min-width:760px){ .footer-grid{ grid-template-columns:repeat(4,1fr); } }

/* ---------- Booking modal ---------- */
.booking-modal{ position:fixed; inset:0; z-index:300; display:flex; align-items:flex-end; justify-content:center; }
.booking-modal[hidden]{ display:none; }
.booking-modal__backdrop{ position:absolute; inset:0; background:rgba(33,29,26,.55); }
.booking-modal__panel{
  position:relative; background:var(--bg); width:100%; max-width:480px;
  padding:36px 28px calc(28px + env(safe-area-inset-bottom));
  border-radius:12px 12px 0 0;
  max-height:88vh; overflow-y:auto;
}
.booking-modal__panel:focus{ outline:none; }
.booking-modal__close{
  position:absolute; top:16px; right:16px; font-size:26px; line-height:1;
  width:44px; height:44px; display:flex; align-items:center; justify-content:center;
}
.booking-modal__panel h2{ font-size:24px; padding-right:40px; margin-bottom:20px; }
.booking-modal__options{ display:flex; flex-direction:column; gap:12px; }
.booking-option{
  display:block; border:1px solid var(--line); padding:18px 20px; border-radius:8px;
  transition:border-color .2s ease, background .2s ease;
}
.booking-option:hover{ border-color:var(--ink); background:var(--bg-alt); }
.booking-option__name{ display:block; font-family:var(--font-display); font-size:19px; }
.booking-option__desc{ display:block; font-size:13px; color:var(--ink-soft); margin-top:4px; }
.booking-option__pending{ display:block; font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--accent); margin-top:8px; }
.booking-option.is-pending{ cursor:not-allowed; opacity:.7; }
.booking-modal__help{ margin-top:22px; font-size:13px; color:var(--ink-soft); text-align:center; }
.booking-modal__help a{ display:inline-block; margin-left:4px; border-bottom:1px solid var(--ink); color:var(--ink); }

@media(min-width:640px){
  .booking-modal{ align-items:center; }
  .booking-modal__panel{ border-radius:12px; padding:40px; }
  .booking-modal__options{ flex-direction:row; }
  .booking-option{ flex:1; }
}

/* ---------- Meet the practitioner ---------- */
.practitioner{ display:grid; gap:32px; }
.practitioner__media{
  aspect-ratio:4/5; background:var(--bg-alt);
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line);
  overflow:hidden;
}
.practitioner__media img{ width:100%; height:100%; object-fit:cover; }
.practitioner__media .placeholder-mark{ font-family:var(--font-display); font-size:56px; color:var(--accent); }
.practitioner__role{ font-size:14px; color:var(--accent); text-transform:uppercase; letter-spacing:.05em; margin-top:-8px; margin-bottom:4px; }
.practitioner__facts{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px 24px; margin-top:20px; }
.practitioner__facts dt{ font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); }
.practitioner__facts dd{ font-size:14px; color:var(--ink-soft); margin-top:2px; }
@media(min-width:900px){ .practitioner{ grid-template-columns:1fr 1.2fr; align-items:center; } }

/* ---------- Editorial results cases ---------- */
.case-grid{ display:grid; gap:24px; }
.case-card{ border:1px solid var(--line); overflow:hidden; }
.case-card__media{ aspect-ratio:4/5; background:var(--bg-alt); }
.case-card__media img{ width:100%; height:100%; object-fit:cover; }
.case-card__body{ padding:20px 22px 24px; }
.case-card__body dl{ display:grid; gap:8px; margin-top:10px; }
.case-card__body dt{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); }
.case-card__body dd{ font-size:14px; color:var(--ink-soft); }
.case-disclaimer{ font-size:12px; color:var(--ink-faint); margin-top:24px; max-width:60ch; }
@media(min-width:760px){ .case-grid{ grid-template-columns:repeat(3,1fr); } }

/* ---------- Trust strip ---------- */
.trust-strip{ display:grid; gap:14px; }
.trust-strip li{ font-size:14px; color:var(--ink-soft); padding-left:22px; position:relative; }
.trust-strip li::before{ content:"—"; position:absolute; left:0; color:var(--accent); }
@media(min-width:760px){ .trust-strip{ grid-template-columns:repeat(2,1fr); } }

/* ---------- Neutral brand visual block (when no specific photo exists) ---------- */
.brand-block{
  aspect-ratio:4/5; background:var(--bg-alt);
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  padding:32px; text-align:center;
}
.brand-block span{ font-family:var(--font-display); font-size:22px; color:var(--accent); max-width:16ch; }

/* ---------- Breadcrumb / stub pages ---------- */
.breadcrumb{ font-size:12px; color:var(--ink-faint); padding:20px 0 0; }
.breadcrumb a{ color:var(--ink-faint); }
.breadcrumb a:hover{ color:var(--ink); }
.stub-hero{ padding:64px 0 48px; max-width:680px; }
.stub-hero h1{ font-size:clamp(32px,5vw,50px); margin:14px 0 18px; }
.notice{
  border:1px solid var(--line); background:var(--bg-alt);
  padding:20px 24px; font-size:14px; color:var(--ink-soft); margin-top:24px;
}
