/* ==========================================================================
   The Acupuncture Clinic — Parker, CO
   Design system: "Warm Earth + Sage"
   ========================================================================== */

/* ---------- Tokens ---------- */
:root{
  --ink:        #1C211E;
  --ink-soft:   #46504A;
  --ink-mute:   #566159;

  --sage-900:   #22302A;
  --sage-800:   #2C3E35;
  --sage-700:   #3C5648;
  --sage-500:   #5F8471;
  --sage-300:   #B4C9BC;
  --sage-100:   #DDE7E0;

  --sand:       #F4EEE3;
  --sand-deep:  #E9DFCE;
  --cream:      #FCFAF6;
  --paper:      #FFFFFF;

  --terra:      #B4552F;
  --terra-soft: #D98B62;
  --clay:       #C98B5E;
  --gold:       #B98F3C;

  --line:       #E2DACB;
  --line-soft:  #EFE9DD;

  --ff-display: "Fraunces", "Iowan Old Style", Georgia, serif;
  --ff-body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  --shadow-sm:  0 1px 2px rgba(28,33,30,.05), 0 2px 8px rgba(28,33,30,.04);
  --shadow-md:  0 2px 4px rgba(28,33,30,.04), 0 12px 32px rgba(28,33,30,.08);
  --shadow-lg:  0 4px 8px rgba(28,33,30,.04), 0 24px 64px rgba(28,33,30,.12);

  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 24px;
  --r-xl: 36px;

  --wrap: 1200px;
  --gut: clamp(20px, 5vw, 56px);

  --ease: cubic-bezier(.22,.61,.36,1);
  --header-h: 76px;
}

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 20px); }
body{
  margin:0;
  font-family:var(--ff-body);
  font-size:17px;
  line-height:1.7;
  color:var(--ink-soft);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; cursor:pointer; border:0; background:none; color:inherit; }
input,textarea,select{ font:inherit; color:inherit; }
ul,ol{ margin:0; padding:0; list-style:none; }
figure{ margin:0; }

/* ---------- Type ---------- */
h1,h2,h3,h4{
  font-family:var(--ff-display);
  color:var(--sage-900);
  font-weight:500;
  line-height:1.1;
  letter-spacing:-.015em;
  margin:0 0 .5em;
}
h1{ font-size:clamp(2.6rem, 6vw, 4.4rem); letter-spacing:-.03em; }
h2{ font-size:clamp(2rem, 4vw, 3rem); letter-spacing:-.025em; }
h3{ font-size:clamp(1.25rem, 2vw, 1.6rem); }
h4{ font-size:1.05rem; }
p{ margin:0 0 1.1em; }
p:last-child{ margin-bottom:0; }
strong{ color:var(--sage-900); font-weight:600; }

.eyebrow{
  display:inline-flex; align-items:center; gap:.6em;
  font-family:var(--ff-body);
  font-size:.72rem; font-weight:600;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--terra);
  margin:0 0 1.1rem;
}
.eyebrow::before{
  content:""; width:26px; height:1px; background:var(--terra); opacity:.5;
}
.eyebrow--center::before{ display:none; }

.lede{ font-size:clamp(1.05rem,1.6vw,1.22rem); line-height:1.65; color:var(--ink-soft); }
.muted{ color:var(--ink-mute); }
.serif-accent{ font-family:var(--ff-display); font-style:italic; font-weight:400; color:var(--terra); }

/* ---------- Layout ---------- */
.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gut); }
.wrap--narrow{ max-width:820px; }
.section{ padding-block:clamp(64px,9vw,120px); position:relative; }
.section--tight{ padding-block:clamp(48px,6vw,80px); }
.section--sand{ background:var(--sand); }
.section--cream{ background:var(--cream); }
.section--paper{ background:var(--paper); }
.section--dark{ background:var(--sage-900); color:var(--sage-100); overflow:hidden; }
.section--dark h2,.section--dark h3{ color:var(--cream); }
.section--dark .eyebrow{ color:var(--terra-soft); }
.section--dark .eyebrow::before{ background:var(--terra-soft); }

.sec-head{ max-width:660px; margin-bottom:clamp(36px,5vw,60px); }
.sec-head--center{ margin-inline:auto; text-align:center; }
.sec-head p{ color:var(--ink-mute); }

.grid{ display:grid; gap:clamp(20px,2.6vw,32px); }
.g-2{ grid-template-columns:repeat(2,1fr); }
.g-3{ grid-template-columns:repeat(3,1fr); }

