/* ==========================================================================
   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 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%;}
  .sub{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none; border:0;padding:0 0 0 1rem;min-width:0;background:transparent;}
  .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:flex;align-items:center;gap:.65rem;background:#25D366;color:#fff; padding:.85rem 1.35rem;border-radius:100px;box-shadow:0 8px 28px rgba(37,211,102,.4); font-size:.92rem;transition:transform .25s;
}
.wa-float:hover{transform:translateY(-3px);}
.wa-float svg{width:22px;height:22px;fill:currentColor;flex-shrink:0;}
@media(max-width:820px){.wa-float{bottom:5.25rem;padding:.8rem;}.wa-float span{display:none;}}

/* ---------- 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;}
.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 ---------- */
.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:600;letter-spacing:-.015em;margin-bottom:0;
}
.hero h1 .l2{display:block;margin-top:.3rem;white-space:nowrap;}
@media(min-width:768px){.hero h1{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,.card a:not(.btn),a[href^="mailto:"],a[href^="tel:"]{ 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);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:.66rem;letter-spacing:.07em;}
  .topbar .tb1,.topbar .tbsep{display:none;}
  .topbar .tb2::after{content:" ·";margin-right:.4rem;}
}
@media(max-width:360px){.topbar .tb2{display:none;}}

/* 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){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: one line, aligned ---------- */
.who,.quote-who{
  display:inline-flex;align-items:center;gap:.5rem;
  white-space:nowrap;font-size:.78rem;letter-spacing:.1em;
}
.who span,.quote-who span{white-space:nowrap;}
@media(max-width:560px){
  .who,.quote-who{font-size:.7rem;letter-spacing:.06em;white-space:normal;}
  .who span,.quote-who span{white-space:normal;}
}
.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:nowrap;}
@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;}
/* numbered steps so it reads as three quick questions */
.qf-field{counter-increment:qf;position:relative;}
.qf-field > label::before{
  content:counter(qf);display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;border-radius:50%;margin-right:.45rem;
  background:var(--sage);color:var(--green-dk);font-size:.66rem;font-weight:700;
  vertical-align:1px;}
.quickform-form{counter-reset:qf;}
/* 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;}}
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
   ================================================================ */
.verify-light{background:var(--card) !important;border:1px solid var(--line) !important;
  box-shadow:0 12px 36px rgba(30,58,47,.08);}
