/* Bella Sova Massage & Wellness - shared chrome.
   Every page loads fonts.css, then this, then its own sheet.
   Tokens, header, page head, footer, buttons, type helpers, reveal. */

/* ============ Tokens - single-theme light ============ */
:root{
  --ink:#453A52;          /* dusk violet charcoal */
  --ink-soft:#6E6379;
  --ground:#FEFCFB;       /* warm near-white, pink whisper */
  --pink:#FFEAF7;         /* brand */
  --blue:#E2FBFF;         /* brand */
  --peri:#C2CDFF;         /* brand periwinkle */
  --mint:#E4F6EC;
  --lilac:#EFEBF9;
  --cta:#6B5896;          /* deep lilac — booking */
  --cta-hover:#59477F;
  --line:#E8E0EE;
  --honey:#D8B56A;        /* muted star gold */
  --card:#FFFFFF;
  --script:'Parisienne',cursive;
  --script-brand:'Great Vibes',cursive;
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Figtree',-apple-system,'Helvetica Neue',Arial,sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--ground);
  font-size:17px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
a{color:var(--cta)}
:focus-visible{outline:3px solid var(--cta);outline-offset:3px;border-radius:4px}

.wrap{max-width:1120px;margin-inline:auto;padding-inline:clamp(20px,4vw,40px)}

/* ============ Header ============ */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(254,252,251,.88);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.site-bar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:14px}
.wordmark{display:flex;flex-direction:column;line-height:1;text-decoration:none;color:var(--ink)}
.wordmark .wm-script{font-family:var(--script-brand);font-size:32px;line-height:1.1}
.wordmark .wm-sub{font-size:9.5px;letter-spacing:.34em;text-transform:uppercase;color:var(--ink-soft);margin-top:2px}
nav.main{display:flex;gap:clamp(16px,2.5vw,30px)}
nav.main a{
  text-decoration:none;color:var(--ink);font-size:14.5px;font-weight:500;
  padding-block:6px;border-bottom:2px solid transparent;transition:border-color .2s,color .2s;
}
nav.main a:hover{color:var(--cta);border-bottom-color:var(--peri)}

/* ---- Mobile menu toggle (hidden on desktop, shown under 820px) ---- */
.nav-toggle{
  display:none;
  width:44px;height:44px;flex:0 0 auto;
  align-items:center;justify-content:center;
  background:transparent;border:1.5px solid var(--line);border-radius:12px;
  cursor:pointer;transition:border-color .2s,background .2s;
}
.nav-toggle:hover{border-color:var(--peri);background:var(--lilac)}
.nav-toggle .bars{display:block;position:relative;width:20px;height:14px}
.nav-toggle .bars span{
  position:absolute;left:0;width:100%;height:2px;border-radius:2px;
  background:var(--ink);transition:transform .25s ease,opacity .2s ease,top .25s ease;
}
.nav-toggle .bars span:nth-child(1){top:0}
.nav-toggle .bars span:nth-child(2){top:6px}
.nav-toggle .bars span:nth-child(3){top:12px}
header.site.nav-open .nav-toggle .bars span:nth-child(1){top:6px;transform:rotate(45deg)}
header.site.nav-open .nav-toggle .bars span:nth-child(2){opacity:0}
header.site.nav-open .nav-toggle .bars span:nth-child(3){top:6px;transform:rotate(-45deg)}

/* ============ Buttons ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--sans);font-weight:600;font-size:15.5px;text-decoration:none;
  padding:14px 28px;border-radius:999px;transition:background .2s,color .2s,border-color .2s,transform .15s;
  border:1.5px solid transparent;cursor:pointer;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--cta);color:#fff}
.btn-primary:hover{background:var(--cta-hover)}
.btn-sm{padding:10px 20px;font-size:14px}
.btn-light{background:#fff;color:var(--cta)}
.btn-light:hover{background:var(--pink)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink-soft)}
.btn-ghost:hover{border-color:var(--cta);color:var(--cta)}
.btn-glass{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.btn-glass:hover{background:rgba(255,255,255,.24);border-color:#fff}

/* ============ Type helpers ============ */
.eyebrow{
  font-size:12px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--cta);margin-bottom:14px;
}
h1.display,.script-h{font-family:var(--script);font-weight:400;line-height:1.28;text-wrap:balance}
h1.display{font-size:clamp(2.6rem,6vw,4.2rem)}
.script-h{font-size:clamp(2.1rem,4.5vw,3.1rem);margin-bottom:18px}
.lede{font-size:clamp(17px,1.9vw,19.5px);color:var(--ink-soft);max-width:56ch}
.serif-it{font-family:var(--serif);font-style:italic;font-weight:500}