/* Paper grain overlay — subtle organic texture */
.grain::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.35; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.6em;
  padding:.92em 1.7em;
  border-radius:100px;
  font-size:.94rem; font-weight:600; letter-spacing:.005em;
  transition:all .28s var(--ease);
  white-space:nowrap; text-align:center;
  border:1.5px solid transparent;
}
.btn svg{ width:16px; height:16px; flex:none; transition:transform .28s var(--ease); }
.btn:hover svg{ transform:translateX(3px); }

.btn--primary{ background:var(--sage-800); color:var(--cream); box-shadow:var(--shadow-sm); }
.btn--primary:hover{ background:var(--sage-900); transform:translateY(-2px); box-shadow:var(--shadow-md); }

.btn--terra{ background:var(--terra); color:#fff; box-shadow:var(--shadow-sm); }
.btn--terra:hover{ background:#9E4826; transform:translateY(-2px); box-shadow:var(--shadow-md); }

.btn--ghost{ border-color:var(--sage-700); color:var(--sage-800); }
.btn--ghost:hover{ background:var(--sage-800); color:var(--cream); border-color:var(--sage-800); transform:translateY(-2px); }

.btn--light{ background:var(--cream); color:var(--sage-900); }
.btn--light:hover{ background:#fff; transform:translateY(-2px); box-shadow:var(--shadow-md); }

.btn--outline-light{ border-color:rgba(252,250,246,.4); color:var(--cream); }
.btn--outline-light:hover{ background:rgba(252,250,246,.1); border-color:var(--cream); }

.btn--sm{ padding:.7em 1.3em; font-size:.86rem; }
.btn-row{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; }
.btn-row--center{ justify-content:center; }

.link-arrow{
  display:inline-flex; align-items:center; gap:.5em;
  font-weight:600; font-size:.92rem; color:var(--terra);
  border-bottom:1.5px solid transparent; padding-bottom:2px;
  transition:border-color .25s var(--ease), gap .25s var(--ease);
}
.link-arrow:hover{ border-color:var(--terra); gap:.85em; }
.link-arrow svg{ width:15px; height:15px; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(252,250,246,.82);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
}
.site-header.is-stuck{ border-bottom-color:var(--line); box-shadow:0 4px 24px rgba(28,33,30,.05); }
.header-inner{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  height:var(--header-h);
}

/* Logo */
.logo{ display:flex; align-items:center; gap:11px; flex:none; }
.logo-mark{
  width:38px; height:38px; flex:none;
  display:grid; place-items:center;
  border-radius:50%;
  background:var(--sage-800);
  transition:transform .4s var(--ease);
}
.logo:hover .logo-mark{ transform:rotate(-12deg); }
.logo-mark svg{ width:21px; height:21px; }
.logo-text{ display:flex; flex-direction:column; line-height:1; }
.logo-name{
  font-family:var(--ff-display); font-size:1.06rem; font-weight:600;
  color:var(--sage-900); letter-spacing:-.02em;
}
.logo-sub{
  font-size:.58rem; font-weight:600; letter-spacing:.19em;
  text-transform:uppercase; color:var(--ink-mute); margin-top:4px;
}

/* Nav */
.nav{ display:flex; align-items:center; gap:4px; margin-left:auto; }
.nav a{
  position:relative; padding:.5em .95em;
  font-size:.92rem; font-weight:500; color:var(--ink-soft);
  border-radius:100px; transition:color .22s var(--ease), background .22s var(--ease);
}
.nav a:hover{ color:var(--sage-900); background:var(--sand); }
.nav a[aria-current="page"]{ color:var(--sage-900); font-weight:600; }
.nav a[aria-current="page"]::after{
  content:""; position:absolute; left:50%; bottom:2px; transform:translateX(-50%);
  width:5px; height:5px; border-radius:50%; background:var(--terra);
}
.header-cta{ display:flex; align-items:center; gap:16px; flex:none; }
.header-phone{
  display:inline-flex; align-items:center; gap:.45em;
  font-size:.9rem; font-weight:600; color:var(--sage-800);
  transition:color .22s var(--ease);
}
.header-phone:hover{ color:var(--terra); }
.header-phone svg{ width:15px; height:15px; }

/* Burger */
.call-btn{
  display:none; width:44px; height:44px; border-radius:50%;
  align-items:center; justify-content:center;
  background:var(--terra); color:#fff;
  transition:background .22s var(--ease), transform .22s var(--ease);
}
.call-btn:hover{ background:#9E4826; transform:translateY(-2px); }
.call-btn svg{ width:18px; height:18px; }

.burger{
  display:none; width:44px; height:44px; border-radius:50%;
  align-items:center; justify-content:center; background:var(--sand);
  transition:background .22s var(--ease);
}
.burger:hover{ background:var(--sand-deep); }
.burger span{
  display:block; position:relative; width:19px; height:1.8px;
  background:var(--sage-900); border-radius:2px; transition:.3s var(--ease);
}
.burger span::before,.burger span::after{
  content:""; position:absolute; left:0; width:19px; height:1.8px;
  background:var(--sage-900); border-radius:2px; transition:.3s var(--ease);
}
.burger span::before{ top:-6px; }
.burger span::after{ top:6px; }
.burger[aria-expanded="true"] span{ background:transparent; }
.burger[aria-expanded="true"] span::before{ top:0; transform:rotate(45deg); }
.burger[aria-expanded="true"] span::after{ top:0; transform:rotate(-45deg); }

/* Mobile menu */
.mobile-menu{
  position:fixed; inset:var(--header-h) 0 0; z-index:99;
  background:var(--cream);
  padding:34px var(--gut) 40px;
  display:flex; flex-direction:column; gap:6px;
  transform:translateY(-14px); opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;
  overflow-y:auto;
}
.mobile-menu.is-open{ opacity:1; visibility:visible; transform:none; pointer-events:auto; }
.mobile-menu a.m-link{
  font-family:var(--ff-display); font-size:1.9rem; color:var(--sage-900);
  padding:.42em 0; border-bottom:1px solid var(--line-soft);
  display:flex; align-items:center; justify-content:space-between;
}
.mobile-menu a.m-link span{ font-family:var(--ff-body); font-size:.7rem; color:var(--ink-mute); letter-spacing:.12em; }
.mobile-menu .m-foot{ margin-top:auto; padding-top:32px; display:grid; gap:12px; }

/* ---------- Hero ---------- */
.hero{ position:relative; background:var(--sand); overflow:hidden; }
.hero-inner{
  display:grid; grid-template-columns:1.05fr .95fr;
  gap:clamp(32px,5vw,72px); align-items:center;
  padding-block:clamp(56px,8vw,104px);
}
.hero-copy{ position:relative; z-index:2; max-width:600px; }
.hero h1{ margin-bottom:.42em; }
.hero h1 em{
  font-style:italic; color:var(--terra); font-weight:400;
}
.hero .lede{ max-width:50ch; margin-bottom:2rem; }

.hero-meta{
  display:flex; flex-wrap:wrap; gap:8px 22px; margin-top:2.2rem;
  padding-top:1.7rem; border-top:1px solid var(--line);
}
.hero-meta li{
  display:flex; align-items:center; gap:.5em;
  font-size:.83rem; font-weight:600; color:var(--sage-700);
}
.hero-meta svg{ width:15px; height:15px; color:var(--terra); flex:none; }

/* Arched hero image — apothecary / moon-gate motif */
.hero-figure{ position:relative; }
.hero-arch{
  position:relative; aspect-ratio:4/5;
  border-radius:1000px 1000px var(--r-lg) var(--r-lg);
  overflow:hidden;
  background:linear-gradient(150deg,var(--sage-500),var(--sage-800));
  box-shadow:var(--shadow-lg);
}
.hero-arch img{ width:100%; height:100%; object-fit:cover; }
.hero-arch::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to top,rgba(34,48,42,.32),transparent 45%);
}
.hero-badge{
  position:absolute; left:-26px; bottom:44px; z-index:3;
  background:var(--paper); border-radius:var(--r-md);
  padding:16px 20px; box-shadow:var(--shadow-lg);
  display:flex; align-items:center; gap:13px; max-width:250px;
}
.hero-badge-num{
  font-family:var(--ff-display); font-size:2rem; line-height:1;
  color:var(--terra); font-weight:600;
}
.hero-badge-txt{ font-size:.78rem; line-height:1.35; color:var(--ink-mute); }
.hero-badge-txt strong{ display:block; font-size:.85rem; color:var(--sage-900); }

/* decorative rings */
.hero-ring{
  position:absolute; border:1px solid var(--sage-300); border-radius:50%;
  opacity:.4; pointer-events:none;
}
.hero-ring--1{ width:340px; height:340px; top:-130px; right:-110px; }
.hero-ring--2{ width:520px; height:520px; bottom:-300px; left:-180px; opacity:.25; }

/* ---------- Trust strip ---------- */
.trust{ background:var(--sage-900); color:var(--sage-100); padding-block:26px; overflow:hidden; }
.trust-track{
  display:flex; gap:56px; align-items:center;
  width:max-content; animation:marquee 42s linear infinite;
}
.trust:hover .trust-track{ animation-play-state:paused; }
@keyframes marquee{ to{ transform:translateX(calc(-50% - 28px)); } }
.trust-item{
  display:flex; align-items:center; gap:.6em;
  font-size:.78rem; font-weight:600; letter-spacing:.13em;
  text-transform:uppercase; color:var(--sage-300); white-space:nowrap;
}
.trust-item svg{ width:15px; height:15px; color:var(--terra-soft); flex:none; }
.trust-dot{ width:4px; height:4px; border-radius:50%; background:var(--sage-700); flex:none; }

/* ---------- Benefit cards ---------- */
.benefit{
  background:var(--paper); border:1px solid var(--line-soft);
  border-radius:var(--r-lg); padding:clamp(26px,3vw,36px);
  position:relative; overflow:hidden;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.benefit::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg,var(--terra),var(--clay));
  transform:scaleX(0); transform-origin:left; transition:transform .45s var(--ease);
}
.benefit:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); border-color:transparent; }
.benefit:hover::before{ transform:scaleX(1); }
.benefit-icon{
  width:52px; height:52px; border-radius:16px;
  background:var(--sand); display:grid; place-items:center;
  margin-bottom:22px; transition:background .35s var(--ease);
}
.benefit:hover .benefit-icon{ background:var(--sage-100); }
.benefit-icon svg{ width:25px; height:25px; color:var(--sage-700); }
.benefit h3{ margin-bottom:.55em; }
.benefit p{ font-size:.95rem; color:var(--ink-mute); }
.benefit-no{
  position:absolute; top:22px; right:26px;
  font-family:var(--ff-display); font-size:2.6rem; line-height:1;
  color:var(--sand-deep); font-weight:600;
}