.verify-light h3{color:var(--green) !important;}
.verify-light p{color:var(--text) !important;}
.verify-light strong{color:var(--green) !important;font-weight:700;}
.verify-light .btn-outline{border-color:var(--green) !important;color:var(--green) !important;}
.verify-light .btn-outline:hover{background:var(--green) !important;color:#fff !important;}

/* ================================================================
   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 properly 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: proper 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;}}

/* ==================================================================
   BUILD 23  September 2026
   Loads last. Menu, contrast, video layout.
   ================================================================== */

/* ---- 1. MENU ---------------------------------------------------
   The panel background is cream, but .site-header.stuck was still
   painting nav links white, so the menu was white on cream at a
   contrast ratio of 1.0. Invisible. The panel owns its own colours
   now, regardless of the header state.                            */
.site-header{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
@media(max-width:1080px){
  .nav{
    position:fixed;top:0;right:0;bottom:0;left:auto;
    width:min(340px,86vw);z-index:1002;background:var(--bg);
    padding:calc(1.1rem + env(safe-area-inset-top,0px)) 1.5rem
            calc(2rem + env(safe-area-inset-bottom,0px));
    overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    box-shadow:-8px 0 40px rgba(30,58,47,.18);visibility:hidden;}
  .nav.open{visibility:visible;}
  .nav a,.site-header.stuck .nav a,.site-header.stuck .nav .sub a{
    color:var(--green) !important;opacity:1;}
  .nav a[aria-current="page"],
  .site-header.stuck .nav a[aria-current="page"]{color:var(--accent) !important;font-weight:600;}
  .nav a{min-height:48px;display:flex;align-items:center;
    padding:.55rem 0;font-size:1.02rem;width:100%;}
  .nav > a,.nav .has-sub > a{border-bottom:1px solid rgba(30,58,47,.08);}
  .nav .has-sub > a::after{content:"";width:9px;height:9px;margin-left:auto;flex:0 0 auto;
    border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:rotate(45deg) translateY(-2px);transition:transform .25s ease;opacity:.5;}
  .nav .has-sub.open > a::after{transform:rotate(-135deg) translateY(-2px);}
  .sub{display:block;max-height:0;overflow:hidden;transition:max-height .3s ease;
    padding:0 0 0 .9rem;opacity:1;visibility:visible;}
  .sub.open{max-height:26rem;}
  .sub a{font-size:.95rem;min-height:44px;border-bottom:0;}
  .nav-toggle{display:flex;}
  .header-cta > .btn{display:none;}
}
.nav-head,.nav-foot{display:none;}
@media(max-width:1080px){
  .nav-head{display:flex;justify-content:flex-end;margin-bottom:.4rem;}
  .nav-close{width:44px;height:44px;display:flex;align-items:center;justify-content:center;
    border-radius:50%;border:1px solid var(--line);color:var(--green);
    background:transparent;font-size:1.5rem;line-height:1;}
  .nav-foot{display:grid;gap:.7rem;margin-top:1.4rem;}
  .nav-foot > a{border-bottom:0;}
  .nav-foot .btn{width:100%;justify-content:center;min-height:50px;font-size:15px;}
  .nav-foot .btn-primary{color:#fff !important;background:var(--green);}
  .nav-tel{display:flex;align-items:center;justify-content:center;gap:.5rem;
    min-height:48px;font-weight:600;font-size:15px;}
  .nav-tel svg{width:17px;height:17px;}
  .nav-socials{display:flex;gap:1rem;justify-content:center;margin-top:.3rem;}
  .nav-socials a{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;
    display:flex;align-items:center;justify-content:center;}
  .nav-socials svg{width:18px;height:18px;fill:currentColor;}
}
.nav-scrim{position:fixed;inset:0;z-index:1001;background:rgba(20,38,31,.5);
  opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s;
  -webkit-tap-highlight-color:transparent;}
body.nav-open .nav-scrim{opacity:1;visibility:visible;}
body.nav-open .site-header{z-index:1003;}
@media(min-width:1081px){.nav-scrim{display:none;}}

/* ---- 2. REAL CONTRAST FIXES ------------------------------------
   Only where the background is genuinely light. Card panels inside
   .bg-deep sections composite over dark green and are fine.       */
/* gold stars on cream measured 1.84:1. Darkened off dark grounds. */
.stars,.review .stars,.revband .stars{color:#8A6206;}
.bg-deep .stars,.bg-green .stars,.cta-band .stars,.cta-proof .stars,
.review-card-green .stars,.revband .stars,.rev-banner .stars{color:#E8B84B;}
/* service labels are white over a photo; guarantee a scrim so they
   never land on bare cream before the image paints */
.svc-label{text-shadow:0 2px 14px rgba(18,36,28,.9),0 1px 4px rgba(18,36,28,.8);}
.svc-card{background:var(--green-dk);}

/* ---- 3. VIDEO SECTIONS -----------------------------------------
   A 9:16 video is 676px tall next to 241px of copy, and centre
   alignment turned the difference into two dead gaps. The heading
   moves into the copy column so the two sides actually balance.  */
.vid-feature,.vid-solo{align-items:start;}
@media(min-width:861px){
  .vid-feature{grid-template-columns:minmax(240px,300px) 1fr;
    gap:clamp(2.5rem,5vw,4rem);align-items:center;}
  .vid-feature .vid{max-height:534px;width:100%;margin:0;}
  .vid-solo{grid-template-columns:minmax(240px,300px) 1fr;
    gap:clamp(2.5rem,5vw,4rem);align-items:center;}
  .vid-solo .vid{max-height:534px;width:100%;margin:0;}
}
.vid-copy > .eyebrow{margin-bottom:.6rem;}
.vid-copy h2{font-size:clamp(1.7rem,3.2vw,2.5rem);margin-bottom:.75rem;}
.vid-copy .lede{margin-bottom:1.4rem;}
.vid-copy .checks{margin:0 0 1.6rem;}
.vid-copy .btn-row{margin-top:0;}
@media(max-width:860px){
  .vid-feature,.vid-solo{grid-template-columns:1fr;gap:1.6rem;justify-items:stretch;}
  .vid-feature .vid,.vid-solo .vid{max-width:320px;margin:0 auto;}
  .vid-copy{text-align:left;}
}

/* the 9:16 video was 676px against 241px of copy. Sizing it by
   height rather than width brings the two columns level. */
@media(min-width:861px){
  .vid-feature .vid,.vid-solo .vid{
    height:clamp(360px,42vw,470px);width:auto;max-width:100%;
    aspect-ratio:9/16;margin:0;}
  .vid-feature,.vid-solo{grid-template-columns:auto 1fr;align-items:center;
    gap:clamp(2.5rem,5vw,4rem);}
}

/* ---- measured contrast failures, alpha composited ---------------
   Six real ones. Everything else that looked wrong was my measuring
   translucent panels without compositing them over their parent. */
/* footer legal links and small print at 42% white on near black
   green measured 3.97:1 against a 4.5 requirement */
.site-footer,.foot-bottom,.foot-bottom a,.foot-bottom span,
.site-footer .foot-legal,.site-footer small{color:rgba(255,255,255,.72);}
.site-footer a:hover,.foot-bottom a:hover{color:#fff;}
/* gold stars measured 1.84:1 on white. .review .stars outranked the
   base rule, so both are pinned. */
.stars,.review .stars,.revband .stars,.rev-banner .stars,
.review-card .stars,.quote .stars{color:#8A6206;}
.bg-deep .stars,.bg-green .stars,.cta-band .stars,.cta-proof .stars,
.review-card-green .stars,.bg-deep .review .stars,
.revband .stars,.rev-banner .stars{color:#E8B84B;}
/* "Learn more" in accent green on a dark green card measured 2.15:1 */
.bg-deep .card-link,.bg-green .card-link,
.bg-deep .card .card-link,.bg-green .card .card-link{color:var(--sage);}
.bg-deep .card-link:hover,.bg-green .card-link:hover{color:#fff;}
/* sage step numerals on white measured 2.3:1 */
.step .num,.jstep .num,.num{color:var(--accent);}
.bg-deep .num,.bg-green .num,.bg-deep .step .num{color:var(--sage);}
/* accent eyebrow on the warm grey band measured 4.31:1 */
.bg-white .eyebrow,.svc-strip .eyebrow,section .eyebrow{color:var(--green-lt);}
.bg-deep .eyebrow,.bg-green .eyebrow,.cta-band .eyebrow{color:var(--sage);}

/* ---- final contrast pins, by measured container -----------------
   .rev-marquee reviews sit on white, so their stars need the dark
   gold. .revband and .cta-band are dark green, so they keep the
   light gold. The earlier rule listed .rev-banner in both groups. */
.rev-marquee .review .stars,.review .stars{color:#8A6206;}
.revband .stars,.revband-body .stars,.cta-band .stars,
.cta-proof .stars,.bg-deep .stars,.bg-green .stars,
.review-card-green .stars{color:#E8B84B;}
/* sage numerals inside light cards measured 2.3:1 */
.grid .card > div:first-child,.card > div:first-child{color:var(--accent);}
.bg-deep .card > div:first-child,.bg-green .card > div:first-child{color:var(--sage);}
/* accent numerals on the dark journey step measured 2.44:1 */
.journey .jstep .num,.jstep .num{color:var(--green);}
.bg-deep .jstep .num,.bg-green .jstep .num,
.jstep[class*="dark"] .num{color:var(--sage);}
/* correction: .jstep sits on dark green, so its numeral is sage */
.journey .jstep .num,.jstep .num{color:var(--sage) !important;}
/* the light card numeral */
.grid .card > div,.grid.g4 .card > div{color:var(--accent);}
.bg-deep .grid .card > div,.bg-green .grid .card > div{color:var(--sage);}
.grid .card > div:not([class]){color:var(--accent) !important;}
.bg-deep .grid .card > div:not([class]),
.bg-green .grid .card > div:not([class]){color:var(--sage) !important;}

/* ==================================================================
   BUILD 24
   ================================================================== */

/* ---- 1. TRANSPARENT HEADER, GREEN ON SCROLL --------------------
   Fixed and clear over the hero, solid green once you scroll. A
   soft top scrim keeps the white logo and links legible over light
   hero photography without reading as a bar.                      */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  background:transparent !important;border-bottom:0 !important;
  box-shadow:none;transition:background .3s ease,box-shadow .3s ease;}
.site-header::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to bottom,rgba(18,36,28,.55),rgba(18,36,28,0));
  transition:opacity .3s ease;}
.site-header.stuck{background:var(--green) !important;
  box-shadow:0 4px 24px rgba(30,58,47,.22);}
.site-header.stuck::before{opacity:0;}
.site-header .wrap{position:relative;z-index:1;}
.site-header .brand img{filter:brightness(0) invert(1);}
.site-header .nav > a,.site-header .has-sub > a{color:#fff;}
.site-header .hdr-call{color:#fff;border-color:rgba(255,255,255,.4);}
.site-header .header-cta .btn-primary{background:#fff;color:var(--green);}
/* the page no longer reserves space for it */
body,body.hdr-fixed{padding-top:0 !important;}
/* interior pages have no full bleed hero, so they need the clearance */
main:not([data-overlay]) > section:first-child{padding-top:calc(var(--hdr-h,72px) + 1.5rem);}
.legal,.wrap-narrow.legal{padding-top:1rem;}

/* ---- 2. MENU: centred, larger, calmer ------------------------- */
@media(max-width:1080px){
  .nav{width:min(360px,90vw);text-align:center;
    padding:calc(1.25rem + env(safe-area-inset-top,0px)) 1.75rem
            calc(2.25rem + env(safe-area-inset-bottom,0px));}
  .nav a,.site-header .nav > a,.site-header .nav .has-sub > a{
    justify-content:center;text-align:center;
    color:var(--green) !important;font-size:1.15rem;
    min-height:54px;padding:.6rem 0;letter-spacing:-.01em;}
  .nav .sub a{font-size:1rem;min-height:48px;justify-content:center;
    color:var(--muted) !important;}
  .nav a[aria-current="page"]{color:var(--accent) !important;font-weight:700;}
  .nav > a,.nav .has-sub > a{border-bottom:1px solid rgba(30,58,47,.07);}
  /* the accordion arrow sits after the centred label, not pinned right */
  .nav .has-sub > a::after{margin-left:.55rem;opacity:.45;}
  .nav .has-sub{border-bottom:0;}
  .sub{padding:0;background:rgba(30,58,47,.03);}
  .sub.open{max-height:30rem;padding:.35rem 0;}
  .nav-head{justify-content:center;margin-bottom:.9rem;}
  .nav-close{width:48px;height:48px;font-size:1.6rem;}
  .nav-foot{margin-top:1.9rem;gap:.85rem;}
  .nav-foot .btn{min-height:54px;font-size:16px;}
  .nav-tel{font-size:16px;min-height:52px;}
}

/* ---- 3. INLINE CTA BAR NO LONGER OVERFLOWS -------------------- */
.cta-inline-wrap{overflow-x:clip;}
.cta-inline{max-width:100%;box-sizing:border-box;}
@media(max-width:820px){
  .cta-inline-wrap{padding-left:1rem;padding-right:1rem;}
  .cta-inline{width:100%;margin:0;padding:1.6rem 1.35rem;
    border-radius:1.25rem;display:grid;gap:1rem;text-align:left;}
  .cta-inline > *{min-width:0;max-width:100%;}
  .cta-inline .btn-row{display:grid;gap:.6rem;width:100%;margin:0;}
  .cta-inline .btn{width:100%;justify-content:center;}
  .cta-inline h2,.cta-inline h3,.cta-inline p{max-width:100%;
    overflow-wrap:break-word;}
}

/* ---- 4. MOBILE HERO: full bleed image, copy over a scrim ------- */
@media(max-width:767px){
  .hero.narrow{position:relative;display:block;min-height:0;padding:0;}
  .hero .hero-mob{position:relative;width:100%;
    aspect-ratio:auto !important;max-height:none !important;
    height:clamp(430px,78svh,620px);}
  .hero .hero-mob img{width:100%;height:100%;object-fit:cover;
    object-position:64% 22%;}
  .hero .hero-mob::after{content:"";position:absolute;inset:0;
    background:linear-gradient(to bottom,
      rgba(18,36,28,.62) 0%,rgba(18,36,28,.28) 34%,
      rgba(18,36,28,.72) 72%,rgba(18,36,28,.94) 100%);}
  .hero .hero-inner{position:absolute;inset:auto 0 0 0;z-index:3;
    padding:0 1.25rem calc(1.75rem + env(safe-area-inset-bottom,0px));}
  .hero .hero-copy{width:100%;max-width:none;}
  .hero .hero-eyebrow{color:var(--sage);}
  .hero h1{color:#fff;font-size:clamp(2rem,8.4vw,2.6rem);line-height:1.06;}
  .hero h1 i{color:var(--sage);font-style:normal;}
  .hero .hero-copy > p{color:rgba(255,255,255,.86);font-size:1rem;
    line-height:1.6;margin-bottom:1.25rem;}
  .hero .hero-trust{color:#fff;gap:.5rem .7rem;margin-bottom:1.35rem;}
  .hero .hero-trust .item{color:rgba(255,255,255,.92);}
  .hero .hero-trust .tick{color:var(--sage);}
  .hero .hero-trust .sep{color:rgba(255,255,255,.35);}
  .hero .hero-cta{display:grid;gap:.65rem;}
  .hero .btn-hero{background:#fff;color:var(--green);width:100%;
    justify-content:center;min-height:52px;}
  .hero .link-hero{color:#fff;border:1.5px solid rgba(255,255,255,.55);
    border-radius:100px;width:100%;justify-content:center;
    min-height:52px;display:inline-flex;align-items:center;}
  .hero .hero-bg{display:none;}
}

/* ---- BUILD 24 corrections ------------------------------------- */
/* the trust topbar was overlapping the logo under the transparent
   header; it belongs to desktop only */
@media(max-width:1080px){.topbar{display:none !important;}}

/* menu: close button centred, and the booking CTA was rendering
   invisible because .btn-primary picked up the header's white fill */
@media(max-width:1080px){
  .nav-head{display:flex !important;justify-content:center !important;}
  .nav .nav-foot .btn-primary,
  .site-header .nav .nav-foot .btn-primary{
    background:var(--green) !important;color:#fff !important;
    border:0 !important;}
  .nav .nav-foot .btn-primary:active{background:var(--green-dk) !important;}
  /* dividers all the same width */
  .nav > a,.nav .has-sub,.nav .has-sub > a{border-bottom:0;}
  .nav > a,.nav > .has-sub{border-bottom:1px solid rgba(30,58,47,.07);}
  .nav .has-sub > a{border-bottom:0;}
}

/* hamburger icon must read against a light hero */
.nav-toggle{color:#fff;}
.nav-toggle svg{filter:drop-shadow(0 1px 3px rgba(18,36,28,.6));}
.site-header.stuck .nav-toggle{color:#fff;}

/* hero: the secondary action was a white pill with white text */
@media(max-width:767px){
  .hero .link-hero,.hero .hero-cta .link-hero{
    background:transparent !important;color:#fff !important;
    border:1.5px solid rgba(255,255,255,.6) !important;
    border-radius:100px;width:100%;min-height:52px;
    display:inline-flex;align-items:center;justify-content:center;
    font-weight:600;text-decoration:none;}
  .hero .btn-hero{background:#fff !important;color:var(--green) !important;
    font-weight:700;}
  /* eyebrow was sage over a bright part of the photo */
  .hero .hero-eyebrow{color:#fff;font-size:13px;letter-spacing:.16em;
    text-shadow:0 1px 8px rgba(18,36,28,.8);margin-bottom:.75rem;}
  .hero .hero-mob::after{
    background:linear-gradient(to bottom,
      rgba(18,36,28,.72) 0%,rgba(18,36,28,.3) 26%,
      rgba(18,36,28,.55) 55%,rgba(18,36,28,.9) 82%,rgba(18,36,28,.97) 100%);}
  .hero h1{text-shadow:0 2px 18px rgba(18,36,28,.45);}
}
/* the "in 20 seconds" hook is desktop only */
.wide-only{display:none;}
@media(min-width:900px){.wide-only{display:inline;}}

/* ==================================================================
   BUILD 25  header stack and CTA width corrections
   ================================================================== */

/* ---- the topbar and the header are one fixed stack --------------
   Making .site-header fixed left the topbar behind in normal flow,
   so the two rows printed on top of each other. The topbar is now
   fixed above the header and slides away on scroll.               */
@media(min-width:1081px){
  .topbar{
    position:fixed;top:0;left:0;right:0;z-index:1002;
    background:transparent;border:0;
    transition:transform .3s ease,opacity .3s ease;}
  .topbar::before{content:"";position:absolute;inset:0;z-index:-1;
    background:linear-gradient(to bottom,rgba(18,36,28,.55),rgba(18,36,28,.18));}
  .site-header{top:var(--tb-h,40px);transition:top .3s ease,background .3s ease;}
  .site-header::before{
    background:linear-gradient(to bottom,rgba(18,36,28,.35),rgba(18,36,28,0));}
  body.tb-hidden .topbar{transform:translateY(-100%);opacity:0;pointer-events:none;}
  body.tb-hidden .site-header,.site-header.stuck{top:0;}
}

/* ---- the inline CTA is a contained pull, not a full width band ---
   My earlier max-width:100% overrode its own 70rem cap, which is
   why it ran the full width of the screen.                        */
.cta-inline{
  max-width:min(58rem,100%) !important;
  margin-left:auto !important;margin-right:auto !important;
  box-sizing:border-box;padding:1.75rem 2rem;border-radius:1.25rem;}
@media(min-width:821px){
  .cta-inline{display:flex;align-items:center;justify-content:space-between;
    gap:2rem;text-align:left;}
  .cta-inline > p{margin:0;max-width:32ch;}
  .cta-inline .btn-row{flex:0 0 auto;margin:0;display:flex;gap:.7rem;}
}
@media(max-width:820px){
  .cta-inline{max-width:100% !important;padding:1.6rem 1.35rem;}
}

/* ---- BUILD 25: menu footer and header were shrink wrapped --------
   .nav is a flex column with align-items:flex-start, so .nav-head
   and .nav-foot collapsed to content width and sat hard left. The
   links only looked right because they carry width:100%.
   The booking button was also being caught by a display:none.    */
@media(max-width:1080px){
  .nav{align-items:stretch !important;}
  .nav-head,.nav-foot,.nav-socials{width:100% !important;}
  .nav-head{display:flex !important;justify-content:center !important;}
  .nav .nav-foot .btn,
  .nav .nav-foot .btn-primary,
  .site-header .nav .nav-foot .btn-primary{
    display:inline-flex !important;align-items:center;justify-content:center;
    width:100% !important;min-height:54px;font-size:16px;
    background:var(--green) !important;color:#fff !important;border:0 !important;}
  .nav .nav-tel{width:100%;}
  /* every row divider the same width */
  .nav > a,.nav > .has-sub{width:100%;border-bottom:1px solid rgba(30,58,47,.08);}
  .nav .has-sub > a{border-bottom:0;width:100%;}
}

/* ---- header legibility over light hero photography -------------
   Transparent still, but the scrim has to actually carry white
   text over a cream coloured hero.                               */
.site-header::before{
  background:linear-gradient(to bottom,
    rgba(18,36,28,.62) 0%,rgba(18,36,28,.34) 62%,rgba(18,36,28,0) 100%);}
@media(min-width:1081px){
  .topbar::before{background:linear-gradient(to bottom,
    rgba(18,36,28,.68),rgba(18,36,28,.5));}
  .topbar,.topbar span{color:rgba(255,255,255,.9);}
  .site-header .nav > a,.site-header .has-sub > a{
    color:#fff;text-shadow:0 1px 6px rgba(18,36,28,.55);}
  .site-header.stuck .nav > a,.site-header.stuck .has-sub > a{text-shadow:none;}
}
.site-header .brand img{filter:brightness(0) invert(1)
  drop-shadow(0 1px 4px rgba(18,36,28,.5));}

/* ---- pages with no hero photo get a solid header ---------------
   404, thank you and the three legal pages have a cream background
   behind the header band. Transparent white text there is
   unreadable, and their first section was starting at y=0 under
   the fixed header. */
body:has(main:not([data-overlay])) .site-header,
body:has(main:not([data-overlay])) .topbar{position:fixed;}
main:not([data-overlay]){display:block;
  padding-top:calc(var(--hdr-h,72px) + var(--tb-h,0px));}
body:has(main:not([data-overlay])) .site-header{
  background:var(--green) !important;}
body:has(main:not([data-overlay])) .site-header::before{opacity:0;}
body:has(main:not([data-overlay])) .topbar::before{
  background:var(--green-dk);}
@media(max-width:1080px){
  main:not([data-overlay]){padding-top:var(--hdr-h,64px);}
}

/* ---- BUILD 26 -------------------------------------------------
   The topbar scrim was a ::before at z-index:-1 behind a parent with
   no background, so it never painted and the text measured 1.07:1
   against the hero. The scrim is now the element's own background. */
@media(min-width:1081px){
  .topbar{background:rgba(18,36,28,.66) !important;
    -webkit-backdrop-filter:saturate(120%) blur(2px);
    backdrop-filter:saturate(120%) blur(2px);}
  .topbar::before{display:none;}
  .topbar,.topbar span,.topbar a{color:rgba(255,255,255,.94);}
  .topbar .tbsep{color:rgba(255,255,255,.5);}
  body.tb-hidden .topbar{background:transparent !important;}
  /* same problem on the header band */
  .site-header:not(.stuck){background:rgba(18,36,28,.34) !important;}
  .site-header::before{display:none;}
  .site-header:not(.stuck) .nav > a,
  .site-header:not(.stuck) .has-sub > a{color:#fff;text-shadow:none;}
}
@media(max-width:1080px){
  .site-header:not(.stuck){background:linear-gradient(to bottom,
    rgba(18,36,28,.66),rgba(18,36,28,.18)) !important;}
  .site-header::before{display:none;}
}
/* footer links measured 4.41:1 against a 4.5 requirement */
.site-footer,.site-footer a,.site-footer li,.foot-grid a,.foot-grid li{
  color:rgba(255,255,255,.84);}
.site-footer a:hover{color:#fff;}
/* submenu links were --muted on the cream panel, 4.41:1 against 4.5 */
@media(max-width:1080px){
  .nav .sub a,.site-header .nav .sub a{color:var(--text) !important;}
  .nav .sub a[aria-current="page"]{color:var(--accent) !important;}
}
/* topbar separators measured 2.65:1 */
@media(min-width:1081px){.topbar .tbsep{color:rgba(255,255,255,.72) !important;}}
/* related-card and footer links sitting at 4.44:1 against 4.5 */
.card-link,.card h3 a,.foot-grid a,.site-footer li a,
.grid .card a,.related a{color:var(--green);}
.bg-deep .card-link,.bg-green .card-link{color:var(--sage);}
.site-footer a,.site-footer li a,.foot-grid a{color:rgba(255,255,255,.88);}
.nav .sub a,.site-header .nav .sub a{color:#4E554C !important;}

/* ---- BUILD 26 final ---------------------------------------------
   Desktop nav measured 2.24:1 as white over a .34 scrim on a cream
   hero. Strengthening the scrim alone would stop it reading as
   transparent, so it gets a moderate scrim plus a text shadow,
   which is what actually carries white type over photography. */
@media(min-width:1081px){
  .site-header:not(.stuck){background:rgba(18,36,28,.46) !important;}
  .site-header:not(.stuck) .nav > a,
  .site-header:not(.stuck) .has-sub > a,
  .site-header:not(.stuck) .hdr-call{
    color:#fff !important;
    text-shadow:0 1px 3px rgba(12,26,20,.85),0 2px 10px rgba(12,26,20,.6);}
  .topbar{background:rgba(18,36,28,.72) !important;}
  .topbar span,.topbar .tbsep{text-shadow:0 1px 3px rgba(12,26,20,.7);}
  .topbar .tbsep{color:rgba(255,255,255,.8) !important;}
}
/* a primary button is never green text on a green fill */
.btn-primary{background:var(--green);color:#fff !important;}
.btn-primary:hover{background:var(--green-dk);color:#fff !important;}
.btn-light{background:#fff;color:var(--green) !important;}
.btn-ghost-light{background:transparent;color:#fff !important;
  border:1.5px solid rgba(255,255,255,.55);}
.site-header .header-cta .btn-primary{background:#fff;color:var(--green) !important;}
.site-header .header-cta .btn-primary:hover{background:var(--sage);color:var(--green-dk) !important;}
.nav .nav-foot .btn-primary{background:var(--green);color:#fff !important;}

/* ---- button colour is context aware ----------------------------
   My blanket !important rules made .btn-ghost-light white on cream
   (16 instances) and left .btn-light unpainted on green (16 more).
   Both were invisible. Light variants are for dark grounds only. */
.btn-light{background:#fff !important;color:var(--green) !important;
  border:1px solid #fff !important;}
.btn-light:hover{background:var(--sage) !important;color:var(--green-dk) !important;}

.btn-ghost-light{background:transparent !important;
  color:var(--green) !important;border:1.5px solid rgba(30,58,47,.28) !important;}
.bg-deep .btn-ghost-light,.bg-green .btn-ghost-light,
.cta-inline .btn-ghost-light,.cta-band .btn-ghost-light,
.revband .btn-ghost-light,.review-card-green .btn-ghost-light,
.hero .btn-ghost-light,.page-hero .btn-ghost-light{
  color:#fff !important;border-color:rgba(255,255,255,.55) !important;}
.bg-deep .btn-ghost-light:hover,.bg-green .btn-ghost-light:hover,
.cta-inline .btn-ghost-light:hover,.cta-band .btn-ghost-light:hover{
  background:rgba(255,255,255,.14) !important;}
/* the hero copy column is cream on desktop, so light button variants
   there were white on cream. Light styling belongs to the mobile
   overlay hero and to genuinely dark panels only. */
.hero .btn-ghost-light,.page-hero .btn-ghost-light{
  color:var(--green) !important;border-color:rgba(30,58,47,.28) !important;}
.link-hero{color:var(--green) !important;}
@media(max-width:767px){
  .hero .btn-ghost-light{color:#fff !important;
    border-color:rgba(255,255,255,.55) !important;}
  .hero .link-hero,.hero .hero-cta .link-hero{color:#fff !important;}
}

/* ==================================================================
   BUILD 27
   ================================================================== */

/* ---- 1. SUBMENU ------------------------------------------------
   .has-sub:focus-within .sub (0,3,0) outranked the mobile reset
   .sub{transform:none} (0,1,0). Tapping the parent gives it focus,
   which re-applied the desktop translateX(-50%) and shoved the
   submenu off the left edge of the panel. Only visible on a real
   tap, which is why it survived every headless check. */
@media(max-width:1080px){
  .nav .sub,
  .nav .has-sub:hover .sub,
  .nav .has-sub:focus-within .sub,
  .nav .has-sub.open .sub{
    position:static !important;transform:none !important;
    left:auto !important;top:auto !important;min-width:0 !important;
    width:100% !important;box-shadow:none !important;border:0 !important;
    background:rgba(30,58,47,.03) !important;}
  .nav .sub:not(.open){max-height:0 !important;overflow:hidden !important;
    opacity:1;visibility:visible;}
  .nav .sub.open{max-height:32rem !important;}
}

/* ---- 2. HEADER: clean, no dark band ----------------------------
   Nothing behind it at rest. Dark green type on the light hero,
   solid green with white type once you scroll.                  */
.site-header:not(.stuck){background:transparent !important;box-shadow:none;}
.site-header::before{display:none !important;}
.site-header:not(.stuck) .brand img{filter:none !important;}
.site-header.stuck .brand img{filter:brightness(0) invert(1) !important;}
@media(min-width:1081px){
  .topbar{background:transparent !important;backdrop-filter:none !important;}
  .topbar,.topbar span,.topbar a{color:var(--green) !important;
    text-shadow:none !important;}
  .topbar .tbsep{color:rgba(30,58,47,.45) !important;}
  .site-header:not(.stuck) .nav > a,
  .site-header:not(.stuck) .has-sub > a{
    color:var(--green) !important;text-shadow:none !important;opacity:.9;}
  .site-header:not(.stuck) .nav > a:hover,
  .site-header:not(.stuck) .nav > a[aria-current="page"]{opacity:1;}
  .site-header:not(.stuck) .hdr-call{
    color:var(--green) !important;border-color:rgba(30,58,47,.28) !important;}
  .site-header:not(.stuck) .header-cta .btn-primary{
    background:var(--green) !important;color:#fff !important;}
  .site-header.stuck .nav > a,.site-header.stuck .has-sub > a{color:#fff !important;}
  .site-header.stuck .hdr-call{color:#fff !important;border-color:rgba(255,255,255,.35) !important;}
  .site-header.stuck .header-cta .btn-primary{background:#fff !important;color:var(--green) !important;}
}
@media(max-width:1080px){
  .site-header:not(.stuck) .brand img{filter:brightness(0) invert(1) !important;}
  .site-header:not(.stuck) .nav-toggle,
  .site-header:not(.stuck) .hdr-call{color:#fff !important;}
  .site-header:not(.stuck) .hdr-call{border-color:rgba(255,255,255,.45) !important;}
}

/* ---- 3. WHATSAPP: real logo, its own green -------------------- */
.wa-float{background:#25D366 !important;color:#fff !important;
  box-shadow:0 8px 28px rgba(37,211,102,.38) !important;}
.wa-float:hover{background:#1EBE5A !important;}
.wa-float svg{fill:#fff !important;stroke:none !important;width:22px;height:22px;}
.sticky-cta .btn-wa{background:#25D366 !important;border-color:#25D366 !important;
  color:#fff !important;}
.sticky-cta .btn-wa svg{fill:#fff !important;stroke:none !important;}

/* ---- 4. GREEN CTA CARDS CLEAR THE SCREEN EDGE ON MOBILE ------- */
@media(max-width:820px){
  .cta-band > .wrap,.cta-inline-wrap > .wrap,
  section > .wrap:has(> .cta-inline){padding-left:1.15rem;padding-right:1.15rem;}
  .cta-band{padding-left:0;padding-right:0;}
  .cta-band .wrap{border-radius:1.25rem;}
  .cta-inline{margin-left:0 !important;margin-right:0 !important;width:100%;}
  .verify,.review-card-green,.note.review-card-green{
    margin-left:1.15rem;margin-right:1.15rem;}
}
/* the closing band's proof line was running off the right edge */
@media(max-width:820px){
  .cta-band .wrap{padding-left:1.15rem;padding-right:1.15rem;}
  .cta-proof{max-width:100%;flex-wrap:wrap;justify-content:center;
    gap:.35rem .6rem;font-size:14px;padding:0 .25rem;}
  .cta-proof > span{white-space:normal;}
  .cta-proof .dot{display:none;}
  .cta-band h2,.cta-band .lede{padding:0 .25rem;}
}
/* topbar separators at .45 measured 2.47:1 on cream */
@media(min-width:1081px){.topbar .tbsep{color:rgba(30,58,47,.62) !important;}}
@media(min-width:1081px){.topbar .tbsep{color:var(--muted) !important;}}
/* white on WhatsApp light green measured 1.98:1. WhatsApp's darker
   brand green keeps it recognisably WhatsApp, distinct from the site
   green, and carries white text at 4.9:1. */
.wa-float,.sticky-cta .btn-wa{background:#107C6B !important;}
.wa-float{background:#107C6B !important;box-shadow:0 8px 28px rgba(16,124,107,.35) !important;}
.wa-float:hover{background:#0C6959 !important;}
.sticky-cta .btn-wa{background:#107C6B !important;border-color:#107C6B !important;}

/* ==================================================================
   BUILD 28
   ================================================================== */

/* ---- 1. TOPBAR IS A GREEN BAR AT THE VERY TOP ------------------ */
@media(min-width:1081px){
  .topbar{background:var(--green) !important;backdrop-filter:none !important;}
  .topbar,.topbar span,.topbar a{color:rgba(255,255,255,.92) !important;
    text-shadow:none !important;}
  .topbar .tbsep{color:rgba(255,255,255,.5) !important;}
  .topbar a:hover{color:#fff !important;}
  /* nav sits below it, full strength dark green, no washed opacity */
  .site-header:not(.stuck) .nav > a,
  .site-header:not(.stuck) .has-sub > a{
    color:var(--green) !important;opacity:1 !important;font-weight:500;}
  .site-header:not(.stuck) .nav > a[aria-current="page"]{color:var(--accent) !important;}
}

/* ---- 2. MOBILE HEADER IS SOLID, NOT OVER THE PHOTO -------------
   Transparent over a light hero left the white logo invisible.   */
@media(max-width:1080px){
  .site-header,.site-header:not(.stuck){
    background:var(--green) !important;box-shadow:0 2px 14px rgba(30,58,47,.18);}
  .site-header .brand img{filter:brightness(0) invert(1) !important;}
  .site-header .nav-toggle,.site-header .hdr-call{color:#fff !important;}
  .site-header .hdr-call{border-color:rgba(255,255,255,.4) !important;}
  main{padding-top:var(--hdr-h,60px);}
  main[data-overlay]{padding-top:var(--hdr-h,60px);}
}

/* ---- 3. MOBILE HERO BACK TO IMAGE ON TOP, COPY BENEATH -------- */
@media(max-width:767px){
  .hero.narrow{position:static;display:block;padding:0 0 clamp(1.75rem,6vw,2.5rem);}
  .hero .hero-mob{position:relative;width:100%;height:auto;
    aspect-ratio:16/11 !important;max-height:38vh !important;margin-bottom:1.5rem;}
  .hero .hero-mob img{width:100%;height:100%;object-fit:cover;object-position:60% 25%;}
  .hero .hero-mob::after{content:"";position:absolute;inset:0;
    background:linear-gradient(to bottom,rgba(248,246,242,0) 62%,
      rgba(248,246,242,.6) 84%,rgba(248,246,242,1) 100%);}
  .hero .hero-inner{position:static;padding:0 1.25rem;}
  .hero .hero-copy{width:100%;max-width:none;}
  .hero .hero-eyebrow{color:var(--accent);text-shadow:none;font-size:13px;}
  .hero h1{color:var(--green);text-shadow:none;
    font-size:clamp(1.9rem,7.6vw,2.4rem);line-height:1.08;}
  .hero h1 i{color:var(--accent);font-style:normal;}
  .hero .hero-copy > p{color:var(--text);font-size:1rem;margin-bottom:1.25rem;}
  .hero .hero-trust{color:var(--green);margin-bottom:1.35rem;}
  .hero .hero-trust .item{color:var(--green);}
  .hero .hero-trust .tick{color:var(--accent);}
  .hero .hero-trust .sep{color:rgba(30,58,47,.3);}
  .hero .btn-hero{background:var(--green) !important;color:#fff !important;
    width:100%;justify-content:center;min-height:52px;}
  .hero .link-hero,.hero .hero-cta .link-hero{
    background:transparent !important;color:var(--green) !important;
    border:1.5px solid rgba(30,58,47,.28) !important;border-radius:100px;
    width:100%;min-height:52px;display:inline-flex;align-items:center;justify-content:center;}
  .hero .btn-ghost-light{color:var(--green) !important;
    border-color:rgba(30,58,47,.28) !important;}
  .hero .hero-bg{display:none;}
  /* interior heroes keep the same shape */
  .page-hero-bg{margin-bottom:1.5rem;aspect-ratio:16/11;max-height:38vh;}
}

/* ---- 4. VERTICAL RHYTHM ---------------------------------------
   Sections were carrying their own padding on top of the wrap's,
   which left dead bands, most obviously under the homepage hero. */
section{padding-top:clamp(2.75rem,5vw,4.5rem);padding-bottom:clamp(2.75rem,5vw,4.5rem);}
.hero,.page-hero,.cta-inline-wrap,.marquee,.accred-strip,.svc-strip,
.rev-marquee,.rev-banner{padding-top:0;padding-bottom:0;}
section + section{padding-top:clamp(2.75rem,5vw,4.5rem);}
.sec-head{margin-bottom:clamp(1.75rem,3.5vw,2.5rem);}
.sec-head.center{margin-left:auto;margin-right:auto;}
@media(max-width:767px){
  section{padding-top:2.5rem;padding-bottom:2.5rem;}
  .sec-head{margin-bottom:1.5rem;}
}
/* the toggle box was 44x44 but its svg had collapsed to zero width */
.nav-toggle svg{width:26px !important;height:26px !important;
  stroke:currentColor !important;fill:none !important;flex:0 0 auto;display:block;}
.hdr-call svg{width:18px !important;height:18px !important;
  stroke:currentColor !important;fill:none !important;display:block;}
/* the hero trust row is a real signal; keep it on mobile */
@media(max-width:767px){
  .hero-trust{display:flex !important;flex-wrap:wrap;gap:.4rem .7rem;
    font-size:12px;letter-spacing:.02em;}
  .hero-trust .sep{display:none;}
  .hero-trust .item{gap:.3rem;}
  .hero-trust .tick svg{width:13px;height:13px;}
}
@media(min-width:1081px){.topbar .tbsep{color:rgba(255,255,255,.68) !important;}}
/* every nav link is dark green; the current page is marked by weight,
   not by a lighter colour */
@media(min-width:1081px){
  .site-header:not(.stuck) .nav > a,
  .site-header:not(.stuck) .has-sub > a,
  .site-header:not(.stuck) .nav > a[aria-current="page"]{
    color:var(--green) !important;opacity:1 !important;}
  .site-header:not(.stuck) .nav > a[aria-current="page"]{font-weight:700;}
}

/* ==================================================================
   BUILD 30
   ================================================================== */

/* ---- contact form: ".opt" was doing double duty as the radio
   option class and the "optional" tag, so the tag inherited the
   radio's box and rendered as a second empty field.              */
.field label .opt,label .opt,.qf-field label .opt{
  display:inline !important;position:static !important;
  background:none !important;border:0 !important;padding:0 !important;
  margin:0 0 0 .4rem !important;min-height:0 !important;
  font-size:12px !important;font-weight:400 !important;
  letter-spacing:.04em;text-transform:lowercase;
  color:var(--muted) !important;box-shadow:none !important;}
.field label .opt::before,.field label .opt::after{content:none !important;}

/* ---- homepage hero: the service list reads as chips ------------ */
.hero-services{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;
  margin:0 0 1.5rem;padding:0;}
.hero-services li{display:inline-flex;align-items:center;
  padding:.42rem .95rem;border:1px solid rgba(30,58,47,.18);
  border-radius:100px;background:rgba(255,255,255,.6);
  font-size:14px;font-weight:500;color:var(--green);letter-spacing:.01em;}
@media(max-width:767px){.hero-services{gap:.4rem;margin-bottom:1.25rem;}
  .hero-services li{font-size:13px;padding:.35rem .8rem;}}

/* ---- breathing room back: sections were squashed --------------- */
section{padding-top:clamp(3.5rem,6.5vw,6rem);padding-bottom:clamp(3.5rem,6.5vw,6rem);}
@media(max-width:767px){section{padding-top:3rem;padding-bottom:3rem;}}
.hero,.page-hero,.cta-inline-wrap,.marquee,.svc-strip,
.rev-marquee,.rev-banner,.accred-strip{padding-top:0 !important;padding-bottom:0 !important;}
.svc-strip{padding-top:clamp(3.5rem,6.5vw,6rem) !important;
  padding-bottom:clamp(3.5rem,6.5vw,6rem) !important;}
.sec-head{margin-bottom:clamp(2rem,4vw,3rem);}
.grid{gap:clamp(1.25rem,2.5vw,1.75rem);}

/* ---- hero photography stops washing out ----------------------- */
@media(min-width:768px){
  .page-hero-bg::after,.hero-bg::after,
  .page-hero.narrow .page-hero-bg::after,.hero.narrow .hero-bg::after{
    background:linear-gradient(to right,
      rgba(248,246,242,.98) 0%,rgba(248,246,242,.94) 30%,
      rgba(248,246,242,.55) 50%,rgba(248,246,242,.06) 68%,
      rgba(248,246,242,0) 80%) !important;}
  .page-hero-bg img,.hero-bg img{filter:none !important;opacity:1 !important;}
}

/* ---- the 1px light line under the mobile header --------------- */
.site-header{border-bottom:0 !important;}
@media(max-width:1080px){
  .site-header{box-shadow:none !important;}
  main,main[data-overlay]{margin-top:0;}
}

/* ---- CTA panels are green or cream, never white --------------- */
.cta-band,.cta-band .wrap{background:var(--green);}
section.bg-white:has(.cta-inline),.cta-inline-wrap{background:var(--bg) !important;}
.cta-inline{background:var(--green) !important;}
.verify,.verify-light{background:var(--bg) !important;border:1px solid var(--line) !important;}
.verify h3,.verify-light h3{color:var(--green) !important;}
.verify p,.verify-light p{color:var(--text) !important;}
section.bg-white{background:var(--bg) !important;}
.card{background:#fff;}

/* ==================================================================
   BUILD 32  hero
   ================================================================== */

/* pills reverted to the original inline list */
.hero-services{display:none !important;}
.hero-services-line{font-size:clamp(1.05rem,1.6vw,1.35rem);line-height:1.5;
  color:var(--green);font-weight:400;margin:0 0 1.5rem;max-width:34ch;}
@media(max-width:767px){
  .hero-services-line{font-size:1rem;margin-bottom:1.25rem;max-width:none;}
}

/* the hero starts below the header rather than tucking under it.
   Header itself is untouched. */
@media(min-width:1081px){
  .hero .hero-bg,.page-hero .page-hero-bg{
    top:calc(var(--tb-h,40px) + var(--hdr-h,74px)) !important;}
  .hero .hero-inner,.page-hero > .wrap{
    padding-top:calc(var(--tb-h,40px) + var(--hdr-h,74px) + clamp(2rem,4vw,3.5rem)) !important;}
  .hero,.page-hero{background:var(--bg);}
}
@media(min-width:768px) and (max-width:1080px){
  .hero .hero-bg,.page-hero .page-hero-bg{top:var(--hdr-h,64px) !important;}
  .hero .hero-inner,.page-hero > .wrap{
    padding-top:calc(var(--hdr-h,64px) + 2rem) !important;}
}
.hero-services-line{margin-top:.9rem;}
@media(max-width:767px){.hero-services-line{margin-top:.7rem;}}

/* ==================================================================
   BUILD 33  mobile hero
   The crop was cutting the subject's head, a bottom fade was
   muddying the photo, and the eyebrow repeated the trust row, so
   five stacked blocks pushed the buttons well below the fold.
   ================================================================== */
@media(max-width:767px){
  /* photo: taller frame, crop centred on the treatment, no fade */
  .hero .hero-mob{aspect-ratio:5/4 !important;max-height:44vh !important;
    margin-bottom:1.4rem;}
  .hero .hero-mob img{object-position:58% 38% !important;}
  .hero .hero-mob::after{display:none !important;}
  .page-hero-bg{aspect-ratio:5/4 !important;max-height:40vh !important;}
  .page-hero-bg img{object-position:58% 35% !important;}
  .page-hero-bg::after{display:none !important;}

  /* the eyebrow said HCPC REGISTERED · MACP ACCREDITED and so did
     the trust row directly beneath it. One of them goes. */
  .hero .hero-eyebrow{display:none !important;}

  /* trust row as one compact line, not three stacked rows */
  .hero .hero-trust{display:flex !important;flex-direction:row;flex-wrap:wrap;
    gap:.3rem .8rem;font-size:11.5px;letter-spacing:.06em;font-weight:600;
    margin:0 0 1.35rem;color:var(--green);}
  .hero .hero-trust .item{display:inline-flex;align-items:center;gap:.28rem;
    white-space:nowrap;}
  .hero .hero-trust .tick{width:14px;height:14px;flex:0 0 auto;color:var(--accent);}
  .hero .hero-trust .tick svg{width:12px;height:12px;}
  .hero .hero-trust .sep{display:none;}

  /* tighter stack so the buttons land near the fold */
  .hero h1{margin-bottom:.55rem;font-size:clamp(1.85rem,7.2vw,2.25rem);}
  .hero-services-line{font-size:.94rem;line-height:1.45;color:var(--muted);
    margin:0 0 .95rem;}
  .hero .hero-copy > p{font-size:.97rem;line-height:1.55;margin-bottom:1.15rem;}
  .hero .hero-inner{padding-top:0;}
  .hero .hero-cta{gap:.6rem;}
  .hero.narrow{padding-bottom:2rem;}
}
/* trust row: uppercase with wide letter spacing made each item 174px
   against a 310px row, so all three stacked. Sentence case with no
   tracking fits two per line and stays at a readable 14px. */
@media(max-width:767px){
  .hero .hero-trust{gap:.45rem .9rem;margin-bottom:1.3rem;}
  .hero .hero-trust .item{font-size:14px !important;text-transform:none !important;
    letter-spacing:0 !important;font-weight:600;color:var(--green);}
  .hero .hero-trust .tick{width:16px;height:16px;border:0;background:none;}
}
/* still three ragged rows: the tick circles were adding ~20px each.
   Drop the ticks on mobile and let the existing separators carry it
   as a flowing line instead of three block items. */
@media(max-width:767px){
  .hero .hero-trust{display:block !important;font-size:13px;line-height:1.7;
    color:var(--muted);margin-bottom:1.25rem;}
  .hero .hero-trust .tick{display:none !important;}
  .hero .hero-trust .item{display:inline !important;font-size:13px !important;
    font-weight:600;color:var(--green);white-space:nowrap;}
  .hero .hero-trust .sep{display:inline !important;color:rgba(30,58,47,.35);
    margin:0 .45rem;}
}

/* ==================================================================
   BUILD 34  homepage below the hero on mobile
   Three stats were stacking as full width blocks and eating a whole
   screen, and the body map was running to nearly 600px tall.
   ================================================================== */
@media(max-width:767px){
  .stats{display:grid !important;grid-template-columns:repeat(3,1fr) !important;
    gap:.6rem !important;align-items:start;}
  .stats .stat{text-align:center;padding:0;}
  .stats .stat .n{font-size:clamp(1.5rem,7vw,2rem) !important;line-height:1.05;}
  .stats .stat .l{font-size:11px !important;letter-spacing:.08em;
    line-height:1.3;margin-top:.35rem;max-width:11ch;margin-left:auto;margin-right:auto;}
  section:has(> .wrap > .stats){padding-top:2rem !important;padding-bottom:2rem !important;}

  /* body map: usable, not a full screen of grey */
  /* constrain the drawing, never the figure box: the figure carries
     the "tap a point" caption and capping it pushed that caption out
     on top of the panel heading below. */
  .bm-figure{max-height:none;}
  .bm-figure svg,.bm-figure img{max-width:210px;height:auto;
    margin:0 auto;display:block;}
  #findit .bm-wrap,#findit .bodymap{gap:1.25rem;}
  #findit{padding-top:2.5rem !important;padding-bottom:2.5rem !important;}
  #findit .sec-head{margin-bottom:1.25rem;}
}

/* ==================================================================
   BUILD 35
   ================================================================== */

/* ---- 1. BUTTONS: rounded rectangles, one shape everywhere ------ */
.btn,.btn-hero,.link-hero,.btn-primary,.btn-outline,.btn-light,
.btn-ghost-light,.btn-wa,.sticky-cta .btn,.sticky-cta .btn-wa,
.qc-tab,.wa-float,.nav-foot .btn,.hdr-call,.opt,.qf-opt,
.header-cta .btn,.cta-inline .btn,.cta-band .btn{
  border-radius:10px !important;}
.btn::before,.btn-hero::before{clip-path:inset(0 round 10px) !important;
  border-radius:10px !important;}
.hdr-call{border-radius:10px !important;width:44px;height:44px;}
.nav-close{border-radius:10px !important;}
.nav-socials a,.socials a{border-radius:10px !important;}
.wa-float{border-radius:12px !important;}
.hero-services-line{border-radius:0;}

/* ---- 2. NO WHITE BUTTONS ON A CREAM PAGE ---------------------
   .btn-light is for dark panels. On the cream heroes it was white
   on cream, which is the edge you could see.                    */
.hero .btn-light,.page-hero .btn-light,
section:not(.bg-deep):not(.bg-green):not(.cta-band) .btn-light,
.cta-inline-wrap .btn-light{
  background:var(--green) !important;color:#fff !important;
  border:1px solid var(--green) !important;}
.bg-deep .btn-light,.bg-green .btn-light,.cta-band .btn-light,
.cta-inline .btn-light,.revband .btn-light,.review-card-green .btn-light{
  background:#fff !important;color:var(--green) !important;
  border:1px solid #fff !important;}

/* ---- 3. HOVER: every button inverts, in site colours ---------- */
.btn-primary:hover,.btn-hero:hover{
  background:#fff !important;color:var(--green) !important;
  border-color:var(--green) !important;}
.btn-outline:hover,.link-hero:hover{
  background:var(--green) !important;color:#fff !important;
  border-color:var(--green) !important;}
.hero .btn-light:hover,.page-hero .btn-light:hover,
section:not(.bg-deep):not(.bg-green):not(.cta-band) .btn-light:hover{
  background:#fff !important;color:var(--green) !important;
  border-color:var(--green) !important;}
.bg-deep .btn-light:hover,.bg-green .btn-light:hover,
.cta-band .btn-light:hover,.cta-inline .btn-light:hover{
  background:transparent !important;color:#fff !important;
  border-color:#fff !important;}
.bg-deep .btn-ghost-light:hover,.bg-green .btn-ghost-light:hover,
.cta-band .btn-ghost-light:hover,.cta-inline .btn-ghost-light:hover{
  background:#fff !important;color:var(--green) !important;
  border-color:#fff !important;}
.hero .btn-ghost-light:hover,.page-hero .btn-ghost-light:hover{
  background:var(--green) !important;color:#fff !important;
  border-color:var(--green) !important;}
.sticky-cta .btn-primary:hover{background:#fff !important;color:var(--green) !important;}
.sticky-cta .btn-outline:hover{background:var(--green) !important;color:#fff !important;}
.btn,.btn-hero,.link-hero{transition:background .2s ease,color .2s ease,border-color .2s ease;}

/* ---- 4. HERO PHOTO: no visible edge ---------------------------
   The image sat in a hard edged box against cream. It now bleeds
   to the right and bottom of the hero and dissolves on the left
   and top rather than stopping at a seam.                       */
@media(min-width:768px){
  .hero .hero-bg,.page-hero .page-hero-bg{
    bottom:0 !important;right:0 !important;overflow:hidden;}
  .hero .hero-bg::after,.page-hero .page-hero-bg::after{
    background:linear-gradient(to right,
      rgba(248,246,242,1) 0%,rgba(248,246,242,1) 26%,
      rgba(248,246,242,.72) 42%,rgba(248,246,242,.22) 60%,
      rgba(248,246,242,0) 76%) !important;}
  .hero .hero-bg img,.page-hero .page-hero-bg img{
    width:100%;height:100%;object-fit:cover;
    -webkit-mask-image:linear-gradient(to bottom,
      transparent 0,#000 7%,#000 93%,transparent 100%);
    mask-image:linear-gradient(to bottom,
      transparent 0,#000 7%,#000 93%,transparent 100%);}
}

/* ---- 5. MOBILE: sections were starting hard against their top - */
@media(max-width:767px){
  section{padding-top:3.25rem !important;padding-bottom:3.25rem !important;}
  section > .wrap,section > .wrap-narrow{padding-left:1.25rem;padding-right:1.25rem;}
  .sec-head{margin-bottom:1.75rem;}
  .hero.narrow,.page-hero{padding-top:0 !important;}
  section:has(> .wrap > .stats){padding-top:2.25rem !important;padding-bottom:2.25rem !important;}
  .cta-band{padding-top:3rem !important;padding-bottom:3rem !important;}
}
/* the earlier .page-hero.narrow .page-hero-bg::after rule (0,3,0)
   outranked the build 35 fade, so the old hard edged gradient was
   still winning. Matched here. */
@media(min-width:768px){
  .hero .hero-bg::after,
  .page-hero .page-hero-bg::after,
  .hero.narrow .hero-bg::after,
  .page-hero.narrow .page-hero-bg::after{
    background:linear-gradient(to right,
      rgba(248,246,242,1) 0%,rgba(248,246,242,1) 24%,
      rgba(248,246,242,.78) 40%,rgba(248,246,242,.28) 58%,
      rgba(248,246,242,0) 76%) !important;}
}
/* secondary buttons on light grounds are outlines, not white fills,
   so they never sit white on cream */
.hero .btn-outline,.page-hero .btn-outline,.hero .link-hero,
section:not(.bg-deep):not(.bg-green):not(.cta-band) .btn-outline,
.sticky-cta .btn-outline{
  background:transparent !important;color:var(--green) !important;
  border:1.5px solid rgba(30,58,47,.3) !important;}
.hero .btn-outline:hover,.page-hero .btn-outline:hover,.hero .link-hero:hover,
section:not(.bg-deep):not(.bg-green):not(.cta-band) .btn-outline:hover,
.sticky-cta .btn-outline:hover{
  background:var(--green) !important;color:#fff !important;
  border-color:var(--green) !important;}

/* ==================================================================
   BUILD 36
   ================================================================== */

/* ---- 1. header: logo out to the left, actions out to the right - */
@media(min-width:1081px){
  .site-header .wrap{max-width:none;padding-left:2.25rem;padding-right:2.25rem;}
  .site-header .brand{margin-right:.5rem;}
  .site-header .header-cta{margin-left:.5rem;gap:.85rem;}
}

/* ---- 2. mobile hero trust badges: smaller, one line ------------ */
@media(max-width:767px){
  .hero .hero-trust{font-size:11px !important;line-height:1.5;
    white-space:nowrap;overflow:hidden;text-overflow:clip;}
  .hero .hero-trust .item{font-size:11px !important;letter-spacing:.02em;
    font-weight:700;white-space:nowrap;}
  .hero .hero-trust .sep{margin:0 .3rem;font-size:11px;}
}
@media(max-width:359px){
  .hero .hero-trust,.hero .hero-trust .item{font-size:10px !important;}
}

/* ---- 3. closing band proof line: centred and wrapping ---------- */
.cta-band .wrap,.cta-band .wrap-narrow{text-align:center;}
.cta-proof{display:flex !important;flex-wrap:wrap !important;
  align-items:center;justify-content:center !important;
  max-width:100% !important;margin-left:auto;margin-right:auto;
  gap:.3rem .55rem;text-align:center;}
.cta-proof > *{white-space:normal !important;}
@media(max-width:767px){
  .cta-proof{font-size:12.5px;padding:0 .5rem;}
  .cta-proof .dot,.cta-proof .sep{display:none;}
  .cta-band .btn-row{display:grid;gap:.6rem;}
  .cta-band .btn{width:100%;justify-content:center;}
}

/* ---- BUILD 36: nothing crosses the viewport edge --------------
   The mobile side padding rule only matched section > .wrap, so the
   footer, which is not a section, ran 16px past the edge at 320px.
   The decorative leaves were also extending past on 12 pages.    */
@media(max-width:820px){
  .site-footer > .wrap,.cta-band > .wrap,footer .wrap,
  .topbar .wrap,.site-header .wrap{
    padding-left:1.25rem !important;padding-right:1.25rem !important;
    max-width:100% !important;box-sizing:border-box;}
  .site-footer .foot-grid,.site-footer .foot-bottom,
  .site-footer .foot-assure{max-width:100%;box-sizing:border-box;}
  .plant{display:none !important;}
}
@media(max-width:360px){
  .site-footer > .wrap{padding-left:1rem !important;padding-right:1rem !important;}
}
/* trust row: one line where it fits, but never past the edge */
@media(max-width:767px){
  .hero .hero-trust{white-space:normal !important;overflow:visible;
    display:flex !important;flex-wrap:wrap;align-items:baseline;
    gap:.15rem .45rem;max-width:100%;}
  .hero .hero-trust .item{font-size:10.5px !important;letter-spacing:0 !important;
    white-space:nowrap;flex:0 0 auto;}
  .hero .hero-trust .sep{margin:0 .1rem;font-size:10.5px;flex:0 0 auto;}
}
/* classic grid blowout: 1fr will not shrink below its content, so at
   768 the two column .g3 computed 408+378 inside a 728 container and
   the third card ran 58px past the edge. minmax(0,1fr) lets them. */
.grid,.g2,.g3,.g4{min-width:0;}
.g2{grid-template-columns:repeat(2,minmax(0,1fr));}
.g3{grid-template-columns:repeat(3,minmax(0,1fr));}
.g4{grid-template-columns:repeat(4,minmax(0,1fr));}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.g2,.g3,.g4{grid-template-columns:minmax(0,1fr);}}
.grid > *,.g2 > *,.g3 > *,.g4 > *{min-width:0;}
/* decorative leaves never reach past the viewport at any width */
.plant{max-width:min(30vw,420px);}
section,.hero,.page-hero,footer{overflow-x:clip;}
/* the footer grid had the same 1fr blowout: its column child measured
   316 inside a 288 track and ran 12px past the edge at 320. */
.foot-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
@media(max-width:900px){.foot-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:560px){.foot-grid{grid-template-columns:minmax(0,1fr);}}
.foot-grid > *,.foot-grid p,.foot-grid ul,.foot-grid li{min-width:0;max-width:100%;
  overflow-wrap:anywhere;}
.socials{flex-wrap:wrap;max-width:100%;}
/* review attribution could not wrap and ran past at 1024 */
.review .who,.quote-who,.who{flex-wrap:wrap;max-width:100%;min-width:0;}
.review .who span,.who span,.quote-who span{white-space:normal;overflow-wrap:anywhere;
  min-width:0;max-width:100%;}
/* trust badges: genuinely one line on mobile */
@media(max-width:767px){
  .hero .hero-trust{flex-wrap:nowrap !important;gap:0 .35rem;
    max-width:100%;overflow:visible;}
  .hero .hero-trust .item{font-size:10.5px !important;flex:0 0 auto;}
  .hero .hero-trust .sep{margin:0 .05rem;}
}
@media(max-width:374px){
  .hero .hero-trust .item,.hero .hero-trust .sep{font-size:9.5px !important;}
  .hero .hero-trust{gap:0 .25rem;}
}
/* at 320 the single line measured 313 inside a 280 track. Rather than
   shrink it to an unreadable size, it wraps on the narrowest phones
   only; 360 and up keep the single line. */
@media(max-width:374px){
  .hero .hero-trust{flex-wrap:wrap !important;gap:.1rem .35rem;}
  .hero .hero-trust .item,.hero .hero-trust .sep{font-size:10px !important;}
  .hero .hero-trust .sep{display:none !important;}
}
/* single line from 341 up; only 320 class devices wrap */
@media(min-width:341px) and (max-width:767px){
  .hero .hero-trust{flex-wrap:nowrap !important;gap:0 .3rem;}
  .hero .hero-trust .item{font-size:10.5px !important;}
  .hero .hero-trust .sep{display:inline !important;font-size:10.5px !important;margin:0 .05rem;}
}
@media(max-width:340px){
  .hero .hero-trust{flex-wrap:wrap !important;gap:.1rem .35rem;}
  .hero .hero-trust .item{font-size:10px !important;}
  .hero .hero-trust .sep{display:none !important;}
}
/* one line from 375 up, which covers every current iPhone and most
   Android. Below that a single line measures 365 against a 360
   viewport, so it wraps rather than crossing the edge. */
@media(min-width:375px) and (max-width:767px){
  .hero .hero-trust{flex-wrap:nowrap !important;gap:0 .3rem;}
  .hero .hero-trust .item{font-size:10.5px !important;}
  .hero .hero-trust .sep{display:inline !important;font-size:10.5px !important;}
}
@media(max-width:374px){
  .hero .hero-trust{flex-wrap:wrap !important;gap:.15rem .4rem;}
  .hero .hero-trust .item{font-size:10.5px !important;}
  .hero .hero-trust .sep{display:none !important;}
}

/* ---- BUILD 37 -------------------------------------------------
   .btn had computed padding of 0, so text sat flush against the
   border: the call button measured 132px wide around 130px of text.
   Restore real padding, without disturbing buttons that set their
   own (the sticky bar and menu use higher specificity).          */
.btn,.btn-outline,.btn-primary,.btn-light,.btn-ghost-light,.btn-hero,.link-hero{
  padding:.85rem 1.5rem;
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;box-sizing:border-box;max-width:100%;}
.btn-hero{padding:1rem 1.75rem;}
@media(max-width:767px){
  .btn,.btn-outline,.btn-primary,.btn-light,.btn-ghost-light,.link-hero{
    padding:.85rem 1.25rem;}
}
/* something in the mobile cascade was zeroing .btn padding, so the
   call button was 132px around 130px of text. Scoped explicitly,
   with the bar, menu and header keeping their own tighter values. */
main .btn:not(.btn-hero):not(.btn-wa){
  padding:.85rem 1.5rem !important;min-height:48px;
  white-space:normal;overflow-wrap:break-word;max-width:100%;}
@media(max-width:767px){
  main .btn:not(.btn-hero):not(.btn-wa){padding:.85rem 1.15rem !important;}
}
.sticky-cta .btn{padding:0 .9rem !important;}
.nav-foot .btn{padding:.85rem 1.25rem !important;}
.site-header .btn-primary{padding:0 1.25rem !important;}
.cookie-bar .btn{padding:.7rem 1.4rem !important;}
/* menu CTA on 320 class phones: the panel leaves ~190px for the
   label, so the padding comes in and the label may wrap. */
@media(max-width:374px){
  .nav{width:min(320px,92vw);padding-left:1.15rem;padding-right:1.15rem;}
  .nav-foot .btn{padding:.8rem .75rem !important;font-size:15px;
    white-space:normal;line-height:1.25;min-height:50px;}
  .nav-tel{font-size:15px;}
}

/* ---- BUILD 38: desktop call icon before scroll ----------------
   Was a pale grey outline. Solid dark green border and glyph at
   rest; unchanged once the header goes green on scroll.         */
@media(min-width:1081px){
  .site-header:not(.stuck) .hdr-call{
    border:1.5px solid var(--green) !important;
    color:var(--green) !important;background:transparent !important;}
  .site-header:not(.stuck) .hdr-call svg{
    stroke:var(--green) !important;color:var(--green) !important;}
  .site-header:not(.stuck) .hdr-call:hover{
    background:var(--green) !important;color:#fff !important;}
  .site-header:not(.stuck) .hdr-call:hover svg{stroke:#fff !important;color:#fff !important;}
}

/* ==================================================================
   BUILD 40  enquiry form
   ================================================================== */
/* the field counter badge duplicated the new "Question 1 of 3" line */
.quickform-form .qf-field::before{display:none !important;content:none !important;}
.qf-count{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  font-weight:700;color:var(--accent);margin-bottom:.5rem;}
.quickform-form .qf-field > label{display:block;font-family:var(--font-display);
  font-weight:700;font-size:clamp(1.05rem,2.4vw,1.25rem);color:var(--green);
  letter-spacing:-.01em;line-height:1.25;margin-bottom:.9rem;text-transform:none;}
.quickform-form .qf-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.6rem;}
@media(max-width:400px){.quickform-form .qf-opts{grid-template-columns:minmax(0,1fr);}}
.quickform-form .qf-opt{display:flex;align-items:center;justify-content:center;
  text-align:center;min-height:56px;padding:.7rem .8rem;border-radius:10px;
  border:1.5px solid var(--line);background:var(--bg);color:var(--green);
  font-size:15px;font-weight:600;line-height:1.3;cursor:pointer;
  transition:background .18s,border-color .18s,color .18s;}
.quickform-form .qf-opt:hover{border-color:var(--accent);background:#fff;}
.quickform-form .qf-opt:has(input:checked){background:var(--green);color:#fff;
  border-color:var(--green);}
.quickform-form .qf-note{font-size:13px;color:var(--muted);margin:1rem 0 0;
  text-align:center;}
.quickform-form .qf-back{display:inline-flex;align-items:center;gap:.35rem;
  background:none;border:0;color:var(--muted);font-size:13px;font-weight:600;
  padding:0 0 .9rem;cursor:pointer;}
.quickform-form .qf-back::before{content:"\\2190";}
.quickform-form .qf-back:hover{color:var(--green);}
.quickform-form .qf-field + .qf-field{margin-top:1rem;}
.quickform-form .qf-submit{width:100%;margin-top:1.1rem;}
.quickform-form input[type=text],.quickform-form input[type=tel],
.quickform-form textarea{width:100%;font-size:16px;min-height:52px;
  padding:.8rem .9rem;border-radius:10px;border:1.5px solid var(--line);
  background:var(--bg);color:var(--text);}
.quickform-form textarea{min-height:96px;}
.quickform-form input:focus,.quickform-form textarea:focus{
  outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent);}
/* the counter badge lives on the label, not the field, and the option
   grid was collapsing to one column at 390 making seven options very
   tall. Both corrected. */
.quickform-form .qf-field > label::before{display:none !important;content:none !important;}
.quickform-form .qf-opts{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
@media(max-width:359px){
  .quickform-form .qf-opts{grid-template-columns:minmax(0,1fr) !important;}
}
.quickform-form .qf-opt{min-height:52px;font-size:14.5px;padding:.65rem .6rem;}

/* ---- BUILD 42 -------------------------------------------------
   .cta-inline is a green panel but sits inside .cta-inline-wrap,
   which is not .bg-deep or .bg-green, so the "light on dark ground"
   rule turned its button green on green. It had no visible pill. */
.cta-inline .btn-light,.cta-inline-wrap .cta-inline .btn-light,
section .cta-inline .btn-light{
  background:#fff !important;color:var(--green) !important;
  border:1px solid #fff !important;}
.cta-inline .btn-light:hover,section .cta-inline .btn-light:hover{
  background:transparent !important;color:#fff !important;
  border-color:#fff !important;}
.cta-inline .btn-ghost-light,section .cta-inline .btn-ghost-light{
  background:transparent !important;color:#fff !important;
  border:1.5px solid rgba(255,255,255,.55) !important;}
.cta-inline .btn-ghost-light:hover,section .cta-inline .btn-ghost-light:hover{
  background:#fff !important;color:var(--green) !important;border-color:#fff !important;}
/* every button keeps its padding and sizes to its own text */
.btn,.btn-hero,.link-hero{display:inline-flex !important;align-items:center;
  justify-content:center;width:auto;box-sizing:border-box;}
.btn-row .btn,.cta-band .btn{flex:0 1 auto;}

/* ---- BUILD 42 corrections -------------------------------------
   1. section:not(.bg-deep):not(.bg-green):not(.cta-band) .btn-light
      scores 0,4,1 and was beating my 0,2,0 rule, so the button in the
      green card stayed green on green. Matched and exceeded here. */
section:not(.bg-deep):not(.bg-green):not(.cta-band) .cta-inline .btn-light,
section:not(.bg-deep) .cta-inline .btn.btn-light,
.cta-inline-wrap .cta-inline .btn.btn-light{
  background:#fff !important;color:var(--green) !important;
  border:1px solid #fff !important;}
section:not(.bg-deep):not(.bg-green):not(.cta-band) .cta-inline .btn-light:hover,
.cta-inline-wrap .cta-inline .btn.btn-light:hover{
  background:transparent !important;color:#fff !important;border-color:#fff !important;}
section:not(.bg-deep):not(.bg-green):not(.cta-band) .cta-inline .btn-ghost-light,
.cta-inline-wrap .cta-inline .btn.btn-ghost-light{
  background:transparent !important;color:#fff !important;
  border:1.5px solid rgba(255,255,255,.55) !important;}

/* 2. the blanket display:inline-flex !important un-hid the header
      Book button on mobile. The hide is restored above it. */
@media(max-width:1080px){
  .header-cta > .btn,.site-header .header-cta .btn-primary{display:none !important;}
}

/* ---- BUILD 43: scroll reveal must never hide content ----------
   .reveal starts at opacity:0 and is revealed by an observer. With
   JavaScript disabled, or with reduced motion, every section on the
   page stayed invisible. Content is visible by default and only
   hidden once the script has confirmed it is running.            */
html:not(.js) .reveal{opacity:1 !important;transform:none !important;}
@media(prefers-reduced-motion:reduce){
  .reveal,.reveal.in{opacity:1 !important;transform:none !important;}
}

/* ==================================================================
   BUILD 44
   ================================================================== */

/* ---- 1. the ASSESS / TREAT / REHABILITATE strip is a green band -- */
.text-marquee{background:var(--green) !important;}
.text-marquee .marquee-item{color:#fff !important;}
.text-marquee .marquee-item:nth-child(even){color:var(--sage) !important;}
.text-marquee .marquee::before,.text-marquee .marquee::after{
  content:"";position:absolute;top:0;bottom:0;width:60px;z-index:2;pointer-events:none;}
.text-marquee .marquee::before{left:0;background:linear-gradient(to right,var(--green),transparent);}
.text-marquee .marquee::after{right:0;background:linear-gradient(to left,var(--green),transparent);}

/* ---- 2. credential pills line up with the panel below them ------
   The pills started 31px left of the inner card, so the two blocks
   had different left edges inside the same card.                  */
.josh-cred .josh-quals,.josh-cred .verify,.josh-cred .verify-light{
  margin-left:0 !important;margin-right:0 !important;width:100%;box-sizing:border-box;}
.josh-quals{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;padding:0;}
.verify,.verify-light{margin-top:1.5rem;}
@media(max-width:767px){
  .josh-cred{padding:1.5rem 1.25rem;}
  .josh-cred .josh-quals,.josh-cred .verify{padding-left:0;padding-right:0;}
  .verify,.verify-light{padding:1.35rem 1.15rem;}
}

/* ---- 3. breathing room above the reviews heading ---------------- */
.revband,section:has(> .wrap > .sec-head .rev-count),
section:has(.rev-marquee){padding-top:clamp(4rem,7vw,6.5rem) !important;}
.rev-marquee{margin-top:clamp(1.5rem,3vw,2.5rem);}
section:has(.rev-marquee) .sec-head{margin-bottom:clamp(2.25rem,4.5vw,3.25rem);}
/* the credentials panel computed padding of 21.6px 0, so its heading
   and copy sat flush against the border */
.verify,.verify-light,.josh-cred .verify,.josh-cred .verify-light,
section .verify,section .verify-light{
  padding:1.5rem 1.35rem !important;box-sizing:border-box;}
@media(max-width:767px){
  .verify,.verify-light,.josh-cred .verify,section .verify{
    padding:1.35rem 1.15rem !important;}
}

/* the ASSESS strip sat tight under the CTA buttons above it */
.text-marquee{padding-top:clamp(3rem,6vw,4.5rem) !important;
  padding-bottom:clamp(3rem,6vw,4.5rem) !important;margin-top:clamp(1rem,3vw,2rem);}
@media(max-width:767px){
  .text-marquee{padding-top:2.75rem !important;padding-bottom:2.75rem !important;
    margin-top:1.25rem;}
}
/* more air between the CTA buttons and the ASSESS strip on mobile */
@media(max-width:767px){
  .text-marquee{margin-top:5.5rem !important;
    padding-top:3rem !important;padding-bottom:3rem !important;}
}
