/* ==========================================================================
   BetterMe Physiotherapy core stylesheet
   Rainham & Medway | Obsidian Media Group Ltd
   ========================================================================== */

:root{
  --hdr-h:72px;
  --sticky-h:72px;
  --bg:#F8F6F2;
  --card:#FFFFFF;
  --green:#1E3A2F;
  --green-dk:#12241C;
  --green-lt:#2E5646;
  --sage:#8FB3A0;
  --accent:#3F7A5E;
  --sage-text:#587566;   /* 4.69:1 on cream */
  --sage-on-green:#A8C4B4; /* 6.59:1 on green */
  --text:#5C605A;
  --muted:#6B7169;  /* 4.64:1 on cream */
  --line:rgba(30,58,47,.12);
  --radius:.75rem;
  --radius-lg:1.5rem;
  --font-display:'Figtree',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-sans:'Figtree',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --wrap:1200px;
  --shadow:0 1px 3px rgba(30,58,47,.04),0 8px 32px rgba(30,58,47,.06);
  --shadow-lg:0 4px 12px rgba(30,58,47,.06),0 24px 64px rgba(30,58,47,.1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;overflow-x:hidden;-webkit-text-size-adjust:100%;}
body{ font-family:var(--font-sans);font-weight:300;font-size:1.0625rem;line-height:1.7; color:var(--text);background:var(--bg);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;cursor:pointer;border:0;background:none;}
::selection{background:var(--green);color:#fff;} h1,h2,h3,h4{font-family:var(--font-display);color:var(--green);line-height:1.08;}
h1{font-weight:800;letter-spacing:-.032em;}
h2{font-weight:700;letter-spacing:-.028em;}
h3{font-weight:700;letter-spacing:-.012em;}
h4{font-weight:700;letter-spacing:-.01em;}
h1{font-size:clamp(2.4rem,6vw,4.1rem);}
h2{font-size:clamp(1.9rem,4vw,2.9rem);}
h3{font-size:clamp(1.35rem,2.4vw,1.75rem);}
h4{font-size:1.15rem;}
p{margin-bottom:1.15rem;}
p:last-child{margin-bottom:0;}
strong{font-weight:500;color:var(--green);}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.5rem;}
.wrap-narrow{max-width:820px;margin:0 auto;padding:0 1.5rem;}
section{padding:clamp(3.5rem,8vw,7rem) 0;}
.bg-white{background:var(--card);}
.bg-green{background:var(--green);color:rgba(255,255,255,.82);}
.bg-green h1,.bg-green h2,.bg-green h3,.bg-green h4{color:#fff;}
.bg-green strong{color:#fff;}

/* ---------- eyebrow / lede ---------- */
.eyebrow{ font-size:.72rem;letter-spacing:.28em;text-transform:uppercase; font-weight:600;color:var(--sage-text);margin-bottom:1rem;display:block;
}
.lede{font-size:clamp(1.1rem,2vw,1.3rem);line-height:1.65;color:var(--text);}
.center{text-align:center;}
.sec-head{max-width:760px;margin-bottom:3rem;}
.sec-head.center{margin-left:auto;margin-right:auto;}

/* ---------- buttons ---------- */
.btn{ display:inline-flex;align-items:center;justify-content:center;gap:.6rem; padding:1rem 2rem;border-radius:100px;font-size:.95rem;font-weight:400; letter-spacing:.02em;transition:all .25s ease;text-align:center;
}
.btn-primary{background:var(--green);color:#fff;box-shadow:0 4px 14px rgba(30,58,47,.18);}
.btn-primary:hover{background:var(--green-dk);transform:translateY(-2px);box-shadow:0 8px 24px rgba(30,58,47,.24);}
.btn-outline{border:1px solid rgba(30,58,47,.25);color:var(--green);}
.btn-outline:hover{background:var(--green);color:#fff;border-color:var(--green);}
.btn-light{background:#fff;color:var(--green);}
.btn-light:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.18);}
.btn-ghost-light{border:1px solid rgba(255,255,255,.35);color:#fff;}
.btn-ghost-light:hover{background:#fff;color:var(--green);}
.btn-row{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2rem;}
.btn-row.center{justify-content:center;}

/* ---------- header ---------- */
.topbar{background:var(--green);color:rgba(255,255,255,.92);font-size:.8rem;letter-spacing:.04em;}
.topbar .wrap{display:flex;justify-content:center;gap:1.5rem;padding-top:.55rem;padding-bottom:.55rem;flex-wrap:wrap;}
.topbar a:hover{color:#fff;}
.topbar .tb-sm{display:none;}
.topbar .tb-lg{display:inline;}
.topbar span{color:#A8C4B4;}

.site-header{ position:sticky;top:0;z-index:900;background:rgba(248,246,242,.92); backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px); border-bottom:1px solid var(--line);
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:1rem;padding-bottom:1rem;gap:1.5rem;}
.brand img{height:44px;width:auto;}
.nav{display:flex;align-items:center;gap:2rem;}
.nav a{font-size:.92rem;color:var(--green);opacity:.82;transition:opacity .2s;white-space:nowrap;}
.nav a:hover,.nav a[aria-current="page"]{opacity:1;}
.nav a[aria-current="page"]{font-weight:400;}
.header-cta{display:flex;align-items:center;gap:.75rem;}
.nav-toggle{display:none;width:44px;height:44px;align-items:center;justify-content:center;color:var(--green);}
.nav-toggle svg{width:26px;height:26px;}

/* dropdown */
.has-sub{position:relative;}
.sub{ position:absolute;top:calc(100% + .9rem);left:50%;transform:translateX(-50%) translateY(-6px); background:#fff;border:1px solid var(--line);border-radius:var(--radius); box-shadow:var(--shadow-lg);padding:.6rem;min-width:250px; opacity:0;visibility:hidden;transition:all .22s ease;
}
.has-sub:hover .sub,.has-sub:focus-within .sub{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.sub a{display:block;padding:.6rem .9rem;border-radius:.5rem;font-size:.9rem;transition:background .18s;}
.sub a:hover{background:var(--bg);}

@media(max-width:1080px){
  .nav{ position:fixed;inset:0 0 0 auto;width:min(340px,86vw);background:var(--bg); flex-direction:column;align-items:flex-start;gap:.25rem;padding:6rem 2rem 2rem; transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1); overflow-y:auto;box-shadow:-8px 0 40px rgba(30,58,47,.14);
  }
  .nav.open{transform:translateX(0);}
  .nav a{padding:.75rem 0;font-size:1.05rem;width:100%;}
  .nav .sub,.nav .has-sub:hover .sub,.nav .has-sub:focus-within .sub{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none; border:0;padding:0 0 0 1rem;min-width:0;background:transparent;left:auto;top:auto;}
  .sub a{font-size:.95rem;padding:.5rem 0;}
  .nav-toggle{display:flex;}
  .header-cta .btn{display:none;}
}

/* ---------- cards & grids ---------- */
.grid{display:grid;gap:1.5rem;}
.g2{grid-template-columns:repeat(2,1fr);}
.g3{grid-template-columns:repeat(3,1fr);}
.g4{grid-template-columns:repeat(4,1fr);}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr;}}

.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:2rem 1.85rem;transition:transform .28s ease,box-shadow .28s ease;position:relative;overflow:hidden;}
.card h3{margin-bottom:.6rem;font-size:1.3rem;}
.card p{font-size:.95rem;margin-bottom:0;}
.card .card-link{ display:inline-flex;align-items:center;gap:.4rem;margin-top:1.15rem; font-size:.88rem;color:var(--green);letter-spacing:.02em;
}
.card .card-link::after{content:"→";transition:transform .2s;}
.card:hover .card-link::after{transform:translateX(4px);}

.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,5vw,4.5rem);align-items:center;}
.split img{border-radius:var(--radius-lg);width:100%;aspect-ratio:4/5;object-fit:cover;box-shadow:var(--shadow-lg);}
.split.media-right img{order:2;}
@media(max-width:860px){.split{grid-template-columns:1fr;}.split.media-right img{order:0;}}

/* ---------- steps ---------- */
.steps{counter-reset:s;display:grid;gap:1.25rem;}
.step{display:flex;gap:1.5rem;align-items:flex-start;padding:1.5rem 0;border-bottom:1px solid var(--line);}
.step:last-child{border-bottom:0;}
.step::before{ counter-increment:s;content:"0" counter(s); font-family:var(--font-display);font-size:1.6rem;color:var(--sage);line-height:1;flex-shrink:0;min-width:2.4rem;
}
.step h3{font-size:1.2rem;margin-bottom:.35rem;}
.step p{font-size:.95rem;margin-bottom:0;}

/* ---------- checks ---------- */
.checks{list-style:none;display:grid;gap:.85rem;}
.checks li{position:relative;padding-left:1.9rem;font-size:1rem;}
.checks li::before{ content:"";position:absolute;left:0;top:.6rem;width:.5rem;height:.5rem; border-radius:50%;background:var(--sage);
}
.bg-green .checks li::before{background:var(--sage);}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;text-align:center;}
.stat .n{font-family:var(--font-display);font-size:clamp(2.4rem,5vw,3.4rem);color:var(--green);line-height:1;}
.bg-green .stat .n{color:#fff;}
.stat .l{font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:.6rem;}
.bg-green .stat .l{color:rgba(255,255,255,.62);}
@media(max-width:640px){.stats{grid-template-columns:1fr;gap:2rem;}}

/* ---------- reviews ---------- */
.review{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:2rem;}
.review .stars{color:#E8B93E;font-size:.9rem;letter-spacing:.14em;margin-bottom:1rem;}
.review p{font-style:italic;font-size:.98rem;color:var(--text);margin-bottom:1.25rem;}
.review .who{font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line);}
.faq details{border-bottom:1px solid var(--line);}
.faq summary{ padding:1.5rem 2.5rem 1.5rem 0;cursor:pointer;list-style:none;position:relative; font-family:var(--font-display);font-size:1.2rem;color:var(--green);
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{ content:"+";position:absolute;right:.25rem;top:50%;transform:translateY(-50%); font-size:1.5rem;color:var(--sage);font-family:var(--font-sans);font-weight:300;transition:transform .25s;
}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg);}
.faq .answer{padding:0 2.5rem 1.75rem 0;font-size:1rem;}

/* ---------- CTA band ---------- */
.cta-band{background:var(--green);color:#fff;text-align:center;position:relative;overflow:hidden;}
.cta-band::before{content:"";position:absolute;bottom:-50%;left:-10%;width:50vw;height:50vw;max-width:600px;max-height:600px;border-radius:50%;background:rgba(127,160,143,.1);}
.cta-band .wrap{position:relative;z-index:2;}
.cta-band h2{color:#fff;margin-bottom:1rem;}
.cta-band p{color:rgba(255,255,255,.8);max-width:46ch;margin:0 auto;}

/* ---------- enquiry form ---------- */
.enquiry{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:clamp(1.75rem,4vw,2.75rem);box-shadow:var(--shadow);}
.field{margin-bottom:1.15rem;}
.field label{display:block;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green);margin-bottom:.5rem;}
.field input,.field select,.field textarea{ width:100%;padding:.9rem 1rem;border:1px solid var(--line);border-radius:var(--radius); font:inherit;font-size:1rem;color:var(--text);background:var(--bg);transition:border-color .2s,box-shadow .2s;
}
.field input:focus,.field select:focus,.field textarea:focus{ outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(30,58,47,.08);
}
.field textarea{min-height:120px;resize:vertical;}
.opts{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;}
@media(max-width:560px){.opts{grid-template-columns:1fr;}}
.opt{ display:block;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius); cursor:pointer;font-size:.95rem;transition:all .2s;background:var(--bg);
}
.opt:hover{border-color:var(--sage);}
.opt{position:relative;}
.opt input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden; clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}
.opt:focus-within{outline:2px solid var(--green);outline-offset:2px;}
.opt:has(input:checked){background:var(--green);color:#fff;border-color:var(--green);}
.progress{height:3px;background:var(--line);border-radius:100px;margin-bottom:1.75rem;overflow:hidden;}
.progress span{display:block;height:100%;width:100%;background:var(--sage);border-radius:100px;transform-origin:left center;transform:scaleX(0);transition:transform .35s ease;}
.step-count{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem;}

/* ---------- sticky mobile CTA ---------- */
.sticky-cta{ position:fixed;left:0;right:0;bottom:0;z-index:880;display:none; background:rgba(248,246,242,.96);backdrop-filter:blur(12px); border-top:1px solid var(--line);padding:.7rem 1rem;gap:.6rem; box-shadow:0 -4px 24px rgba(30,58,47,.1);
}
.sticky-cta .btn{flex:1;padding:.85rem 1rem;font-size:.9rem;}
@media(max-width:820px){.sticky-cta{display:flex;}body{padding-bottom:5rem;}}

/* ---------- WhatsApp float ---------- */
.wa-float{ position:fixed;right:1.25rem;bottom:1.25rem;z-index:890;
  display:inline-flex;align-items:center;justify-content:center;
  width:52px;height:52px;padding:0;border-radius:50%;
  background:#25D366;color:#fff;box-shadow:0 6px 18px rgba(37,211,102,.32);
  transition:transform .25s;
}
.wa-float:hover{transform:translateY(-3px);}
.wa-float svg{width:24px;height:24px;fill:currentColor;flex-shrink:0;}
@media(max-width:820px){.wa-float{bottom:5.25rem;width:48px;height:48px;}}

/* ---------- footer ---------- */
.site-footer{background:var(--green-dk);color:rgba(255,255,255,.6);padding:clamp(3rem,6vw,5rem) 0 2rem;font-size:.92rem;}
.site-footer h3.foot-h{color:#fff;font-family:var(--font-sans);font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:1.25rem;font-weight:500;}
.site-footer a:hover{color:#fff;}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.2fr;gap:2.5rem;margin-bottom:3rem;}
@media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr;gap:2rem;}}
@media(max-width:560px){.foot-grid{grid-template-columns:1fr;}}
.foot-grid img{height:42px;margin-bottom:1.25rem;}
.foot-grid ul{list-style:none;display:grid;gap:.6rem;}
.foot-bottom{border-top:1px solid rgba(255,255,255,.1);padding-top:1.75rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.82rem;color:rgba(255,255,255,.42);}
.socials{display:flex;gap:.9rem;margin-top:1.25rem;}
.socials a{width:38px;height:38px;border:1px solid rgba(255,255,255,.18);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.socials a:hover{background:#fff;color:var(--green);border-color:#fff;}
.socials svg{width:17px;height:17px;fill:currentColor;}

/* ---------- misc ---------- */
.pill{display:inline-block;padding:.35rem .9rem;border:1px solid var(--line);border-radius:100px;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--green);}
.note{background:var(--card);border-left:3px solid var(--sage);padding:1.5rem 1.75rem;border-radius:0 var(--radius) var(--radius) 0;}
.note p{max-width:74ch;}
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease;}
.reveal.in{opacity:1;transform:none;}


@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}.reveal{opacity:1;transform:none;}}

/* ---------- legal / consent ---------- */
.cookie-bar{ position:fixed;left:1rem;right:1rem;bottom:1rem;z-index:960;max-width:640px;margin:0 auto; background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg); padding:1.5rem 1.75rem;box-shadow:var(--shadow-lg);display:none;
}
.cookie-bar.show{display:block;}
.cookie-bar p{font-size:.9rem;margin-bottom:1rem;}
.cookie-bar .row{display:flex;gap:.6rem;flex-wrap:wrap;}
.cookie-bar .btn{padding:.7rem 1.4rem;font-size:.88rem;}
@media(max-width:820px){.cookie-bar{bottom:9rem;}}
.legal h2{margin-top:2.5rem;font-size:1.5rem;}
.legal h3{margin-top:1.75rem;font-size:1.15rem;}
.legal ul{margin:1rem 0 1.15rem 1.25rem;}
.legal li{margin-bottom:.5rem;}


/* ---------- video testimonials ---------- */
.vid{position:relative;width:100%;min-width:260px;max-width:380px;aspect-ratio:9/16;border-radius:var(--radius-lg); overflow:hidden;box-shadow:var(--shadow-lg);margin:0 auto; background:var(--green-dk) url("/assets/img/brand/logo-mark-favicon.webp") center/58px no-repeat;}
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.vid-card h3{margin:1.15rem 0 .35rem;font-size:1.25rem;}
.vid-card p{font-size:.95rem;color:var(--muted);margin-bottom:0;}
.vid-feature{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:clamp(2rem,4vw,4rem);align-items:center;}
@media(max-width:860px){.vid-feature{grid-template-columns:1fr;}}

/* ================================================================
   VISUAL CHARACTER leaves, marquees, motion
   ================================================================ */

/* ---------- decorative plant accents ---------- */
.plant{ position:absolute;z-index:0;pointer-events:none;user-select:none; opacity:.06;mix-blend-mode:multiply;object-fit:contain; width:34vw;max-width:520px;min-width:200px;
  -webkit-mask-image:radial-gradient(closest-side,rgba(0,0,0,1) 40%,rgba(0,0,0,0) 100%); mask-image:radial-gradient(closest-side,rgba(0,0,0,1) 40%,rgba(0,0,0,0) 100%);
}
.plant.r{right:-5rem;}
.plant.l{left:-5rem;}
.plant.t{top:3rem;}
.plant.b{bottom:0;}
.plant.slow{animation:drift 22s ease-in-out infinite alternate;}
.plant.slower{animation:drift 30s ease-in-out infinite alternate-reverse;}
@keyframes drift{ from{transform:translate3d(0,0,0) rotate(0deg);} to{transform:translate3d(0,-22px,0) rotate(2.5deg);}
}
section{position:relative;}
section > .wrap,section > .wrap-narrow{position:relative;z-index:1;}
@media(max-width:760px){.plant{opacity:.04;width:52vw;min-width:0;}}

/* ---------- logo marquee ---------- */
.marquee{position:relative;overflow:hidden;display:flex;align-items:center;}
.marquee::before,.marquee::after{ content:"";position:absolute;top:0;bottom:0;width:6rem;z-index:2;pointer-events:none;
}
.marquee::before{left:0;background:linear-gradient(to right,var(--card),transparent);}
.marquee::after{right:0;background:linear-gradient(to left,var(--card),transparent);}
.marquee-track{display:flex;width:max-content;animation:marquee 35s linear infinite; will-change:transform;transform:translateZ(0);backface-visibility:hidden;}
.marquee:hover .marquee-track{animation-play-state:paused;}
@keyframes marquee{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(-50%,0,0)}}
.marquee-item{ flex-shrink:0;width:9rem;height:3.5rem;margin:0 2rem; display:flex;align-items:center;justify-content:center; transition:transform .3s ease;
}
.marquee-item:hover{transform:scale(1.06);}
.marquee-item img{max-width:100%;max-height:100%;object-fit:contain; opacity:.62;filter:grayscale(1);transition:opacity .3s,filter .3s;}
.marquee-item:hover img{opacity:1;filter:grayscale(0);}
@media(max-width:640px){.marquee-item{width:6.5rem;height:2.6rem;margin:0 1.1rem;}
  .marquee::before,.marquee::after{width:3rem;}}

/* ---------- review marquee ---------- */
.rev-marquee{overflow:hidden;position:relative;}
.rev-track{display:flex;width:max-content;gap:1.5rem; animation:revscroll 60s linear infinite;will-change:transform;}
.rev-marquee:hover .rev-track{animation-play-state:paused;}
@keyframes revscroll{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(-33.3333%,0,0)}}
.rev-track .review{width:22rem;flex-shrink:0;}
@media(max-width:640px){.rev-track .review{width:17rem;}}

/* ---------- photo carousel ---------- */
.photo-rail{ display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory; padding-bottom:1rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin;
}
.photo-rail::-webkit-scrollbar{height:4px;}
.photo-rail::-webkit-scrollbar-thumb{background:var(--line);border-radius:100px;}
.photo-rail img{ flex:0 0 auto;width:min(300px,72vw);aspect-ratio:4/5;object-fit:cover; border-radius:var(--radius-lg);scroll-snap-align:center; box-shadow:var(--shadow);transition:transform .4s ease,box-shadow .4s ease;
}
.photo-rail img:hover{transform:translateY(-6px) scale(1.015);box-shadow:var(--shadow-lg);}

/* ---------- richer motion ---------- */
.js .reveal{opacity:0;transform:translateY(28px); transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);}
.reveal.in{opacity:1;transform:none;}
.reveal-d1{transition-delay:.1s}.reveal-d2{transition-delay:.2s}
.reveal-d3{transition-delay:.3s}.reveal-d4{transition-delay:.4s}
.grid > .reveal:nth-child(1){transition-delay:.05s}
.grid > .reveal:nth-child(2){transition-delay:.13s}
.grid > .reveal:nth-child(3){transition-delay:.21s}
.grid > .reveal:nth-child(4){transition-delay:.29s}
.grid > .reveal:nth-child(5){transition-delay:.37s}
.grid > .reveal:nth-child(6){transition-delay:.45s}
.grid > .reveal:nth-child(7){transition-delay:.53s}
.grid > .reveal:nth-child(8){transition-delay:.61s}

.hero-media{opacity:0;transform:translateY(34px) scale(.97); animation:heroIn 1s cubic-bezier(.16,1,.3,1) .15s forwards;}
.hero-copy{opacity:0;transform:translateY(26px); animation:heroIn 1s cubic-bezier(.16,1,.3,1) forwards;}
@keyframes heroIn{to{opacity:1;transform:none;}}

.card::after{ content:"";position:absolute;left:0;right:0;bottom:0;height:2px; background:var(--sage);transform:scaleX(0);transform-origin:left; transition:transform .4s cubic-bezier(.16,1,.3,1);
}
.card:hover::after{transform:scaleX(1);}
.card:hover{transform:translateY(-6px);}

.stat .n{transition:none;}
.split img{transition:transform .7s cubic-bezier(.16,1,.3,1);}
.split:hover img{transform:scale(1.02);}

.btn::after{content:none;}
.btn-primary,.btn-light{position:relative;overflow:hidden;}
.btn-primary::before,.btn-light::before{ content:"";position:absolute;inset:0;background:rgba(255,255,255,.16); transform:translateX(-101%);transition:transform .45s cubic-bezier(.16,1,.3,1);
}
.btn-primary:hover::before,.btn-light:hover::before{transform:translateX(0);}

