/*
Theme Name: Enhanced Physical Therapy
Theme URI: https://enhancedpt.com
Author: Enhanced Physical Therapy
Author URI: https://enhancedpt.com
Description: Theme for Enhanced Physical Therapy. Nashville-area physical therapy, performance training, and wellness clinics.
Version: 0.1.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: All rights reserved
Text Domain: enhancedpt
*/

/* Self-hosted variable fonts. One file per family covers every weight in
   the design system. Self-hosting kills the third-party connect to
   fonts.googleapis.com / fonts.gstatic.com on every page load. */
@font-face{
  font-family:'Outfit';
  font-style:normal;
  font-weight:400 800;
  font-display:swap;
  src:url('assets/fonts/outfit-latin.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:300 700;
  font-display:swap;
  src:url('assets/fonts/inter-latin.woff2') format('woff2');
}

:root{
  --bg:        #FAF8F3;
  --bg-2:      #F2EFE6;
  --surface:   #FFFFFF;
  --line:      rgba(31,36,33,.10);
  --line-strong: rgba(31,36,33,.20);
  --sage:      #707E64;
  --sage-2:    #5C6B53;
  --sage-deep: #4F5A47;
  --sage-soft: #E5E9DD;
  --ink:       #1F2421;
  --ink-dim:   #3F4844;
  --muted:     #6B736D;
  --gold:      #C9A86A;
  --max:       1200px;
  --r:         14px;
  --ease:      cubic-bezier(.2,.7,.2,1);
}

*{box-sizing:border-box}
html{
  scroll-behavior:smooth;
  scroll-padding-top:72px;
}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  font-weight:400;
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--sage-2);text-decoration:none;transition:color .25s var(--ease),opacity .25s var(--ease)}
a:hover{color:var(--sage-deep)}

h1,h2,h3,h4{
  font-family:'Outfit','Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  font-weight:600;
  line-height:1.15;
  letter-spacing:-0.02em;
  color:var(--ink);
  margin:0 0 .6em;
}
h1{
  font-size:clamp(2.4rem,5.6vw,4.4rem);
  font-weight:700;
  letter-spacing:-.03em;
  line-height:1.05;
}
h2{font-size:clamp(1.9rem,3.6vw,2.8rem)}
h3{font-size:clamp(1.25rem,2vw,1.5rem)}
h4{font-size:1.05rem}

p{margin:0 0 1em}
.lede{font-size:clamp(1.05rem,1.6vw,1.25rem);color:var(--ink);max-width:62ch}
.eyebrow{
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:.78rem;
  font-weight:600;
  color:var(--sage-deep);
  margin:0 0 1.2em;
}

.container{
  max-width:var(--max);
  margin:0 auto;
  padding:0 clamp(24px,6vw,96px);
}

/* Header / nav */
.nav{
  position:sticky;top:0;z-index:50;
  /* No backdrop-filter: it makes .nav a containing block and traps the WP nav modal inside the header. */
  background:rgba(250,248,243,.96);
  border-bottom:1px solid var(--line);
}
.nav__inner{
  max-width:var(--max);
  margin:0 auto;
  padding:14px 24px;
}
.nav .wp-block-site-logo img{
  height:38px;width:auto;max-width:none;
}

/* Map directions rendered as rounded pin-icon chips, shared by the location
   pages (loc-directions) and the location cards (location-card__maps) so the
   two surfaces match. They read as actions, not plain text. */
.map-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 14px;
  border:1px solid var(--line-strong);
  border-radius:999px;
  font-size:.9rem;font-weight:600;line-height:1;
  color:var(--sage-deep);
  background:#fff;
  white-space:nowrap;
  text-decoration:none;
}
.map-chip:hover{border-color:var(--sage);background:var(--sage-soft);color:var(--sage-deep);text-decoration:none}
.map-chip__pin{width:15px;height:15px;flex:0 0 auto}
.loc-directions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.location-card__maps{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:2px}
.nav__inner > .nav__brand{margin-right:auto}

/* Mobile nav (core/navigation responsive overlay) */
.nav .wp-block-navigation__responsive-container-open,
.nav .wp-block-navigation__responsive-container-close{
  color:var(--ink);
  background:transparent;
  border:1px solid var(--line-strong);
  border-radius:999px;
  width:42px;height:42px;
  padding:0;
  align-items:center;
  justify-content:center;
}
.nav .wp-block-navigation__responsive-container-open:hover,
.nav .wp-block-navigation__responsive-container-close:hover{
  border-color:var(--sage);
  color:var(--sage-deep);
}
.nav .wp-block-navigation__responsive-container-open svg,
.nav .wp-block-navigation__responsive-container-close svg{
  width:22px;height:22px;fill:currentColor;
}
.nav .wp-block-navigation__responsive-container-close{display:flex}

@media (max-width:820px){
  .nav .wp-block-navigation__responsive-container-open{display:flex}
  .nav .nav__cta-wrap{display:none}
  .nav .wp-block-navigation__responsive-container:not(.is-menu-open){display:none}
}