/* ---------- Service cards ---------- */
.svc{
  position:relative; border-radius:var(--r-lg); overflow:hidden;
  background:var(--paper); border:1px solid var(--line-soft);
  display:flex; flex-direction:column;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.svc:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); }
.svc-media{ aspect-ratio:16/11; overflow:hidden; background:var(--sage-100); position:relative; }
.svc-media img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.svc:hover .svc-media img{ transform:scale(1.06); }
.svc-tag{
  position:absolute; top:14px; left:14px; z-index:2;
  background:rgba(252,250,246,.94); backdrop-filter:blur(6px);
  padding:.34em .82em; border-radius:100px;
  font-size:.68rem; font-weight:700; letter-spacing:.11em;
  text-transform:uppercase; color:var(--sage-800);
}
.svc-body{ padding:clamp(22px,2.4vw,30px); display:flex; flex-direction:column; flex:1; }
.svc-body h3{ margin-bottom:.5em; }
.svc-body p{ font-size:.94rem; color:var(--ink-mute); }
.svc-body .link-arrow{ margin-top:auto; padding-top:18px; align-self:flex-start; }
.svc-list{ margin:0 0 18px; display:grid; gap:8px; }
.svc-list li{
  display:flex; gap:.6em; font-size:.88rem; color:var(--ink-mute); line-height:1.5;
}
.svc-list li::before{
  content:""; flex:none; width:5px; height:5px; border-radius:50%;
  background:var(--terra); margin-top:.62em;
}