@media(prefers-reduced-motion:reduce){
  .plant.slow,.plant.slower,.marquee-track,.rev-track{animation:none!important;}
  .hero-media,.hero-copy{opacity:1;transform:none;animation:none;}
}

/* ================================================================
   HERO full bleed image, cream gradient left, dark text
   ================================================================ */
.hero{ position:relative;display:flex;flex-direction:column; background:var(--bg);overflow:hidden;padding:0;margin:0;isolation:isolate;
}
.hero .plant,.page-hero .plant,.hero-inner .plant{display:none !important;}
@media(min-width:768px){.hero{min-height:700px;}}
@media(min-width:1024px){.hero{min-height:800px;}}

/* desktop background image */
.hero-bg{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:none;}
@media(min-width:768px){.hero-bg{display:block;}}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:75% 30%;}
.hero-bg::after{ content:"";position:absolute;inset:0;pointer-events:none; background:linear-gradient(to right, rgba(248,246,242,.88) 0%, rgba(248,246,242,.72) 42%, rgba(248,246,242,.28) 66%, rgba(248,246,242,0) 88%);
}

/* mobile image sits above the copy */
.hero-mob{position:relative;width:100%;aspect-ratio:4/5;max-height:60vh;flex-shrink:0;}
@media(min-width:768px){.hero-mob{display:none;}}
.hero-mob img{width:100%;height:100%;object-fit:cover;object-position:70% 25%;
  -webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,1) 62%,rgba(0,0,0,0) 100%); mask-image:linear-gradient(to bottom,rgba(0,0,0,1) 62%,rgba(0,0,0,0) 100%);}

.hero-inner{ position:relative;z-index:2;width:100%;flex:1;display:flex;align-items:center; padding:clamp(2rem,5vw,6rem) 1.5rem clamp(3rem,6vw,6rem);
}
.hero-inner .wrap{width:100%;}
.hero-copy{max-width:34rem;}
@media(min-width:768px){.hero-copy{width:52%;max-width:34rem;}}
@media(min-width:1280px){.hero-copy{width:48%;max-width:37rem;}}

.hero-eyebrow{ font-size:.8rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase; color:var(--green);margin-bottom:1rem;
}
.hero h1{ font-size:clamp(1.95rem,4.35vw,3.7rem);line-height:1.1;color:var(--green); font-weight:800;letter-spacing:-.032em;margin-bottom:0;
}
.hero h1 .l2{display:block;margin-top:.3rem;white-space:nowrap;}
.hero .type{color:var(--sage);font-style:italic;}
.hero-rule{ width:5rem;height:6px;background:var(--green);border:0;border-radius:2px; margin:1.6rem 0;
}
@media(min-width:768px){.hero-rule{width:6rem;}}
.hero-lede{ font-size:clamp(1.05rem,1.9vw,1.35rem);line-height:1.6;color:var(--text); font-weight:400;margin-bottom:2rem;max-width:34rem;
}
.hero-trust{ display:flex;align-items:center;gap:.85rem;flex-wrap:wrap; font-size:.8rem;font-weight:600;letter-spacing:.03em;color:var(--green); margin-bottom:2.25rem;
}
@media(min-width:1024px){.hero-trust{font-size:.88rem;gap:1rem;}}
.hero-trust .tick{ display:inline-flex;align-items:center;justify-content:center; width:1.3rem;height:1.3rem;border:2px solid var(--green);border-radius:50%; margin-right:.5rem;flex-shrink:0;
}
.hero-trust .tick svg{width:.7rem;height:.7rem;stroke:var(--green);stroke-width:3;fill:none;}
.hero-trust span.item{display:inline-flex;align-items:center;white-space:nowrap;}
.hero-trust .sep{color:rgba(30,58,47,.3);font-weight:300;}
.hero-cta{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;}
@media(min-width:768px){.hero-cta{gap:2rem;}}
.btn-hero{ display:inline-flex;align-items:center;justify-content:center; background:var(--green);color:#fff;font-weight:500;font-size:1.05rem; padding:0 2rem;height:3.5rem;border-radius:.75rem; box-shadow:0 4px 14px rgba(30,58,47,.18);transition:all .25s ease;
}
.btn-hero:hover{background:var(--green-dk);transform:translateY(-2px);box-shadow:0 10px 26px rgba(30,58,47,.26);}
.link-hero{ display:inline-flex;align-items:center;color:var(--green);font-weight:600;font-size:1.05rem; transition:opacity .2s;
}
.link-hero span{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px;}
.link-hero svg{width:1.15rem;height:1.15rem;margin-left:.5rem;transition:transform .25s; stroke:currentColor;stroke-width:2;fill:none;}
.link-hero:hover{opacity:.78;}
.link-hero:hover svg{transform:translateX(4px);}