.nav .wp-block-navigation__responsive-container.is-menu-open{
  padding:clamp(28px,8vw,72px);
  animation-duration:.2s !important;
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  flex-direction:column;
  gap:0;
  align-items:stretch;
  width:100%;
  max-width:520px;
  margin:0 auto;
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{
  border-bottom:1px solid var(--line);
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-family:'Outfit','Inter',sans-serif;
  font-size:clamp(28px,5vw,40px);
  letter-spacing:-.02em;
  color:var(--ink);
  padding:18px 0;
  font-weight:600;
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after{
  content:"→";
  margin-left:16px;
  color:var(--sage);
  opacity:.5;
  transition:transform .2s var(--ease),opacity .2s var(--ease),color .2s var(--ease);
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover,
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[aria-current]{
  color:var(--sage-deep);
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover::after{
  color:var(--sage-deep);
  opacity:1;
  transform:translateX(4px);
}

.nav__mobile-extras{display:none}
.nav .wp-block-navigation__responsive-container.is-menu-open .nav__mobile-extras{
  width:100%;
  max-width:520px;
  margin:32px auto 0;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:18px;
}
.nav__mobile-cta{
  display:block;
  text-align:center;
  /* sage-2 to match the primary brand button (see is-style-btn-primary). */
  background:var(--sage-2);
  color:#fff;
  font-family:'Outfit','Inter',sans-serif;
  font-weight:600;
  font-size:18px;
  padding:18px 24px;
  border-radius:999px;
  text-decoration:none;
  transition:background .2s var(--ease),transform .2s var(--ease);
}
.nav__mobile-cta:hover{background:var(--sage-deep);transform:translateY(-1px);color:#fff}
.nav__mobile-tel{
  display:block;
  text-align:center;
  font-family:'Outfit','Inter',sans-serif;
  font-weight:500;
  font-size:18px;
  color:var(--ink);
  text-decoration:none;
  letter-spacing:.01em;
}
.nav__mobile-tel:hover{color:var(--sage-deep)}
.nav__mobile-social{
  list-style:none;
  margin:8px 0 0;
  padding:0;
  display:flex;
  justify-content:center;
  gap:14px;
}
.nav__mobile-social a{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:50%;
  border:1px solid var(--line-strong);
  color:var(--ink);
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);
}
.nav__mobile-social a:hover{
  background:var(--sage-soft);
  border-color:var(--sage);
  color:var(--sage-deep);
}
.nav__mobile-social svg{width:20px;height:20px}
.nav__links a{
  color:var(--ink);
  font-weight:500;
  font-size:.95rem;
}
.nav__links a:hover{color:var(--sage-deep)}
.nav__cta-wrap .wp-block-button__link{margin:0}

/* Submenu popover (desktop). Core navigation block renders a submenu as
   .has-child > .wp-block-navigation__submenu-container. We style that
   as a card-shaped popover that aligns to the parent item.
   The visual breathing room between trigger and popover uses padding
   on the popover container (not margin) so the cursor stays inside
   the hover area. A ::before bridge backs that up by adding a small
   transparent zone above the popover card. */
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
  padding:18px 10px 10px; /* extra top padding = visual gap from trigger */
  margin-top:0;
  min-width:240px;
  box-shadow:0 24px 40px -22px rgba(31,36,33,.30), 0 0 0 1px var(--line);
  overflow:visible;
}
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container::before{
  /* Invisible hover bridge: covers the gap between the nav bar bottom
     and the popover top so the cursor can travel into the popover
     without losing :hover on the .has-child trigger. */
  content:"";
  position:absolute;
  top:-12px; left:0; right:0; height:14px;
  background:transparent;
  display:block;
}
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container::after{
  display:none;
}
/* Extend the trigger's hover zone downward so moving from trigger into
   the popover always stays within a hovered ancestor. */
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation-item__content{
  padding-bottom:14px;
  margin-bottom:-14px;
  position:relative;
}
.nav__links .wp-block-navigation__submenu-container .wp-block-navigation-item__content{
  display:block;
  padding:10px 14px;
  border-radius:10px;
  color:var(--ink);
  font-size:.95rem;
  font-weight:500;
  transition:background .15s var(--ease), color .15s var(--ease);
}
.nav__links .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.nav__links .wp-block-navigation__submenu-container .wp-block-navigation-item__content[aria-current]{
  background:var(--sage-soft);
  color:var(--sage-deep);
}
/* Submenu indicator arrow on the parent link. */
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation-item__content > .wp-block-navigation__submenu-icon{
  margin-left:4px;
}
.nav__links .wp-block-navigation-item.has-child > .wp-block-navigation-item__content > .wp-block-navigation__submenu-icon svg{
  width:11px;height:11px;
}

/* Submenu inside the mobile overlay: render as an inline list, not a
   popover. The core block already removes the popover positioning when
   .is-menu-open is present; we just tighten the list styling. */
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container{
  background:transparent;
  border:0;
  box-shadow:none;
  padding:0 0 12px 16px;
  margin:0;
  min-width:0;
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item{
  border-bottom:0;
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content{
  font-size:1.05rem;
  padding:10px 0;
  color:var(--ink-dim);
}
.nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content::after{
  content:none;
}

/* Buttons */
.wp-block-button.is-style-btn-primary .wp-block-button__link{
  display:inline-flex;
  align-items:center;
  gap:10px;
  /* sage-2 (slightly darker) instead of --sage on the brand button.
     White-on-sage is 4.32:1 — fine for WCAG AA-Large (3:1, which these
     16px bold buttons qualify for), but Lighthouse uses the strict
     AA-Normal threshold (4.5:1) regardless. sage-2 is ~5.7:1, passes both. */
  background:var(--sage-2);
  color:#fff;
  border:1px solid var(--sage-2);
  border-radius:999px;
  padding:16px 30px;
  font-weight:700;
  letter-spacing:.01em;
  box-shadow:0 8px 22px -10px rgba(31,36,33,.35);
  transition:background .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease);
}
.wp-block-button.is-style-btn-primary .wp-block-button__link::after{
  content:"→";
  display:inline-block;
  font-weight:500;
  transition:transform .25s var(--ease);
}
.wp-block-button.is-style-btn-primary .wp-block-button__link:hover{
  background:var(--sage-deep);
  border-color:var(--sage-deep);
  transform:translateY(-2px);
  box-shadow:0 14px 30px -10px rgba(31,36,33,.45);
}
.wp-block-button.is-style-btn-primary .wp-block-button__link:hover::after{
  transform:translateX(4px);
}
/* Nav "Book Now" pill is small; drop the arrow + lighten padding so it fits the bar. */
.nav .wp-block-button.is-style-btn-primary .wp-block-button__link{
  padding:11px 22px;
  font-size:.95rem;
  box-shadow:none;
}
.nav .wp-block-button.is-style-btn-primary .wp-block-button__link::after{content:none}

.wp-block-button.is-style-btn-ghost .wp-block-button__link{
  background:transparent;
  color:var(--ink);
  border:1px solid var(--line-strong);
  border-radius:999px;
  padding:15px 28px;
  font-weight:600;
  transition:border-color .2s var(--ease),color .2s var(--ease),background .2s var(--ease);
}
.wp-block-button.is-style-btn-ghost .wp-block-button__link:hover{
  border-color:var(--sage);
  color:var(--sage-deep);
  background:var(--sage-soft);
}

/* Section padding (sets vertical rhythm) */
main > section,
.hero,
.locations,
.services,
.faq,
.contact{
  padding-top:clamp(32px,3.5vw,52px);
  padding-bottom:clamp(32px,3.5vw,52px);
}
/* Strip WP block-gap between sibling sections inside wp-block-post-content. */
.wp-block-post-content > * + *,
main.wp-block-group > * + *{margin-block-start:0 !important}
main > section + section{border-top:1px solid var(--line)}

/* Hero (two-column with photo) */
.hero{
  position:relative;
  background:
    radial-gradient(1100px 540px at 80% -10%, var(--sage-soft) 0%, transparent 60%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
  /* Fill the first viewport so the next section doesn't peek above the fold. */
  min-height:min(720px, calc(100svh - 72px));
  display:flex;
  align-items:center;
}
/* Desktop-only scroll affordance. Hidden on mobile where the section
   peek already serves as the cue and a fixed circle would crowd the layout. */
.hero__scroll{
  display:none;
}
@media (min-width:821px){
  .hero__scroll{
    position:absolute;
    bottom:28px;
    left:50%;
    transform:translateX(-50%);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:46px;height:46px;
    border-radius:50%;
    border:1px solid var(--line-strong);
    background:rgba(255,255,255,.85);
    color:var(--ink);
    text-decoration:none;
    animation:hero-scroll-bounce 2.4s ease-in-out infinite;
    transition:border-color .25s var(--ease),color .25s var(--ease),background .25s var(--ease);
  }
  .hero__scroll:hover{
    border-color:var(--sage);
    color:var(--sage-deep);
    background:#fff;
    animation-play-state:paused;
  }
  .hero__scroll svg{width:18px;height:18px}
}
@keyframes hero-scroll-bounce{
  0%, 100% { transform:translateX(-50%) translateY(0); }
  50%      { transform:translateX(-50%) translateY(6px); }
}
@media (prefers-reduced-motion: reduce){
  .hero__scroll{animation:none}
}
.hero > .container{flex:1}
.hero h1 .accent{
  color:var(--sage-deep);
  /* Visual subhead: smaller and lighter weight so it reads as a
     supporting line under the main display headline. */
  display:block;
  font-size:.55em;
  font-weight:500;
  line-height:1.2;
  letter-spacing:-.01em;
  margin-top:.5em;
}
.hero .lede{margin-top:1rem;margin-bottom:2rem}
/* Keep both hero CTAs on one line on mobile. */
.hero .wp-block-buttons{flex-wrap:nowrap;gap:10px}
@media (max-width:480px){
  .hero .wp-block-button .wp-block-button__link{padding:13px 20px;font-size:.95rem}
}
.hero__grid{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:clamp(32px,5vw,72px);
  align-items:center;
}
.hero__copy{display:flex;flex-direction:column;gap:0}
.hero__image{
  margin:0;
  max-width:500px;
  justify-self:end;
  border-radius:var(--r);
  overflow:hidden;
  box-shadow:0 30px 80px -30px rgba(31,36,33,.30), 0 0 0 1px var(--line);
}
.hero__image img{
  width:100%;height:auto;display:block;
  aspect-ratio:4/5;
  object-fit:cover;
}
@media (max-width:820px){
  .hero__grid{grid-template-columns:1fr;gap:32px}
  .hero__image{max-width:520px;margin:0 auto;justify-self:center}
}

/* Locations */
.locations{
  /* Fill the viewport so the services eyebrow doesn't peek below the cards. */
  min-height:min(720px, calc(100svh - 72px));
  display:flex;
  align-items:center;
}
.locations > .container{flex:1}
.locations__grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:24px;
}
.location-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:28px;
  /* Grid with a 1fr spacer row pins .location-card__foot to the card bottom. */
  display:grid !important;
  grid-template-rows:auto auto auto auto 1fr auto;
  align-items:start;
  transition:border-color .25s var(--ease),transform .25s var(--ease);
}
.location-card__foot{
  grid-row:6;
  margin-top:0 !important;
  padding-top:12px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.location-card__foot-link{
  display:block;
  color:var(--sage-deep);
  font-weight:600;
  text-decoration:none;
}
.location-card__foot-link:hover{text-decoration:underline}
.location-card__foot-link--muted{
  color:var(--ink-dim);
  font-weight:400;
  font-style:italic;
}
.location-card:hover{border-color:var(--sage);transform:translateY(-2px)}
.location-card h3{margin-bottom:.4em}

/* Horizontal in-home callout shown below the locations grid. Same
   pill-style treatment as the home services teaser used to have for
   in-home, but anchored to the WHERE block where it belongs. */
.pill-callout{
  display:flex;
  align-items:center;
  gap:18px;
  padding:18px 24px;
  margin-top:24px;
  background:var(--sage-2);
  border:1px solid rgba(255,255,255,.15);
  border-radius:14px;
  color:var(--bg);
  text-decoration:none;
  transition:background .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease);
}
.pill-callout:hover{
  background:var(--sage-deep);
  border-color:rgba(255,255,255,.3);
  transform:translateY(-2px);
  color:var(--bg);
}
.pill-callout__icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:10px;
  background:var(--bg);color:var(--ink);flex:0 0 auto;
}
.pill-callout__icon svg{width:22px;height:22px}
.pill-callout__copy{display:flex;flex-direction:column;gap:2px}

/* Pill section wrapper: gives the pill clear breathing room when it sits
   between two major sections (prose / testimonials / CTA band). */
.pill-section{padding:clamp(40px,5vw,72px) 0}
.pill-section .pill-callout{margin-top:0}
.pill-callout__title{font-family:'Outfit','Inter',sans-serif;font-weight:600;font-size:1.05rem;letter-spacing:-.01em}
.pill-callout__lede{color:rgba(250,248,243,.78);font-size:.95rem}
.pill-callout__arrow{
  margin-left:auto;
  font-size:1.4rem;
  color:var(--bg);
  transition:transform .25s var(--ease);
}
.pill-callout:hover .pill-callout__arrow{transform:translateX(4px)}
@media (max-width:640px){
  .pill-callout{flex-direction:column;align-items:flex-start;gap:8px;padding:18px;position:relative}
  /* Stacked layout leaves the top-right corner empty; pin the arrow there
     so the card still reads as a clickable link that goes somewhere. */
  .pill-callout__arrow{position:absolute;top:18px;right:20px;margin-left:0}
}
.location-card .badge{
  display:inline-block;font-size:.72rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;
  color:var(--sage-deep);
  background:var(--sage-soft);
  padding:4px 10px;border-radius:999px;
  margin-bottom:14px;
}
.location-card p{color:var(--ink-dim);margin:0 0 .6em}
.location-card p:last-child{margin:0}

/* Services */
.services{
  /* Fill the viewport so the contact eyebrow doesn't peek above the fold. */
  min-height:min(720px, calc(100svh - 72px));
  display:flex;
  align-items:center;
}
.services > .container{flex:1}
.services__grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:16px;
}
.service-pill{
  display:flex;
  flex-direction:column;
  gap:6px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
  padding:22px 22px 24px;
  color:var(--ink);
  transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease);
}
.service-pill:hover{
  border-color:var(--sage);
  transform:translateY(-2px);
  box-shadow:0 18px 40px -28px rgba(31,36,33,.25);
}
.service-pill__icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:40px;height:40px;
  border-radius:10px;
  background:var(--sage-soft);
  color:var(--sage-deep);
  margin-bottom:8px;
  transition:background .25s var(--ease),color .25s var(--ease);
}
.service-pill__icon svg{width:22px;height:22px}
.service-pill:hover .service-pill__icon{
  background:var(--sage);
  color:#fff;
}
.service-pill strong{
  display:block;
  font-family:'Outfit','Inter',sans-serif;
  font-weight:600;
  font-size:1.05rem;
  letter-spacing:-.01em;
  margin:0;
}
.service-pill--feature{
  background:var(--sage-soft);
  border-color:var(--sage);
  /* Span the full row on desktop so it reads as a featured callout
     rather than an orphaned tile at the bottom of a wrapped grid. */
  grid-column:1 / -1;
  flex-direction:row;
  align-items:center;
  gap:18px;
  padding:18px 24px;
}
.service-pill--feature .service-pill__icon{
  background:var(--sage);
  color:#fff;
  margin-bottom:0;
}
.service-pill--feature strong{flex:0 0 auto}
.service-pill--feature span:not(.service-pill__icon){flex:1 1 auto}
.service-pill--feature::after{
  content:"→";
  color:var(--sage-deep);
  font-size:1.4rem;
  margin-left:8px;
  transition:transform .25s var(--ease);
}
.service-pill--feature:hover{
  background:#fff;
  border-color:var(--sage-deep);
}
.service-pill--feature:hover::after{transform:translateX(4px)}
@media (max-width:640px){
  .service-pill--feature{flex-direction:column;align-items:flex-start;gap:6px}
  .service-pill--feature::after{display:none}
}
.service-pill span:not(.service-pill__icon){
  color:var(--ink-dim);
  font-size:.92rem;
  font-weight:400;
  line-height:1.5;
}