/* ---------- Split / feature rows ---------- */
.split{
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(32px,5vw,72px); align-items:center;
}
.split--rev .split-media{ order:2; }
.split-media{ position:relative; }
.split-media img{
  width:100%; aspect-ratio:4/3; object-fit:cover;
  border-radius:var(--r-lg); box-shadow:var(--shadow-md);
}
.split-media--arch img{ border-radius:1000px 1000px var(--r-lg) var(--r-lg); aspect-ratio:4/4.6; }
.split-stat{
  position:absolute; right:-20px; bottom:-20px;
  background:var(--sage-900); color:var(--cream);
  border-radius:var(--r-md); padding:20px 24px; box-shadow:var(--shadow-lg);
  max-width:210px;
}
.split-stat b{ font-family:var(--ff-display); font-size:1.9rem; display:block; line-height:1; margin-bottom:5px; color:#fff; }
.split-stat span{ font-size:.78rem; color:var(--sage-300); line-height:1.4; display:block; }

.check-list{ display:grid; gap:13px; margin:1.6rem 0; }
.check-list li{ display:flex; gap:.8em; font-size:.96rem; line-height:1.55; }
.check-list svg{ width:19px; height:19px; flex:none; margin-top:3px; color:var(--terra); }

/* ---------- Testimonials ---------- */
.quote-card{
  background:var(--paper); border-radius:var(--r-lg);
  padding:clamp(26px,3vw,36px);
  border:1px solid var(--line-soft);
  display:flex; flex-direction:column; height:100%;
  position:relative;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.quote-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-md); }
