/* Verified production fixes added during the 2026-07-22 deployment audit. */
html, body {
  max-width: 100%;
  overflow-x: clip;
}
@supports not (overflow: clip) {
  html, body { overflow-x: hidden; }
}

/* Keep the closed fixed drawer inside the viewport instead of translating it
   beyond the document edge, which previously enlarged the mobile scroll area. */
.nav-drawer {
  max-width: 100vw;
  transform: none !important;
  clip-path: inset(0 0 0 100%);
  transition: clip-path .55s var(--ease-out), visibility 0s linear .55s !important;
}
.nav-drawer.is-open {
  clip-path: inset(0);
  transition-delay: 0s !important;
}

main a,
main li {
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (width <= 660px) {
  .footer__contact,
  .footer__contact > * {
    min-width: 0;
    max-width: 100%;
  }
  .footer__contact .footer__book {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
  }
}

@media (width <= 620px) {
  .ctg-modalities__media {
    overflow: clip;
  }
  .ctg-modalities__pulse {
    max-width: none;
  }
  main ul,
  main ol {
    max-width: 100%;
  }
}

/* Footer social icons and reliable treatment-card interactions — 2026-07-22. */
.footer__socials a svg {
  width: 1.08rem;
  height: 1.08rem;
  display: block;
  flex: 0 0 auto;
}
.footer__socials a {
  text-decoration: none;
}
.footer__socials a:focus-visible {
  outline-color: var(--soft-aqua);
}

/* The cards previously depended on IntersectionObserver adding .is-visible.
   Keep them rendered and clickable even when that animation does not initialise. */
.service-grid__cards .service-card,
.service-grid__cards .service-card.reveal {
  opacity: 1 !important;
  clip-path: inset(0) !important;
  transform: none !important;
  pointer-events: auto !important;
  cursor: pointer;
}
.service-grid__cards .service-card svg,
.service-grid__cards .service-card::before,
.service-grid__cards .service-card::after,
.service-grid__cards .fx-lattice {
  pointer-events: none !important;
}
.service-grid__cards .service-card .service-card__number,
.service-grid__cards .service-card h3,
.service-grid__cards .service-card p {
  opacity: 1;
  transform: none;
}
.service-grid__cards .service-card p {
  opacity: .72;
}
.service-grid__cards .service-card:hover p,
.service-grid__cards .service-card:focus-visible p {
  opacity: 1;
}


/* ==========================================================================
   Header booking badge (July 2026)
   At the top of the page the badge reads "Book / Now". Once the header picks
   up .is-scrolled (scrollY > 48) it flips on its Y axis to the original ↗
   icon. Header only — every other booking button keeps its arrow.
   ========================================================================== */

.site-header__book.site-header__book--flip {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 0 !important;
  width: 3.9rem;
  height: 3.9rem;
  min-width: 3.9rem !important;
  min-height: 3.9rem !important;
  padding: 0 !important;
  border-radius: 50%;
  perspective: 620px;
}

/* The build clips the badge's first child to 1px below 900px — undo it. */
.site-header__book--flip > .site-header__book-flip {
  display: block;
  position: relative !important;
  width: 100% !important;
  height: 100% !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  transform-style: preserve-3d;
  transition: transform 560ms cubic-bezier(.3, .7, .25, 1);
}

.site-header.is-scrolled .site-header__book--flip > .site-header__book-flip {
  transform: rotateY(180deg);
}

.site-header__book-face {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.site-header__book-face--text {
  flex-direction: column;
  font-size: .63rem;
  font-weight: 700;
  line-height: 1.14;
  letter-spacing: .03em;
  text-align: center;
}

.site-header__book-face--icon {
  transform: rotateY(180deg);
}

@media (max-width: 900px) {
  .site-header__book.site-header__book--flip {
    width: 3.5rem;
    height: 3.5rem;
    min-width: 3.5rem !important;
    min-height: 3.5rem !important;
  }

  .site-header__book-face--text {
    font-size: .6rem;
  }
}

@media (max-width: 380px) {
  .site-header__book.site-header__book--flip {
    width: 3.2rem;
    height: 3.2rem;
    min-width: 3.2rem !important;
    min-height: 3.2rem !important;
  }

  .site-header__book-face--text {
    font-size: .56rem;
  }

  .site-header__book-face .button__icon {
    width: 2.5rem;
    height: 2.5rem;
    flex-basis: 2.5rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-header__book--flip > .site-header__book-flip {
    transition: none;
  }
}


/* ---- related treatments (internal linking) ---- */
.rl-related{padding:clamp(3.5rem,8vw,6rem) 0;background:var(--ice-white);border-top:1px solid var(--line)}
.rl-related .section-title{max-width:18ch;margin-top:.35rem}
.rl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;margin-top:clamp(1.75rem,4vw,2.75rem)}
.rl-card{position:relative;display:grid;align-content:start;gap:.5rem;padding:1.4rem 1.3rem 3rem;background:var(--white);border:1px solid var(--line);text-decoration:none;transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),border-color .3s ease}
.rl-card:hover,.rl-card:focus-visible{transform:translateY(-4px);box-shadow:0 1.5rem 3.5rem #032a4014;border-color:#007dcc59}
.rl-card__number{color:var(--brand-blue);font-size:.68rem;font-weight:750;letter-spacing:.1em}
.rl-card__title{color:var(--deep-blue);font-family:var(--font-serif);font-size:1.2rem;font-weight:500;line-height:1.15}
.rl-card__blurb{color:var(--muted-text);font-size:.88rem;line-height:1.6}
.rl-card__arrow{position:absolute;right:1.3rem;bottom:1.2rem;color:var(--brand-blue);font-size:1rem;transition:transform .35s var(--ease-out)}
.rl-card:hover .rl-card__arrow{transform:translate(3px,-3px)}
@media (max-width:650px){.rl-card{padding-bottom:2.7rem}}


/* ---- City location landing page ---- */
.loc-hero{padding:calc(var(--section-space) + 6rem) 0 var(--section-space);color:var(--white);background:radial-gradient(circle at 78% 24%,#78d0e72e,transparent 28rem),var(--deep-blue)}
.loc-hero .eyebrow{color:var(--soft-aqua)}
.loc-hero h1{max-width:16ch;margin:.4rem 0 0}
.loc-lead{max-width:58ch;margin:1.4rem 0 0;color:#ffffffc7;font-size:1.1rem;line-height:1.7}
.loc-actions{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;margin-top:2rem}
.loc-section{padding:var(--section-space) 0}
.loc-section--tint{background:var(--ice-white)}
.loc-section .section-title{max-width:20ch;margin-top:.35rem}
.loc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin-top:clamp(1.75rem,4vw,2.75rem)}
.loc-stop{display:grid;gap:.3rem;padding:1.25rem;background:var(--white);border:1px solid var(--line)}
.loc-stop strong{color:var(--deep-blue);font-family:var(--font-serif);font-size:1.15rem;font-weight:500}
.loc-stop span{color:var(--muted-text);font-size:.8rem;line-height:1.5}
.loc-stop b{margin-top:.35rem;color:var(--brand-blue);font-size:.85rem;font-weight:750}
.loc-note{max-width:62ch;margin:1.6rem 0 0;color:var(--muted-text);font-size:.9rem;line-height:1.7}
.loc-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:clamp(1.5rem,4vw,2.75rem);margin-top:clamp(1.75rem,4vw,2.75rem)}
.loc-cols h3,.loc-faq h3{margin:0 0 .5rem;color:var(--deep-blue);font-family:var(--font-serif);font-size:1.25rem;font-weight:500;line-height:1.25}
.loc-cols p,.loc-faq p{margin:0 0 .9rem;color:var(--body-text);line-height:1.75}
.loc-faq{display:grid;gap:1.75rem;max-width:70ch;margin-top:clamp(1.75rem,4vw,2.75rem)}
.loc-map{margin-top:1.9rem;aspect-ratio:16/9;border:1px solid var(--line);overflow:hidden}
.loc-map iframe{width:100%;height:100%;border:0;display:block}
@media (max-width:650px){.loc-hero{padding-top:calc(var(--section-space) + 4rem)}.loc-actions .button{width:100%}.loc-map{aspect-ratio:4/3}}


/* ---- answer-first Q&A blocks ---- */
.faq-block{padding:var(--section-space) 0;background:var(--white);border-top:1px solid var(--line)}
.faq-block .section-title{max-width:22ch;margin-top:.35rem}
.faq-list{display:grid;gap:1.9rem;max-width:72ch;margin-top:clamp(1.75rem,4vw,2.75rem)}
.faq-item h3{margin:0 0 .55rem;color:var(--deep-blue);font-family:var(--font-serif);font-size:1.3rem;font-weight:500;line-height:1.25}
.faq-item p{margin:0;color:var(--body-text);font-size:1rem;line-height:1.78}
@media (max-width:650px){.faq-item h3{font-size:1.18rem}}