/* FAQ */
.faq__list{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:2rem;
  max-width:820px;
}
.faq__item{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:0;
  transition:border-color .2s var(--ease);
}
.faq__item[open]{
  border-color:var(--sage);
}
.faq__q{
  cursor:pointer;
  list-style:none;
  padding:20px 24px;
  font-family:'Outfit','Inter',sans-serif;
  font-weight:600;
  font-size:1.05rem;
  letter-spacing:-.01em;
  color:var(--ink);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.faq__q::-webkit-details-marker{display:none}
.faq__q::after{
  content:"+";
  font-family:'Outfit',sans-serif;
  font-weight:400;
  font-size:1.5rem;
  color:var(--sage-deep);
  transition:transform .25s var(--ease);
  flex-shrink:0;
}
.faq__item[open] .faq__q::after{
  transform:rotate(45deg);
}
.faq__a{
  padding:0 24px 22px;
  color:var(--ink-dim);
}
.faq__a p{margin:0}
.faq__more{
  margin-top:24px;
  color:var(--ink-dim);
  font-size:.98rem;
}
.faq__more a{
  color:var(--sage-deep);
  font-weight:600;
  border-bottom:1px solid var(--line-strong);
  transition:border-color .2s var(--ease);
}
.faq__more a:hover{border-color:var(--sage)}

/* Contact */
.contact{
  background:var(--bg-2);
}
.contact__grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:32px;
  margin-top:2rem;
}
.contact__item .contact__label{font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-dim);margin:0 0 .5em;font-family:'Inter',sans-serif;font-weight:600}
.contact__item p,
.contact__item a{
  font-size:1.15rem;font-weight:500;color:var(--ink);
}
.contact__item a:hover{color:var(--sage-deep)}
.contact__link-ext{
  text-decoration:underline;
  text-decoration-color:var(--line-strong);
  text-decoration-thickness:1px;
  text-underline-offset:4px;
  transition:text-decoration-color .2s var(--ease);
}
.contact__link-ext:hover{text-decoration-color:var(--sage)}
.contact__link-ext span{color:var(--sage-deep);font-weight:600}
.contact__social{
  list-style:none;margin:0;padding:0;
  display:flex;gap:10px;
}
.contact__social a{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:50%;
  border:1px solid var(--line-strong);
  color:var(--ink);
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);
}
.contact__social a:hover{
  background:var(--sage-soft);
  border-color:var(--sage);
  color:var(--sage-deep);
}
.contact__social svg{width:18px;height:18px}