.quote-card::before{
  content:"\201C"; position:absolute; top:6px; right:24px;
  font-family:var(--ff-display); font-size:5.5rem; line-height:1;
  color:var(--sand-deep); pointer-events:none;
}
.stars{ display:flex; gap:2px; margin-bottom:16px; }
.stars svg{ width:15px; height:15px; color:var(--gold); }
.quote-card .quote-title{
  font-size:1.02rem; margin-bottom:.6em; color:var(--sage-800);
  position:relative; z-index:1;
}
.quote-card blockquote{
  margin:0 0 20px; font-size:.94rem; line-height:1.68; color:var(--ink-soft);
  position:relative; z-index:1;
}
.quote-who{
  margin-top:auto; padding-top:16px; border-top:1px solid var(--line-soft);
  display:flex; align-items:center; gap:11px;
}
.avatar{
  width:38px; height:38px; border-radius:50%; flex:none;
  background:var(--sage-700); color:var(--cream);
  display:grid; place-items:center;
  font-family:var(--ff-display); font-size:.92rem; font-weight:600;
}
.quote-who b{ display:block; font-size:.9rem; color:var(--sage-900); font-weight:600; }
.quote-who small{ font-size:.76rem; color:var(--ink-mute); }

/* testimonial grid */
.scroller{ display:grid; gap:24px; grid-template-columns:repeat(3,1fr); }

/* ---------- Steps ---------- */
.steps{ display:grid; gap:0; position:relative; }
.step{
  display:grid; grid-template-columns:78px 1fr; gap:clamp(18px,3vw,36px);
  padding-block:clamp(26px,3.4vw,40px);
  border-top:1px solid var(--line);
  position:relative;
}
.step:last-child{ border-bottom:1px solid var(--line); }
.step-no{
  font-family:var(--ff-display); font-size:2.4rem; line-height:1;
  color:var(--sage-300); font-weight:600;
  transition:color .3s var(--ease);
}
.step:hover .step-no{ color:var(--terra); }
.step-body h3{ margin-bottom:.45em; }
.step-body p{ font-size:.96rem; color:var(--ink-mute); max-width:62ch; }
.step-time{
  display:inline-block; margin-top:10px;
  font-size:.72rem; font-weight:700; letter-spacing:.11em; text-transform:uppercase;
  color:var(--sage-700); background:var(--sand); padding:.35em .8em; border-radius:100px;
}