/* ============ Sections ============ */
section.band{padding-block:clamp(64px,9vw,110px)}
.band-mint{background:var(--mint)}
.band-lilac{background:linear-gradient(135deg,var(--lilac) 0%,#DCE3FB 100%)}
.sec-head{max-width:680px;margin-bottom:clamp(36px,5vw,56px)}
.sec-head.centered{margin-inline:auto;text-align:center}
.band-pink{background:var(--pink)}
.band-blue{background:var(--blue)}

/* ============ Page head ============ */
.page-head{position:relative;overflow:hidden;padding-block:clamp(56px,8vw,88px);text-align:center}
.page-head-wash{
  position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(46% 62% at 12% 18%,var(--pink) 0%,transparent 70%),
    radial-gradient(52% 66% at 92% 30%,var(--blue) 0%,transparent 72%),
    radial-gradient(44% 60% at 70% 96%,var(--mint) 0%,transparent 70%);
}
.page-head .wrap{position:relative}
.page-head .lede{margin-inline:auto}

/* ============ Footer ============ */
footer.site{background:var(--ink);color:#D9D2E2;font-size:14.5px}
.foot-top{
  display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:clamp(28px,4vw,56px);
  padding-block:clamp(48px,6vw,72px);
}
.foot-brand .wm-script{font-family:var(--script-brand);font-size:36px;color:#fff;line-height:1.2}
.foot-brand .wm-sub{font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:#B0A6C0;margin-top:4px}
.foot-brand p{margin-top:16px;max-width:30ch;color:#B0A6C0}
.foot-col h3{
  font-size:11.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--peri);margin-bottom:14px;
}
.foot-col a{color:#EFEAF4;text-decoration:none}
.foot-col a:hover{text-decoration:underline}
.foot-col li{list-style:none;margin-bottom:10px;line-height:1.55}
.hours-row{display:flex;justify-content:space-between;gap:14px;max-width:220px;font-variant-numeric:tabular-nums}
.hours-row span:first-child{color:#B0A6C0}
.hours-note{color:#8F84A1;font-size:13px;margin-top:4px}
.foot-bottom{
  border-top:1px solid rgba(255,255,255,.12);padding-block:22px;
  display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:space-between;
  font-size:12.5px;color:#B0A6C0;
}

/* ============ Reveal ============ */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ============ Responsive - chrome ============ */
@media (max-width:960px){
  .foot-top{grid-template-columns:1fr 1fr}
}
@media (max-width:820px){
  .nav-toggle{display:inline-flex}
  .site-bar{gap:12px}
  /* The desktop nav becomes a drop-down panel under the sticky bar. Same
     markup, same links - so the nav can never drift between the two views. */
  nav.main{
    position:absolute;top:100%;left:0;right:0;
    flex-direction:column;gap:0;
    background:var(--ground);
    border-bottom:1px solid var(--line);
    box-shadow:0 14px 30px rgba(69,58,82,.10);
    padding:6px clamp(20px,4vw,40px) 14px;
    max-height:calc(100dvh - 100%);overflow-y:auto;
    opacity:0;transform:translateY(-10px);visibility:hidden;
    transition:opacity .22s ease,transform .22s ease,visibility .22s;
  }
  header.site.nav-open nav.main{opacity:1;transform:none;visibility:visible}
  nav.main a{
    font-size:16px;padding-block:14px;border-bottom:1px solid var(--line);
    border-radius:0;
  }
  nav.main a:last-child{border-bottom:0}
  nav.main a:hover{color:var(--cta);border-bottom-color:var(--line)}
}
@media (max-width:820px) and (prefers-reduced-motion:reduce){
  nav.main{transition:none}
}
/* Narrow phones: wordmark + Book Now + toggle have to share ~320px without
   either of them wrapping to a second line. */
@media (max-width:400px){
  .wordmark{white-space:nowrap}
  .wordmark .wm-script{font-size:26px}
  .wordmark .wm-sub{font-size:8px;letter-spacing:.2em}
  .site-bar .btn-sm{padding:9px 14px;font-size:13.5px;white-space:nowrap}
  .nav-toggle{width:40px;height:40px}
}
@media (max-width:640px){
  .foot-top{grid-template-columns:1fr}
}