/* Footer */
.footer{
  background:var(--ink);
  color:var(--bg);
  padding:64px 0 32px;
}
.footer__inner{
  display:flex;
  flex-direction:column;
  gap:32px;
}
.footer__cols{
  display:grid;
  grid-template-columns:1.4fr repeat(3, 1fr);
  gap:40px;
}
.footer__col h4{
  font-family:'Outfit',sans-serif;
  font-size:.85rem;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:rgba(250,248,243,.6);
  margin:0 0 1em;
  font-weight:600;
}
.footer__col h4 a{color:inherit;text-decoration:none}
.footer__col h4 a:hover{color:var(--sage-soft)}
.footer__col ul{list-style:none;margin:0;padding:0}
.footer__col li{margin-bottom:.5em}
.footer__col li a,
.footer__col p a{
  color:var(--bg);
  font-size:.95rem;
}
.footer__col li a:hover,
.footer__col p a:hover{color:var(--sage-soft)}
.footer__col--brand p{color:rgba(250,248,243,.7);margin:1em 0;font-size:.95rem;line-height:1.5}
.footer__col--brand .footer__social{margin-top:1.4em}
.footer__logo{display:inline-block;margin-bottom:.4em}
.footer__logo img{height:42px;width:auto;opacity:.95;filter:invert(0)}
.footer__book{
  display:inline-block;
  padding:11px 22px;
  background:var(--sage-soft);
  color:var(--ink) !important;
  border-radius:999px;
  font-weight:600;
  font-size:.95rem;
  transition:background .2s var(--ease);
}
.footer__book:hover{background:#fff;color:var(--ink) !important}
.footer p{color:rgba(250,248,243,.7);margin:0}
.footer a{color:var(--bg)}
.footer a:hover{color:var(--sage-soft)}
@media (max-width:820px){
  .footer__cols{grid-template-columns:1fr 1fr;gap:32px 24px}
}
@media (max-width:520px){
  .footer__cols{grid-template-columns:1fr}
}
.footer__social{
  list-style:none;margin:0;padding:0;
  display:flex;gap:12px;
}
.footer__social a{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:50%;
  border:1px solid rgba(250,248,243,.20);
  color:var(--bg);
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);
}
.footer__social a:hover{
  background:rgba(250,248,243,.08);
  border-color:var(--sage-soft);
  color:var(--sage-soft);
}
.footer__social svg{width:18px;height:18px}
.footer__base{
  margin-top:8px;padding-top:20px;
  border-top:1px solid rgba(250,248,243,.12);
  width:100%;
  font-size:.85rem;color:rgba(250,248,243,.6);
  text-align:center;
}
.footer__base p{color:inherit}