/* ---------- FAQ ---------- */
.faq{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-q{
  width:100%; display:flex; align-items:flex-start; justify-content:space-between; gap:20px;
  padding:22px 0; text-align:left;
  font-family:var(--ff-display); font-size:clamp(1.02rem,1.5vw,1.2rem);
  color:var(--sage-900); font-weight:500;
  transition:color .22s var(--ease);
}
.faq-q:hover{ color:var(--terra); }
.faq-icon{
  flex:none; width:26px; height:26px; border-radius:50%;
  border:1.5px solid var(--line); display:grid; place-items:center;
  position:relative; margin-top:3px; transition:.3s var(--ease);
}
.faq-icon::before,.faq-icon::after{
  content:""; position:absolute; background:var(--sage-800); border-radius:2px; transition:.3s var(--ease);
}
.faq-icon::before{ width:11px; height:1.6px; }
.faq-icon::after{ width:1.6px; height:11px; }
.faq-item.is-open .faq-icon{ background:var(--terra); border-color:var(--terra); transform:rotate(90deg); }
.faq-item.is-open .faq-icon::before{ background:#fff; }
.faq-item.is-open .faq-icon::after{ opacity:0; }
.faq-a{ max-height:0; overflow:hidden; visibility:hidden;
  transition:max-height .4s var(--ease), visibility 0s linear .4s; }
.faq-item.is-open .faq-a{ visibility:visible; transition:max-height .4s var(--ease), visibility 0s; }
.faq-a-inner{ padding:0 0 24px; max-width:70ch; font-size:.96rem; color:var(--ink-mute); }

/* ---------- Filter bar + listing cards ---------- */
.filterbar{
  display:flex; flex-wrap:wrap; gap:9px; align-items:center;
  padding:14px; background:var(--paper);
  border:1px solid var(--line-soft); border-radius:100px;
  box-shadow:var(--shadow-sm);
  margin-bottom:clamp(28px,3.5vw,44px);
}
.filterbar-label{
  font-size:.7rem; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-mute); padding-inline:12px 6px;
}
.chip{
  padding:.55em 1.15em; border-radius:100px;
  font-size:.86rem; font-weight:600; color:var(--ink-soft);
  background:transparent; border:1.5px solid var(--line);
  transition:all .25s var(--ease);
}
.chip:hover{ border-color:var(--sage-500); color:var(--sage-800); }
.chip.is-active{ background:var(--sage-800); border-color:var(--sage-800); color:var(--cream); }
.filter-count{ margin-left:auto; padding-right:12px; font-size:.82rem; color:var(--ink-mute); }

.listing-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,2.6vw,30px); }
.card{
  background:var(--paper); border:1px solid var(--line-soft);
  border-radius:var(--r-lg); overflow:hidden;
  display:flex; flex-direction:column;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), opacity .3s var(--ease);
}
.card:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); }
.card[hidden]{ display:none; }
.card-media{ aspect-ratio:3/2; overflow:hidden; background:var(--sage-100); position:relative; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.card:hover .card-media img{ transform:scale(1.07); }
.card-cat{
  position:absolute; top:13px; left:13px; z-index:2;
  background:rgba(34,48,42,.85); backdrop-filter:blur(6px); color:var(--cream);
  padding:.32em .78em; border-radius:100px;
  font-size:.66rem; font-weight:700; letter-spacing:.11em; text-transform:uppercase;
}
.card-body{ padding:24px; display:flex; flex-direction:column; flex:1; }
.card-body h3{ font-size:1.18rem; margin-bottom:.45em; }
.card-body p{ font-size:.9rem; color:var(--ink-mute); margin-bottom:16px; }
.card-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:18px; }
.card-tags span{
  font-size:.72rem; padding:.28em .7em; border-radius:100px;
  background:var(--sand); color:var(--sage-700); font-weight:500;
}
.card-body .link-arrow{ margin-top:auto; align-self:flex-start; }
.empty-state{
  grid-column:1/-1; text-align:center; padding:60px 20px; color:var(--ink-mute);
}

/* card notes: patient quotes vs. editorial notes are styled differently */
.card-note{
  font-size:.83rem; margin-bottom:16px; line-height:1.5;
}
.card-note--quote{
  font-style:italic; color:var(--sage-700);
  border-left:2px solid var(--sand-deep); padding-left:12px;
}
.card-note--fact{
  color:var(--ink-mute);
  display:flex; gap:.5em; align-items:flex-start;
}
.card-note--fact::before{
  content:""; flex:none; width:5px; height:5px; border-radius:50%;
  background:var(--sage-300); margin-top:.6em;
}

/* dark info panel (contact aside) */
.info-block--dark{ background:var(--sage-900); color:var(--sage-300); }
.info-block--dark h3{ color:var(--cream); }
.info-block--dark .eyebrow{ color:var(--terra-soft); }
.info-block--dark .eyebrow::before{ background:var(--terra-soft); }

/* ---------- CTA band ---------- */
.cta-band{
  position:relative; overflow:hidden;
  background:var(--sage-900); color:var(--sage-100);
  border-radius:var(--r-xl);
  padding:clamp(40px,6vw,76px) clamp(28px,5vw,68px);
  text-align:center;
}
.cta-band h2{ color:var(--cream); max-width:18ch; margin-inline:auto; }
.cta-band p{ max-width:52ch; margin-inline:auto; margin-bottom:2rem; color:var(--sage-300); }
.cta-band .eyebrow{ color:var(--terra-soft); }
.cta-band .eyebrow::before{ display:none; }
.cta-ring{
  position:absolute; border:1px solid rgba(157,184,169,.16); border-radius:50%; pointer-events:none;
}
.cta-ring--a{ width:400px; height:400px; top:-180px; left:-120px; }
.cta-ring--b{ width:560px; height:560px; bottom:-330px; right:-160px; }
.cta-note{ margin-top:22px; font-size:.84rem; color:var(--sage-300); }
.cta-note a{ color:var(--terra-soft); border-bottom:1px solid rgba(217,139,98,.4); }