/* ---------- interior page hero: same treatment, shorter ---------- */
.page-hero{position:relative;overflow:hidden;background:var(--bg);min-height:clamp(360px,46vw,540px);display:flex;align-items:center;padding:clamp(3rem,6vw,4.5rem) 0;}
@media(min-width:768px){.page-hero{min-height:460px;display:flex;align-items:center;}}
.page-hero-bg{position:relative;display:block;width:100%;aspect-ratio:4/3;overflow:hidden;}
@media(min-width:768px){.page-hero-bg{position:absolute;inset:0;z-index:0;aspect-ratio:auto;}}
.page-hero-bg img{width:100%;height:100%;object-fit:cover;object-position:65% 28%;}
.page-hero-bg::after{ content:"";position:absolute;inset:0; background:linear-gradient(to right, rgba(248,246,242,.9) 0%, rgba(248,246,242,.76) 44%, rgba(248,246,242,.32) 68%, rgba(248,246,242,0) 90%);
}
.page-hero > .wrap{position:relative;z-index:2;width:100%;}
.page-hero h1{color:var(--green);max-width:24ch;margin-bottom:1rem;}
.page-hero p{color:var(--text);max-width:46ch;font-size:1.1rem;}
.page-hero .eyebrow{color:var(--green);font-weight:700;}
.page-hero .crumb{font-size:.8rem;color:var(--muted);margin-bottom:1.25rem;}
.page-hero .crumb a:hover{color:var(--green);}
.page-hero .btn-light{background:var(--green);color:#fff;}
.page-hero .btn-light:hover{background:var(--green-dk);}
.page-hero .btn-ghost-light{border-color:rgba(30,58,47,.25);color:var(--green);}
.page-hero .btn-ghost-light:hover{background:var(--green);color:#fff;}
.page-hero-copy{max-width:36rem;}
@media(min-width:768px){.page-hero-copy{width:50%;max-width:33rem;}}
@media(min-width:1280px){.page-hero-copy{width:48%;max-width:36rem;}}

/* ================================================================
   REVIEW BAND dark green, image left, quote right (all pages)
   ================================================================ */
.revband{background:var(--green);color:rgba(255,255,255,.86);overflow:hidden;padding:0;}
.revband-in{display:flex;flex-direction:column;min-height:400px;}
@media(min-width:1024px){.revband-in{flex-direction:row;min-height:460px;}}
.revband-img{position:relative;width:100%;height:250px;flex-shrink:0;}
@media(min-width:1024px){.revband-img{width:26%;height:auto;}}
.revband-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.revband-body{flex:1;padding:clamp(2rem,5vw,4rem);display:flex;flex-direction:column;justify-content:center;}
.revband .k{font-size:.75rem;letter-spacing:.24em;text-transform:uppercase;color:var(--sage); font-weight:500;margin-bottom:1.25rem;display:block;}
.revband h2{color:#fff;font-size:clamp(1.6rem,3vw,2.4rem);margin-bottom:.35rem;max-width:24ch;}
.revband .rule{width:3rem;height:4px;background:var(--sage);border-radius:100px;margin:1.25rem 0 1.75rem;}
.revband p{color:rgba(255,255,255,.82);font-size:clamp(1rem,1.6vw,1.12rem);font-weight:300;line-height:1.75;max-width:66ch;}
.revband .who{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);margin-top:1.5rem;}
.revband .stars{color:#E8B93E;letter-spacing:.16em;margin-bottom:1rem;}

/* ---------- recovery journey ---------- */
.journey{display:grid;gap:1rem;position:relative;}
@media(min-width:860px){
  .journey{grid-template-columns:repeat(4,1fr);gap:.6rem;}
  .journey::before{content:"";position:absolute;top:3.4rem;left:8%;right:8%;height:3px; background:rgba(30,58,47,.12);z-index:0;}
}
.jstep{position:relative;z-index:1;background:var(--card);border:1px solid var(--line); border-radius:1rem;padding:2rem 1.25rem;text-align:center;box-shadow:var(--shadow);}
.jstep .num{width:3.4rem;height:3.4rem;border-radius:50%;background:var(--green);color:#fff; display:flex;align-items:center;justify-content:center;font-size:1.15rem;font-weight:600; margin:0 auto 1.35rem;border:4px solid var(--card);box-shadow:0 4px 12px rgba(30,58,47,.2);}
.jstep h3{font-size:1.15rem;margin-bottom:.4rem;}
.jstep p{font-size:.88rem;color:var(--muted);margin-bottom:0;}

/* ---------- josh photo carousel ---------- */
.josh-rail{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory; padding-bottom:1rem;scrollbar-width:thin;}
.josh-rail::-webkit-scrollbar{height:4px;}
.josh-rail::-webkit-scrollbar-thumb{background:var(--line);border-radius:100px;}
.josh-rail img{flex:0 0 auto;width:min(280px,70vw);aspect-ratio:3/4;object-fit:cover; border-radius:var(--radius-lg);scroll-snap-align:center;box-shadow:var(--shadow); transition:transform .4s ease;}
.josh-rail img:hover{transform:translateY(-6px);}

/* ---------- quiz ---------- */
.quiz{background:var(--bg);border:1px solid var(--line);border-radius:1.5rem; padding:clamp(1.75rem,4vw,2.75rem);box-shadow:var(--shadow);}
.quiz .q{font-family:var(--font-display);font-size:clamp(1.25rem,2.4vw,1.6rem); color:var(--green);margin-bottom:1.5rem;}
.quiz .opts{display:grid;gap:.7rem;}
.quiz .opt{display:block;padding:1rem 1.25rem;border:1px solid var(--line); border-radius:.75rem;cursor:pointer;background:var(--card);font-size:1rem;transition:all .2s;}
.quiz .opt:hover{border-color:var(--sage);transform:translateX(4px);}
.quiz .result{display:none;text-align:center;}
.quiz .result.show{display:block;}
.quiz .result h3{margin-bottom:.75rem;}
.quiz .qstep{display:none;}
.quiz .qstep.show{display:block;}
.quiz .dots{display:flex;gap:.4rem;justify-content:center;margin-bottom:1.75rem;}
.quiz .dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--line);transition:background .3s;}
.quiz .dot.on{background:var(--sage);}

/* ---------- find us ---------- */
.findus{display:grid;gap:2.5rem;}
@media(min-width:900px){.findus{grid-template-columns:.9fr 1.1fr;align-items:center;}}
.findus .map{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);}
.findus .map iframe{display:block;width:100%;height:400px;border:0;}
.info-item{display:flex;gap:1rem;margin-bottom:1.5rem;}
.info-item svg{width:1.4rem;height:1.4rem;stroke:var(--sage);stroke-width:1.5;fill:none;flex-shrink:0;margin-top:.2rem;}
.info-item h3.info-h{font-family:var(--font-sans);font-size:.78rem;letter-spacing:.16em; text-transform:uppercase;color:var(--green);margin-bottom:.4rem;font-weight:600;}
.info-item p{font-size:.95rem;margin-bottom:0;}

/* ---------- outcome list ---------- */
.outcomes{display:grid;gap:.9rem;}
@media(min-width:700px){.outcomes{grid-template-columns:1fr 1fr;}}
.outcome{display:flex;gap:.85rem;align-items:flex-start;background:var(--card); border:1px solid var(--line);border-radius:.75rem;padding:1.15rem 1.35rem;}
.outcome svg{width:1.25rem;height:1.25rem;stroke:var(--sage);stroke-width:2.5;fill:none;flex-shrink:0;margin-top:.15rem;}
.outcome span{font-size:.98rem;}




/* portrait video grid */
.vid-grid{display:grid;gap:clamp(1.5rem,3vw,2.5rem);}
@media(min-width:700px){.vid-grid{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1024px){.vid-grid.three{grid-template-columns:repeat(3,1fr);}}
.vid-card{text-align:center;}
.vid-card h3{margin:1.25rem 0 .3rem;font-size:1.2rem;}
.vid-card p{font-size:.92rem;max-width:30ch;margin-left:auto;margin-right:auto;}

/* ---------- hero focal points (computed from image dimensions) ---------- */
.f-exterior-wide{object-position:55% 55% !important;}
.f-treatment-room-wood-floor{object-position:50% 48% !important;}
.f-treatment-room{object-position:50% 55% !important;}
.f-josh-at-desk-laptop{object-position:52% 20% !important;}
.f-josh-seated-clinic{object-position:50% 14% !important;}
.f-exercise-rehab-session{object-position:50% 14% !important;}
.f-resistance-band-exercise{object-position:50% 36% !important;}
.f-massage-treatment-table{object-position:55% 45% !important;}
.f-neck-shoulder-treatment{object-position:50% 45% !important;}
.f-shoulder-mobility-assessment{object-position:50% 26% !important;}
.f-treating-patient-about{object-position:40% 50% !important;}
.f-treating-patient-couch{object-position:55% 20% !important;}
.f-treating-patient-wide{object-position:62% 50% !important;}
.f-treatment-chronic-pain{object-position:62% 40% !important;}

/* ---------- in-page image framing (4:5 crops) ---------- */
.split img.f-exterior-front,.photo-rail img.f-exterior-front,.josh-rail img.f-exterior-front,.grid img.f-exterior-front,.revband-img img.f-exterior-front{object-position:50% 50% !important;}
.split img.f-exterior-wide,.photo-rail img.f-exterior-wide,.josh-rail img.f-exterior-wide,.grid img.f-exterior-wide,.revband-img img.f-exterior-wide{object-position:55% 55% !important;}
.split img.f-treatment-room,.photo-rail img.f-treatment-room,.josh-rail img.f-treatment-room,.grid img.f-treatment-room,.revband-img img.f-treatment-room{object-position:50% 55% !important;}
.split img.f-treatment-room-skeleton,.photo-rail img.f-treatment-room-skeleton,.josh-rail img.f-treatment-room-skeleton,.grid img.f-treatment-room-skeleton,.revband-img img.f-treatment-room-skeleton{object-position:50% 50% !important;}
.split img.f-treatment-room-wood-floor,.photo-rail img.f-treatment-room-wood-floor,.josh-rail img.f-treatment-room-wood-floor,.grid img.f-treatment-room-wood-floor,.revband-img img.f-treatment-room-wood-floor{object-position:50% 48% !important;}
.split img.f-recovery-space-bed,.photo-rail img.f-recovery-space-bed,.josh-rail img.f-recovery-space-bed,.grid img.f-recovery-space-bed,.revband-img img.f-recovery-space-bed{object-position:50% 50% !important;}
.split img.f-josh-headshot-black-polo,.photo-rail img.f-josh-headshot-black-polo,.josh-rail img.f-josh-headshot-black-polo,.grid img.f-josh-headshot-black-polo,.revband-img img.f-josh-headshot-black-polo{object-position:50% 18% !important;}
.split img.f-josh-avatar-chat-widget,.photo-rail img.f-josh-avatar-chat-widget,.josh-rail img.f-josh-avatar-chat-widget,.grid img.f-josh-avatar-chat-widget,.revband-img img.f-josh-avatar-chat-widget{object-position:50% 20% !important;}
.split img.f-josh-seated-chair,.photo-rail img.f-josh-seated-chair,.josh-rail img.f-josh-seated-chair,.grid img.f-josh-seated-chair,.revband-img img.f-josh-seated-chair{object-position:50% 22% !important;}
.split img.f-josh-seated-sofa,.photo-rail img.f-josh-seated-sofa,.josh-rail img.f-josh-seated-sofa,.grid img.f-josh-seated-sofa,.revband-img img.f-josh-seated-sofa{object-position:50% 26% !important;}
.split img.f-josh-seated-portrait,.photo-rail img.f-josh-seated-portrait,.josh-rail img.f-josh-seated-portrait,.grid img.f-josh-seated-portrait,.revband-img img.f-josh-seated-portrait{object-position:50% 18% !important;}
.split img.f-josh-seated-portrait-about,.photo-rail img.f-josh-seated-portrait-about,.josh-rail img.f-josh-seated-portrait-about,.grid img.f-josh-seated-portrait-about,.revband-img img.f-josh-seated-portrait-about{object-position:50% 18% !important;}
.split img.f-josh-at-desk-laptop,.photo-rail img.f-josh-at-desk-laptop,.josh-rail img.f-josh-at-desk-laptop,.grid img.f-josh-at-desk-laptop,.revband-img img.f-josh-at-desk-laptop{object-position:52% 20% !important;}
.split img.f-josh-on-exercise-ball,.photo-rail img.f-josh-on-exercise-ball,.josh-rail img.f-josh-on-exercise-ball,.grid img.f-josh-on-exercise-ball,.revband-img img.f-josh-on-exercise-ball{object-position:50% 26% !important;}
.split img.f-josh-seated-clinic,.photo-rail img.f-josh-seated-clinic,.josh-rail img.f-josh-seated-clinic,.grid img.f-josh-seated-clinic,.revband-img img.f-josh-seated-clinic{object-position:50% 14% !important;}
.split img.f-treating-patient-couch,.photo-rail img.f-treating-patient-couch,.josh-rail img.f-treating-patient-couch,.grid img.f-treating-patient-couch,.revband-img img.f-treating-patient-couch{object-position:55% 20% !important;}
.split img.f-treating-patient-hero,.photo-rail img.f-treating-patient-hero,.josh-rail img.f-treating-patient-hero,.grid img.f-treating-patient-hero,.revband-img img.f-treating-patient-hero{object-position:58% 30% !important;}
.split img.f-treating-patient-wide,.photo-rail img.f-treating-patient-wide,.josh-rail img.f-treating-patient-wide,.grid img.f-treating-patient-wide,.revband-img img.f-treating-patient-wide{object-position:62% 50% !important;}
.split img.f-treating-patient-about,.photo-rail img.f-treating-patient-about,.josh-rail img.f-treating-patient-about,.grid img.f-treating-patient-about,.revband-img img.f-treating-patient-about{object-position:40% 50% !important;}
.split img.f-treatment-chronic-pain,.photo-rail img.f-treatment-chronic-pain,.josh-rail img.f-treatment-chronic-pain,.grid img.f-treatment-chronic-pain,.revband-img img.f-treatment-chronic-pain{object-position:62% 40% !important;}
.split img.f-assisting-patient-stand,.photo-rail img.f-assisting-patient-stand,.josh-rail img.f-assisting-patient-stand,.grid img.f-assisting-patient-stand,.revband-img img.f-assisting-patient-stand{object-position:50% 22% !important;}
.split img.f-consultation-with-patient,.photo-rail img.f-consultation-with-patient,.josh-rail img.f-consultation-with-patient,.grid img.f-consultation-with-patient,.revband-img img.f-consultation-with-patient{object-position:58% 26% !important;}
.split img.f-neck-shoulder-treatment,.photo-rail img.f-neck-shoulder-treatment,.josh-rail img.f-neck-shoulder-treatment,.grid img.f-neck-shoulder-treatment,.revband-img img.f-neck-shoulder-treatment{object-position:50% 45% !important;}
.split img.f-shoulder-mobility-assessment,.photo-rail img.f-shoulder-mobility-assessment,.josh-rail img.f-shoulder-mobility-assessment,.grid img.f-shoulder-mobility-assessment,.revband-img img.f-shoulder-mobility-assessment{object-position:50% 26% !important;}
.split img.f-back-massage,.photo-rail img.f-back-massage,.josh-rail img.f-back-massage,.grid img.f-back-massage,.revband-img img.f-back-massage{object-position:52% 55% !important;}
.split img.f-massage-treatment-table,.photo-rail img.f-massage-treatment-table,.josh-rail img.f-massage-treatment-table,.grid img.f-massage-treatment-table,.revband-img img.f-massage-treatment-table{object-position:55% 45% !important;}
.split img.f-soft-tissue-detail,.photo-rail img.f-soft-tissue-detail,.josh-rail img.f-soft-tissue-detail,.grid img.f-soft-tissue-detail,.revband-img img.f-soft-tissue-detail{object-position:50% 45% !important;}
.split img.f-acupuncture-treatment,.photo-rail img.f-acupuncture-treatment,.josh-rail img.f-acupuncture-treatment,.grid img.f-acupuncture-treatment,.revband-img img.f-acupuncture-treatment{object-position:50% 45% !important;}
.split img.f-exercise-rehab-session,.photo-rail img.f-exercise-rehab-session,.josh-rail img.f-exercise-rehab-session,.grid img.f-exercise-rehab-session,.revband-img img.f-exercise-rehab-session{object-position:50% 14% !important;}
.split img.f-resistance-band-exercise,.photo-rail img.f-resistance-band-exercise,.josh-rail img.f-resistance-band-exercise,.grid img.f-resistance-band-exercise,.revband-img img.f-resistance-band-exercise{object-position:50% 36% !important;}
.split img.f-dumbbell-coaching,.photo-rail img.f-dumbbell-coaching,.josh-rail img.f-dumbbell-coaching,.grid img.f-dumbbell-coaching,.revband-img img.f-dumbbell-coaching{object-position:50% 24% !important;}
.split img.f-core-exercises,.photo-rail img.f-core-exercises,.josh-rail img.f-core-exercises,.grid img.f-core-exercises,.revband-img img.f-core-exercises{object-position:50% 32% !important;}
.split img.f-dumbbells-equipment,.photo-rail img.f-dumbbells-equipment,.josh-rail img.f-dumbbells-equipment,.grid img.f-dumbbells-equipment,.revband-img img.f-dumbbells-equipment{object-position:50% 45% !important;}

/* ---------- tap targets (WCAG 2.5.8 / 44px) ---------- */
@media(max-width:820px){
  .site-footer a,.foot-grid a{display:inline-block;padding:.62rem 0;min-height:44px;line-height:1.7;}
  .foot-grid ul{gap:.15rem;}
  .foot-bottom a{display:inline-block;padding:.6rem .25rem;min-height:44px;line-height:1.9;}
  .socials a{width:44px;height:44px;}
  .crumb a{display:inline-block;padding:.5rem .15rem;min-height:44px;line-height:2.2;}
  .info-item a{display:inline-block;padding:.45rem 0;min-height:44px;line-height:2;}
  .card-link{display:inline-flex;align-items:center;min-height:44px;}
  .legal a{display:inline-block;padding:.35rem 0;}
}

/* ---------- accessible contrast fixes ---------- */
.bg-green .eyebrow,.hero .eyebrow,.cta-band .eyebrow,.revband .eyebrow{color:var(--sage-on-green);}
.revband .k{color:var(--sage-on-green);}
.revband .who{color:var(--sage-on-green);}
.crumb{color:#6B7169;}
.crumb a{color:#4F6C5C;}
.page-hero .crumb{color:#6B7169;}
.page-hero .crumb a{color:#3C5A4A;}
.hero-trust .sep{color:rgba(30,58,47,.45);}
.stat .l{color:var(--muted);}
.vid-card p{color:#5C605A;}
.wa-float{background:#0E7A6D;box-shadow:0 8px 28px rgba(14,122,109,.4);}
.wa-float:hover{background:#0B665B;}
@media(max-width:820px){
  .crumb a{min-width:44px;text-align:left;padding-left:0;padding-right:.4rem;}
}

/* ---------- readable line length ---------- */
.wrap-narrow p,.legal p,.legal li,article p{max-width:72ch;}
.sec-head.center p.lede{margin-left:auto;margin-right:auto;}
/* ---------- remaining tap targets ---------- */
.link-hero{min-height:44px;}
@media(max-width:820px){
  .note a:not(.btn),.card a:not(.btn),a[href^="mailto:"]:not(.btn),a[href^="tel:"]:not(.btn){ display:inline-block;padding:.55rem 0;min-height:44px;line-height:2.1;}
}

/* ================================================================
   VERTICAL RHYTHM consistent spacing after headings sitewide
   ================================================================ */
h1 + p, h1 + .lede,
h2 + p, h2 + .lede, h2 + ul, h2 + ol, h2 + .steps, h2 + .grid,
h2 + .outcomes, h2 + .faq, h2 + .checks, h2 + blockquote,
h3 + p, h3 + ul, h3 + .steps{margin-top:1.1rem;}
h2{margin-bottom:0;}
.sec-head h2 + p,.sec-head h2 + .lede{margin-top:1rem;}
.split .reveal h2 + p,.split .reveal h2 + .lede{margin-top:1.15rem;}
.split .reveal .eyebrow + h2,.sec-head .eyebrow + h2{margin-top:0;}
.hero-eyebrow + h1{margin-top:0;}

/* paragraph rhythm */
.split .reveal p + p,.wrap-narrow p + p,.legal p + p{margin-top:1.1rem;}
.lede + p{margin-top:1.15rem;}

/* section heads */
.sec-head{margin-bottom:3rem;}
.sec-head p:last-child{margin-bottom:0;}
@media(max-width:760px){.sec-head{margin-bottom:2.25rem;}}

/* card / step internals */
.card h3 + p{margin-top:.55rem;}
.step h3 + p{margin-top:.4rem;}
.step{padding:1.6rem 0;}

/* grid gaps consistent */
.grid{gap:1.5rem;}
@media(max-width:760px){.grid{gap:1.15rem;}}

/* buttons share a baseline */
.btn-row{align-items:center;margin-top:2rem;}
.btn-row .btn{margin:0;}

/* mobile padding sensible, not inherited */
@media(max-width:760px){ section{padding:3rem 0;}
  .wrap,.wrap-narrow{padding:0 1.25rem;}
}

/* quiz result + form step headings */
.quiz .result h3 + p{margin-top:.9rem;}
.enquiry h3 + p{margin-top:.6rem;}
[data-step] h3 + p{margin-top:.6rem;}

.legal h2 + ul,.legal h3 + ul,.legal h2 + p,.legal h3 + p{margin-top:1rem;}


/* ================================================================
   BODY MAP
   ================================================================ */
.bodymap{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:start;}
@media(min-width:900px){.bodymap{grid-template-columns:.78fr 1.22fr;}}
.bm-figure{position:relative;background:var(--bg);border:1px solid var(--line); border-radius:var(--radius-lg);padding:1.5rem 1.25rem 1.1rem;}
.bm-figure svg{width:100%;max-width:270px;height:auto;display:block;margin:0 auto;}
.bm-body{fill:#E4E0D6;stroke:none;}
.bm-path{fill:none;stroke:var(--green);stroke-width:1.5;opacity:.3;stroke-linecap:round;}
.bm-node{fill:var(--green);opacity:.35;}
.bm-hot{cursor:pointer;outline:none;}
.bm-hot .ring{fill:var(--green);opacity:.16;transition:opacity .25s ease;}
.bm-hot .core{fill:var(--green);opacity:.85;transition:opacity .25s ease;}
.bm-hot:hover .ring,.bm-hot:focus .ring{opacity:.38;}
.bm-hot:hover .core,.bm-hot:focus .core{opacity:.9;}
.bm-hot:focus .ring{stroke:var(--green);stroke-width:1.5;}
.bm-hot.on .ring{opacity:.45;}
.bm-hot.on .core{opacity:1;}
.bm-hint{margin-top:1rem;text-align:center;text-transform:uppercase; letter-spacing:.18em;font-size:.68rem;color:var(--muted);}

.bm-panel{min-height:300px;}
.bm-tag{display:inline-flex;align-items:center;gap:.5rem;text-transform:uppercase; letter-spacing:.2em;font-size:.7rem;font-weight:600;color:var(--sage);margin-bottom:.6rem;}
.bm-panel h3{font-size:clamp(1.5rem,3vw,2.1rem);margin-bottom:0;}
.bm-block{border-top:1px solid var(--line);padding-top:1.1rem;margin-top:1.1rem;}
.bm-block small{display:block;text-transform:uppercase;letter-spacing:.16em; font-size:.68rem;font-weight:600;color:var(--green);margin-bottom:.5rem;}
.bm-block p{font-size:.98rem;margin-bottom:0;}
.bm-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem;}
.bm-chips span{display:inline-block;padding:.35rem .85rem;background:var(--bg); border:1px solid var(--line);border-radius:100px;font-size:.78rem;color:var(--green);}
.bm-cta{margin-top:1.75rem;}
@media(max-width:560px){.bm-figure{padding:1.1rem .75rem .9rem;}.bm-panel{min-height:0;}}
@media(prefers-reduced-motion:reduce){.bm-hot *{transition:none;}}

/* invite the first tap */
@keyframes bmInvite{0%,100%{opacity:.16}50%{opacity:.34}}
.bm-hot:not(.on) .ring{animation:bmInvite 2.6s ease-in-out infinite;}
.bm-hot:nth-of-type(2) .ring{animation-delay:.3s}
.bm-hot:nth-of-type(3) .ring{animation-delay:.6s}
.bm-hot:nth-of-type(4) .ring{animation-delay:.9s}
.bm-hot:nth-of-type(5) .ring{animation-delay:1.2s}
.bm-hot:nth-of-type(6) .ring{animation-delay:1.5s}
.bm-hot:hover .ring,.bm-hot:focus .ring,.bm-hot.on .ring{animation:none;}
@media(prefers-reduced-motion:reduce){.bm-hot .ring{animation:none!important;}}

/* ================================================================
   PRINT patients print directions, hours and exercise plans
   ================================================================ */
@media print{
  *{background:transparent!important;color:#000!important;box-shadow:none!important;}
  .site-header,.topbar,.sticky-cta,.wa-float,.cookie-bar,.marquee,.rev-marquee,
  .plant,.vid,.map,.quiz,.bm-figure,.btn-row,.cta-band,.photo-rail,.josh-rail,
  .revband-img,iframe,video{display:none!important;} body{font-size:11pt;line-height:1.45;} section{padding:.6rem 0!important;page-break-inside:avoid;} h1{font-size:20pt;}h2{font-size:15pt;page-break-after:avoid;}h3{font-size:12pt;page-break-after:avoid;}
  .wrap,.wrap-narrow{max-width:100%!important;padding:0!important;}
  .grid,.split,.bodymap,.findus{display:block!important;}
  .card,.step,.review,.outcome{border:1px solid #ccc!important;padding:.5rem!important; margin-bottom:.4rem!important;page-break-inside:avoid;}
  .faq details{page-break-inside:avoid;}
  .faq details summary::after{content:none;}
  .faq .answer{display:block!important;} img{max-width:38%!important;page-break-inside:avoid;} a[href^="/"]::after,a[href^="http"]::after{content:" (" attr(href) ")";font-size:9pt;color:#555!important;} a[href^="tel:"]::after,a[href^="mailto:"]::after{content:none;}
  .site-footer{border-top:2px solid #000;padding-top:.6rem;}
  .site-footer ul{list-style:none;}
  @page{margin:14mm;}
}

/* narrow-source heroes: anchor the photo right at native scale rather than stretching a portrait original across the full width */
@media(min-width:1000px){
  .page-hero.narrow .page-hero-bg,.hero.narrow .hero-bg{left:auto;right:0;width:53%;}
  .page-hero.narrow .page-hero-bg::after,.hero.narrow .hero-bg::after{ background:linear-gradient(to right, rgba(248,246,242,1) 0%, rgba(248,246,242,.72) 18%, rgba(248,246,242,.18) 46%, rgba(248,246,242,0) 72%);
  }
}
@media(min-width:1280px){.page-hero.narrow .page-hero-bg,.hero.narrow .hero-bg{width:50%;}}

/* tablet: photo full bleed, copy protected by a stronger gradient */
@media(min-width:768px) and (max-width:999px){
  .page-hero-copy,.hero-copy{width:62%;max-width:none;}
  .page-hero-bg::after,.hero-bg::after{ background:linear-gradient(to right, rgba(248,246,242,.97) 0%, rgba(248,246,242,.9) 40%, rgba(248,246,242,.5) 68%, rgba(248,246,242,0) 94%);
  }
}

/* Inter emphasis: colour, not italics */
h1 i,h2 i,h3 i{font-style:normal;color:var(--accent);}
.bg-green h1 i,.bg-green h2 i,.cta-band h2 i,.revband h2 i{color:var(--sage);}
h1 u,h2 u{text-decoration:none;box-shadow:inset 0 -.16em 0 rgba(63,122,94,.35);}
body{font-weight:400;letter-spacing:-.002em;}
.lede{font-weight:400;}
strong{font-weight:600;}
.eyebrow,.hero-eyebrow,.bm-tag,.revband .k,.bm-block small{font-weight:700;}
.btn,.btn-hero{font-weight:600;letter-spacing:.01em;}
.stat .n{font-weight:800;letter-spacing:-.04em;}
blockquote{font-weight:600;font-style:normal;letter-spacing:-.02em;}
.review p,.note p[style*="italic"]{font-style:normal;}

/* ================================================================
   MORE GREEN alternate dark green blocks through every page
   ================================================================ */
.bg-deep{background:var(--green-dk);color:rgba(255,255,255,.86);position:relative;}
.bg-deep h1,.bg-deep h2,.bg-deep h3,.bg-deep h4{color:#fff;}
.bg-deep h2 i,.bg-deep h3 i{color:var(--sage);}
.bg-deep strong{color:#fff;}
.bg-deep .eyebrow{color:var(--sage);}
.bg-deep .lede{color:rgba(255,255,255,.9);}
.bg-deep .plant{display:none;}
.bg-deep .card{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);}
.bg-deep .card h3{color:#fff;}
.bg-deep .card p{color:rgba(255,255,255,.74);}
.bg-deep .card:hover{background:rgba(255,255,255,.08);}
.bg-deep .card::after{background:var(--sage);}
.bg-deep .card-link{color:var(--sage);}
.bg-deep .step{border-bottom-color:rgba(255,255,255,.12);}
.bg-deep .step h3{color:#fff;}
.bg-deep .step p{color:rgba(255,255,255,.74);}
.bg-deep .step::before{color:var(--sage);}
.bg-deep .outcome{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);}
.bg-deep .outcome span{color:rgba(255,255,255,.88);}
.bg-deep .outcome svg{stroke:var(--sage);}
.bg-deep .faq,.bg-deep .faq details{border-color:rgba(255,255,255,.14);}
.bg-deep .faq summary{color:#fff;}
.bg-deep .faq .answer{color:rgba(255,255,255,.76);}
.bg-deep .faq summary::after{color:var(--sage);}
.bg-deep .btn-outline{border-color:rgba(255,255,255,.35);color:#fff;}
.bg-deep .btn-outline:hover{background:#fff;color:var(--green);}
.bg-deep .btn-primary{background:#fff;color:var(--green);}
.bg-deep .btn-primary:hover{background:var(--sage);color:var(--green-dk);}
.bg-deep .checks li::before{background:var(--sage);}
.bg-deep .review{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);}
.bg-deep .review h3{color:#fff;}
.bg-deep .review p{color:rgba(255,255,255,.82);}
.bg-deep .review .who{color:var(--sage);}
.bg-deep .quiz{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.16);}
.bg-deep .quiz .q{color:#fff;}
.bg-deep .quiz .opt{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:rgba(255,255,255,.9);}
.bg-deep .quiz .opt:hover{border-color:var(--sage);background:rgba(255,255,255,.1);}
.bg-deep .quiz .result h3{color:#fff;}
.bg-deep .quiz .result p{color:rgba(255,255,255,.8);}
.bg-deep .split img{box-shadow:0 24px 60px rgba(0,0,0,.4);}
.bg-deep .info-item h3.info-h{color:#fff;}
.bg-deep .info-item p{color:rgba(255,255,255,.76);}
.bg-deep .info-item svg{stroke:var(--sage);}
.bg-deep .bm-figure{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);}
.bg-deep .bm-body{fill:rgba(255,255,255,.14);}
.bg-deep .bm-path{stroke:var(--sage);opacity:.45;}
.bg-deep .bm-node{fill:var(--sage);opacity:.55;}
.bg-deep .bm-hot .ring{fill:var(--sage);opacity:.22;}
.bg-deep .bm-hot .core{fill:var(--sage);opacity:1;}
.bg-deep .bm-tag{color:var(--sage);}
.bg-deep .bm-panel h3{color:#fff;}
.bg-deep .bm-block{border-top-color:rgba(255,255,255,.14);}
.bg-deep .bm-block small{color:var(--sage);}
.bg-deep .bm-block p{color:rgba(255,255,255,.8);}
.bg-deep .bm-chips span{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.16);color:rgba(255,255,255,.88);}
.bg-deep .bm-hint,.bg-deep .bm-note{color:rgba(255,255,255,.55);}
.bg-deep .bm-note a{color:var(--sage);}
.bg-deep .stat .n{color:#fff;}
.bg-deep .stat .l{color:rgba(255,255,255,.6);}
.bg-deep .journey::before{background:rgba(255,255,255,.16);}
.bg-deep .jstep{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);}
.bg-deep .jstep h3{color:#fff;}
.bg-deep .jstep p{color:rgba(255,255,255,.66);}
.bg-deep .jstep .num{border-color:var(--green);background:var(--sage);color:var(--green-dk);}

/* eyebrow / label colour on light = strong green, on dark = sage */
.eyebrow,.hero-eyebrow{color:var(--accent);}
.bg-deep .eyebrow,.bg-green .eyebrow,.cta-band .eyebrow,.revband .k{color:var(--sage);}
.bg-deep h1 i,.bg-deep h2 i,.bg-deep h3 i,.bg-green h2 i,.cta-band h2 i,.revband h2 i{color:var(--sage);}
.card .card-link{color:var(--accent);font-weight:600;}
.step::before{color:var(--accent);}
.bm-block small{color:var(--accent);}
.info-item svg{stroke:var(--accent);}
.outcome svg{stroke:var(--accent);}
.checks li::before{background:var(--accent);}
.bm-tag{color:var(--accent);}
.hero-rule{background:var(--accent);}

/* ================================================================
   SERVICE CARD CAROUSEL
   ================================================================ */
.svc-strip{background:#EFEDE6;}
.svc-head{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.25rem;flex-wrap:wrap;}
.svc-head h2{margin-top:.65rem;font-size:clamp(1.8rem,3.6vw,2.9rem);line-height:1.05;}
.svc-nav{display:flex;align-items:center;gap:.6rem;}
.svc-arrow{ width:46px;height:46px;border-radius:50%;background:rgba(30,58,47,.12); display:flex;align-items:center;justify-content:center;transition:all .22s ease;flex-shrink:0;
}
.svc-arrow svg{width:19px;height:19px;stroke:var(--green);stroke-width:1.8;fill:none;}
.svc-arrow.on{background:var(--green);}
.svc-arrow.on svg{stroke:#fff;}
.svc-arrow:hover{background:var(--green);}
.svc-arrow:hover svg{stroke:#fff;}
.svc-arrow:disabled{opacity:.3;cursor:not-allowed;}
.svc-arrow:disabled:hover{background:rgba(30,58,47,.12);}
.svc-arrow:disabled:hover svg{stroke:var(--green);}
.svc-all{ display:inline-flex;align-items:center;height:46px;padding:0 1.6rem;border-radius:100px; border:1.5px solid var(--green);color:var(--green);font-weight:600;font-size:.92rem;transition:all .22s ease;
}
.svc-all:hover{background:var(--green);color:#fff;}

.svc-rail{ display:flex;gap:1.1rem;overflow-x:auto;scroll-snap-type:x mandatory; scroll-behavior:smooth;padding-bottom:.5rem;scrollbar-width:none;-ms-overflow-style:none;
}
.svc-rail::-webkit-scrollbar{display:none;}
.svc-card{ position:relative;flex:0 0 auto;width:clamp(220px,26vw,300px);aspect-ratio:4/5; border-radius:1.1rem;overflow:hidden;scroll-snap-align:start; box-shadow:0 2px 10px rgba(30,58,47,.08);transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s ease;
}
.svc-card img{width:100%;height:100%;object-fit:cover;transition:transform .55s cubic-bezier(.16,1,.3,1);}
.svc-card::after{ content:"";position:absolute;inset:0;pointer-events:none; background:linear-gradient(to top,rgba(18,36,28,.92) 0%,rgba(18,36,28,.55) 30%,rgba(18,36,28,.08) 58%,rgba(18,36,28,0) 75%);
}
.svc-label{ position:absolute;left:1.15rem;right:1.15rem;bottom:1.1rem;z-index:2; color:#fff;font-family:var(--font-display);font-weight:700;font-size:1.12rem; letter-spacing:-.015em;line-height:1.2;
}
.svc-card:hover{transform:translateY(-6px);box-shadow:0 16px 40px rgba(30,58,47,.2);}
.svc-card:hover img{transform:scale(1.06);}
.svc-card:focus-visible{outline:2px solid var(--green);outline-offset:3px;}
@media(max-width:640px){
  .svc-card{width:74vw;}
  .svc-head{align-items:flex-start;}
  .svc-nav{width:100%;}
}
@media(prefers-reduced-motion:reduce){.svc-rail{scroll-behavior:auto;}.svc-card,.svc-card img{transition:none;}}

.svc-card .f-treating-patient-wide{object-position:58% 42% !important;}
.svc-card .f-assisting-patient-stand{object-position:52% 24% !important;}
.svc-card .f-neck-shoulder-treatment{object-position:50% 46% !important;}
.svc-card .f-shoulder-mobility-assessment{object-position:48% 26% !important;}
.svc-card .f-resistance-band-exercise{object-position:52% 34% !important;}
.svc-card .f-exercise-rehab-session{object-position:56% 18% !important;}
.svc-card .f-back-massage{object-position:52% 52% !important;}
.svc-card .f-consultation-with-patient{object-position:60% 26% !important;}
.svc-card .f-acupuncture-treatment{object-position:50% 46% !important;}
.svc-card .f-dumbbell-coaching{object-position:50% 26% !important;}

/* every interior hero identical height and rhythm */
.page-hero{min-height:clamp(360px,48vw,620px) !important;height:clamp(360px,48vw,620px);}
.page-hero .wrap{width:100%;}
.page-hero-copy h1{font-size:clamp(2rem,4.2vw,3.4rem);margin-bottom:0;}
.page-hero-copy h1 + p{margin-top:1.15rem;max-width:34rem;}
.page-hero-copy .btn-row{margin-top:2rem;}
.page-hero-copy .crumb{margin-bottom:1.25rem;}
.page-hero-copy .eyebrow{margin-bottom:.85rem;display:block;}
@media(max-width:767px){
  .page-hero{min-height:0 !important;padding:0 0 clamp(2rem,7vw,3rem);}
}

/* ---- video never leaves a void ---- */
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.vid-feature{align-items:center;}
@media(max-width:860px){.vid-feature{grid-template-columns:1fr;}.vid{max-width:340px;}}
.vid-grid .vid{max-width:100%;}

@media(min-width:768px){
  .page-hero{height:clamp(440px,46vw,620px);}
  .page-hero-copy{max-width:36rem;}
  .page-hero-copy h1{font-size:clamp(1.9rem,3.6vw,3rem);}
  .page-hero-copy h1 + p{font-size:1rem;line-height:1.6;}
}
@media(max-width:767px){.page-hero{height:auto;}}

/* ---------- services hub tiles ---------- */
.svc-tiles{display:grid;gap:1.4rem;}
@media(min-width:640px){.svc-tiles{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1024px){.svc-tiles{grid-template-columns:repeat(3,1fr);}}
.svc-tile{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line); border-radius:1rem;overflow:hidden;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease,border-color .3s ease;}
.svc-tile:hover{transform:translateY(-5px);border-color:var(--green);box-shadow:0 18px 40px rgba(30,58,47,.14);}
.svc-tile-img{aspect-ratio:16/10;overflow:hidden;background:var(--bg);}
.svc-tile-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.16,1,.3,1);}
.svc-tile:hover .svc-tile-img img{transform:scale(1.05);}
.svc-tile-body{padding:1.5rem 1.5rem 1.6rem;display:flex;flex-direction:column;flex:1;}
.svc-tile-body h3{font-size:1.18rem;margin-bottom:0;}
.svc-tile-body h3 + p{margin-top:.6rem;font-size:.94rem;flex:1;}
.svc-tile .card-link{margin-top:1.1rem;}

/* ---------- inline conversion bar ---------- */
.cta-inline{ display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap; background:var(--green);border-radius:1rem;padding:1.6rem 1.9rem;margin:0 auto;max-width:70rem;
}
.cta-inline p{margin:0;color:#fff;font-weight:600;font-size:clamp(1rem,1.9vw,1.22rem);letter-spacing:-.015em;}
.cta-inline small{display:block;color:var(--sage);font-weight:500;font-size:.86rem;margin-top:.25rem;letter-spacing:0;}
.cta-inline .btn-row{margin:0;flex-shrink:0;}
.cta-inline .btn-light{background:#fff;color:var(--green);}
.cta-inline .btn-light:hover{background:var(--sage);color:var(--green-dk);}
.cta-inline .btn-ghost-light{border-color:rgba(255,255,255,.4);color:#fff;}
.cta-inline .btn-ghost-light:hover{background:rgba(255,255,255,.12);}
.bg-deep .cta-inline{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);}
@media(max-width:700px){.cta-inline{flex-direction:column;align-items:flex-start;text-align:left;}
  .cta-inline .btn-row{width:100%;}.cta-inline .btn{flex:1;justify-content:center;}}

/* video never collapses */
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
.vid-feature > *{min-width:0;}
@media(max-width:860px){.vid-feature{grid-template-columns:1fr;justify-items:center;}
  .vid-feature > div:last-child{width:100%;}}

/* ---------- accreditation strip: logos are white-on-black artwork ---------- */
.accred-strip{background:var(--card);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:2.1rem 0;}
.accred-strip .accred-label{text-align:center;font-size:.7rem;letter-spacing:.22em; text-transform:uppercase;color:var(--muted);margin-bottom:1.35rem;}
.accred-strip .marquee-item{width:auto;padding:0 .6rem;display:flex;align-items:center;}
.accred-strip .marquee-item img{height:34px;width:auto;object-fit:contain;display:block; opacity:1 !important;filter:none !important;}
.accred-strip .marquee-item > span{ display:flex;align-items:center;justify-content:center;height:66px;min-width:132px;padding:0 1.4rem; background:#fff;border:1px solid var(--line);border-radius:.7rem;transition:border-color .3s ease,box-shadow .3s ease;}
.accred-strip .marquee-item:hover > span{border-color:var(--sage);box-shadow:0 6px 18px rgba(30,58,47,.1);}
.accred-strip .marquee-item{opacity:1;}
.accred-strip .marquee::before{background:linear-gradient(to right,var(--card),rgba(255,255,255,0));}
.accred-strip .marquee::after{background:linear-gradient(to left,var(--card),rgba(255,255,255,0));}

/* service tile crops (16:10 from portrait sources) */
.svc-tile-img img{object-position:50% 30%;}
.svc-tile-img .f-back-massage{object-position:56% 62% !important;}
.svc-tile-img .f-massage-treatment-table{object-position:52% 58% !important;}
.svc-tile-img .f-treating-patient-couch{object-position:46% 30% !important;}
.svc-tile-img .f-treating-patient-wide{object-position:44% 30% !important;}
.svc-tile-img .f-neck-shoulder-treatment{object-position:50% 52% !important;}
.svc-tile-img .f-shoulder-mobility-assessment{object-position:56% 26% !important;}
.svc-tile-img .f-exercise-rehab-session{object-position:52% 40% !important;}
.svc-tile-img .f-treatment-chronic-pain{object-position:56% 34% !important;}
.svc-tile-img .f-acupuncture-treatment{object-position:50% 50% !important;}
.svc-tile-img .f-dumbbell-coaching{object-position:44% 30% !important;}
.svc-tile-img .f-consultation-with-patient{object-position:62% 26% !important;}

/* ================================================================
   QUICK ENQUIRY FORM (per page, pre-tagged)
   ================================================================ */
.quickform{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:start;}
@media(min-width:920px){.quickform{grid-template-columns:1fr 1fr;}}
.quickform-copy h2{margin-bottom:0;}
.quickform-copy h2 + .lede{margin-top:1rem;}
.quickform-copy .checks{margin-top:1.5rem;}
.quickform-alt{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem;}
.quickform-form{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16); border-radius:1rem;padding:clamp(1.5rem,3vw,2.2rem);}
.qf-field{margin-bottom:1.1rem;}
.qf-field label{display:block;font-size:.86rem;font-weight:600;color:#fff;margin-bottom:.5rem;}
.qf-field label span{font-weight:400;color:var(--sage);}
.qf-field input,.qf-field textarea{width:100%;background:rgba(255,255,255,.14); border:1.5px solid rgba(255,255,255,.34);border-radius:.6rem;padding:.85rem 1rem; color:#fff;font-family:inherit;font-size:.98rem;transition:border-color .2s,background .2s;}
.qf-field input:hover,.qf-field textarea:hover{background:rgba(255,255,255,.18);}
.qf-field input::placeholder,.qf-field textarea::placeholder{color:rgba(255,255,255,.45);}
.qf-field input:focus,.qf-field textarea:focus{outline:none;border-color:#fff;background:rgba(255,255,255,.2);}
.qf-opts{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;}
.qf-opt{position:relative;display:flex;align-items:center;justify-content:center;text-align:center; padding:.7rem .5rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.2); border-radius:.6rem;font-size:.85rem;font-weight:500;color:rgba(255,255,255,.9); cursor:pointer;transition:all .2s;margin-bottom:0;}
.qf-opt input{position:absolute;opacity:0;width:0;height:0;}
.qf-opt:hover{background:rgba(255,255,255,.12);border-color:var(--sage);}
.qf-opt:has(input:checked){background:var(--sage);border-color:var(--sage);color:var(--green-dk);font-weight:600;}
.qf-opt:has(input:focus-visible){outline:2px solid #fff;outline-offset:2px;}
.qf-submit{width:100%;justify-content:center;background:#fff;color:var(--green);margin-top:.4rem;}
.qf-submit:hover{background:var(--sage);color:var(--green-dk);}
.qf-note{font-size:.8rem;color:rgba(255,255,255,.6);margin:.9rem 0 0;text-align:center;}

/* ================================================================
   20 SECOND CHECK desktop tab, mobile lives in the sticky bar
   ================================================================ */
.quickcheck{position:fixed;left:0;bottom:22px;z-index:60;display:none;}
@media(min-width:900px){.quickcheck{display:block;}}
.qc-tab{display:flex;align-items:center;gap:.6rem;background:var(--green);color:#fff; padding:.85rem 1.3rem .85rem 1.1rem;border-radius:0 100px 100px 0;font-weight:600;font-size:.92rem; box-shadow:0 6px 24px rgba(30,58,47,.3);transition:padding .25s,background .25s;}
.qc-tab svg{width:19px;height:19px;stroke:var(--sage);stroke-width:2;fill:none;flex-shrink:0;}
.qc-tab:hover{padding-left:1.5rem;background:var(--green-dk);}
.quickcheck.open .qc-tab{display:none;}
.qc-panel{width:340px;background:#fff;border-radius:0 1rem 1rem 0;box-shadow:0 20px 60px rgba(30,58,47,.28); border:1px solid var(--line);border-left:none;overflow:hidden;position:relative;}
.qc-close{position:absolute;top:.6rem;right:.8rem;font-size:1.5rem;line-height:1;color:var(--muted); width:28px;height:28px;border-radius:50%;transition:background .2s;}
.qc-close:hover{background:var(--bg);color:var(--green);}
.qc-body{padding:1.5rem 1.4rem 1.4rem;}
.qc-dots{display:flex;gap:.35rem;margin-bottom:1.1rem;}
.qc-dots span{width:26px;height:3px;border-radius:2px;background:var(--line);transition:background .3s;}
.qc-dots span.on{background:var(--green);}
.qc-step{display:none;}
.qc-step.show{display:block;animation:qcIn .28s ease;}
@keyframes qcIn{from{opacity:0;transform:translateX(8px)}to{opacity:1;transform:none}}
.qc-q{font-family:var(--font-display);font-weight:700;font-size:1.05rem;color:var(--green); margin-bottom:.9rem;letter-spacing:-.015em;}
.qc-opts{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;}
.qc-opts button{padding:.65rem .5rem;background:var(--bg);border:1px solid var(--line); border-radius:.55rem;font-size:.85rem;font-weight:500;color:var(--green);transition:all .2s;}
.qc-opts button:hover{background:var(--green);color:#fff;border-color:var(--green);}
#qcForm input{width:100%;margin-bottom:.55rem;padding:.75rem .9rem;border:1px solid var(--line); border-radius:.55rem;font-family:inherit;font-size:.92rem;background:var(--bg);}
#qcForm input:focus{outline:none;border-color:var(--green);}
#qcForm .btn{width:100%;justify-content:center;margin-top:.2rem;}
.qc-fine{font-size:.74rem;color:var(--muted);text-align:center;margin:.7rem 0 0;}
@media(prefers-reduced-motion:reduce){.qc-step.show{animation:none;}}

/* mobile: second button in the sticky bar */

.quickcheck.hushed{opacity:0;pointer-events:none;transform:translateX(-12px);}
.quickcheck{transition:opacity .3s ease,transform .3s ease;}

.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;}

/* ---------- interior hero on mobile: image on top, copy beneath ---------- */
@media(max-width:767px){
  .page-hero{display:block;height:auto !important;min-height:0 !important;padding:0 0 clamp(2rem,7vw,2.75rem);}
  .page-hero .wrap{padding-left:1.25rem;padding-right:1.25rem;}
  .page-hero-bg{margin-bottom:1.6rem;aspect-ratio:16/11;}
  .page-hero-bg img{object-position:50% 30%;}
  .page-hero-bg::after{ background:linear-gradient(to bottom,rgba(248,246,242,0) 55%,rgba(248,246,242,.55) 82%,rgba(248,246,242,1) 100%) !important;
  }
  .page-hero-copy{width:100% !important;max-width:none !important;}
  .page-hero-copy h1{font-size:clamp(1.75rem,7.6vw,2.3rem);}
  .page-hero-copy .crumb{margin-bottom:.9rem;}
  .page-hero-copy .btn-row{margin-top:1.5rem;}
  .page-hero-copy .btn{flex:1 1 auto;justify-content:center;}
}

/* topbar: one line on small screens */
@media(max-width:640px){
  .topbar{font-size:.7rem;letter-spacing:.05em;}
  .topbar .wrap{gap:.5rem;flex-wrap:nowrap;white-space:nowrap;}
  .topbar .tb1{display:none;}
  .topbar .tb1 + .tbsep{display:none;}
  .topbar .tb-lg{display:none;}
  .topbar .tb-sm{display:inline;}
}


/* tablet: hero CTAs side by side, hero a little taller */
@media(min-width:768px) and (max-width:999px){
  .page-hero{height:clamp(460px,58vw,560px);}
  .page-hero-copy{width:74%;max-width:none;}
  .page-hero-copy .btn{padding:.85rem 1.35rem;font-size:.88rem;}
  .page-hero-copy .btn-row{flex-direction:row;flex-wrap:wrap;}
  .page-hero-copy .btn{flex:0 0 auto;}
  .hero-copy .btn-row{flex-direction:row;flex-wrap:wrap;}
}

/* keep hero CTAs on one line wherever there is room */
@media(min-width:768px){
  .hero-cta{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:1.25rem;}
  .page-hero-copy .btn-row{flex-direction:row;flex-wrap:wrap;}
}
@media(min-width:1000px) and (max-width:1120px){
  .page-hero-copy .btn{padding:.85rem 1.3rem;font-size:.88rem;}
}

@media(min-width:768px) and (max-width:999px){
  .hero-copy{width:76% !important;max-width:none !important;}
  .hero-cta .btn-hero{padding:.9rem 1.4rem;font-size:.9rem;}
}

/* ---------- image-only grids: swipe rail on mobile ---------- */
@media(max-width:700px){
  .grid.img-rail{ display:flex;gap:.85rem;overflow-x:auto;scroll-snap-type:x mandatory; scrollbar-width:none;-ms-overflow-style:none; margin-left:-1.25rem;margin-right:-1.25rem;padding:0 1.25rem .4rem;
  }
  .grid.img-rail::-webkit-scrollbar{display:none;}
  .grid.img-rail img{ flex:0 0 auto;width:74vw;max-width:300px;aspect-ratio:4/5 !important; scroll-snap-align:start;
  }
  .grid.img-rail::after{content:"";flex:0 0 .25rem;}
}

/* ---------- double review banner, full width ---------- */
.rev-banner{overflow:hidden;}
.rev-banner .rev-marquee{width:100%;overflow:hidden;padding:0;margin-bottom:1.1rem;}
.rev-banner .rev-marquee:last-of-type{margin-bottom:0;}
.rev-banner .rev-track{display:flex;gap:1.1rem;width:max-content;animation:revScroll 78s linear infinite;}
.rev-banner .rev-rev .rev-track{animation-name:revScrollBack;animation-duration:88s;}
@keyframes revScroll{from{transform:translateX(0)}to{transform:translateX(-33.333%)}}
@keyframes revScrollBack{from{transform:translateX(-33.333%)}to{transform:translateX(0)}}
.rev-banner .rev-marquee:hover .rev-track{animation-play-state:paused;}
.rev-banner .review{flex:0 0 auto;width:clamp(300px,25vw,380px);}
@media(prefers-reduced-motion:reduce){.rev-banner .rev-track{animation:none;}
  .rev-banner .rev-marquee{overflow-x:auto;}}

/* ---------- hero-specific framing (must beat the tile/rail rules) ---------- */
.page-hero-bg img.f-back-massage{object-position:70% 40% !important;}
.page-hero-bg img.f-massage-treatment-table{object-position:64% 34% !important;}
.page-hero-bg img.f-treating-patient-couch{object-position:50% 30% !important;}
.page-hero-bg img.f-treating-patient-wide{object-position:48% 30% !important;}
.page-hero-bg img.f-treating-patient-hero{object-position:52% 30% !important;}
.page-hero-bg img.f-neck-shoulder-treatment{object-position:50% 42% !important;}
.page-hero-bg img.f-shoulder-mobility-assessment{object-position:50% 26% !important;}
.page-hero-bg img.f-exercise-rehab-session{object-position:52% 16% !important;}
.page-hero-bg img.f-treatment-chronic-pain{object-position:58% 34% !important;}
.page-hero-bg img.f-consultation-with-patient{object-position:62% 26% !important;}
.page-hero-bg img.f-exterior-wide{object-position:55% 55% !important;}
.page-hero-bg img.f-treatment-room-wood-floor{object-position:50% 48% !important;}
.page-hero-bg img.f-treatment-room{object-position:50% 52% !important;}
.page-hero-bg img.f-josh-seated-clinic{object-position:50% 16% !important;}
.page-hero-bg img.f-josh-at-desk-laptop{object-position:54% 22% !important;}
.page-hero-bg img.f-treating-patient-about{object-position:44% 30% !important;}
@media(max-width:767px){
  .page-hero-bg img.f-back-massage{object-position:60% 45% !important;}
  .page-hero-bg img.f-massage-treatment-table{object-position:55% 40% !important;}
}

/* ---------- enquiry form on a light section ---------- */
#enquire.bg-white{background:var(--card);}
#enquire .quickform-copy h2{color:var(--green);}
#enquire .quickform-copy h2 i{color:var(--accent);}
#enquire .quickform-copy .lede{color:var(--text);}
#enquire .quickform-copy .eyebrow{color:var(--accent);}
#enquire .checks li{color:var(--text);}
#enquire .checks li strong{color:var(--green);}
#enquire .checks li::before{background:var(--accent);}
#enquire .quickform-alt .btn-primary{background:var(--green);color:#fff;}
#enquire .quickform-alt .btn-primary:hover{background:var(--green-dk);}
#enquire .quickform-alt .btn-outline{border-color:var(--green);color:var(--green);}
#enquire .quickform-alt .btn-outline:hover{background:var(--green);color:#fff;}
#enquire .quickform-form{background:#fff;border:1px solid var(--line);box-shadow:0 14px 44px rgba(30,58,47,.09);}
#enquire .qf-field label{color:var(--green);}
#enquire .qf-field label span{color:var(--muted);}
#enquire .qf-field input,#enquire .qf-field textarea{ background:var(--bg);border:1.5px solid var(--line);color:var(--green);}
#enquire .qf-field input::placeholder,#enquire .qf-field textarea::placeholder{color:var(--muted);}
#enquire .qf-field input:hover,#enquire .qf-field textarea:hover{background:#fff;border-color:var(--sage);}
#enquire .qf-field input:focus,#enquire .qf-field textarea:focus{background:#fff;border-color:var(--green);}
#enquire .qf-opt{background:var(--bg);border:1.5px solid var(--line);color:var(--green);}
#enquire .qf-opt:hover{background:#fff;border-color:var(--sage);}
#enquire .qf-opt:has(input:checked){background:var(--green);border-color:var(--green);color:#fff;}
#enquire .qf-submit{background:var(--green);color:#fff;}
#enquire .qf-submit:hover{background:var(--green-dk);}
#enquire .qf-note{color:var(--muted);}

/* ---------- buttons never clip their own label ---------- */
.btn,.btn-hero,.btn-sticky,.svc-all,.qc-tab{ white-space:nowrap;text-overflow:clip;box-sizing:border-box;
}
@media(max-width:520px){
  .btn,.btn-hero{padding-left:1.15rem;padding-right:1.15rem;font-size:.88rem;}
  .cta-band .btn,.quickform-alt .btn{width:100%;justify-content:center;}
  .btn-row{gap:.6rem;}
  .sticky-cta .btn{padding-left:.85rem;padding-right:.85rem;font-size:.82rem;min-width:0;}
  .sticky-cta{gap:.5rem;padding-left:.75rem;padding-right:.75rem;}
  .site-header .btn-primary{padding-left:1rem;padding-right:1rem;font-size:.84rem;}
}
@media(max-width:380px){
  .btn,.btn-hero{font-size:.84rem;padding-left:1rem;padding-right:1rem;}
  .sticky-cta .btn{font-size:.78rem;}
}

/* ---------- Google mark on review attributions ---------- */
.who,.revband .who{display:flex;align-items:center;gap:.5rem;}
.g-mark{width:14px;height:14px;flex-shrink:0;display:block;}
.review .who .g-mark{width:15px;height:15px;}
.bg-green .who,.bg-deep .who,.revband .who{color:var(--sage);}
[style*="text-transform:uppercase"] .g-mark{width:13px;height:13px;vertical-align:-2px;}
.rev-banner .who,.review .who{align-items:center;}
blockquote + div .g-mark{margin-right:.15rem;}

/* ---------- footer assurance strip: the things patients check first ---------- */
.foot-assure{ display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 1.5rem; padding-bottom:2.25rem;margin-bottom:2.5rem;border-bottom:1px solid rgba(255,255,255,.14);
}
.foot-assure span{ display:inline-flex;align-items:center;gap:.5rem;font-size:.86rem; color:rgba(255,255,255,.82);font-weight:500;
}
.foot-assure span::before{ content:"";width:15px;height:15px;flex-shrink:0;border-radius:50%; background:var(--sage);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/13px no-repeat; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/13px no-repeat;
}
@media(max-width:640px){
  .foot-assure{gap:.55rem 1.1rem;padding-bottom:1.75rem;margin-bottom:2rem;}
  .foot-assure span{font-size:.8rem;}
}

/* ================================================================
   MOBILE HERO: image, headline and CTA all in the first screen
   ================================================================ */
@media(max-width:767px){
  /* shorter photo so the headline is never below the fold */
  .hero-mob{aspect-ratio:16/10 !important;max-height:34vh !important;}
  .page-hero-bg{aspect-ratio:16/10 !important;max-height:34vh;margin-bottom:1.35rem;}

  .hero,.page-hero{padding-bottom:1.5rem !important;}
  .hero-copy,.page-hero-copy{padding-top:0;}

  .hero-eyebrow,.page-hero-copy .eyebrow{
    font-size:.64rem;letter-spacing:.16em;margin-bottom:.6rem;}
  .page-hero-copy .crumb{font-size:.76rem;margin-bottom:.7rem;}

  .hero h1,.page-hero-copy h1{
    font-size:clamp(1.65rem,7.2vw,2.1rem);line-height:1.12;margin-bottom:0;}
  .hero h1 + p,.page-hero-copy h1 + p,.hero-lede{
    margin-top:.85rem;font-size:.95rem;line-height:1.55;}

  .hero-rule{margin:1rem 0;height:4px;width:44px;}
  .hero-trust{gap:.4rem 1rem;margin-top:1.1rem;font-size:.66rem;}
  .hero-trust .sep{display:none;}

  .hero-cta,.page-hero-copy .btn-row{margin-top:1.35rem;gap:.6rem;}
  .hero-cta .btn-hero,.page-hero-copy .btn{width:100%;justify-content:center;}
  .hero-cta .link-hero{width:100%;justify-content:center;padding-top:.4rem;}

  /* the service list under the homepage H1 reads cleaner as one tight line */
  .hero-copy p[style*="font-weight:500"]{font-size:.88rem;line-height:1.5;}
}

/* ---------- bottom of the screen: stop the pile-up ---------- */
@media(max-width:899px){
  .wa-float{bottom:calc(var(--sticky-h,72px) + 14px) !important;right:14px !important;
    width:52px !important;height:52px !important;padding:0 !important;}
  .wa-float span{display:none !important;}
  .sticky-cta{box-shadow:0 -6px 24px rgba(30,58,47,.1);}
  body{padding-bottom:calc(var(--sticky-h,72px) + 8px);}
  /* anchor jumps must clear the sticky bar */
  html{scroll-padding-bottom:calc(var(--sticky-h,72px) + 16px);scroll-padding-top:80px;}
}

/* homepage mobile hero: eyebrow, headline, one line, CTA. Nothing else. */
@media(max-width:767px){
  .hero-copy p[style*="font-weight:500"]{display:none;}   /* service list duplicates the nav */
  .hero-trust{display:none;}                               /* already in the topbar */
  .hero-rule{display:none;}
  .hero-lede{margin-top:.8rem;font-size:.93rem;line-height:1.5;}
  .hero-eyebrow{font-size:.62rem;}
  .hero h1{font-size:clamp(1.6rem,6.8vw,2rem);}
  .hero-cta{margin-top:1.2rem;}
}
@media(max-width:899px){
  .wa-float{bottom:calc(var(--sticky-h,72px) + 20px) !important;}
}

/* WhatsApp bubble stays out of the way until you have left the hero */
@media(max-width:899px){
  .wa-float{opacity:0;visibility:hidden;transform:translateY(10px) scale(.9);
    transition:opacity .28s ease,transform .28s ease,visibility .28s;}
  .wa-float.show{opacity:1;visibility:visible;transform:none;}
}

/* smallest phones: tighten so the CTA still clears the fold */
@media(max-width:345px){
  .hero-mob{max-height:22vh !important;}
  .page-hero-bg{max-height:20vh !important;}
  .hero-eyebrow{display:none;}
  .page-hero-copy .crumb{display:none;}
  .page-hero-copy .eyebrow{font-size:.58rem;margin-bottom:.45rem;}
  .page-hero-copy h1{font-size:1.42rem;}
  .page-hero-copy h1 + p{font-size:.85rem;margin-top:.65rem;line-height:1.45;}
  .page-hero-copy .btn-row{margin-top:1rem;}
  .page-hero{padding-bottom:1.1rem !important;}
}
@media(max-width:375px){
  .hero-mob{max-height:26vh !important;}
  .hero h1{font-size:1.5rem;}
  .hero-lede{font-size:.88rem;margin-top:.7rem;}
  .hero-eyebrow{margin-bottom:.5rem;}
  .hero-cta{margin-top:1rem;}
}

/* smallest phones: sticky bar labels must fit */


/* ---------- three photo cluster: one large, two stacked, copy alongside ---------- */
.photo-cluster{display:grid;gap:clamp(1.75rem,3.5vw,3.25rem);align-items:center;}
@media(min-width:900px){.photo-cluster{grid-template-columns:1.05fr .95fr;}}
.pc-frames{display:grid;grid-template-columns:1.02fr .98fr;gap:.9rem;align-items:center;}
.pc-frames img{width:100%;height:100%;object-fit:cover;border-radius:1.1rem;
  box-shadow:0 16px 42px rgba(30,58,47,.14);display:block;}
.pc-big{aspect-ratio:3/4;}
.pc-big img{height:100%;}
.pc-stack{display:grid;grid-template-rows:1fr 1fr;gap:.9rem;}
.pc-stack img{aspect-ratio:1/1;}
.pc-copy h2{margin-bottom:0;}
.pc-copy .eyebrow{display:block;margin-bottom:.8rem;}
.pc-copy h2 + .lede{margin-top:1.1rem;}
.pc-copy .btn-row{margin-top:1.9rem;}
.bg-deep .pc-frames img{box-shadow:0 18px 46px rgba(0,0,0,.34);}
@media(max-width:899px){
  .pc-frames{gap:.7rem;}
  .pc-copy{text-align:left;}
}
@media(max-width:520px){
  .pc-frames{gap:.55rem;}
  .pc-copy .btn-row .btn{width:100%;justify-content:center;}
}

/* ---------- Josh credentials block ---------- */
.josh-cred{background:#fff;border:1px solid var(--line);border-radius:1.25rem;
  padding:clamp(1.75rem,4vw,3rem);box-shadow:0 14px 44px rgba(30,58,47,.07);}
.josh-cred p{font-size:clamp(1rem,1.9vw,1.1rem);line-height:1.7;}
.josh-cred p + p{margin-top:1.1rem;}
.josh-quals{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.75rem;}
.josh-quals span{display:inline-block;padding:.5rem 1.05rem;background:var(--bg);
  border:1px solid var(--line);border-radius:100px;font-size:.85rem;font-weight:500;color:var(--green);}

/* ---------- prose block ---------- */
.prose p{font-size:1.02rem;line-height:1.75;}
.prose p + p{margin-top:1.05rem;}
.bg-deep .prose p{color:rgba(255,255,255,.82);}

/* ---------- credential verification block ---------- */
.verify{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);
  border-radius:1.1rem;padding:clamp(1.6rem,3.5vw,2.4rem);}
.verify h3{color:#fff;margin-bottom:.8rem;}
.verify p{color:rgba(255,255,255,.82);margin-bottom:0;}
.verify strong{color:#fff;letter-spacing:.03em;}
.verify .btn-row{margin-top:1.5rem;}

/* ---------- social proof under the closing CTA ---------- */
.cta-proof{margin:1.5rem auto 0;text-align:center;font-size:.86rem;
  color:rgba(255,255,255,.72);display:flex;align-items:center;justify-content:center;
  gap:.5rem;flex-wrap:wrap;}
.cta-proof .stars{color:#E8B84B;letter-spacing:.06em;}

/* verification block on a light section */
.bg-white .verify{background:var(--card);border-color:var(--line);box-shadow:0 12px 36px rgba(30,58,47,.08);}
.bg-white .verify h3{color:var(--green);}
.bg-white .verify p{color:var(--text);}
.bg-white .verify strong{color:var(--green);}
.bg-white .verify .btn-outline{border-color:var(--green);color:var(--green);}
.bg-white .verify .btn-outline:hover{background:var(--green);color:#fff;}

/* ---------- SEO copy reads as part of the page ---------- */
.seo-split{display:grid;gap:clamp(1.5rem,4vw,3.5rem);align-items:start;}
@media(min-width:900px){.seo-split{grid-template-columns:.85fr 1.15fr;}}
.seo-head h2{margin-bottom:0;font-size:clamp(1.5rem,2.8vw,2.1rem);}
.seo-head .eyebrow{display:block;margin-bottom:.7rem;}
.seo-head .lede{margin-top:.9rem;}
.seo-body p{font-size:1rem;line-height:1.75;}
.seo-body p + p{margin-top:1rem;}
.bg-deep .seo-body p{color:rgba(255,255,255,.8);}

/* ---------- video never sits alone ---------- */
.vid-solo{display:grid;gap:clamp(1.5rem,4vw,3rem);align-items:center;}
@media(min-width:860px){.vid-solo{grid-template-columns:minmax(280px,360px) 1fr;}}
.vid-solo .vid{margin:0;}
.vid-solo-copy h3{font-size:clamp(1.3rem,2.4vw,1.75rem);margin-bottom:.7rem;}
.vid-solo-copy .checks{margin:1.2rem 0 1.6rem;}

/* ---------- tighter vertical rhythm, less dead air ---------- */
section{padding:clamp(2.75rem,5.5vw,4.5rem) 0;}
.sec-head{margin-bottom:clamp(1.6rem,3.2vw,2.5rem);}
.sec-head.center{max-width:62ch;margin-left:auto;margin-right:auto;}
.grid{gap:clamp(1rem,2vw,1.4rem);}

/* Google mark must follow the alignment of its container */
.who{display:inline-flex;align-items:center;gap:.5rem;}
.center .who,[style*="text-align:center"] .who,.revband-body.center .who{justify-content:center;}
.quote-band .who,.bg-green .wrap.center .who{justify-content:center;}
/* a centred parent should centre the whole attribution, not just its text */
.sec-head.center .who,.cta-band .who{justify-content:center;}

/* the hover shine must stay inside the button */
/* clip the hover shine without clipping the label */
.btn,.btn-hero{position:relative;isolation:isolate;}
.btn::before,.btn-hero::before,.btn-primary::before,.btn-light::before{
  border-radius:inherit;clip-path:inset(0 round 100px);z-index:-1;}
.btn > *,.btn-hero > *{position:relative;z-index:1;}

.btn-primary::before,.btn-light::before{
  transform:translateX(-101%);opacity:0;transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .2s;}
.btn-primary:hover::before,.btn-light:hover::before{transform:translateX(0);opacity:1;}

/* small screens: labels shrink to fit rather than clip */
@media(max-width:520px){
  .cta-inline .btn-row{width:100%;}
  .cta-inline .btn{flex:1 1 auto;min-width:0;font-size:.84rem;padding-left:.9rem;padding-right:.9rem;}
  .sticky-cta .btn-primary{font-size:.76rem;padding-left:.7rem;padding-right:.7rem;}
  .sticky-cta .btn-outline{font-size:.76rem;padding-left:.7rem;padding-right:.7rem;}
}
@media(max-width:400px){
  .cta-inline .btn{font-size:.8rem;}
  .sticky-cta .btn-primary{font-size:.72rem;}
}

/* sticky bar: three buttons must fit the narrowest phones */


@media(max-width:345px){
  .site-header .btn-primary{font-size:0;padding-left:.8rem;padding-right:.8rem;}
  .site-header .btn-primary::after{content:"Book";font-size:.78rem;font-weight:600;}
}

/* sticky bar sizing */
@media(max-width:430px){
  .sticky-cta{gap:.45rem;padding-left:.7rem;padding-right:.7rem;}
  .sticky-cta .btn{padding-left:.85rem;padding-right:.85rem;font-size:.78rem;}
}
@media(max-width:360px){
  .sticky-cta .btn{padding-left:.7rem;padding-right:.7rem;font-size:.74rem;}
}

/* centred quote attribution: icon and name on one line, centred */
.quote-who{display:inline-flex !important;align-items:center;gap:.55rem;justify-content:center;}
.wrap-narrow.center .quote-who{margin:0 auto;}
blockquote{font-style:italic;}

/* Josh's clinical attribution reads as a signature, not body copy */
.attrib{font-size:.9rem;color:var(--muted);margin-top:1.35rem;padding-top:1rem;
  border-top:1px solid var(--line);display:inline-block;font-weight:500;}
.bg-deep .attrib,.bg-green .attrib{color:var(--sage);border-top-color:rgba(255,255,255,.2);}

/* floating widgets must not sit on the logo strip */
.accred-strip,.marquee{position:relative;z-index:1;}

.wa-float.hushed{opacity:0;pointer-events:none;transform:translateY(8px);}
.wa-float{transition:opacity .3s ease,transform .3s ease,visibility .3s;}

/* ================================================================
   STICKY HEADER
   ================================================================ */
.site-header{transition:background .3s ease,box-shadow .3s ease,transform .3s ease;}
.site-header.stuck{background:var(--green);box-shadow:0 4px 24px rgba(30,58,47,.22);}
.site-header.stuck .nav a{color:rgba(255,255,255,.9);}
.site-header.stuck .nav a:hover,.site-header.stuck .nav a[aria-current="page"]{color:#fff;}
.site-header.stuck .nav .sub a{color:var(--green);}
.site-header.stuck .nav .sub a:hover{color:var(--green-dk);}
.site-header.stuck .logo img{filter:brightness(0) invert(1);}
.site-header.stuck .nav-toggle span{background:#fff;}
.site-header.stuck .btn-primary{background:#fff;color:var(--green);}
.site-header.stuck .btn-primary:hover{background:var(--sage);color:var(--green-dk);}
.site-header.stuck .hdr-call{color:#fff;}
.site-header.stuck .hdr-call:hover{color:var(--sage);}

/* call link in the header */
.hdr-call{display:inline-flex;align-items:center;gap:.5rem;color:var(--green);
  font-weight:600;font-size:.9rem;margin-right:1rem;white-space:nowrap;transition:color .2s;}
.hdr-call svg{width:17px;height:17px;flex-shrink:0;}
.hdr-call:hover{color:var(--accent);}
@media(max-width:1080px){.hdr-call span{display:none;}
  .hdr-call{margin-right:.6rem;width:40px;height:40px;justify-content:center;
    border:1px solid var(--line);border-radius:50%;}
  .site-header.stuck .hdr-call{border-color:rgba(255,255,255,.35);}}
@media(max-width:520px){.hdr-call{width:36px;height:36px;margin-right:.4rem;}
  .hdr-call svg{width:15px;height:15px;}}

/* ================================================================
   INLINE CTA BAR: always on a light band, never merged into green
   ================================================================ */
.cta-inline-wrap{background:var(--bg);padding:clamp(2rem,4vw,3rem) 0;}
.cta-inline{box-shadow:0 14px 40px rgba(30,58,47,.16);}

/* closing CTA band: stars sit with the text, not orphaned */
.cta-proof{margin:1.4rem auto 0;display:inline-flex;align-items:center;justify-content:center;
  gap:.55rem;flex-wrap:wrap;font-size:.86rem;color:rgba(255,255,255,.75);}
.cta-proof .stars{color:#E8B84B;letter-spacing:.04em;font-size:.9rem;line-height:1;}
.cta-band .btn-row{margin-bottom:0;}

/* the local copy now reads as an intro to the questions, not a slab */
.faq-intro{max-width:64ch;margin:0 auto clamp(1.75rem,3.5vw,2.5rem);}
.faq-intro p{font-size:1rem;line-height:1.75;color:var(--muted);}
.faq-intro p + p{margin-top:.9rem;}
.bg-deep .faq-intro p{color:rgba(255,255,255,.75);}

/* ---------- outcome chips on patient stories ---------- */
.outcomes{display:flex;flex-wrap:wrap;gap:.55rem;margin:1.25rem 0 0;padding:0;list-style:none;}
.outcomes li{display:inline-flex;align-items:center;gap:.45rem;
  padding:.45rem 1rem .45rem .8rem;border-radius:100px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  font-size:.82rem;font-weight:600;color:#fff;}
.outcomes li::before{content:"";width:14px;height:14px;flex-shrink:0;border-radius:50%;
  background:var(--sage);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/12px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/12px no-repeat;}
.page-hero .outcomes li,.hero .outcomes li{background:var(--card);border-color:var(--line);color:var(--green);}
.page-hero .outcomes li::before,.hero .outcomes li::before{background:var(--accent);}
@media(max-width:520px){.outcomes li{font-size:.76rem;padding:.4rem .8rem .4rem .65rem;}}

.cta-proof{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;
  margin:1.5rem auto 0;font-size:.85rem;color:rgba(255,255,255,.78);max-width:34rem;}
.cta-proof .stars{color:#E8B84B;letter-spacing:.06em;font-size:.95rem;line-height:1;margin-right:.15rem;}
.cta-proof .dot{opacity:.45;}
@media(max-width:520px){
  .cta-proof{font-size:.78rem;gap:.4rem;}
  .cta-proof .dot{display:none;}
  .cta-proof > span:not(.stars){flex:0 0 auto;}
}

/* sticky needs a non-clipping body; keep horizontal clipping on the root */

/* proof line: one line where it fits */
.cta-proof{max-width:44rem;gap:.45rem .6rem;}
@media(max-width:640px){.cta-proof{max-width:22rem;}}

/* elements that used to rely on body clipping now clip themselves */
.marquee,.rev-marquee,.svc-strip,.accred-strip{overflow:hidden;max-width:100vw;}
.rev-banner{overflow:hidden;}
.hero,.page-hero{overflow:hidden;}
section{overflow-x:clip;}


/* skip link: clipped, not pushed off screen (off screen extends the scroll area) */
.skip{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
  background:var(--green);color:#fff;padding:0;border-radius:.5rem;}
.skip:focus{position:fixed;left:1rem;top:1rem;width:auto;height:auto;
  clip:auto;clip-path:none;padding:.75rem 1.25rem;z-index:200;font-weight:600;}

/* the off canvas nav must not extend the page now that body no longer clips */


/* ---------- fixed header on scroll ---------- */
body{overflow-x:hidden;}
.site-header{position:relative;z-index:70;}
.site-header.stuck{
  position:fixed;top:0;left:0;right:0;
  background:var(--green);box-shadow:0 4px 24px rgba(30,58,47,.22);
  animation:hdrDrop .28s ease;
}
@keyframes hdrDrop{from{transform:translateY(-100%)}to{transform:none}}
body.hdr-fixed{padding-top:var(--hdr-h,72px);}
@media(prefers-reduced-motion:reduce){.site-header.stuck{animation:none;}}

.prose-split{display:grid;gap:clamp(1.5rem,4vw,3rem);align-items:start;}
@media(min-width:900px){.prose-split{grid-template-columns:.85fr 1.15fr;}}
.ps-head h2{margin-bottom:0;font-size:clamp(1.5rem,2.8vw,2.1rem);}
.ps-body p{font-size:1rem;line-height:1.75;}
.ps-body p + p{margin-top:1rem;}

/* ---------- logos ---------- */
.brand img{height:48px;width:auto;display:block;}
@media(max-width:520px){.brand img{height:38px;}}
.site-header.stuck .brand img{filter:brightness(0) invert(1);}
.foot-grid img{height:46px;width:auto;margin-bottom:1.25rem;}

/* ---------- header: icon only, less clutter ---------- */
.hdr-call{width:42px;height:42px;padding:0;margin-right:.75rem;justify-content:center;
  border:1px solid var(--line);border-radius:50%;color:var(--green);}
.hdr-call span{display:none;}
.hdr-call svg{width:18px;height:18px;}
.site-header.stuck .hdr-call{border-color:rgba(255,255,255,.32);color:#fff;}
.site-header.stuck .hdr-call:hover{background:rgba(255,255,255,.12);}
@media(max-width:520px){.hdr-call{width:38px;height:38px;margin-right:.5rem;}}

/* ---------- hero headline must never run off the edge ---------- */
.hero h1,.page-hero-copy h1{overflow-wrap:break-word;hyphens:none;max-width:100%;}
@media(min-width:1000px){.hero-copy{width:52%;max-width:36rem;}}

/* ---------- inline CTA bar: breathing room from the section above ---------- */
.cta-inline-wrap{padding:clamp(2.5rem,5vw,3.75rem) 0;}

/* ---------- proof line: real spacing between items ---------- */
.cta-proof{display:flex;align-items:center;justify-content:center;
  gap:.5rem .85rem;flex-wrap:wrap;margin:1.6rem auto 0;
  font-size:.86rem;color:rgba(255,255,255,.78);max-width:46rem;}
.cta-proof .stars{color:#E8B84B;letter-spacing:.12em;font-size:.95rem;
  line-height:1;margin-right:.35rem;}
.cta-proof .dot{opacity:.4;margin:0 .1rem;}
.cta-proof > span:not(.stars):not(.dot):not(.proof-text){white-space:nowrap;}
@media(max-width:560px){
  .cta-proof{gap:.35rem .6rem;font-size:.78rem;}
  .cta-proof .dot{display:none;}
}

/* ---------- logos: bigger ---------- */
.brand img{height:56px;width:auto;display:block;}
@media(max-width:900px){.brand img{height:48px;}}
@media(max-width:520px){.brand img{height:42px;}}
.foot-grid img{height:92px;width:auto;margin-bottom:1.5rem;}
@media(max-width:640px){.foot-grid img{height:72px;}}

/* ---------- assurance bar: thinner, better spaced ---------- */
.foot-assure{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:.5rem 2rem;padding-bottom:1.5rem;margin-bottom:2rem;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.foot-assure span{font-size:.82rem;gap:.45rem;color:rgba(255,255,255,.78);font-weight:500;}
.foot-assure span::before{width:13px;height:13px;}
@media(max-width:640px){
  .foot-assure{gap:.45rem 1.1rem;padding-bottom:1.25rem;margin-bottom:1.5rem;}
  .foot-assure span{font-size:.76rem;}
}

/* ---------- inline CTA: a full width band, not a floating pill ---------- */
.cta-inline-wrap{background:var(--green-dk);padding:0;}
.cta-inline{
  border-radius:0;box-shadow:none;background:transparent;
  max-width:var(--wrap);margin:0 auto;
  padding:clamp(1.75rem,3.5vw,2.5rem) clamp(1.25rem,4vw,2rem);
}
.cta-inline-wrap .wrap{padding-left:0;padding-right:0;max-width:none;}

/* ---------- hero headline must clear the photo ---------- */
@media(min-width:1000px){
  .hero-copy{width:50%;max-width:33rem;}
  .hero h1{font-size:clamp(1.9rem,3.4vw,2.9rem);}
}
@media(min-width:1280px){.hero-copy{max-width:36rem;}}

/* ---------- review attributions: wrap rather than spill out of the card ---------- */
.who,.quote-who{
  display:inline-flex;align-items:center;gap:.5rem;
  flex-wrap:nowrap;white-space:normal;font-size:.78rem;letter-spacing:.1em;
  max-width:100%;min-width:0;align-items:flex-start;
}
.who span,.quote-who span{white-space:normal;min-width:0;flex:1 1 auto;overflow-wrap:anywhere;}
.who .g-mark,.quote-who .g-mark{flex:0 0 auto;margin-top:.05em;}
@media(max-width:560px){
  .who,.quote-who{font-size:.7rem;letter-spacing:.06em;}
}
.review .who{margin-top:auto;padding-top:1rem;}
.review{display:flex;flex-direction:column;}

/* attributions and the proof line stay on one line where there is room */
.who,.quote-who{line-height:1.2;}
.review .who{font-size:.72rem;letter-spacing:.08em;}
@media(min-width:768px) and (max-width:1100px){
  .review .who{font-size:.66rem;letter-spacing:.05em;}
}
.rev-banner .review .who,.revband .who{font-size:.74rem;letter-spacing:.09em;}

.cta-proof{max-width:none;flex-wrap:wrap;}
@media(max-width:1100px){.cta-proof{flex-wrap:wrap;}}
@media(min-width:1101px){.cta-proof{font-size:.84rem;}}

.cta-inline-wrap{background:var(--green-dk) !important;}
.cta-inline-wrap + .revband,.revband + .cta-inline-wrap{border-top:1px solid rgba(255,255,255,.12);}

/* ================================================================
   DEFINITIVE: inline CTA bar and hero secondary button
   ================================================================ */
section.cta-inline-wrap{
  background:var(--bg) !important;
  padding:clamp(2.5rem,5vw,3.75rem) 0 !important;
}
.cta-inline-wrap .cta-inline{
  background:var(--green);
  border-radius:1.25rem;
  padding:clamp(1.5rem,3vw,2.25rem) clamp(1.5rem,3.5vw,3rem);
  display:flex;align-items:center;justify-content:space-between;
  gap:clamp(1.25rem,3vw,2.5rem);flex-wrap:wrap;
  box-shadow:0 16px 44px rgba(30,58,47,.18);
}
.cta-inline-wrap .cta-inline p{margin:0;color:#fff;}
.cta-inline-wrap .cta-inline p strong,
.cta-inline-wrap .cta-inline p:first-child{font-weight:700;font-size:1.08rem;}
.cta-inline-wrap .cta-inline .sub{
  display:block;font-weight:400;font-size:.92rem;color:rgba(255,255,255,.72);margin-top:.35rem;}
.cta-inline-wrap .cta-inline .btn-row{margin:0;flex-shrink:0;}
@media(max-width:760px){
  .cta-inline-wrap .cta-inline{flex-direction:column;align-items:flex-start;}
  .cta-inline-wrap .cta-inline .btn-row{width:100%;}
  .cta-inline-wrap .cta-inline .btn{flex:1 1 auto;justify-content:center;}
}

/* hero secondary action reads as a button, not stray text */
.hero-cta .link-hero{
  display:inline-flex;align-items:center;justify-content:center;
  padding:0 1.75rem;height:56px;border-radius:12px;
  border:1.5px solid var(--line);background:var(--card);
  color:var(--green);font-weight:600;font-size:.98rem;
  transition:background .2s,border-color .2s,color .2s;white-space:nowrap;
}
.hero-cta .link-hero:hover{background:var(--green);border-color:var(--green);color:#fff;}
.hero-cta{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;}
@media(max-width:520px){
  .hero-cta .link-hero{width:100%;height:52px;}
  .hero-cta .btn-hero{width:100%;}
}

/* ================================================================
   ENQUIRY FORM: compact, stepped, matched to the copy beside it
   ================================================================ */
.quickform{align-items:start;}
@media(min-width:920px){.quickform{grid-template-columns:1fr 1fr;gap:clamp(2rem,4vw,3.25rem);}}
.quickform-form{padding:clamp(1.35rem,2.5vw,1.75rem);border-radius:1rem;}
.quickform-form .qf-field{margin-bottom:.85rem;}
.quickform-form .qf-field:last-of-type{margin-bottom:1rem;}
.qf-field label{font-size:.8rem;margin-bottom:.4rem;letter-spacing:.01em;}
.qf-opts{gap:.4rem;}
.qf-opt{padding:.52rem .5rem;font-size:.8rem;border-radius:.5rem;}
.qf-field input,.qf-field textarea{padding:.6rem .8rem;font-size:.92rem;border-radius:.5rem;}
.qf-field textarea{min-height:64px;}
.qf-submit{margin-top:.2rem;padding:.85rem 1.25rem;}
.qf-note{font-size:.74rem;margin-top:.7rem;}
.qf-field{position:relative;}
/* the copy column matches the form height rather than leaving a void */
.quickform-copy{display:flex;flex-direction:column;}
.quickform-copy .lede{margin-bottom:1rem;}
.quickform-copy .checks{margin-top:0;margin-bottom:1.25rem;}
.quickform-copy .checks li{margin-bottom:.5rem;font-size:.94rem;}
.quickform-alt{margin-top:auto;padding-top:.25rem;}
.quickform-alt .btn{font-size:.9rem;padding:.75rem 1.2rem;}
@media(max-width:919px){.quickform-alt{margin-top:1.5rem;}}

/* ---------- vertical timeline ---------- */
.timeline{list-style:none;margin:0;padding:0;position:relative;}
.timeline::before{content:"";position:absolute;left:11px;top:14px;bottom:14px;width:2px;
  background:linear-gradient(to bottom,var(--sage),rgba(143,179,160,.25));}
.timeline li{position:relative;padding:0 0 clamp(1.75rem,3.5vw,2.5rem) clamp(2.5rem,5vw,3.25rem);}
.timeline li:last-child{padding-bottom:0;}
.timeline li::before{content:"";position:absolute;left:0;top:6px;width:24px;height:24px;
  border-radius:50%;background:var(--green-dk);border:2px solid var(--sage);}
.timeline li::after{content:"";position:absolute;left:8px;top:14px;width:8px;height:8px;
  border-radius:50%;background:var(--sage);}
.tl-when{display:inline-block;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--sage);font-weight:600;margin-bottom:.4rem;}
.bg-deep .timeline h3,.bg-green .timeline h3{color:#fff;}
.timeline h3{color:var(--green);font-size:clamp(1.1rem,2vw,1.35rem);margin-bottom:.45rem;}
.bg-deep .timeline p,.bg-green .timeline p{color:rgba(255,255,255,.78);}
.timeline p{color:var(--muted);margin:0;font-size:.98rem;line-height:1.7;}
@media(max-width:520px){
  .timeline li{padding-left:2.25rem;}
  .timeline::before{left:10px;}
  .timeline li::before{width:22px;height:22px;}
  .timeline li::after{left:7px;top:13px;}
}

.timeline li::before{background:var(--bg);border-color:var(--accent);}
.bg-deep .timeline li::before,.bg-green .timeline li::before{background:var(--green-dk);border-color:var(--sage);}
.timeline li::after{background:var(--accent);}
.bg-deep .timeline li::after,.bg-green .timeline li::after{background:var(--sage);}
.tl-when{color:var(--accent);}
.bg-deep .tl-when,.bg-green .tl-when{color:var(--sage);}
.timeline::before{background:linear-gradient(to bottom,var(--accent),rgba(63,122,94,.2));}
.bg-deep .timeline::before,.bg-green .timeline::before{background:linear-gradient(to bottom,var(--sage),rgba(143,179,160,.25));}

/* the contact page review reads as a green quote card */
.review-card-green{background:var(--green);color:#fff;border:none;
  border-radius:1rem;padding:clamp(1.5rem,3vw,2rem);box-shadow:0 14px 40px rgba(30,58,47,.16);}
.review-card-green p{color:rgba(255,255,255,.92);}
.review-card-green p:last-child{color:var(--sage) !important;}
.review-card-green .g-mark{flex-shrink:0;}

/* ================================================================
   MOBILE BOTTOM BAR
   ================================================================ */
.sticky-cta{
  position:fixed;left:0;right:0;bottom:0;z-index:65;display:none;
  gap:.5rem;padding:.6rem .75rem calc(.6rem + env(safe-area-inset-bottom,0px));
  background:rgba(255,255,255,.97);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);box-shadow:0 -4px 20px rgba(30,58,47,.09);
  align-items:center;
}
@media(max-width:899px){.sticky-cta{display:flex;}}
.sticky-cta .btn{height:48px;padding:0 .9rem;font-size:.86rem;border-radius:12px;
  display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;}
.sticky-cta .sticky-page{flex:1 1 0;min-width:0;border:1.5px solid var(--line);color:var(--green);background:#fff;}
.sticky-cta .btn-primary{flex:1 1 0;min-width:0;background:var(--green);color:#fff;}
.sticky-cta .btn-wa{flex:0 0 48px;width:48px;padding:0;background:var(--green);color:#fff;}
.sticky-cta .btn-wa svg{width:24px;height:24px;}
.sticky-cta .btn-wa:hover{background:var(--green-dk);}
@media(max-width:360px){
  .sticky-cta{gap:.4rem;padding-left:.55rem;padding-right:.55rem;}
  .sticky-cta .btn{font-size:.8rem;padding:0 .7rem;}
}
/* the bar hides while a field is focused so it never covers the keyboard */
body.field-focus .sticky-cta{transform:translateY(110%);}
.sticky-cta{transition:transform .22s ease;}

/* no floating widgets on mobile, everything lives in the bar */
@media(max-width:899px){
  .quickcheck,.wa-float{display:none !important;}
  body{padding-bottom:calc(74px + env(safe-area-inset-bottom,0px));}
}

/* ---------- mobile spacing ---------- */
@media(max-width:899px){
  section{padding:clamp(2.25rem,7vw,3rem) 0;}
  .wrap,.wrap-narrow{padding-left:1.25rem;padding-right:1.25rem;}
  .sec-head{margin-bottom:1.5rem;}
  .grid{gap:.9rem;}
  .foot-grid{gap:2rem;}
  .site-footer .foot-grid ul{display:grid;grid-template-columns:1fr 1fr;gap:.15rem 1rem;}
  .site-footer .foot-grid ul a{padding:.4rem 0;display:block;}
  .foot-assure{gap:.5rem .9rem;padding-bottom:1.5rem;margin-bottom:1.75rem;}
}

/* ---------- hamburger: always on top and always tappable ---------- */
.nav-toggle{position:relative;z-index:120;}
@media(max-width:1024px){
  .nav{z-index:110;}
  .nav.open ~ .nav-toggle,.site-header .nav-toggle{z-index:120;}
}

/* ---------- Our Space: the tour block was drifting apart ---------- */
.vid-solo{gap:clamp(1.5rem,3vw,2.5rem);align-items:center;}
@media(min-width:860px){.vid-solo{grid-template-columns:minmax(260px,320px) 1fr;}}
.vid-solo-copy h3{margin-bottom:.6rem;}
.vid-solo-copy .lede{margin-top:0;margin-bottom:1.1rem;}
.vid-solo-copy .checks{margin:0 0 1.4rem;}
.vid-solo-copy .checks li{margin-bottom:.5rem;}
.vid-solo-copy .btn-row{margin-top:0;}
/* the intro above it should not leave a big gap before the tour */
.vid-solo{margin-top:clamp(1.5rem,3vw,2.25rem);}


/* ---------- mobile menu ---------- */
@media(max-width:1024px){
  .site-header{z-index:130;}          /* header stays above the panel */
  .nav{z-index:110;padding-top:calc(var(--hdr-h,72px) + 1.5rem);}
  .nav-toggle{position:relative;z-index:140;}
  /* the icon becomes an X while the menu is open */
  .nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
  .nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
  .nav-toggle span{transition:transform .25s ease,opacity .2s ease;}
}
.nav-backdrop{position:fixed;inset:0;background:rgba(18,36,28,.45);z-index:105;
  opacity:0;transition:opacity .28s ease;}
.nav-backdrop.show{opacity:1;}
@media(min-width:1025px){.nav-backdrop{display:none !important;}}
/* the panel fills the screen below 900, so the dim layer only greys out the header */
@media(max-width:899px){.nav-backdrop{display:none !important;}}
body.nav-open{overflow:hidden;}

/* closed panel must be untappable and unfocusable, not just off screen */
@media(max-width:1024px){
  .nav{visibility:hidden;pointer-events:none;}
  .nav.open{visibility:visible;pointer-events:auto;}
}

/* backdrop-filter on the header traps position:fixed children.
   Drop it on mobile so the menu panel can fill the viewport. */
@media(max-width:1024px){
  .site-header{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;
    background:var(--bg);}
  .site-header.stuck{background:var(--green);}
}

/* ================================================================
   TIMELINE
   ================================================================ */
.timeline{list-style:none;margin:0;padding:0;position:relative;}
.timeline::before{content:"";position:absolute;left:23px;top:14px;bottom:14px;
  width:2px;background:linear-gradient(var(--sage),rgba(143,179,160,.25));}
.tl-step{position:relative;display:grid;grid-template-columns:48px 1fr;
  gap:1.1rem;padding-bottom:clamp(1.5rem,3vw,2.25rem);}
.tl-step:last-child{padding-bottom:0;}
.tl-marker{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;background:var(--card);border:2px solid var(--sage);
  color:var(--accent);position:relative;z-index:1;flex-shrink:0;}
.tl-marker svg{width:21px;height:21px;}
.tl-when{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent);font-weight:600;margin-bottom:.3rem;}
.tl-body h3{font-size:clamp(1.05rem,2vw,1.25rem);margin-bottom:.4rem;}
.tl-body p{margin:0;color:var(--muted);font-size:.97rem;line-height:1.65;}
.bg-deep .timeline::before{background:linear-gradient(var(--sage),rgba(143,179,160,.2));}
.bg-deep .tl-marker{background:rgba(255,255,255,.08);border-color:var(--sage);color:var(--sage);}
.bg-deep .tl-when{color:var(--sage);}
.bg-deep .tl-body h3{color:#fff;}
.bg-deep .tl-body p{color:rgba(255,255,255,.76);}
@media(max-width:520px){
  .timeline::before{left:19px;}
  .tl-step{grid-template-columns:40px 1fr;gap:.9rem;}
  .tl-marker{width:40px;height:40px;}
  .tl-marker svg{width:18px;height:18px;}
}

/* ================================================================
   COMPARISON STRIP
   ================================================================ */
.vs{display:grid;gap:1.25rem;align-items:stretch;}
@media(min-width:820px){.vs{grid-template-columns:1fr auto 1fr;}}
.vs-col{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);
  border-radius:1.1rem;padding:clamp(1.4rem,3vw,2rem);}
.vs-col h3{font-size:1.05rem;margin-bottom:1rem;color:#fff;}
.vs-col ul{list-style:none;margin:0;padding:0;}
.vs-col li{position:relative;padding-left:1.7rem;margin-bottom:.75rem;
  font-size:.95rem;line-height:1.6;color:rgba(255,255,255,.8);}
.vs-col li:last-child{margin-bottom:0;}
.vs-col li::before{position:absolute;left:0;top:.05rem;font-size:1rem;line-height:1.4;}
.vs-them li::before{content:"\00d7";color:rgba(255,255,255,.4);font-weight:700;}
.vs-them{opacity:.82;}
.vs-us{background:rgba(143,179,160,.14);border-color:rgba(143,179,160,.4);}
.vs-us li::before{content:"\2713";color:var(--sage);font-weight:700;}
.vs-divider{display:flex;align-items:center;justify-content:center;}
.vs-divider span{display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:50%;background:var(--sage);color:var(--green-dk);
  font-weight:800;font-size:.85rem;letter-spacing:.02em;}
@media(max-width:819px){.vs-divider{padding:.2rem 0;}}

/* ================================================================
   OUTCOME BAND
   ================================================================ */
.outcome-band{display:grid;gap:1rem;}
@media(min-width:640px){.outcome-band{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1000px){.outcome-band{grid-template-columns:repeat(4,1fr);}}
.oc-card{background:var(--card);border:1px solid var(--line);border-radius:1.1rem;
  padding:clamp(1.35rem,2.5vw,1.75rem);}
.oc-icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;background:var(--bg);color:var(--accent);margin-bottom:1rem;}
.oc-icon svg{width:22px;height:22px;}
.oc-when{display:block;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent);font-weight:600;margin-bottom:.35rem;}
.oc-card h3{font-size:1.05rem;margin-bottom:.4rem;}
.oc-card p{margin:0;font-size:.93rem;line-height:1.6;color:var(--muted);}
.bg-deep .oc-card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);}
.bg-deep .oc-icon{background:rgba(255,255,255,.1);color:var(--sage);}
.bg-deep .oc-when{color:var(--sage);}
.bg-deep .oc-card h3{color:#fff;}
.bg-deep .oc-card p{color:rgba(255,255,255,.76);}

/* ================================================================
   MOBILE CHECKLIST FIXES
   ================================================================ */

/* inputs at 16px so iOS never zooms on focus */
input,textarea,select,
.qf-field input,.qf-field textarea,
#qcForm input,.field input,.field textarea{
  font-size:16px !important;
  min-height:48px;
}
textarea,.qf-field textarea,.field textarea{min-height:96px;}
select{min-height:48px;}

/* nothing under 14px anywhere */
.eyebrow,.tl-when,.oc-when,.qf-note,.qc-fine,.cta-proof,.crumb,
.foot-bottom,.foot-bottom a,.topbar,.hero-trust,.who,.stat-label,
.accred-label,.tip,.opt,.badge,small{font-size:.875rem;}
.topbar{font-size:.8125rem;}
@media(max-width:640px){.topbar{font-size:.8125rem;}}
.foot-assure span{font-size:.875rem;}
.qf-field label span,.field label .opt{font-size:.875rem;}
.svc-card .svc-label,.marquee-item{font-size:.875rem;}

/* tap targets: 44px minimum on touch */
@media(max-width:899px){
  .nav a,.nav .has-sub > a{min-height:48px;display:flex;align-items:center;}
  .foot-grid a,.foot-bottom a{min-height:44px;display:inline-flex;align-items:center;}
  .qf-opt{min-height:48px;}
  .qc-opts button,.opt{min-height:48px;}
  .svc-arrow{width:48px;height:48px;}
  .social a,.foot-social a{width:44px;height:44px;display:inline-flex;
    align-items:center;justify-content:center;}
  summary{min-height:48px;display:flex;align-items:center;}
  .bm-hot{min-width:44px;min-height:44px;}
}

/* h1 in the 28 to 36px band on mobile */
@media(max-width:520px){
  .hero h1,.page-hero-copy h1,h1{font-size:clamp(1.75rem,8vw,2.25rem);}
}
@media(max-width:360px){
  .hero h1,.page-hero-copy h1,h1{font-size:1.75rem;}
}

/* header under 70px on mobile */
@media(max-width:899px){
  .site-header .wrap{padding-top:.55rem;padding-bottom:.55rem;}
  .brand img{height:36px;}
  .hdr-call{width:40px;height:40px;}
  .site-header .btn-primary{height:40px;padding:0 1rem;font-size:.82rem;}
  .nav-toggle{width:44px;height:44px;}
}

/* tap highlight styled rather than the default blue flash */
a,button,summary,.btn,.qf-opt,.opt,[role="button"]{
  -webkit-tap-highlight-color:rgba(30,58,47,.12);
}

/* animate transform and opacity only */
.reveal{transition:opacity .5s ease,transform .5s ease;}
.btn,.btn-hero{transition:background-color .2s ease,color .2s ease,
  border-color .2s ease,transform .2s ease,box-shadow .2s ease;}

/* ================================================================
   MINIMUM READABLE SIZE: nothing under 14px anywhere
   ================================================================ */
.hero-eyebrow,.eyebrow,.bm-tag,.bm-hint,.info-h,.tl-when,.oc-when,
.stat-label,.svc-label,.crumb,.who,.qf-note,.qc-fine,.cta-proof,
.foot-assure span,.foot-bottom,.foot-bottom a,.marquee-item,
.accred-label,.chip,.tip,.badge,.step-count,label,small,
.review .who,.rev-banner .who,.quote-who,.attrib{
  font-size:0.875rem !important;   /* 14px */
  line-height:1.5;
}
.topbar,.topbar span{font-size:0.8125rem !important;}  /* 13px, decorative only */
@media(min-width:900px){.topbar,.topbar span{font-size:0.875rem !important;}}
.hero-trust,.hero-trust span{font-size:0.875rem !important;}
.sticky-cta .btn{font-size:0.875rem !important;}
@media(max-width:360px){.sticky-cta .btn{font-size:0.8125rem !important;}}
.btn,.btn-hero,.btn-sticky{font-size:0.9375rem;}
@media(max-width:520px){.btn,.btn-hero{font-size:0.9375rem;}}
.bm-hint,.bm-tag{letter-spacing:.1em;}

/* the last few small labels, raised to 14px */
.stat .l,.stats .l,.l{font-size:0.875rem !important;letter-spacing:.1em;}
.cta-inline .btn,.cta-inline-wrap .btn{font-size:0.9375rem !important;}
main [style*="font-size:.7"],main [style*="font-size:.6"],
main [style*="font-size:.8"],footer [style*="font-size:.7"],
footer [style*="font-size:.8"]{font-size:0.875rem !important;}

.bm-chips span,.chips span,.qual span,.josh-quals span{font-size:0.875rem !important;}

.revband-body .k,.card .pill,.pill,.k{font-size:0.875rem !important;}
@media(max-width:520px){
  .page-hero-copy p{font-size:0.9375rem !important;line-height:1.6;}
}

.outcomes li{font-size:0.875rem !important;}

/* ================================================================
   CREDENTIALS BLOCK ON A LIGHT SECTION
   ================================================================ */

/* ================================================================
   CLOSING CTA: proof line needs room and separators
   ================================================================ */
.cta-band .btn-row{margin-bottom:0;}
.cta-proof{
  margin:1.75rem auto 0 !important;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:.5rem .9rem !important;max-width:40rem;
  padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.16);
}
.cta-proof .stars{color:#E8B84B;letter-spacing:.14em;font-size:.95rem;line-height:1;}
.cta-proof > span:not(.stars):not(.dot){color:rgba(255,255,255,.8);}
.cta-proof .dot{color:rgba(255,255,255,.35);}
@media(max-width:600px){
  .cta-proof{gap:.35rem .7rem !important;max-width:22rem;padding-top:1.25rem;}
  .cta-proof .dot{display:none;}
}

/* ================================================================
   TWO STEP ENQUIRY FORM
   ================================================================ */
.quickform-form{max-width:32rem;}
.qf-step{display:block;}
.qf-step[hidden]{display:none;}
.qf-next{width:100%;justify-content:center;margin-top:.4rem;}
.qf-back{display:inline-flex;align-items:center;gap:.4rem;background:none;border:0;
  color:var(--muted);font-size:.875rem;font-weight:600;padding:.3rem 0 .9rem;cursor:pointer;}
.qf-back::before{content:"\2190";}
.qf-back:hover{color:var(--green);}
#enquire .qf-back{color:var(--muted);}
#enquire .qf-back:hover{color:var(--green);}
.qf-field{margin-bottom:.9rem;}
.qf-opts{gap:.5rem;}
.qf-opt{padding:.6rem .5rem;min-height:48px;}

/* ================================================================
   MOBILE HEADER
   ================================================================ */
@media(max-width:1024px){
  /* phone icon centred in its circle */
  .hdr-call{width:44px;height:44px;padding:0;display:inline-flex;
    align-items:center;justify-content:center;border-radius:50%;
    border:1.5px solid var(--line);flex-shrink:0;}
  .hdr-call svg{width:19px;height:19px;display:block;margin:0;}
  .hdr-call span{display:none;}
  .site-header.stuck .hdr-call{border-color:rgba(255,255,255,.4);color:#fff;}

  /* the burger stays visible and tappable when the header is stuck */
  .site-header.stuck .nav-toggle span{background:#fff;}
  .nav-toggle{width:44px;height:44px;display:inline-flex;flex-direction:column;
    align-items:center;justify-content:center;gap:5px;flex-shrink:0;background:none;border:0;}
  .nav-toggle span{display:block;width:22px;height:2px;border-radius:2px;background:var(--green);}

  .header-cta{display:flex;align-items:center;gap:.5rem;}
  .site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:.6rem;}
}
@media(max-width:400px){
  .hdr-call{width:40px;height:40px;}
  .nav-toggle{width:40px;height:40px;}
  .site-header .btn-primary{display:none;}   /* Book lives in the bottom bar */
}

.qf-invalid label{color:#E8B84B;}
.qf-invalid .qf-opt{border-color:#E8B84B;}
#enquire .qf-invalid label{color:#B3541E;}
#enquire .qf-invalid .qf-opt{border-color:#B3541E;}

/* ================================================================
   HAMBURGER, REBUILT
   ================================================================ */
.nav-toggle{
  display:none;width:44px;height:44px;padding:0;border:0;background:none;
  flex-direction:column;align-items:center;justify-content:center;gap:5px;
  cursor:pointer;flex-shrink:0;position:relative;z-index:140;
  -webkit-tap-highlight-color:rgba(30,58,47,.12);
}
@media(max-width:1024px){.nav-toggle{display:inline-flex;}}
.nav-toggle span{
  display:block;width:22px;height:2px;border-radius:2px;
  background:var(--green);
  transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .18s ease,background-color .3s ease;
}
.site-header.stuck .nav-toggle span{background:#fff;}
.nav-toggle[aria-expanded="true"] span{background:var(--green);}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;transform:scaleX(0);}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
@media(prefers-reduced-motion:reduce){.nav-toggle span{transition:none;}}

/* the phone icon truly centred in its circle */
.hdr-call{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;padding:0 !important;border-radius:50%;
  border:1.5px solid var(--line);color:var(--green);flex-shrink:0;
  line-height:0;transition:background .2s,border-color .2s,color .2s;
}
.hdr-call svg{width:19px;height:19px;display:block;flex-shrink:0;}
.hdr-call span{display:none !important;}
.hdr-call:hover{background:var(--green);border-color:var(--green);color:#fff;}
.site-header.stuck .hdr-call{border-color:rgba(255,255,255,.4);color:#fff;}
.site-header.stuck .hdr-call:hover{background:rgba(255,255,255,.14);}

/* the call button must stay a centred flex circle, whatever else is declared */
a.hdr-call{display:inline-flex !important;align-items:center !important;
  justify-content:center !important;width:44px;height:44px;padding:0 !important;
  border-radius:50%;line-height:0;}
a.hdr-call > svg{width:19px !important;height:19px !important;display:block;margin:0;}
@media(max-width:400px){a.hdr-call{width:40px;height:40px;}
  a.hdr-call > svg{width:17px !important;height:17px !important;}}

/* ================================================================
   CLOSING CTA BAND: even rhythm
   ================================================================ */
.cta-band .wrap{padding-top:0;padding-bottom:0;}
.cta-band h2{margin-bottom:1rem;}
.cta-band .lede{margin-bottom:2.25rem;max-width:38ch;margin-left:auto;margin-right:auto;}
.cta-band .btn-row{margin:0 0 2rem;gap:.9rem;justify-content:center;}
.cta-band .btn{height:56px;padding:0 1.9rem;font-size:.98rem;}
.cta-proof{
  margin:0 auto !important;padding-top:1.75rem;
  border-top:1px solid rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center;
  gap:.7rem !important;flex-wrap:wrap;max-width:32rem;
}
.cta-proof .stars{color:#E8B84B;letter-spacing:.16em;font-size:1rem;line-height:1;}
.cta-proof .proof-text{color:rgba(255,255,255,.8);font-size:.875rem !important;line-height:1.5;}
@media(max-width:560px){
  .cta-band .btn-row{flex-direction:column;margin-bottom:1.75rem;}
  .cta-band .btn{width:100%;}
  .cta-proof{flex-direction:column;gap:.5rem !important;padding-top:1.5rem;max-width:20rem;}
  .cta-proof .proof-text{text-align:center;}
}

.cta-proof .proof-text{white-space:normal;text-wrap:balance;}
@media(max-width:560px){
  .cta-proof{max-width:18rem;}

}
.cta-band .btn-row .btn{height:56px !important;padding:0 1.9rem !important;}
@media(max-width:560px){.cta-band .btn-row .btn{height:52px !important;}}

.cta-proof .proof-text{font-size:0.875rem !important;}
@media(max-width:560px){.cta-proof{max-width:17rem;}}

/* hero trust row stays on one line on desktop */
@media(min-width:900px){
  .hero-trust{display:flex;flex-wrap:nowrap;align-items:center;gap:.85rem;white-space:nowrap;}
  .hero-trust span:not(.sep){flex:0 0 auto;}
  .hero-trust .sep{opacity:.4;flex:0 0 auto;}
}
@media(min-width:900px) and (max-width:1180px){.hero-trust{font-size:.8125rem !important;gap:.6rem;}}

/* ---------- contact map card ---------- */
.contact-map{margin-top:1.5rem;border-radius:1rem;overflow:hidden;
  border:1px solid var(--line);background:var(--card);}
.contact-map iframe{display:block;width:100%;height:260px;border:0;}
.contact-map-info{padding:1.25rem 1.35rem;}
.contact-map-info p{margin:0 0 .9rem;font-size:.9375rem;line-height:1.6;}
.contact-map-info strong{color:var(--green);}
.hours{list-style:none;margin:0 0 .9rem;padding:.9rem 0;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);}
.hours li{display:flex;justify-content:space-between;gap:1rem;
  font-size:.875rem;padding:.3rem 0;color:var(--text);}
.hours li span:first-child{color:var(--muted);}
.hours li span:last-child{font-weight:600;color:var(--green);font-variant-numeric:tabular-nums;}
.map-links{margin:0 !important;font-size:.875rem;}
.map-links a{color:var(--green);font-weight:600;}
@media(max-width:520px){.contact-map iframe{height:210px;}}

/* ---------- homepage: keep the proof block readable on a phone ---------- */
/* one review band on small screens, both on desktop */
@media(max-width:899px){
  .rev-banner .rev-marquee.rev-rev{display:none;}
}
/* the three patient videos swipe sideways instead of stacking into a wall */
@media(max-width:1023px){
  .vid-grid.three{
    display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;
    padding-bottom:1rem;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
  }
  .vid-grid.three::-webkit-scrollbar{display:none;}
  .vid-grid.three > .vid-card{flex:0 0 80%;scroll-snap-align:start;}
}
@media(min-width:700px) and (max-width:1023px){
  .vid-grid.three > .vid-card{flex:0 0 43%;}
}

/* ---------- clinical safety panel: when to seek urgent help ---------- */
.redflag{
  background:var(--card);border:1px solid var(--line);border-left:5px solid #B4552F;
  border-radius:var(--radius);padding:clamp(1.5rem,3vw,2.25rem);box-shadow:var(--shadow);
}
.redflag .rf-head{display:flex;gap:.85rem;align-items:flex-start;margin-bottom:1rem;}
.redflag .rf-head svg{width:26px;height:26px;flex:0 0 26px;stroke:#B4552F;fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;margin-top:.15rem;}
.redflag h3{font-size:clamp(1.25rem,2.2vw,1.6rem);margin:0;}
.redflag ul{list-style:none;margin:0 0 1.15rem;display:grid;gap:.7rem;}
.redflag ul li{position:relative;padding-left:1.6rem;}
.redflag ul li::before{
  content:"";position:absolute;left:.35rem;top:.62rem;width:.45rem;height:.45rem;
  border-radius:50%;background:#B4552F;
}
.redflag .rf-action{
  background:rgba(180,85,47,.07);border-radius:.55rem;padding:1rem 1.15rem;
  font-size:.97rem;color:var(--green);
}
.redflag .rf-action strong{color:#8E3F20;}
.redflag .rf-note{margin-top:1rem;font-size:.9rem;color:var(--muted);}
.bg-white .redflag,.bg-deep .redflag{background:var(--card);}
.bg-deep .redflag h3,.bg-deep .redflag li,.bg-deep .redflag p{color:var(--text);}
.bg-deep .redflag h3{color:var(--green);}

/* ---------- linked condition explainer ---------- */
.linkpair{display:grid;gap:1.25rem;}
@media(min-width:780px){.linkpair{grid-template-columns:1fr 1fr;}}
.linkpair .lp{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:clamp(1.35rem,2.6vw,1.9rem);}
.linkpair .lp h3{font-size:1.18rem;margin-bottom:.6rem;}
.linkpair .lp p{font-size:.99rem;}
.linkpair .lp .lp-tag{display:inline-block;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--sage-text);margin-bottom:.5rem;}

/* ---------- contrast corrections (WCAG AA) ---------- */
/* footer legal links were 3.97:1 on the dark green */
.foot-bottom{color:rgba(255,255,255,.72);}
.foot-bottom a{color:rgba(255,255,255,.88);}
.foot-bottom span{color:rgba(255,255,255,.72) !important;}
/* "Learn more" was accent green on a dark green card, 2.15:1 */
.bg-deep .card .card-link,.bg-green .card .card-link{color:var(--sage);}
/* eyebrow on the stone panel was 4.31:1 */
.svc-strip .eyebrow{color:var(--green);}


/* ---------- content must never depend on JavaScript to become visible ---------- */
/* .reveal only starts hidden when the js class is set on <html>, so a failed or
   blocked script leaves the page readable instead of blank. */
@media(prefers-reduced-motion:reduce){
  .js .reveal,.reveal{opacity:1 !important;transform:none !important;transition:none !important;}
}
/* the floating check tab should not appear on a printed page */
@media print{
  .quickcheck,.nav-backdrop{display:none !important;}
}

/* ================================================================
   HERO SUBHEAD  the positioning line, under the keyword led h1
   ================================================================ */
.hero-sub{
  font-size:clamp(1.05rem,1.9vw,1.45rem);
  line-height:1.3;
  font-weight:600;
  color:var(--green);
  letter-spacing:-.01em;
  margin:.6rem 0 0;
  max-width:30ch;
  opacity:.82;
}
.page-hero-copy .hero-sub{max-width:32ch;}
.hero-sub + p{margin-top:.75rem;}
h1 + .hero-sub{margin-top:.7rem;}
@media(max-width:699px){
  .hero-sub{font-size:1rem;margin-top:.5rem;max-width:100%;}
  .hero-sub + p{margin-top:.6rem;}
}
@media print{.hero-sub{color:#000 !important;}}

/* ================================================================
   CARD CONTAINMENT  nothing inside a card may sit outside its box
   ================================================================ */
.review,.card,.step,.outcome,.quote,blockquote{min-width:0;}
.review > *,.card > *,.step > *,.outcome > *{max-width:100%;min-width:0;}
.review p,.card p,.step p,.outcome span,.review blockquote{overflow-wrap:break-word;}

/* ================================================================
   MOBILE NAVIGATION  collapsible, one level at a time
   ================================================================ */
@media(max-width:899px){
  .nav{
    width:100%;max-width:none;inset:0;
    padding:calc(var(--hdr-h,72px) + .5rem) 1.25rem 7.5rem;
    gap:0;
  }
  /* top level rows */
  .nav > a,
  .nav .has-sub > a{
    display:flex;align-items:center;justify-content:space-between;
    width:100%;padding:1.05rem .25rem;margin:0;
    font-size:1.06rem;font-weight:600;opacity:1;
    border-bottom:1px solid rgba(30,58,47,.10);
  }
  /* chevron on the two that open */
  .nav .has-sub > a::after{
    content:"";width:9px;height:9px;flex:0 0 auto;margin-left:1rem;
    border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:rotate(45deg) translate(-2px,-2px);
    transition:transform .25s ease;opacity:.5;
  }
  .nav .has-sub.open > a::after{transform:rotate(-135deg) translate(-2px,-2px);opacity:.85;}
  .nav .has-sub{width:100%;}
  /* the submenu: shut by default, opens on tap */
  .nav .sub,
  .nav .has-sub:hover .sub,
  .nav .has-sub:focus-within .sub{
    position:static;transform:none;opacity:1;visibility:visible;
    box-shadow:none;border:0;background:transparent;min-width:0;
    left:auto;top:auto;
    padding:0;margin:0;
    max-height:0;overflow:hidden;
    transition:max-height .3s ease;
  }
  .nav .has-sub.open .sub,
  .nav .has-sub.open:hover .sub,
  .nav .has-sub.open:focus-within .sub{max-height:34rem;}
  .nav .sub a{
    display:flex;align-items:center;
    font-size:.98rem;font-weight:400;opacity:.9;
    padding:.8rem .25rem .8rem 1.1rem;
    border-bottom:1px solid rgba(30,58,47,.06);
  }
  .nav .sub a:last-child{border-bottom:0;}
  .nav .sub a::before{
    content:"";width:4px;height:4px;border-radius:50%;
    background:var(--sage);margin-right:.7rem;flex:0 0 auto;opacity:.7;
  }
}

/* ================================================================
   MOBILE FOOTER  one column, aligned, nothing squeezed
   ================================================================ */
@media(max-width:699px){
  .site-footer .foot-grid{grid-template-columns:1fr !important;gap:2rem !important;}
  .site-footer .foot-grid ul{display:grid !important;grid-template-columns:1fr !important;gap:.1rem !important;}
  .site-footer .foot-grid li{margin:0;}
  .site-footer .foot-grid ul a{padding:.35rem 0;}
  .site-footer .foot-h{margin-bottom:.9rem;}
  /* the trust list: left aligned so the ticks line up */
  .site-footer .foot-assure{
    display:flex;flex-direction:column;align-items:flex-start;
    gap:.55rem;text-align:left;max-width:24rem;margin-inline:auto;
  }
  .site-footer .foot-assure > *{text-align:left;}
  /* legal line and credits stack with room to breathe */
  .site-footer .foot-bottom{
    display:flex;flex-direction:column;align-items:flex-start;gap:1rem;text-align:left;
  }
}
@media(max-width:899px){
  /* keep the header bar (logo, phone, close) visible above the panel */
  .nav{inset:var(--hdr-h,72px) 0 0 0;padding-top:.5rem;}
  /* the current page should read as current, not as lighter */
  .nav > a[aria-current="page"],
  .nav .sub a[aria-current="page"]{font-weight:700;color:var(--green);opacity:1;}
  .nav > a[aria-current="page"]{box-shadow:inset 3px 0 0 var(--sage);padding-left:.9rem;}
}
@media(max-width:899px){
  .nav{inset:var(--nav-top,103px) 0 0 0;}
}

/* an odd number of choices left a gap in the last row: the final one fills it */
.qf-opts > *:last-child:nth-child(odd),
.opts > *:last-child:nth-child(odd){grid-column:1 / -1;}

/* two column tablet band: an odd last card filled the row with a gap */
@media(min-width:641px) and (max-width:900px){
  .g3 > *:last-child:nth-child(odd),
  .g4 > *:last-child:nth-child(odd){grid-column:1 / -1;}
}

/* six cards in a four wide grid left two stranded: give them three across */
@media(min-width:901px){
  .g4:has(> :nth-child(6):last-child){grid-template-columns:repeat(3,1fr);}
}

/* a finger is wider than the dot: give each body map zone a bigger invisible target */
.bm-hot .hit{fill:transparent;pointer-events:all;}

/* colour alone is not an error message: say it in words as well */
.qf-msg{margin:.55rem 0 0;font-size:.88rem;font-weight:600;color:#8A5A12;display:flex;align-items:center;gap:.4rem;}
.qf-msg::before{content:"!";display:inline-flex;align-items:center;justify-content:center;
  width:1.05rem;height:1.05rem;flex:0 0 auto;border-radius:50%;background:#8A5A12;color:#fff;font-size:.72rem;}
.qf-msg[hidden]{display:none;}
#enquire .qf-msg{color:#B3541E;}
#enquire .qf-msg::before{background:#B3541E;}

/* The open menu panel is always light, so its links must stay dark even when
   the header behind it has gone green on scroll. */
@media(max-width:1024px){
  .site-header .nav > a,
  .site-header .nav .has-sub > a,
  .site-header .nav .sub a,
  .site-header.stuck .nav > a,
  .site-header.stuck .nav .has-sub > a,
  .site-header.stuck .nav .sub a{color:var(--green);}
  .site-header.stuck .nav > a[aria-current="page"],
  .site-header.stuck .nav .sub a[aria-current="page"]{color:var(--green);}
  .site-header.stuck .nav .has-sub > a::after{border-color:var(--green);}
}

/* The text beside a video is only a few short lines, so a full width column
   left a dead gap on the right. Hold the pair together and centre it. */
@media(min-width:861px){
  .vid-feature{
    grid-template-columns:minmax(260px,360px) minmax(0,46ch);
    justify-content:center;
    gap:clamp(2rem,4vw,3.5rem);
    align-items:center;
  }
  .vid-feature > div:last-child{max-width:46ch;}
}

/* ---------- section headings in caps ---------- */
h2{
  text-transform:uppercase;
  letter-spacing:-.012em;
  font-weight:800;
}
h2 i{font-style:normal;color:var(--accent);}
.legal h2{text-transform:none;letter-spacing:-.02em;font-weight:700;}
.faq h2,.faq summary{text-transform:none;}

/* a link under a two column pair belongs under the middle of the pair */
.linkpair + .btn-row{justify-content:center;}

/* ---------- lifting the flat blocks ---------- */

/* the HCPC check: it is the strongest trust point on the page, so it reads
   like one instead of a white box with a paragraph in it */
.verify.verify-light{
  background:var(--green);
  border:0;
  border-radius:var(--radius-lg);
  padding:clamp(2rem,4vw,3rem);
  box-shadow:0 18px 50px rgba(30,58,47,.22);
  position:relative;
  overflow:hidden;
}
.verify.verify-light::before{
  content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--sage);
}
.verify.verify-light h3{
  color:#fff;text-transform:uppercase;letter-spacing:.01em;
  font-size:clamp(1.3rem,2.4vw,1.85rem);font-weight:800;margin-bottom:.9rem;
}
.verify.verify-light p{color:rgba(255,255,255,.86);max-width:56ch;}
.verify.verify-light strong{
  color:#fff;letter-spacing:.1em;font-weight:700;
  box-shadow:inset 0 -.42em 0 rgba(127,169,146,.35);
}
.verify.verify-light .btn-outline{
  border-color:rgba(255,255,255,.5);color:#fff;background:transparent;
}
.verify.verify-light .btn-outline:hover{background:#fff;color:var(--green);border-color:#fff;}

/* credential chips read as credentials, not tags */
.josh-quals span{
  text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:700;
  color:var(--green);background:transparent;
  border:1px solid rgba(30,58,47,.22);border-radius:100px;
  padding:.6rem 1.1rem;
}

/* tick rows with a real tick rather than a loose stroke on a flat box */
.outcome svg{
  box-sizing:content-box;width:.78rem;height:.78rem;padding:.3rem;
  border-radius:50%;background:var(--sage);stroke:var(--green-dk);stroke-width:3.2;
  margin-top:.05rem;
}
.bg-deep .outcome,.bg-green .outcome{
  background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18);
}
.bg-deep .outcome svg,.bg-green .outcome svg{background:var(--sage);stroke:var(--green-dk);}
.outcome span{font-weight:600;}

/* the quiz answer is the payoff of the whole questionnaire */
.result{position:relative;}
.result h3{
  text-transform:uppercase;letter-spacing:.01em;font-weight:800;
  font-size:clamp(1.25rem,2.2vw,1.6rem);
}

/* condition card labels in caps, like the section headings above them */
.svc-label{text-transform:uppercase;letter-spacing:.09em;font-weight:700;}

/* tick lists sit on an even grid, so the rows line up instead of ragging */
@media(min-width:700px){
  div.outcomes{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;}
  div.outcomes > .outcome:last-child:nth-child(odd){grid-column:1 / -1;}
}
div.outcomes > .outcome{align-items:center;}

/* page titles in caps too, the same register as the section headings */
h1{text-transform:uppercase;letter-spacing:-.018em;font-weight:800;}
.legal h1{text-transform:none;letter-spacing:-.03em;}
/* a long article headline is editorial, not a banner: leave it in sentence case */
h1.article-title{text-transform:none;letter-spacing:-.025em;}

/* the quiz answer is the payoff, so it lands as one rather than another pale box */
.bg-white .quiz.answered,
.bg-white .quiz:has(.result.show),
section:not(.bg-deep):not(.bg-green) .quiz.answered,
section:not(.bg-deep):not(.bg-green) .quiz:has(.result.show){
  background:var(--green);border-color:transparent;
  box-shadow:0 18px 50px rgba(30,58,47,.22);
}
.quiz.answered .result h3,.quiz:has(.result.show) .result h3{color:#fff;}
.quiz.answered .result p,.quiz:has(.result.show) .result p{color:rgba(255,255,255,.86);}
.quiz.answered .dot,.quiz:has(.result.show) .dot{background:rgba(255,255,255,.35);}
.quiz.answered .dot.on,.quiz:has(.result.show) .dot.on{background:var(--sage);}
.quiz.answered .btn-primary,.quiz:has(.result.show) .btn-primary{background:#fff;color:var(--green);}
.quiz.answered .btn-primary:hover,.quiz:has(.result.show) .btn-primary:hover{background:var(--sage);color:var(--green-dk);}
.quiz.answered .btn-outline,.quiz:has(.result.show) .btn-outline{border-color:rgba(255,255,255,.5);color:#fff;}
.quiz.answered .btn-outline:hover,.quiz:has(.result.show) .btn-outline:hover{background:#fff;color:var(--green);border-color:#fff;}
.bg-deep .quiz.answered,.bg-green .quiz.answered,.bg-deep .quiz:has(.result.show),.bg-green .quiz:has(.result.show){background:rgba(255,255,255,.05);}

/* the credentials card carries a heading now, so give the chips a divider
   instead of letting them float under the prose */
.josh-cred .josh-quals{
  margin-top:1.75rem;padding-top:1.5rem;
  border-top:1px solid var(--line);
}

/* the open menu ended in dead space, so it ends on the action instead */
.nav-foot{display:none;}
@media(max-width:1024px){
  .nav-foot{
    display:flex;flex-direction:column;align-items:stretch;gap:.6rem;
    width:100%;margin-top:1.75rem;padding-top:0;border-top:0;
  }
  /* the header's own Enquire is hidden on mobile; this one is the menu's */
  .site-header .nav-foot .btn-primary,
  .nav-foot .btn{display:flex;width:100%;justify-content:center;font-size:1rem;}
  .site-header .nav-foot .btn-primary{background:var(--green);color:#fff !important;opacity:1;border:0;}
  .site-header.stuck .nav-foot .btn-primary{background:var(--green);color:#fff !important;}
  /* the call line is a button like every other call to action on the site,
     not a bare number sitting under the menu */
  .site-header .nav-foot .nav-call,
  .nav-foot .nav-call{
    display:flex;align-items:center;justify-content:center;gap:.5rem;
    font-size:1rem;font-weight:600;color:var(--green) !important;opacity:1;
    border:1px solid var(--line) !important;padding:.85rem 1.35rem !important;
  }
  .nav-foot .nav-call .ic{width:1.05rem;height:1.05rem;color:var(--accent);}
  /* the menu panel is full height, so pin the buttons to the bottom instead of
     leaving a dead band under them */
  .nav-foot{margin-top:auto;padding-bottom:max(1.25rem,env(safe-area-inset-bottom));}
  /* on the cream menu panel the stuck header's white link colour is invisible */
  .site-header.stuck .nav a,
  .site-header.stuck .nav a:hover,
  .site-header.stuck .nav a[aria-current="page"]{color:var(--green);}
  .site-header .nav a[aria-current="page"]{color:var(--green);opacity:1;font-weight:600;}
}

/* ---------- accreditation logos ---------- */
/* greyed out at 62% these read as broken placeholders, which is the opposite
   of what a credential strip is for. Real brands, full colour. */
.marquee-item img{opacity:1;filter:none;}
.marquee-item:hover img{opacity:1;filter:none;}
.marquee-item{width:10.5rem;height:4.25rem;margin:0 1.6rem;}
@media(max-width:640px){.marquee-item{width:7.5rem;height:3.1rem;margin:0 1rem;}}

/* ---------- layout and typography pass ---------- */

/* a map embed is a white hole until it loads, so give it the brand underneath */
.findus .map{
  background:var(--green-dk) url("/assets/img/brand/logo-mark-favicon.webp") center/52px no-repeat;
  min-height:300px;
}

/* tick lists on a phone stretched to their own text, so the right edge stepped
   in and out down the column */
@media(max-width:699px){
  div.outcomes{display:grid;grid-template-columns:1fr;gap:.6rem;}
  div.outcomes > .outcome{width:100%;}
}

/* cards in a row keep their link on the same line across the row */
.grid .card{display:flex;flex-direction:column;}
.grid .card .card-link{margin-top:auto;padding-top:1rem;}

/* stop display headings dropping a single short word onto the last line */
h1,h2,h3,.lede,.sec-head p{text-wrap:balance;}
p{text-wrap:pretty;}

/* the accent word went dim and grey against the dark bands */
.bg-green h1 i,.bg-green h2 i,.bg-green h3 i,
.bg-deep h1 i,.bg-deep h2 i,.bg-deep h3 i,
.cta-band h1 i,.cta-band h2 i,.cta-band h3 i,
.revband h2 i{color:var(--sage-on-green);}

/* the quote band left a strip of flat green doing nothing on the right,
   because the photo was narrow and the text measure stopped short of the edge */
@media(min-width:1024px){
  .revband-img{width:36%;}
  .revband-body{padding:clamp(2.5rem,4vw,3.5rem) clamp(2.5rem,4vw,4rem);}
  .revband p{max-width:64ch;}
  .revband h2{max-width:20ch;}
}

/* the decorative circle on the dark bands had a hard edge where it met the
   band, so it read as a shape that had slipped rather than a soft glow */
.cta-band::before{
  background:radial-gradient(circle at center, rgba(143,179,160,.16) 0%, rgba(143,179,160,.07) 45%, rgba(143,179,160,0) 72%) !important;
}
.socials svg{stroke:none;}

/* a hero with no photo was still holding back half the band for one, so the
   right side sat empty and the block looked like a failed image */
.page-hero-plain{
  min-height:0 !important;height:auto !important;
  padding:clamp(2.5rem,5vw,3.75rem) 0 clamp(2rem,4vw,3rem);
  background:var(--green);
  border-bottom:0;
}
.page-hero-plain .crumb,.page-hero-plain .crumb a{color:rgba(255,255,255,.72);}
.page-hero-plain .crumb a:hover{color:#fff;}
.page-hero-plain h1{color:#fff;}
.page-hero-plain h1 i{color:var(--sage-on-green);}
.page-hero-plain p{color:rgba(255,255,255,.82);max-width:60ch;}
.page-hero-plain .btn-light{background:#fff;color:var(--green);}
.page-hero-plain .btn-ghost-light{border-color:rgba(255,255,255,.5);color:#fff;}
.page-hero-plain .btn-ghost-light:hover{background:#fff;color:var(--green);}

/* five stories in a three wide grid left a hole in the second row, so when the
   last row holds two they share the width instead */
@media(min-width:901px){
  .story-grid{grid-template-columns:repeat(6,1fr);}
  .story-grid > *{grid-column:span 2;}
  .story-grid > *:nth-child(3n+1):nth-last-child(2),
  .story-grid > *:nth-child(3n+1):nth-last-child(2) ~ *{grid-column:span 3;}
  .story-grid > *:nth-child(3n+1):last-child{grid-column:span 6;}
}

/* where a dark section runs straight into the closing call to action, step the
   tone down so the two do not read as one long slab */
.bg-deep + .cta-band,.bg-green + .cta-band{
  background:var(--green-dk);
  border-top:1px solid rgba(255,255,255,.1);
}

/* the copy beside the enquiry form is shorter than the form, so centre the pair
   rather than leaving the gap all at the bottom */
@media(min-width:920px){
  .quickform{align-items:center;}
}

/* the Visit Us column trailed off into empty space, so it ends on an action */
.foot-directions{margin-top:.9rem;}
.foot-directions a{
  display:inline-flex !important;width:fit-content;align-items:center;gap:.45rem;
  font-weight:600;color:#fff !important;
  border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:.15rem;
}
.foot-directions a::after{content:"\2192";}
.foot-directions a:hover{border-bottom-color:#fff;}

/* ---------- patient stories: the body was one unbroken wall of text ---------- */
.article-sub{
  font-size:clamp(1.25rem,2.2vw,1.65rem);
  margin:2.75rem 0 .35rem;
  letter-spacing:-.01em;
}
.article-sub:first-child{margin-top:0;}
.article-figure{
  margin:2.5rem 0;
  border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-lg);
}
.article-figure img{
  display:block;width:100%;height:auto;
  aspect-ratio:16/10;object-fit:cover;
}
@media(max-width:700px){
  .article-sub{margin-top:2.25rem;}
  .article-figure{margin:2rem 0;}
  .article-figure img{aspect-ratio:4/3;}
}
/* keep the subheads and the photo on the same measure as the prose */
.article-sub,.article-figure{max-width:691px;}

/* ---------- patient story prose ----------
   nine near identical paragraphs in one measure read as a single grey slab,
   so the opening paragraph now leads, the measure is shorter and the
   subheads carry a rule that the eye can find while scrolling */
.article-body{max-width:64ch;}
.article-body p{font-size:1.075rem;line-height:1.9;color:var(--text);
  margin-bottom:1.4rem;max-width:64ch;}
.article-body p:last-child{margin-bottom:0;}
.article-body > p:first-of-type{font-size:1.28rem;line-height:1.65;color:var(--green);
  font-weight:500;margin-bottom:1.7rem;}
.article-body > p:first-of-type::first-letter{font-size:1em;}
.article-sub{position:relative;padding-top:1.5rem;color:var(--green);}
.article-sub::before{content:"";position:absolute;top:0;left:0;width:2.75rem;height:3px;
  background:var(--accent);border-radius:2px;}
.article-sub:first-child{padding-top:0;}
.article-sub:first-child::before{display:none;}
@media(max-width:700px){
  .article-body p{font-size:1.02rem;line-height:1.82;margin-bottom:1.2rem;}
  .article-body > p:first-of-type{font-size:1.15rem;line-height:1.6;}
  .article-sub{padding-top:1.25rem;}
}

/* the shorter measure was pinned to the left of the wrap, which left a wide
   empty strip down the right of every patient story */
.article-body,.article-body p,.article-body .article-sub,.article-body .article-figure{
  margin-left:auto;margin-right:auto;}
.article-body .note{max-width:64ch;margin-left:auto;margin-right:auto;}
.article-body + .note{max-width:64ch;margin-left:auto;margin-right:auto;}
.article-body + .note p{max-width:none;}

/* ---------- icons ---------- */
.ic{width:1.05em;height:1.05em;flex-shrink:0;display:inline-block;vertical-align:-.14em;}
.btn .ic{width:1.1em;height:1.1em;}
.ic-brand{width:1.2em;height:1.2em;}
.ic-lg{width:1.4rem;height:1.4rem;}
.ic-wa{color:#25D366;}
.ic-fb{color:#1877F2;}
.btn-primary .ic-wa,.btn-primary .ic-fb,.bg-green .ic-wa,.bg-green .ic-fb,
.bg-deep .ic-wa,.bg-deep .ic-fb,.cta-band .ic-wa,.cta-band .ic-fb{color:currentColor;}

/* ---------- the enquiry form is four fields now, nothing else ---------- */
.simple-form .qf-field:last-of-type{margin-bottom:1.35rem;}
.simple-form textarea{resize:vertical;min-height:7rem;}
@media(min-width:920px){
  .quickform{align-items:center;}
  .quickform-copy{align-self:center;}
}
.quickform-alt .btn{padding:.8rem 1.4rem;font-size:.9rem;}
.quickform-alt{gap:.6rem;}
.quickform-alt .btn{padding:.78rem 1.2rem;font-size:.88rem;}

/* ---------- video beside its own heading ----------
   the heading used to sit centred above the pair, which left the whole
   right of the video empty; it now fills that column */
@media(min-width:861px){
  .vid-feature{
    grid-template-columns:minmax(280px,360px) minmax(0,1fr);
    justify-content:start;
    gap:clamp(2.5rem,5vw,4.5rem);
    align-items:center;
  }
  .vid-feature > div:last-child{max-width:none;}
  .vid-copy{max-width:54ch;}
}
.vid-copy h2{margin-bottom:.85rem;}
.vid-copy .lede{margin-bottom:1.6rem;}
.vid-copy .checks{margin-bottom:1.75rem;}
.vid-copy .btn-row{margin-top:0;}
@media(max-width:860px){
  .vid-copy{text-align:left;margin-top:2rem;}
  .vid-copy h2{text-align:left;}
}
@media(min-width:861px){
  .vid-points{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;}
}
.vid-copy .vid-points{margin-bottom:1.75rem;}
.vid-copy .outcome span{font-weight:600;color:var(--green);}
.bg-deep .vid-copy .outcome span,.bg-green .vid-copy .outcome span{color:#fff;}

/* ---------- questions ---------- */
.faq-more{margin-top:1.5rem;text-align:center;}
.faq-more a{display:inline-flex;align-items:center;gap:.45rem;font-weight:600;color:var(--green);
  border-bottom:1px solid rgba(30,58,47,.3);padding-bottom:.15rem;}
.faq-more a:hover{border-bottom-color:var(--green);}
.bg-deep .faq-more a,.bg-green .faq-more a{color:#fff;border-bottom-color:rgba(255,255,255,.4);}
.faq-group{margin-bottom:clamp(2.5rem,5vw,3.75rem);}
.faq-group h2{font-size:clamp(1.3rem,2.4vw,1.75rem);margin-bottom:1.25rem;}

/* ---------- footer: contact details carry their own marks ---------- */
.foot-reach{margin-top:1.75rem;}
.foot-reach .foot-h{margin-bottom:.85rem;}
.foot-contact,.foot-visit{list-style:none;display:grid;gap:.75rem;}
.foot-contact li,.foot-visit li{display:flex;gap:.65rem;align-items:flex-start;line-height:1.6;}
.foot-contact .ic,.foot-visit .ic{width:1.05rem;height:1.05rem;margin-top:.28rem;
  flex-shrink:0;color:var(--sage);}
.foot-contact a{word-break:break-word;}
.foot-visit li.foot-directions{display:block;}
.site-footer .socials{margin-top:1.5rem;}
.foot-contact .ic-wa{color:#25D366;}

/* ---------- find us: each way to reach the clinic carries its own mark ---------- */
.info-contact{list-style:none;display:grid;gap:.55rem;margin:0;}
.info-contact li{display:flex;gap:.55rem;align-items:center;line-height:1.5;}
.info-contact .ic{width:1rem;height:1rem;flex-shrink:0;color:var(--accent);}
.info-contact a{word-break:break-word;}
.bg-deep .info-contact .ic,.bg-green .info-contact .ic{color:var(--sage);}
.info-contact .ic-wa{color:#25D366;}
.qf-field.qf-invalid input,.qf-field.qf-invalid textarea{border-color:#C0453B;}
#enquire .qf-field.qf-invalid input,#enquire .qf-field.qf-invalid textarea{border-color:#C0453B;background:#fff;}
.info-item > .ic{width:1.4rem;height:1.4rem;stroke-width:1.7;color:var(--accent);flex-shrink:0;margin-top:.1rem;}
.bg-deep .info-item > .ic,.bg-green .info-item > .ic{color:var(--sage);}

/* ---------- the other ways to get in touch, beside the form ----------
   three buttons wrapped two then one, which read as a mistake; they are a
   list of alternatives, so they stack as one */
.quickform-alt{display:grid;grid-template-columns:1fr;gap:.6rem;max-width:23rem;margin-top:1.75rem;}
.quickform-alt .btn{justify-content:flex-start;padding:.8rem 1.35rem;font-size:.9rem;width:100%;}

/* ---------- an anchored section must clear the fixed header ----------
   the header is 91px at desktop and 63px on a phone, so 80px left the
   heading tucked underneath on wide screens */
html{scroll-padding-top:76px;}
@media(min-width:900px){html{scroll-padding-top:108px;}}
@media(min-width:700px) and (max-width:899px){html{scroll-padding-top:96px;}}
.info-areas{list-style:none;display:grid;gap:.4rem;margin:0;}
.info-areas a{display:inline-flex;align-items:center;gap:.4rem;}
.info-areas a::after{content:"\2192";opacity:.6;}

/* floating WhatsApp button: filled brand mark, sized to the circle */
.wa-float .wa-mark{width:28px;height:28px;fill:currentColor;stroke:none;flex-shrink:0;}
@media(max-width:820px){.wa-float .wa-mark{width:25px;height:25px;}}

/* ---- video blocks: stop the portrait video towering over its own copy ----
   The video is 9/16, so at full column width it ran 640px tall beside copy
   only 414px tall, leaving a band of dead space above and below the text.
   Capping the copy at 54ch and narrowing the video brings the two columns to
   within about 40px of each other, and centring the pair keeps the leftover
   width off the right hand edge. */
@media(min-width:861px){
  .vid-feature{
    grid-template-columns:minmax(250px,300px) minmax(0,54ch);
    justify-content:center;
    gap:clamp(2.5rem,4.5vw,4rem);
    align-items:center;
  }
  .vid-solo{
    grid-template-columns:minmax(230px,262px) minmax(0,54ch);
    justify-content:center;
    gap:clamp(2.5rem,4.5vw,4rem);
    align-items:center;
  }
  .vid-feature > div:last-child,.vid-solo > div:last-child{max-width:54ch;}
  .vid-copy,.vid-solo-copy{max-width:54ch;}
}

/* a three card row went 2 + 1 between 641px and 900px, leaving one card
   stranded on its own line. Stack those three instead. Grids with other
   counts (six on the clinic page) still pair up normally. */
@media(min-width:641px) and (max-width:900px){
  .g3:has(> :nth-child(3):last-child){grid-template-columns:1fr;}
}
/* five patient stories in two columns left the fifth stranded; let it run full width */
@media(min-width:641px) and (max-width:900px){
  .story-grid:has(> :nth-child(5):last-child) > :last-child{grid-column:1 / -1;}
}

/* a 9/16 video stretched to half the container ran 556px wide and 988px tall,
   which swamped the page. Hold the portrait videos to a phone sized frame and
   centre each one in its cell. */
.vid-grid .vid{max-width:340px;margin-inline:auto;}
@media(min-width:1024px){.vid-grid.three .vid{max-width:320px;}}

/* ---- photo bands: the media column was running far taller than the copy
   beside it, leaving a band of empty space above and below the text.
   Both already crop with object-fit, so capping the height is safe. */
@media(min-width:900px){
  .split img{max-height:560px;}
  .photo-cluster{grid-template-columns:1.35fr .72fr;}
  .pc-big{aspect-ratio:auto;height:380px;}
  .pc-big img{height:380px;}
  .pc-stack img{aspect-ratio:auto;height:calc((380px - .9rem) / 2);}
}

/* once a pair of buttons stacks on a phone, two different widths read as ragged.
   Match the hero and form rows and let them fill the column. */
@media(max-width:560px){
  .vid-copy .btn-row .btn,
  .vid-solo-copy .btn-row .btn,
  .bm-panel .btn-row .btn,
  .note .btn-row .btn{width:100%;justify-content:center;}
}

/* the Google reviews button carries the Google mark, sized for a button rather
   than for the small byline under a review card */
.btn-google{display:inline-flex;align-items:center;gap:.6rem;}
.btn-google .g-mark{width:18px;height:18px;flex-shrink:0;}
@media(max-width:560px){.btn-google{width:100%;justify-content:center;}}

/* the menu panel covers the sticky bottom bar, so the 7.5rem of padding kept
   clear for that bar just left a dead band under the menu buttons. Hide the
   bar while the menu is open and let the buttons sit at the bottom. */
@media(max-width:899px){
  body:has(.nav.open) .sticky-cta{display:none;}
  .nav.open{padding-bottom:1.25rem;}
}

/* WhatsApp brand green on the floating button, so it reads as WhatsApp rather
   than as a generic chat bubble in the site's own teal */
.wa-float{background:#25D366;box-shadow:0 8px 28px rgba(37,211,102,.38);}
.wa-float:hover{background:#1FB857;}

/* ---- mobile footer: four stacked blocks ran to 1575px. Brand across the top,
   the two link lists side by side, Visit us across the bottom. ---- */
@media(max-width:699px){
  .site-footer .foot-grid{
    grid-template-columns:1fr 1fr !important;
    gap:2rem 1.25rem !important;
    align-items:start;
  }
  .site-footer .foot-grid > div:nth-child(1),
  .site-footer .foot-grid > div:nth-child(4){grid-column:1 / -1;}
  .site-footer .foot-grid > div:nth-child(2),
  .site-footer .foot-grid > div:nth-child(3){min-width:0;}
  .site-footer .foot-grid > div:nth-child(2) ul a,
  .site-footer .foot-grid > div:nth-child(3) ul a{font-size:.88rem;line-height:1.45;}
  /* a divider above the two lists so the sections read as separate */
  .site-footer .foot-grid > div:nth-child(2),
  .site-footer .foot-grid > div:nth-child(3),
  .site-footer .foot-grid > div:nth-child(4){
    border-top:1px solid rgba(255,255,255,.12);padding-top:1.5rem;
  }
  .site-footer .foot-grid > div:nth-child(1) p{margin-bottom:1.5rem;}
}

/* ---- mobile menu tidy up ----
   the current page item was shifting its own text right, the last row's divider
   ran under the buttons, and the list sat flush against them */
@media(max-width:899px){
  .nav > a,.nav .has-sub > a{padding-left:.9rem;}
  .nav > a[aria-current="page"]{padding-left:.9rem;}
  .nav > a:last-of-type,.nav > .has-sub:last-of-type > a{border-bottom:0;}
  .nav-foot{margin-top:auto;padding-top:1.5rem;border-top:1px solid var(--line);}
}

/* contact details: the email address is 31 characters, so the Get in touch
   block tightens its gutter and steps the type down on narrow phones to keep
   the whole address on one line instead of splitting it across two */
@media(max-width:420px){
  .info-item{gap:.75rem;}
  .info-item svg.ic-lg{width:1.2rem;height:1.2rem;}
  .info-contact li{font-size:.95rem;gap:.5rem;}
  .info-contact a[href^="mailto:"],.foot-contact a[href^="mailto:"]{white-space:nowrap;}
}
@media(max-width:360px){
  .info-contact li{font-size:.9rem;}
}
@media(max-width:340px){
  .info-item{gap:.5rem;}
  .info-item svg.ic-lg{width:1rem;height:1rem;}
  .info-contact li{gap:.4rem;}
  .info-contact .ic{width:.95rem;height:.95rem;}
}

/* minimum readable size: these labels were still sitting under the 14px floor */
.site-footer h3.foot-h{font-size:.875rem;}
.linkpair .lp .lp-tag{font-size:.875rem;letter-spacing:.14em;}
.vs-divider span{font-size:.875rem;}
.topbar,.topbar span{font-size:.875rem !important;}
.sticky-cta .btn{font-size:.875rem !important;}
@media(max-width:360px){.sticky-cta .btn{font-size:.875rem !important;}}

/* tap targets: tablet landscape and touch laptops still tap these, so keep every
   link to at least the 24px minimum without changing the header or footer shape */
@media(min-width:821px){
  .site-footer .foot-grid ul a,.site-footer .foot-bottom a{
    display:inline-block;padding-block:.25rem;min-height:24px;
  }
}
@media(min-width:1025px){
  .site-header .nav > a,.site-header .nav .has-sub > a{padding-block:.55rem;}
}
@media(min-width:821px){
  .crumb a{display:inline-block;padding-block:.25rem;min-height:24px;}
}

/* the space held back for the sticky bar was cream, so a pale strip sat under the
   dark footer at the end of every phone page. Hold it inside the footer instead. */
@media(max-width:899px){
  body{padding-bottom:0;}
  .site-footer{padding-bottom:calc(32px + 74px + env(safe-area-inset-bottom,0px));}
}