/* Page hero (non-front pages). Two visual modes: text-only band, or
   two-column copy + image. Mode picked by .page-hero--has-image. */
.page-hero{
  /* Sage-tinted band so the hero reads as a distinct color zone
     against the cream body. */
  background:
    radial-gradient(1100px 600px at 78% -15%, rgba(112,126,100,.22) 0%, transparent 55%),
    linear-gradient(180deg, var(--bg) 0%, var(--sage-soft) 100%);
  padding-top:clamp(40px,5vw,72px);
  padding-bottom:clamp(40px,5vw,72px);
  border-bottom:1px solid var(--line);
}
.page-hero__grid{
  display:block;
}
.page-hero--has-image .page-hero__grid{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:clamp(32px,5vw,72px);
  align-items:start; /* copy hugs the top so the eyebrow + h1 lead the band */
}
.page-hero__copy{
  max-width:60ch;
  padding-top:clamp(8px,1.5vw,20px); /* small breath, not vertical-centered against the tall photo */
}
.page-hero__trail{display:none}
.page-hero h1{
  font-size:clamp(2.2rem,4.6vw,3.6rem);
  margin-bottom:.4em;
  max-width:18ch;
}
.page-hero .lede{margin-top:.6rem}
.page-hero__image{
  margin:0;
  border-radius:var(--r);
  overflow:hidden;
  box-shadow:0 30px 80px -30px rgba(31,36,33,.30), 0 0 0 1px var(--line);
  /* Justify image to the right edge of its grid cell so the band feels
     anchored even when content lengths differ. */
  justify-self:end;
  width:100%;
  max-width:520px;
}
.page-hero__image img{
  width:100%;
  height:auto;
  display:block;
  aspect-ratio:4/5;
  object-fit:cover;
}
@media (max-width:820px){
  .page-hero--has-image .page-hero__grid{
    grid-template-columns:1fr;
    gap:28px;
  }
  .page-hero__image{
    max-width:none;
    justify-self:stretch;
  }
  .page-hero__image img{aspect-ratio:5/4}
}

/* Section prose (single-column readable width) */
.section-prose{padding-top:clamp(40px,5vw,72px);padding-bottom:clamp(40px,5vw,72px)}
.section-prose > .container > .prose{max-width:68ch;margin:0 auto}
.section-prose .prose h2{margin-top:1.6em}
.section-prose .prose h2:first-child{margin-top:0}
.section-prose .prose h3{margin-top:1.4em;font-size:1.2rem}
.section-prose .prose ul{padding-left:1.2em}
.section-prose .prose li{margin-bottom:.4em}
main > section + .section-prose{border-top:1px solid var(--line)}

/* Two-column intro (image right, copy left) */
.section-split{padding-top:clamp(40px,5vw,72px);padding-bottom:clamp(40px,5vw,72px)}
.section-split .split{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:clamp(32px,5vw,64px);
  align-items:center;
}
.section-split .split__copy{max-width:60ch}
.section-split .split__image{
  margin:0;
  border-radius:var(--r);
  overflow:hidden;
  box-shadow:0 30px 80px -30px rgba(31,36,33,.30), 0 0 0 1px var(--line);
}
.section-split .split__image img{width:100%;display:block;aspect-ratio:4/3;object-fit:cover}
@media (max-width:820px){
  .section-split .split{grid-template-columns:1fr;gap:32px}
}

/* Founders photo, centered inside the About founding story. Stays within
   the prose column so it reads as one cohesive centered section. */
.founders-photo{max-width:380px;margin:2.6em auto 0}
.founders-photo img{
  width:100%;height:auto;display:block;
  border-radius:var(--r);
  box-shadow:0 30px 80px -30px rgba(31,36,33,.30), 0 0 0 1px var(--line);
}
.founders-photo figcaption{
  margin-top:.9em;
  text-align:center;
  font-size:.85rem;
  color:var(--ink-dim);
  font-family:'Inter',sans-serif;
}

/* Card grids (services hub, locations hub, team). */
.card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:20px;
  margin-top:2rem;
}
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:28px;
  display:flex;
  flex-direction:column;
  gap:10px;
  transition:border-color .25s var(--ease),transform .25s var(--ease);
}
.card:hover{border-color:var(--sage);transform:translateY(-2px)}
.card h3{margin:0 0 .2em;font-size:1.25rem}
.card p{color:var(--ink-dim);margin:0}
.card__foot{
  margin-top:auto;
  padding-top:14px;
  font-weight:600;
  color:var(--sage-deep);
}
.card__foot::after{
  content:" \2192";
  transition:margin .2s var(--ease);
}
.card:hover .card__foot::after{margin-left:4px}
.card__badge{
  align-self:flex-start;
  font-size:.7rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;
  color:var(--sage-deep);
  background:var(--sage-soft);
  padding:4px 10px;border-radius:999px;
}