/* ---------- Page hero (inner pages) ---------- */
.page-hero{
  background:var(--sand); position:relative; overflow:hidden;
  padding-block:clamp(48px,7vw,88px);
}
.page-hero .wrap{ position:relative; z-index:2; }
.page-hero h1{ max-width:16ch; margin-bottom:.35em; }
.page-hero .lede{ max-width:56ch; }
.crumbs{
  display:flex; align-items:center; gap:.55em; flex-wrap:wrap;
  font-size:.78rem; color:var(--ink-mute); margin-bottom:1.6rem;
}
.crumbs a:hover{ color:var(--terra); }
.crumbs svg{ width:12px; height:12px; opacity:.5; }
.crumbs [aria-current]{ color:var(--sage-800); font-weight:600; }

/* ---------- Contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(30px,4vw,56px); align-items:start; }
.form-card{
  background:var(--paper); border:1px solid var(--line-soft);
  border-radius:var(--r-lg); padding:clamp(26px,3.4vw,42px);
  box-shadow:var(--shadow-sm);
}
.field{ margin-bottom:20px; }
.field label{
  display:block; font-size:.78rem; font-weight:700; letter-spacing:.09em;
  text-transform:uppercase; color:var(--sage-800); margin-bottom:8px;
}
.field label .req{ color:var(--terra); }
.field input,.field textarea,.field select{
  width:100%; padding:.86em 1.05em;
  background:var(--cream); border:1.5px solid var(--line);
  border-radius:var(--r-sm); font-size:.96rem;
  transition:border-color .22s var(--ease), background .22s var(--ease), box-shadow .22s var(--ease);
}
.field input:focus,.field textarea:focus,.field select:focus{
  outline:none; border-color:var(--sage-500); background:var(--paper);
  box-shadow:0 0 0 3px rgba(95,132,113,.14);
}
.field textarea{ min-height:140px; resize:vertical; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-note{ font-size:.8rem; color:var(--ink-mute); margin-top:14px; text-align:center; }
.form-success{
  display:none; padding:18px 20px; border-radius:var(--r-md);
  background:var(--sage-100); border:1px solid var(--sage-300);
  color:var(--sage-900); font-size:.92rem; margin-bottom:20px;
}
.form-success.is-visible{ display:block; }

.info-block{
  background:var(--sand); border-radius:var(--r-lg);
  padding:clamp(24px,3vw,34px); margin-bottom:22px;
}
.info-list{ display:grid; gap:22px; }
.info-item{ display:flex; gap:15px; }
.info-ic{
  width:40px; height:40px; flex:none; border-radius:12px;
  background:var(--paper); display:grid; place-items:center; box-shadow:var(--shadow-sm);
}
.info-ic svg{ width:18px; height:18px; color:var(--terra); }
.info-item h3{ margin-bottom:.25em; font-size:.98rem; }
.info-item p,.info-item a{ font-size:.92rem; color:var(--ink-mute); margin:0; }
.info-item a:hover{ color:var(--terra); }

.hours{ display:grid; gap:9px; }
.hours li{
  display:flex; justify-content:space-between; gap:16px;
  font-size:.9rem; padding-bottom:9px; border-bottom:1px solid var(--line);
}
.hours li:last-child{ border-bottom:0; padding-bottom:0; }
.hours b{ color:var(--sage-900); font-weight:600; }

.map-frame{
  border-radius:var(--r-lg); overflow:hidden;
  border:1px solid var(--line-soft); box-shadow:var(--shadow-sm);
  line-height:0; background:var(--sand-deep);
}
.map-frame iframe{ width:100%; height:400px; border:0; display:block; filter:grayscale(.25) contrast(1.05); }

.socials{ display:flex; gap:10px; flex-wrap:wrap; }
.social-btn{
  width:42px; height:42px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--paper); border:1px solid var(--line);
  color:var(--sage-800);
  transition:all .26s var(--ease);
}
.social-btn:hover{ background:var(--sage-800); color:var(--cream); border-color:var(--sage-800); transform:translateY(-2px); }
.social-btn svg{ width:17px; height:17px; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--sage-900); color:var(--sage-300); padding-block:clamp(48px,6vw,76px) 0; position:relative; overflow:hidden; }
.footer-top{
  display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr;
  gap:clamp(28px,4vw,48px); padding-bottom:44px;
}
.site-footer .logo-name{ color:var(--cream); }
.site-footer .logo-sub{ color:var(--sage-300); }
.site-footer .logo-mark{ background:var(--terra); }
.footer-blurb{ font-size:.9rem; line-height:1.65; margin:20px 0 24px; max-width:34ch; color:var(--sage-300); }
.footer-h{
  font-size:.72rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase;
  color:var(--cream); margin-bottom:18px;
}
.footer-links{ display:grid; gap:11px; }
.footer-links a{
  font-size:.9rem; color:var(--sage-300);
  transition:color .22s var(--ease), padding-left .22s var(--ease);
}
.footer-links a:hover{ color:var(--terra-soft); padding-left:5px; }
.footer-contact{ display:grid; gap:13px; font-size:.9rem; }
.footer-contact a:hover{ color:var(--terra-soft); }
.footer-contact strong{ color:var(--cream); }
.site-footer .social-btn{
  background:rgba(252,250,246,.06); border-color:rgba(252,250,246,.14); color:var(--sage-300);
}
.site-footer .social-btn:hover{ background:var(--terra); border-color:var(--terra); color:#fff; }
/* footer meta */
.footer-bottom{
  border-top:1px solid rgba(252,250,246,.1);
  padding-block:24px 30px;
  display:flex; flex-wrap:wrap; gap:12px 26px; align-items:center; justify-content:space-between;
  font-size:.8rem; color:var(--sage-300);
}
.footer-bottom nav{ display:flex; gap:22px; flex-wrap:wrap; }
.footer-bottom a:hover{ color:var(--terra-soft); }

