/* ============================================================
   UNIVERSAL CHROME — header + footer, identical on every page
   Added 2026-09-03.

   Before this file there were two authors and two navs: index.html
   is hand-written (Services / Signature / Results / Team / FAQ,
   fixed + transparent over the video hero, burger on mobile) and
   the nine service pages are emitted by gen_service_pages.py
   (Treatments dropdown, sticky solid, scroll-strip on mobile).
   Clicking a footer treatment link swapped the entire header and
   footer, which is why it read as a different website.

   Container class stays .nav-links: index.html's burger handler and
   its active-section IntersectionObserver both query it by name, and
   renaming it would silently kill both.

   Loaded AFTER each page's own <style>, so it wins on conflicts.
   ============================================================ */

/* ── header ───────────────────────────────────────────────── */
.nav-links{gap:28px}
.nav-links > a,.nav-drop > button{
  font-size:14px;font-weight:500;letter-spacing:.01em;white-space:nowrap;
  background:none;border:0;padding:0;font-family:inherit;cursor:pointer;
  color:inherit;text-decoration:none;transition:color .2s}

.nav-drop{position:relative}
.nav-drop > button::after{
  content:"";display:inline-block;margin-left:7px;
  border:3.5px solid transparent;border-top-color:currentColor;
  transform:translateY(2px);transition:transform .25s}
.nav-drop:hover > button::after,
.nav-drop:focus-within > button::after{transform:translateY(2px) rotate(180deg)}

.nav-drop-panel{
  position:absolute;top:100%;left:50%;transform:translate(-50%,6px);
  margin-top:14px;min-width:264px;padding:10px;
  background:#FFFDF9;border:1px solid var(--line);border-radius:3px;
  box-shadow:0 18px 44px -18px rgba(30,26,32,.22),0 2px 6px rgba(30,26,32,.05);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .2s,transform .22s,visibility .2s;z-index:60}