/* Conditions / bullets two-column list (service pages) */
.cond-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:8px 32px;
  margin-top:1.2em;
}
.cond-grid li{list-style:none;padding-left:24px;position:relative;color:var(--ink-dim);margin-bottom:.3em}
.cond-grid li::before{
  content:"";
  position:absolute;left:2px;top:.6em;
  width:8px;height:8px;border-radius:50%;
  background:var(--sage);
}

/* Person card (team page) */
.team-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:24px;
  margin-top:2rem;
}
@media (max-width:820px){
  /* The hero band stacks directly above content that is often another photo
     (team headshots, location shots). Drop the doubled hairline (the hero
     already has its own border-bottom) and give the first card clear air so
     two stacked photos read as separate zones, not one cramped block. */
  main > section.page-hero + .section-prose{border-top:0}
  .section-prose .team-grid{margin-top:clamp(28px,7vw,40px)}
}
.person{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  box-shadow:0 1px 2px rgba(31,36,33,.04), 0 6px 24px -16px rgba(31,36,33,.18);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.person:hover{
  transform:translateY(-3px);
  box-shadow:0 2px 4px rgba(31,36,33,.06), 0 24px 44px -18px rgba(31,36,33,.30);
  border-color:var(--line-strong);
}
.person__photo{
  /* Square headshot card. The bundled team webps are 600x600 face-centered,
     but the library is owner-editable, so an owner may upload a taller
     portrait. The img below pins the crop to the top (heads sit at the top of
     a headshot) so a non-square upload clips the torso, never the face. */
  aspect-ratio:1/1;
  background:linear-gradient(135deg, var(--sage-soft) 0%, var(--bg-2) 100%);
  display:flex;align-items:center;justify-content:center;
  color:var(--sage-deep);
  font-family:'Outfit',sans-serif;
  font-size:1.8rem;font-weight:600;
  letter-spacing:.04em;
  border-bottom:1px solid var(--line);
  opacity:.9;
  overflow:hidden;
}
.person__photo img{
  width:100%;height:100%;object-fit:cover;object-position:center top;display:block;
}
.person:has(img.person__photo) .person__photo,
.person__photo:has(img){
  background:none;
  opacity:1;
  padding:0;
}
/* Equal heights across a row. */
.team-grid{align-items:stretch}
.person{height:100%}
.person__body{padding:24px 24px 0;display:flex;flex-direction:column;flex:1}
.person__name{font-family:'Outfit',sans-serif;font-weight:700;font-size:1.3rem;letter-spacing:-.01em;margin:0 0 .2em;color:var(--ink);line-height:1.2}
.person__role{font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--sage-deep);font-weight:700;margin:0 0 1.1em}
.person__specialties{
  margin:0 0 1.1em;
  padding:.7em .9em;
  border-radius:8px;
  background:var(--bg-2);
  font-size:.88rem;line-height:1.5;color:var(--ink);
}
.person__specialties-label{
  display:block;
  font-size:.66rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.16em;
  color:var(--sage-deep);
  margin:0 0 .3em;
}
/* Bio shows a summary (first paragraph) by default and reveals the rest
   on click via the toggle button. .is-expanded class is added by JS in
   assets/js/team.js. Bio fills the available vertical space so the CTA
   below sits at the card's bottom edge. */