/* ---------- Scroll reveal ---------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-in{ opacity:1; transform:none; }
.reveal[data-d="1"]{ transition-delay:.09s; }
.reveal[data-d="2"]{ transition-delay:.18s; }
.reveal[data-d="3"]{ transition-delay:.27s; }
.reveal[data-d="4"]{ transition-delay:.36s; }

/* ---------- Utility ---------- */
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:999;
  background:var(--sage-900); color:var(--cream); padding:12px 20px; border-radius:0 0 var(--r-sm) 0;
}
.skip-link:focus{ left:0; }
:focus-visible{ outline:2px solid var(--terra); outline-offset:3px; border-radius:4px; }
.section--dark :focus-visible,
.cta-band :focus-visible,
.site-footer :focus-visible,
.trust :focus-visible{ outline-color:var(--cream); }
.divider-rule{ height:1px; background:var(--line); border:0; margin:0; }

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .nav{ display:none; }
  .burger{ display:inline-flex; }
  .header-phone{ display:none; }
  .header-cta .btn{ display:none; }
  .call-btn{ display:inline-flex; }
  .listing-grid{ grid-template-columns:repeat(2,1fr); }
  .footer-top{ grid-template-columns:1fr 1fr; }
  .contact-grid{ grid-template-columns:1fr; }
  .hero-inner{ grid-template-columns:1fr; }
  .hero-figure{ max-width:440px; margin-inline:auto; width:100%; }
  .hero-badge{ left:0; }
  .split-stat{ right:14px; bottom:-16px; }
}

@media (max-width:880px){
  .g-3,.scroller{ grid-template-columns:repeat(2,1fr); }
  .split{ grid-template-columns:1fr; }
  .split--rev .split-media{ order:0; }
  .split-media--arch img{ aspect-ratio:4/3.4; border-radius:600px 600px var(--r-lg) var(--r-lg); }
}

@media (max-width:640px){
  body{ font-size:16px; }
  :root{ --header-h:66px; }
  .g-2,.g-3,.listing-grid,.scroller,.field-row{ grid-template-columns:1fr; }
  .logo-sub{ display:none; }
  .step{ grid-template-columns:1fr; gap:6px; }
  .step-no{ font-size:1.7rem; }
  .btn{ width:100%; }
  .btn-row{ flex-direction:column; align-items:stretch; }
  .btn-row .btn{ width:100%; }
  .filterbar{ border-radius:var(--r-md); }
  .filter-count{ width:100%; margin-left:0; padding:6px 12px 0; }
  .hero-badge{ position:static; margin-top:-30px; margin-inline:auto; max-width:none; }
  .split-stat{ position:static; margin-top:16px; max-width:none; }
  .footer-top{ grid-template-columns:1fr; }
  .cta-band{ border-radius:var(--r-lg); }
  .map-frame iframe{ height:300px; }
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important;
  }
  .reveal{ opacity:1; transform:none; }
}

@media print{
  .site-header,.mobile-menu,.trust,.cta-band,.site-footer{ display:none; }
  body{ background:#fff; }
}