.nav-drop:hover .nav-drop-panel,
.nav-drop:focus-within .nav-drop-panel{
  opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
/* bridges the 14px gap so travelling to the panel does not drop :hover */
.nav-drop-panel::before{content:"";position:absolute;top:-16px;left:0;right:0;height:16px}
.nav-drop-panel a{
  display:block;padding:9px 13px;font-size:13.5px;font-weight:400;
  color:var(--ink-2)!important;text-decoration:none;border-radius:2px;
  white-space:nowrap;transition:background .16s,color .16s}
.nav-drop-panel a:hover{background:#F3EDE3;color:var(--gold-2)!important}
.nav-drop-panel a[aria-current="page"]{color:var(--gold-2)!important;font-weight:500}

/* Only the overlay nav (index.html, sitting over the video hero) paints its
   text light. Scoped to [data-overlay]: without it these rules also matched the
   service pages, whose nav is sticky-solid and never gains .scrolled, so the
   Treatments button rendered cream-on-cream and read as missing entirely. */
.nav-drop > button{color:var(--ink-2)}
.nav-drop > button:hover{color:var(--gold-2)}
.nav[data-overlay]:not(.scrolled) .nav-drop > button{color:rgba(246,241,244,.86)}
.nav[data-overlay]:not(.scrolled):hover .nav-drop > button{color:var(--ink-2)}
.nav[data-overlay].open:not(.scrolled) .nav-drop > button{color:var(--ink-2)}

/* Burger + the mobile-only in-menu CTA. These lived only in index.html's inline
   <style>, so service pages rendered an unstyled 4x4 burger and showed the
   duplicate "Book a consult ->" on desktop. */
.nav-burger{display:flex;flex-direction:column;justify-content:center;gap:5px;
  width:42px;height:42px;background:none;border:0;cursor:pointer;padding:9px;margin-left:6px}
.nav-burger span{display:block;width:100%;height:2px;background:var(--ink);
  border-radius:2px;transition:transform .3s,opacity .2s}
.nav.open .nav-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav.open .nav-burger span:nth-child(2){opacity:0}
.nav.open .nav-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav[data-overlay]:not(.scrolled) .nav-burger span{background:#F6F1F4}
.nav[data-overlay]:not(.scrolled):hover .nav-burger span,
.nav[data-overlay].open:not(.scrolled) .nav-burger span{background:var(--ink)}
.nav-menu-book{color:var(--gold-2);font-weight:600}
@media(min-width:900px){ .nav-burger{display:none} .nav-menu-book{display:none} }
@media(max-width:899px){
  .nav-links{display:none}
  .nav.open .nav-links{display:flex;position:absolute;top:100%;left:0;right:0;
    flex-direction:column;align-items:stretch;text-align:left;gap:0;background:var(--paper,#F8F4EC);
    border-top:1px solid var(--line);box-shadow:0 24px 50px -18px rgba(30,26,32,.45);
    padding:6px 24px 22px}
  .nav.open .nav-links > a{padding:15px 2px;border-bottom:1px solid var(--line);font-size:16px}
  .nav-book{display:none}
}

/* ── header, mobile: burger panel, not a scroll strip ────── */
@media(max-width:899px){
  .nav-drop{position:static}
  .nav-drop > button{display:none}
  .nav-drop-panel{
    position:static;transform:none;margin:0;padding:0;min-width:0;
    background:none;border:0;box-shadow:none;
    opacity:1;visibility:visible;pointer-events:auto}
  .nav-drop-panel::before{display:none}
  .nav-drop-panel{display:block}
  .nav-drop-panel a{padding:15px 2px;border-bottom:1px solid var(--line);font-size:16px}
  .nav-drop-panel a:hover{background:none}
  .nav:not(.open) .nav-drop-panel{display:none}
}

/* ── footer ───────────────────────────────────────────────── */
footer{background:#0A0F0A;color:rgba(248,244,236,0.78);padding:64px 0 32px}
.foot-inner{max-width:1240px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1fr;gap:36px}
@media(min-width:768px){.foot-inner{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.foot-logo{width:190px;height:auto;display:block;margin-bottom:18px}
@media(max-width:640px){.foot-logo{width:158px}}
.foot h5{font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.foot ul{list-style:none;display:flex;flex-direction:column;gap:8px;font-size:14px;margin:0;padding:0}
.foot ul a{color:inherit;text-decoration:none}
.foot ul a:hover{color:#fff}
.foot-brand p{font-size:13px;line-height:1.65;max-width:320px;margin-top:16px}
.foot-socials{display:flex;gap:10px;margin-top:18px}
.foot-socials a{width:36px;height:36px;border-radius:50%;background:rgba(248,244,236,.06);
  border:1px solid rgba(248,244,236,.1);display:flex;align-items:center;justify-content:center;
  color:rgba(248,244,236,.7);transition:background .2s,color .2s,border-color .2s}
.foot-socials a:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.foot-tribute{max-width:1240px;margin:48px auto 0;padding:24px 24px 0;
  border-top:1px solid rgba(248,244,236,.1);text-align:center;
  font-family:'Cormorant Garamond',serif;font-size:16px;font-style:italic;color:rgba(248,244,236,.6)}
.foot-tribute svg{display:inline;vertical-align:middle;width:14px;height:14px;fill:#C4574A;margin:0 4px}
.foot-base{max-width:1240px;margin:24px auto 0;padding:24px 24px 0;
  border-top:1px solid rgba(248,244,236,.06);display:flex;justify-content:space-between;
  flex-wrap:wrap;gap:16px;font-size:11px;color:rgba(248,244,236,.45);letter-spacing:.06em}
.foot-base a{color:inherit;text-decoration:none}
.foot-base a:hover{color:#fff}

/* the nav is fixed on overlay pages; give anchor targets clearance */
[id]{scroll-margin-top:96px}