.person__bio{
  flex:1;
  color:var(--ink-dim);margin:0 0 1em;font-size:.92rem;line-height:1.55;
}
.person__bio-rest{display:none}
.person__bio.is-expanded .person__bio-rest{display:block}
.person__bio p{margin:0 0 .6em}
.person__bio p:last-child{margin:0}
.person__bio-toggle{
  margin-top:.6em;
  background:none;border:0;padding:0;cursor:pointer;
  color:var(--sage-deep);
  font-family:inherit;font-size:.85rem;font-weight:600;letter-spacing:.01em;
  display:inline-flex;align-items:center;gap:.3em;
}
.person__bio-toggle::after{content:"↓";transition:transform .2s var(--ease)}
.person__bio.is-expanded .person__bio-toggle::after{transform:rotate(180deg)}
.person__bio-toggle:hover{color:var(--sage-2)}
.person__cta{margin:0;padding:0 0 24px}
.person__book{
  display:flex;align-items:center;justify-content:center;gap:.4em;
  padding:12px 16px;border-radius:10px;
  background:var(--sage-2);color:#fff;
  font-size:.92rem;font-weight:600;letter-spacing:.02em;
  border:1px solid transparent;
  transition:background .2s var(--ease),transform .15s var(--ease),box-shadow .2s var(--ease);
}
.person__book:hover{background:var(--sage-deep);color:#fff;transform:translateY(-1px);box-shadow:0 6px 14px -6px rgba(31,36,33,.30)}

/* CTA band (closing section on most pages). Full-bleed muted-green band
   that sits flush against the dark footer; color shift is the structural
   marker, no gap needed. The width/margin trick escapes the constrained
   post-content layout (max-width 1200px) so the band runs edge-to-edge. */
.cta-band{
  background:var(--sage-2);
  color:var(--bg);
  padding:clamp(48px,6vw,80px) 0;
  text-align:center;
  width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  max-width:none;
}
.cta-band h2{color:var(--bg);margin:0 0 .4em}
.cta-band p{color:rgba(250,248,243,.78);max-width:48ch;margin:0 auto 1.6em}
.cta-band p a{color:var(--bg);text-decoration:underline;text-underline-offset:3px}
.cta-band p a:hover{color:#fff;text-decoration-thickness:2px}
.cta-band .wp-block-buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.cta-band .wp-block-button.is-style-btn-primary .wp-block-button__link{
  background:var(--sage-soft);
  color:var(--ink);
  border-color:var(--sage-soft);
}
.cta-band .wp-block-button.is-style-btn-primary .wp-block-button__link:hover{
  background:#fff;
  color:var(--ink);
  border-color:#fff;
}
.cta-band .wp-block-button.is-style-btn-ghost .wp-block-button__link{
  color:var(--bg);
  border-color:rgba(250,248,243,.4);
}
.cta-band .wp-block-button.is-style-btn-ghost .wp-block-button__link:hover{
  background:rgba(250,248,243,.08);
  border-color:var(--bg);
  color:var(--bg);
}

/* Contact page sections (channel band, social proof, form card,
   FAQ band, locations band). Lives below the page hero. */
.contact-channels-section,
.testimonial-section,
.contact-form-section,
.contact-locations-section{
  padding-top:clamp(40px,5vw,72px);
  padding-bottom:clamp(40px,5vw,72px);
}

/* Per-page hero image overrides. The default page-hero crops the photo
   to 4:5 portrait, which works for clean studio portraits but cuts off
   the head/sides on action shots framed wider. */
.page-physical-therapy .page-hero__image img{
  aspect-ratio:3/4;
  object-position:center 35%;
}
.page-physical-therapy .page-hero__image{max-width:480px}
/* Contact hero is a seated portrait (Gina). Keep the 4/5 portrait crop at
   every breakpoint so the mobile landscape rule (5/4) doesn't clip her head;
   anchor toward the top for extra safety. */
.page-contact .page-hero__image img{
  aspect-ratio:4/5;
  object-position:center top;
}
.testimonial-section{
  background:
    radial-gradient(900px 500px at 75% -10%, rgba(112,126,100,.18) 0%, transparent 60%),
    var(--sage-soft);
  position:relative;
}
.contact-form-section{background:var(--bg)}
.contact-locations-section{background:var(--bg-2)}

/* Channel-choice band: three tiles above the fold. The first tile
   (Book) gets a sage tint as the primary action; the other two are
   surface-colored to read as secondary but still tappable. */
.contact-channels{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:18px;
  margin-top:-32px; /* overlap the hero shadow */
  position:relative;
  z-index:2;
}
.contact-channel{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
  padding:24px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  color:var(--ink);
  text-decoration:none;
  transition:border-color .25s var(--ease), transform .25s var(--ease), box-shadow .25s var(--ease);
  box-shadow:0 18px 40px -28px rgba(31,36,33,.25);
}
.contact-channel:hover{
  border-color:var(--sage);
  transform:translateY(-2px);
  color:var(--ink);
  box-shadow:0 22px 50px -28px rgba(31,36,33,.35);
}
.contact-channel__icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:10px;
  background:var(--sage-soft);color:var(--sage-deep);
  margin-bottom:8px;
}
.contact-channel__icon svg{width:22px;height:22px}
.contact-channel__title{
  font-family:'Outfit','Inter',sans-serif;
  font-weight:600;
  font-size:1.15rem;
  letter-spacing:-.01em;
  color:var(--ink);
}
.contact-channel__lede{color:var(--ink-dim);font-size:.95rem}
@media (max-width:820px){
  .contact-channels{grid-template-columns:1fr;margin-top:-20px;gap:14px}
}

/* Aggregate Google rating line above the testimonial strip. */
.testimonial-rating{
  display:flex;
  align-items:center;
  gap:10px;
  margin:8px 0 0;
  font-size:1.02rem;
  color:var(--ink-dim);
  flex-wrap:wrap;
}
.testimonial-rating__stars{
  display:inline-flex;
  align-items:center;
  gap:2px;
  line-height:1;
}
.testimonial-rating__star{
  color:var(--gold);
  font-size:1.3rem;
  line-height:1;
}
.testimonial-rating strong{
  color:var(--ink);
  font-family:'Outfit','Inter',sans-serif;
  font-weight:600;
  font-size:1.15rem;
  letter-spacing:-.01em;
}

/* Social-proof testimonial strip. Cards float on the sage backdrop,
   each anchored by an oversized sage quote glyph in the upper-left. */
.testimonial-strip{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:24px;
  margin-top:2rem;
}
.testimonial-card{
  position:relative;
  margin:0;
  padding:44px 28px 28px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  display:flex;
  flex-direction:column;
  gap:18px;
  overflow:hidden;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease);
  box-shadow:0 14px 30px -22px rgba(31,36,33,.20);
}
.testimonial-card:hover{
  transform:translateY(-4px);
  border-color:var(--sage);
  box-shadow:0 28px 60px -30px rgba(31,36,33,.40);
}
.testimonial-card__mark{
  position:absolute;
  top:-26px;
  left:14px;
  font-family:'Outfit','Inter',sans-serif;
  font-weight:700;
  font-size:9rem;
  line-height:1;
  color:var(--sage);
  opacity:.18;
  pointer-events:none;
  user-select:none;
}
.testimonial-card__q{
  margin:0;
  font-family:'Outfit','Inter',sans-serif;
  font-size:1.08rem;
  line-height:1.55;
  color:var(--ink);
  font-style:normal;
  font-weight:500;
  letter-spacing:-.005em;
  position:relative;
  z-index:1;
}
.testimonial-card__who{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin-top:auto;
  padding-top:12px;
  border-top:1px solid var(--line);
}
.testimonial-card__who strong{
  font-family:'Outfit',sans-serif;
  font-weight:600;
  color:var(--ink);
  font-size:1.05rem;
}
.testimonial-card__who span{
  color:var(--sage-deep);
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.14em;
  font-weight:600;
}
@media (max-width:820px){
  .testimonial-strip{
    grid-template-columns:none;
    grid-auto-flow:column;
    grid-auto-columns:82%;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    margin-left:calc(-1 * clamp(24px, 6vw, 96px));
    margin-right:calc(-1 * clamp(24px, 6vw, 96px));
    padding:0 clamp(24px, 6vw, 96px) 12px;
    /* Without this, scroll-snap-align:start snaps the first card past the
       left padding to the screen edge. scroll-padding insets the snap port
       so the first card lines up with the heading. */
    scroll-padding-left:clamp(24px, 6vw, 96px);
    gap:16px;
  }
  .testimonial-card{scroll-snap-align:start}
  .testimonial-card__mark{font-size:7rem;top:-18px}
}

/* Single-quote variant. Used when a page only has one strong testimonial
   that fits (e.g. /services/golf-performance/ where Chris is THE golf
   patient quote). One big featured card centered, larger quote text. */
.testimonial-section--single .testimonial-strip{
  display:block;
  max-width:760px;
  margin-left:auto;
  margin-right:auto;
}
.testimonial-section--single .testimonial-card{
  padding:60px 40px 36px;
}
.testimonial-section--single .testimonial-card__mark{
  font-size:12rem;
  top:-38px;
  left:22px;
  opacity:.16;
}
.testimonial-section--single .testimonial-card__q{
  font-size:1.35rem;
  line-height:1.5;
}
.testimonial-section--single .testimonial-card__who{
  flex-direction:row;
  align-items:baseline;
  gap:14px;
}
.testimonial-section--single .testimonial-card__who strong{font-size:1.15rem}
@media (max-width:820px){
  .testimonial-section--single .testimonial-card{padding:44px 24px 28px}
  .testimonial-section--single .testimonial-card__mark{font-size:8rem;top:-24px}
  .testimonial-section--single .testimonial-card__q{font-size:1.15rem}
  .testimonial-section--single .testimonial-card__who{flex-direction:column;align-items:flex-start;gap:2px}
}

/* Form section card. Centers the form within a readable width. */
.contact-form-card{
  max-width:760px;
  margin:0 auto;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:clamp(28px,4vw,48px);
  box-shadow:0 24px 50px -32px rgba(31,36,33,.20);
}
.contact-form-card .eyebrow{margin-bottom:.6em}
.contact-form-card h2{margin-bottom:.3em}
.contact-form-card .lede{margin-top:.4em;margin-bottom:0}

/* Locations + hours band: compact 3-column. */
.contact-locations{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:20px;
  margin-top:2rem;
}
.contact-locations__item{
  padding:24px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  display:flex;
  flex-direction:column;
  gap:6px;
}
.contact-locations__badge{
  font-size:.72rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;
  color:var(--sage-deep);
  background:var(--sage-soft);
  padding:4px 10px;border-radius:999px;
  align-self:flex-start;
  margin:0 0 8px;
}
.contact-locations__item h3{margin:0 0 .4em;font-size:1.15rem}
.contact-locations__addr,
.contact-locations__hours,
.contact-locations__lead{
  margin:0;
  color:var(--ink-dim);
  font-size:.95rem;
  line-height:1.5;
}
.contact-locations__lead{margin-top:4px}
.contact-locations__foot{margin-top:auto;padding-top:14px;font-weight:600}
.contact-locations__foot a{
  color:var(--sage-deep);
  border-bottom:1px solid var(--line-strong);
  padding-bottom:1px;
  transition:border-color .2s var(--ease);
}
.contact-locations__foot a:hover{border-color:var(--sage)}
@media (max-width:820px){
  .contact-locations{grid-template-columns:1fr}
}

/* Contact form (used on /contact/) */
/* Contact form. The form is seeded into Fluent Forms and rendered by the
   enhancedpt/contact-form block; these rules map the site's input + button
   styling onto Fluent Forms' markup (.frm-fluent-form) so it stays on-brand. */
.frm-fluent-form{margin-top:2rem}
.frm-fluent-form .ff-el-group{margin-bottom:18px}
.frm-fluent-form .ff-el-input--label label{
  display:block;
  font-size:.82rem;font-weight:600;
  color:var(--ink-dim);
  text-transform:uppercase;letter-spacing:.1em;
  margin-bottom:6px;
}
.frm-fluent-form .ff-el-is-required.asterisk-right label:after{color:var(--sage-deep)}
.frm-fluent-form .ff-el-form-control{
  width:100%;
  font-family:inherit;font-size:1rem;
  padding:14px 16px;
  background:var(--surface);
  border:1px solid var(--line-strong);
  border-radius:10px;
  color:var(--ink);
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.frm-fluent-form .ff-el-form-control:focus{
  outline:none;
  border-color:var(--sage);
  box-shadow:0 0 0 3px var(--sage-soft);
}
.frm-fluent-form textarea.ff-el-form-control{min-height:160px;resize:vertical}
/* Submit: match the site's primary pill button (sage-2 for WCAG AA contrast).
   Element-qualified to outrank Fluent Forms' own .ff-btn-submit default. */
.frm-fluent-form button.ff-btn-submit{
  font-family:inherit;font-size:1rem;font-weight:700;letter-spacing:.01em;
  padding:16px 30px;
  background:var(--sage-2);
  color:#fff;
  border:1px solid var(--sage-2);border-radius:999px;
  cursor:pointer;
  box-shadow:0 8px 22px -10px rgba(31,36,33,.35);
  transition:background .2s var(--ease),border-color .2s var(--ease);
}
.frm-fluent-form button.ff-btn-submit:hover{background:var(--sage-deep);border-color:var(--sage-deep)}
/* Success + validation messaging in brand colors. */
.ff-message-success{
  padding:14px 18px;border-radius:10px;
  background:var(--sage-soft);color:var(--sage-deep);
  border:1px solid var(--sage);
  /* Breathing room below the 72px sticky header when the post-submit script
     scrolls this into view (adds to html{scroll-padding-top}). */
  scroll-margin-top:16px;
}
.frm-fluent-form .text-danger,
.frm-fluent-form .error{color:#7A2E2E}
@media (max-width:640px){
  .frm-fluent-form .ff-btn-submit{width:100%}
}

/* Location detail layout */
.loc-meta{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:24px;
  margin:2rem 0;
  padding:24px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
}
.loc-meta dt{
  font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;
  color:var(--ink-dim);font-weight:600;margin:0 0 .4em;
}
.loc-meta dd{margin:0;color:var(--ink);font-size:1.02rem;line-height:1.5}
.loc-meta dd a{color:var(--ink);font-weight:500}
.loc-meta dd a:hover{color:var(--sage-deep)}

/* "Available at..." location pills on service pages */
.where{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:1.2em 0;
}
.where__label{
  font-size:.8rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.14em;
  color:var(--muted);
  margin-right:6px;
}
.where__pill{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 14px;border-radius:999px;
  background:var(--sage-soft);color:var(--sage-deep);
  font-size:.9rem;font-weight:600;
  border:1px solid transparent;
  transition:border-color .2s var(--ease),background .2s var(--ease);
}
.where__pill:hover{border-color:var(--sage);background:#fff;color:var(--sage-deep)}

/* Block-editor compatibility overrides */
.wp-site-blocks > .wp-block-group,
.wp-site-blocks > .wp-block-template-part{margin-block-start:0}
.wp-block-buttons{margin-bottom:0}

@media (max-width:720px){
  .nav__links{font-size:1rem}
  .footer__base{flex-direction:column;align-items:flex-start}
}
