/* ============================================================
   LIFE MEDICAL CLINIC — 2026 rebrand
   One stylesheet, four themes. Set data-theme on <html>:
     core #424B54 · waterloo #1F3A68 · bexley #93A8AC · botany #92A5A3
   Style: "Accessible & Ethical" (WCAG-first) with an editorial layer.
   ============================================================ */

:root{
  --brand:#424B54; --brand-deep:#2E353C; --brand-soft:#EEF0F2; --brand-mid:#59636E;

  --ink:#1F252B; --ink-2:#2B333A; --text:#4C555F; --muted:#78838E;
  --paper:#FFFFFF; --mist:#F5F7F8; --mist-2:#E9EDEF;
  --line:#E2E7EA; --line-soft:#EFF2F4;
  --gold:#C9922F; --ok:#4E8C6A;

  --w-soft:#EFF1F4; --w-tint:#DBDFE7; --w-glow:#9AA6BB; --w:#1F3A68; --w-mid:#1B335C; --w-deep:#162A4B;
  --b-soft:#EEF2F3; --b-tint:#DCE5E6; --b-glow:#B3C3C6; --b:#93A8AC; --b-mid:#6F8488; --b-deep:#4E6064;
  --t-soft:#EEF5F1; --t-tint:#D6E7DE; --t-glow:#7FAF98; --t:#2F6B52; --t-mid:#285C46; --t-deep:#214C3A;

  --acc:var(--brand); --acc-mid:var(--brand-mid); --acc-deep:var(--brand-deep);
  --acc-soft:var(--brand-soft); --acc-tint:var(--mist-2); --acc-glow:var(--brand-mid);
  --on-acc:#FFFFFF; --on-acc-soft:rgba(255,255,255,.88); --on-acc-line:rgba(255,255,255,.24);
  --on-acc-fill:rgba(255,255,255,.13);

  --r-sm:12px; --r:18px; --r-lg:26px; --r-xl:34px;
  --sh-sm:0 1px 2px rgba(31,37,43,.05),0 8px 20px -14px rgba(31,37,43,.22);
  --sh:0 24px 50px -30px rgba(31,37,43,.30),0 2px 8px rgba(31,37,43,.04);
  --sh-lg:0 44px 84px -40px rgba(31,37,43,.42);
  --sh-glass:0 18px 40px -18px rgba(31,37,43,.34);

  /* easing — strong curves, never bare keywords */
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-in-out:cubic-bezier(.77,0,.175,1);
  --ease-fan:cubic-bezier(.34,1.42,.64,1);   /* slight overshoot for the photo fan */
  --maxw:1180px;
}

html[data-theme="waterloo"]{
  --acc:var(--w); --acc-mid:var(--w-mid); --acc-deep:var(--w-deep);
  --acc-soft:var(--w-soft); --acc-tint:var(--w-tint); --acc-glow:var(--w-glow);
  --on-acc:#FFFFFF; --on-acc-soft:rgba(255,255,255,.9); --on-acc-line:rgba(255,255,255,.26);
  --on-acc-fill:rgba(255,255,255,.14);
}
/* Bexley's #93A8AC is a light tone — ink sits on it, not white. Deliberate:
   keeps every word past 4.5:1 while showing the exact colour at full strength. */
html[data-theme="bexley"]{
  --acc:var(--b); --acc-mid:var(--b-mid); --acc-deep:var(--b-deep);
  --acc-soft:var(--b-soft); --acc-tint:var(--b-tint); --acc-glow:var(--b-glow);
  --on-acc:#1B2126; --on-acc-soft:rgba(27,33,38,.76); --on-acc-line:rgba(27,33,38,.16);
  --on-acc-fill:rgba(255,255,255,.32);
}
/* Botany's #92A5A3 (client palette, 28 Oct 2026) is a light tone like Bexley's:
   ink sits on it at full strength; buttons and small text use --t-deep. */
html[data-theme="botany"]{
  --acc:var(--t); --acc-mid:var(--t-mid); --acc-deep:var(--t-deep);
  --acc-soft:var(--t-soft); --acc-tint:var(--t-tint); --acc-glow:var(--t-glow);
  --on-acc:#1B2126; --on-acc-soft:rgba(27,33,38,.76); --on-acc-line:rgba(27,33,38,.16);
  --on-acc-fill:rgba(255,255,255,.32);
}

/* ---------- base + optical typography (size-specific tracking, inverse leading) ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:96px;-webkit-text-size-adjust:100%}
body{font-family:'Figtree',system-ui,-apple-system,sans-serif;color:var(--text);background:var(--paper);
  font-size:1.02rem;line-height:1.62;letter-spacing:0;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4,h5{font-family:'Fraunces',Georgia,serif;color:var(--ink);font-weight:600;
  font-optical-sizing:auto;text-wrap:balance}
h1{font-size:clamp(2.25rem,5vw,3.7rem);line-height:1.03;letter-spacing:-.024em}
h2{font-size:clamp(1.8rem,3.7vw,2.75rem);line-height:1.08;letter-spacing:-.02em}
h3{font-size:clamp(1.25rem,2.1vw,1.6rem);line-height:1.16;letter-spacing:-.013em}
h4{font-size:1.06rem;line-height:1.28;letter-spacing:-.006em}
h5{font-size:.96rem;line-height:1.3;letter-spacing:-.004em}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit}
::selection{background:var(--acc);color:var(--on-acc)}
:focus-visible{outline:3px solid var(--acc-deep);outline-offset:3px;border-radius:6px}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.sec{padding:clamp(58px,7.6vw,104px) 0}
.mist{background:var(--mist)}
.tint{background:var(--acc-soft)}
.center{text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:.7rem;font-weight:700;
  letter-spacing:.19em;text-transform:uppercase;color:var(--acc-deep)}
.eyebrow::before{content:"";width:22px;height:1.5px;background:var(--acc);flex:none}
.center .eyebrow::after{content:"";width:22px;height:1.5px;background:var(--acc);flex:none}
.lede{font-size:1.06rem;line-height:1.6;color:var(--muted);max-width:62ch;margin-top:16px}
.center .lede{margin-left:auto;margin-right:auto}
.sec-head{margin-bottom:clamp(32px,4.2vw,54px)}
.sec-head h2{margin-top:14px}
/* editorial accent: italic word + hand-drawn rule */
.em{font-style:italic;color:var(--acc-deep);position:relative;white-space:nowrap}
.em svg{position:absolute;left:0;right:0;bottom:-.16em;width:100%;height:.3em;color:var(--acc);opacity:.55}

/* ---------- pressables: the UI must answer the press ---------- */
.btn,.chip,.qa,.doc,.svc,.sw-pill,.hub,.bioT{transition:transform .16s var(--ease-out),
  box-shadow .28s var(--ease-out),border-color .28s var(--ease-out),background-color .2s var(--ease-out),
  color .2s var(--ease-out)}
.btn:active,.qa:active,.sw-pill:active,.bioT:active{transform:scale(.97)}
.doc:active,.svc:active,.hub:active{transform:scale(.995)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  border:1px solid transparent;font-weight:600;font-size:.94rem;letter-spacing:.002em;
  padding:14px 26px;border-radius:100px;text-align:center;min-height:48px}
.btn svg{width:17px;height:17px;flex:none}
.btn-acc{background:var(--acc-deep);color:#fff;box-shadow:0 14px 26px -14px rgba(31,37,43,.5)}
.btn-line{background:#fff;color:var(--ink);border-color:var(--line);box-shadow:var(--sh-sm)}
.btn-onacc{background:var(--on-acc);color:var(--acc-deep)}
:is(html[data-theme="bexley"],html[data-theme="botany"]) .btn-onacc{background:#1B2126;color:#fff}
.btn-onacc-line{background:transparent;color:var(--on-acc);border-color:var(--on-acc-line)}
@media (hover:hover) and (pointer:fine){
  .btn-acc:hover{box-shadow:0 22px 36px -16px rgba(31,37,43,.55);filter:brightness(1.09)}
  .btn-line:hover{border-color:var(--acc);color:var(--acc-deep)}
  .btn-onacc:hover{box-shadow:0 18px 32px -16px rgba(0,0,0,.4)}
  .btn-onacc-line:hover{background:var(--on-acc-fill)}
  .doc:hover,.svc:hover,.hub:hover{box-shadow:var(--sh)}
  .qa:hover{background:var(--on-acc);color:var(--acc-deep);border-color:transparent}
  :is(html[data-theme="bexley"],html[data-theme="botany"]) .qa:hover{background:#1B2126;color:#fff}
  .sw-pill:hover{box-shadow:var(--sh-sm);color:var(--ink)}
}

/* ---------- header: floating chrome + scroll edge mask, no 1px divider ---------- */
.hdr{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.82);
  backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}
.hdr::after{content:"";position:absolute;left:0;right:0;top:100%;height:22px;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.85),rgba(255,255,255,0))}
.hdr .wrap{display:flex;align-items:center;gap:18px;height:74px}
.logo{display:flex;align-items:center;gap:11px;flex:none}
.logo .mark{width:40px;height:40px;border-radius:12px;
  background:linear-gradient(150deg,var(--brand),var(--brand-deep));color:#fff;display:grid;place-items:center;
  font-family:'Fraunces';font-weight:700;font-size:1.12rem;flex:none;box-shadow:0 6px 14px -6px rgba(46,53,60,.6)}
.logo .sub{border-left:1px solid var(--line);padding-left:12px;font-size:.68rem;letter-spacing:.17em;text-transform:uppercase;color:var(--muted);font-weight:700;white-space:nowrap}
@media(max-width:420px){.logo .sub{display:none}}
.logo .txt{font-family:'Fraunces';font-weight:600;color:var(--ink);font-size:1.04rem;
  line-height:1.12;letter-spacing:-.012em}
.logo .txt small{display:block;font-family:'Figtree';font-size:.58rem;letter-spacing:.17em;
  text-transform:uppercase;color:var(--muted);font-weight:700;margin-top:3px;letter-spacing:.16em}
.mainnav{margin-left:auto;display:flex;align-items:center;gap:25px;font-size:.9rem;font-weight:500}
.mainnav a{color:var(--text);position:relative;padding:5px 0;white-space:nowrap;transition:color .2s var(--ease-out)}
.mainnav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:var(--acc);
  transition:right .3s var(--ease-out)}
.mainnav a:hover::after,.mainnav a[aria-current]::after{right:0}
.mainnav a:hover,.mainnav a[aria-current]{color:var(--ink)}
.mainnav a[aria-current]{font-weight:600}
.hdr .cta{flex:none}
.burger{display:none;margin-left:auto;width:46px;height:46px;border-radius:13px;border:1px solid var(--line);
  background:#fff;cursor:pointer;align-items:center;justify-content:center;color:var(--ink)}
.burger svg{width:20px;height:20px}
@media(max-width:1040px){
  .mainnav{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:#fff;padding:8px 24px 20px;display:none;box-shadow:var(--sh)}
  .mainnav.open{display:flex}
  .mainnav a{padding:15px 0;border-bottom:1px solid var(--line-soft);font-size:1rem}
  .mainnav a::after{display:none}
  .burger{display:flex}
  .hdr .cta{display:none}
  .hdr::after{display:none}
}

/* ---------- clinic switcher ---------- */
.switch{background:var(--mist);border-bottom:1px solid var(--line)}
.switch .wrap{display:flex;align-items:center;gap:9px;padding-top:11px;padding-bottom:11px;flex-wrap:wrap}
.switch .lbl{font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);margin-right:6px}
.sw-pill{display:inline-flex;align-items:center;gap:8px;padding:9px 17px;border-radius:100px;background:#fff;
  border:1px solid var(--line);font-size:.86rem;font-weight:600;color:var(--text);min-height:40px}
.sw-pill i{width:10px;height:10px;border-radius:50%;flex:none}
.sw-pill.w i{background:var(--w)} .sw-pill.b i{background:var(--b)} .sw-pill.t i{background:var(--t)}
.sw-pill[aria-current]{color:#fff;border-color:transparent}
.sw-pill.w[aria-current]{background:var(--w-deep)} .sw-pill.b[aria-current]{background:var(--b-deep)}
.sw-pill.t[aria-current]{background:var(--t-deep)}
.sw-pill[aria-current] i{background:#fff}

/* ================= HERO — asymmetric split ================= */
.hero{position:relative;overflow:hidden;padding:clamp(44px,6vw,80px) 0 clamp(52px,6.5vw,88px);
  background:
    radial-gradient(1000px 620px at 88% -18%,var(--acc-soft),transparent 62%),
    radial-gradient(760px 520px at -8% 108%,var(--acc-soft),transparent 60%),
    linear-gradient(180deg,#fff 0%,var(--mist) 100%)}
.hero .wrap{display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(28px,4vw,60px);align-items:center;
  position:relative;z-index:1}
@media(max-width:960px){.hero .wrap{grid-template-columns:1fr;gap:36px}}
.hero h1{margin-top:20px}
.hero .sub{font-size:clamp(1.02rem,1.55vw,1.15rem);color:var(--text);max-width:52ch;margin-top:20px}
.hero-cta{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}
.hero-marks{display:flex;gap:10px 22px;margin-top:28px;flex-wrap:wrap;font-size:.83rem;
  font-weight:600;color:var(--muted)}
.hero-marks span{display:inline-flex;align-items:center;gap:8px}
.hero-marks svg{width:15px;height:15px;color:var(--acc);flex:none}

/* status pill — colour + text carry the state; no ambient pulse */
.status{display:inline-flex;align-items:center;gap:9px;padding:9px 16px;border-radius:100px;
  background:#fff;border:1px solid var(--line);box-shadow:var(--sh-sm);font-size:.83rem;font-weight:600;color:var(--ink)}
.status i{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:none}
.status.open i{background:var(--ok)} .status.shut i{background:#B0665F}
.status b{font-weight:600;color:var(--muted)}

/* media card + overlapping glass chips */
.hero-media{position:relative;isolation:isolate}
.hero-media .frame{position:relative;border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/5;
  box-shadow:var(--sh-lg);background:linear-gradient(150deg,var(--acc-mid),var(--acc-deep))}
.hero-media .frame img{width:100%;height:100%;object-fit:cover}
.hero-media .frame::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(20,25,29,.72) 0%,rgba(20,25,29,.12) 42%,transparent 68%)}
.hero-media .stat{position:absolute;left:24px;bottom:24px;z-index:2;color:#fff}
.hero-media .stat b{display:block;font-family:'Fraunces';font-size:clamp(1.9rem,3.4vw,2.6rem);
  font-weight:600;line-height:1;letter-spacing:-.02em}
.hero-media .stat span{display:block;font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;
  color:rgba(255,255,255,.78);font-weight:700;margin-top:8px}
/* graphic panel when no photograph exists yet */
.hero-media .frame.graphic{display:grid;place-items:center;padding:34px}
.hero-media .frame.graphic::after{background:linear-gradient(to top,rgba(20,25,29,.5),transparent 60%)}
.hero-media .frame.graphic .mono{font-family:'Fraunces';font-size:clamp(4rem,9vw,6.6rem);font-weight:600;
  color:rgba(255,255,255,.24);line-height:1;letter-spacing:-.03em}
.hero-media .frame.graphic .wm{position:absolute;inset:0;
  background:repeating-linear-gradient(-38deg,rgba(255,255,255,.055) 0 2px,transparent 2px 15px)}

.float-chip{position:absolute;z-index:3;display:flex;align-items:center;gap:11px;padding:12px 17px;
  border-radius:16px;background:rgba(255,255,255,.9);
  backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);
  box-shadow:var(--sh-glass);font-size:.82rem;line-height:1.35;color:var(--ink);max-width:250px}
.float-chip svg{width:17px;height:17px;color:var(--acc-deep);flex:none}
.float-chip small{display:block;font-size:.63rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);font-weight:700}
.float-chip b{font-weight:600;font-size:.86rem;letter-spacing:-.004em}
.float-chip.tl{top:22px;left:-16px}
.float-chip.br{right:-14px;bottom:60px}
@media(max-width:960px){.float-chip.tl{left:8px}.float-chip.br{right:8px}}
@media(max-width:520px){.float-chip{padding:10px 13px;max-width:200px}.float-chip.br{bottom:24px}}

/* ---------- home hero: stylised Sydney map ----------
   Hand-drawn inline SVG — no tile service, no map library, no external
   request. The three clinic pins carry their own brand colour in --pin and
   pulse on a staggered cycle (--pd), and each one is a real link through to
   its clinic page. All motion is opt-in behind html.anim, so a patient with
   prefers-reduced-motion gets the same map, held still. */
.hero-media .frame.mapframe{background:#141B22}
/* the photo gradient would otherwise swallow clicks meant for the pins */
.hero-media .frame.mapframe::after{pointer-events:none}
.symap{display:block;width:100%;height:100%}

.symap .land{fill:url(#mland)}
.symap .dots{fill:url(#mdots)}
.symap .mspot{fill:url(#mspot)}
/* one path: the water fill and the coastline stroke. The ring is closed
   outside the viewBox, so only the real coastline is ever stroked. */
.symap .ocean{fill:#141B22;stroke:#93A8AC;stroke-opacity:.42;stroke-width:1.3;
  stroke-linejoin:round}

.symap .wlab{fill:#fff;fill-opacity:.34;font:600 13px 'Figtree',system-ui,sans-serif;
  letter-spacing:.2em;text-transform:uppercase;text-anchor:middle}
.symap .cbd{fill:#fff;fill-opacity:.46;font:700 10px 'Figtree',system-ui,sans-serif;letter-spacing:.16em}
.symap .cbddot{fill:#fff;fill-opacity:.5}
.symap .mnet{fill:none;stroke:#fff;stroke-opacity:.2;stroke-width:1.6;
  stroke-dasharray:5 8;stroke-linecap:round}

/* ---- pins ---- */
.symap .mpin{cursor:pointer}
.symap .mhit{fill:transparent}                      /* generous 48px tap target */
.symap .mhalo{fill:var(--pin);opacity:.3}
.symap .mdot{fill:var(--pin);stroke:#fff;stroke-opacity:.92;stroke-width:2.6}
.symap .mcore{fill:#fff}
.symap .mring{fill:none;stroke:var(--pin);stroke-width:2.2;opacity:0;
  transform-box:fill-box;transform-origin:center}
.symap .mfocus{fill:none;stroke:#fff;stroke-width:2;opacity:0}
.symap .mtag rect{fill:#0E1216;fill-opacity:.72;stroke:var(--pin);stroke-width:1.2}
.symap .mtag text{fill:#fff;font:600 13.5px 'Figtree',system-ui,sans-serif;
  text-anchor:middle;letter-spacing:.005em}

.symap .mmark,.symap .mtag{transform-box:fill-box;transform-origin:center}
.symap .mmark{transition:transform .34s var(--ease-fan)}
.symap .mtag{opacity:.88;transition:opacity .28s var(--ease-out),transform .28s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .symap .mpin:hover .mmark{transform:scale(1.34)}
  .symap .mpin:hover .mtag{opacity:1;transform:translateY(-5px)}
  .symap .mpin:hover .mhalo{opacity:.52}
}
.symap .mpin:focus-visible{outline:none}
.symap .mpin:focus-visible .mfocus{opacity:.9}
.symap .mpin:focus-visible .mmark{transform:scale(1.34)}
.symap .mpin:focus-visible .mtag{opacity:1;transform:translateY(-5px)}

/* ---- motion: radar pulse, staggered so the three never fire in unison ---- */
@keyframes mpulse{
  0%{transform:scale(.4);opacity:0}
  14%{opacity:.85}
  100%{transform:scale(3.15);opacity:0}
}
@keyframes mdrop{from{transform:translateY(-22px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes mnetin{from{opacity:0}to{opacity:1}}
@keyframes mmarch{to{stroke-dashoffset:-130}}
html.anim .symap .mring{animation:mpulse 3.3s var(--ease-out) infinite var(--pd)}
html.anim .symap .mring.d2{animation-delay:calc(var(--pd) + 1.1s)}
html.anim .symap .mring.d3{animation-delay:calc(var(--pd) + 2.2s)}
html.anim .symap .mpg{animation:mdrop .8s var(--ease-fan) both;
  animation-delay:calc(.3s + var(--pd) * .42)}
html.anim .symap .mnet{animation:mnetin 1.1s var(--ease-out) .85s both,mmarch 30s linear infinite}

@media(max-width:520px){
  .symap .mtag text{font-size:16px}
  .symap .wlab{font-size:15px}
  .symap .cbd{display:none}
}

/* ---------- accreditation / trust row (static — no marquee) ---------- */
.trust{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}
.trust .wrap{display:flex;align-items:center;gap:clamp(18px,3.4vw,46px);flex-wrap:wrap;
  padding-top:22px;padding-bottom:22px;justify-content:center}
.trust .badge{display:flex;align-items:center;gap:13px}
.trust .badge img{height:42px;width:auto;object-fit:contain;mix-blend-mode:multiply}
.trust .mk{display:inline-flex;align-items:center;gap:9px;font-size:.85rem;font-weight:600;color:var(--ink)}
.trust .mk svg{width:16px;height:16px;color:var(--acc);flex:none}
.trust .sep{width:1px;height:30px;background:var(--line)}
@media(max-width:760px){.trust .sep{display:none}.trust .wrap{gap:16px 24px}}

/* ---------- info strip ---------- */
.infostrip{background:#fff;border-bottom:1px solid var(--line)}
.infostrip .wrap{display:grid;grid-template-columns:repeat(4,1fr);padding-left:0;padding-right:0}
.infostrip .col{padding:24px;border-right:1px solid var(--line);display:flex;gap:13px;align-items:flex-start}
.infostrip .col:last-child{border-right:none}
.infostrip .ic{width:40px;height:40px;border-radius:12px;flex:none;display:grid;place-items:center;
  background:var(--acc-soft);color:var(--acc-deep)}
.infostrip .ic svg{width:18px;height:18px}
.infostrip small{display:block;font-size:.63rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--muted);font-weight:700}
.infostrip b{display:block;font-size:.9rem;color:var(--ink);font-weight:600;line-height:1.45;margin-top:4px;
  letter-spacing:-.004em}
@media(max-width:900px){.infostrip .wrap{grid-template-columns:repeat(2,1fr)}
  .infostrip .col:nth-child(2n){border-right:none}
  .infostrip .col{border-bottom:1px solid var(--line)}}
@media(max-width:520px){.infostrip .wrap{grid-template-columns:1fr}.infostrip .col{border-right:none}}

/* ---------- quick actions ---------- */
.qacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:32px;max-width:660px}
.qa{background:var(--on-acc-fill);border:1px solid var(--on-acc-line);border-radius:16px;padding:17px 10px;
  display:flex;flex-direction:column;align-items:center;gap:9px;font-size:.81rem;font-weight:600;
  color:var(--on-acc);text-align:center;min-height:48px}
.qa svg{width:21px;height:21px}
@media(max-width:620px){.qacts{grid-template-columns:repeat(2,1fr)}}

/* ---------- editorial collage (about) ---------- */
.collage{display:grid;grid-template-columns:1.35fr 1fr;grid-template-rows:auto auto;gap:16px}
@media(max-width:820px){.collage{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.collage{grid-template-columns:1fr}}
.collage .big{grid-row:span 2;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh);
  min-height:300px;background:var(--acc-tint)}
.collage .big img,.collage .sm img{width:100%;height:100%;object-fit:cover}
.collage .sm{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-sm);min-height:150px;background:var(--acc-tint)}
/* .four = clinics with enough photography for a third image tile beside the quote */
.collage.four{grid-template-rows:auto auto auto}
.collage.four .big{grid-row:span 3}
.collage .quote{border-radius:var(--r);padding:24px;background:var(--acc);color:var(--on-acc);
  display:flex;flex-direction:column;justify-content:flex-end;min-height:150px}
.collage .quote p{font-family:'Fraunces';font-size:1.2rem;line-height:1.24;letter-spacing:-.014em;color:var(--on-acc)}
.collage .quote span{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;
  color:var(--on-acc-soft);margin-bottom:10px}
@media(max-width:520px){.collage .big,.collage.four .big{grid-row:auto;min-height:240px}}

/* ---------- photo fan ----------
   A fanned deck of the clinic's photos: centre card upright, the rest rotated
   and scaled away either side. site.js writes each card's transform, so the
   geometry lives there; this only sets the card itself. Hovering a card lifts
   it and nudges its neighbours apart. */
.fan{position:relative;display:flex;align-items:center;justify-content:center;
  height:clamp(330px,42vw,540px);margin:6px auto 0;touch-action:pan-y}
.fan-card{position:absolute;top:50%;left:50%;width:clamp(142px,18.5vw,258px);aspect-ratio:3/4;
  border-radius:var(--r);overflow:hidden;background:var(--acc-tint);
  border:6px solid #fff;box-shadow:var(--sh);
  transform:translate(-50%,-50%);transform-origin:50% 50%;
  will-change:transform;backface-visibility:hidden}
.fan-card img{width:100%;height:100%;object-fit:cover;display:block}
html.anim .fan-card{transition:transform .55s var(--ease-fan),opacity .5s var(--ease-out)}
html.anim .fan:not(.ready) .fan-card{opacity:0}
@media(max-width:520px){.fan{height:clamp(300px,74vw,380px)}}
/* Arrows + dots, injected by site.js only when the deck holds more than 7 cards. */
.fan-ctrl{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:18px}
.fan-ctrl button{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  border:1.5px solid var(--line);background:#fff;color:var(--acc-deep);cursor:pointer;
  box-shadow:var(--sh-sm);flex:none;
  transition:border-color .24s var(--ease-out),color .24s var(--ease-out),
    transform .16s var(--ease-out)}
.fan-ctrl button:hover{border-color:var(--acc);color:var(--acc)}
.fan-ctrl button:active{transform:scale(.94)}
.fan-ctrl button svg{width:18px;height:18px}
.fan-dots{display:flex;align-items:center;gap:8px}
.fan-dots span{width:8px;height:8px;border-radius:50%;background:var(--acc-tint);
  transition:background .3s var(--ease-out),transform .3s var(--ease-out)}
.fan-dots span.on{background:var(--acc);transform:scale(1.34)}
.fan-quote{max-width:34rem;margin:26px auto 0;text-align:center}
.fan-quote span{display:block;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;
  font-weight:700;color:var(--acc-deep);margin-bottom:9px}
.fan-quote p{font-family:'Fraunces';font-size:1.22rem;line-height:1.3;letter-spacing:-.014em;
  color:var(--ink)}

/* ---------- specimen stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:40px}
@media(max-width:820px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat-c{padding:24px 20px;border-radius:var(--r);background:#fff;border:1px solid var(--line)}
.stat-c b{display:block;font-family:'Fraunces';font-size:2.15rem;color:var(--acc-deep);line-height:1;
  font-weight:600;letter-spacing:-.028em}
.stat-c span{display:block;font-size:.83rem;color:var(--muted);margin-top:9px;font-weight:500;line-height:1.4}

/* ---------- bento services ---------- */
.bento{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:1000px){.bento{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.bento{grid-template-columns:1fr}}
.svc{padding:26px 24px;border-radius:var(--r);background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh-sm);display:flex;flex-direction:column}
.svc.wide{grid-column:span 2}
@media(max-width:600px){.svc.wide{grid-column:span 1}}
.svc.dark{grid-column:1/-1;flex-direction:row;align-items:center;gap:22px;padding:26px 28px}
.svc.dark .ic{margin-bottom:0}
.svc.dark .tx{flex:1}
.svc.dark h4{font-family:'Fraunces';font-size:1.4rem;font-weight:600;letter-spacing:-.016em}
.svc.dark p{margin-top:6px;max-width:70ch}
@media(max-width:600px){.svc.dark{flex-direction:column;align-items:flex-start}.svc.dark .ic{margin-bottom:14px}}
.svc.feature{background:linear-gradient(155deg,var(--acc-soft),#fff 70%);border-color:var(--acc-tint)}
.svc.dark{background:linear-gradient(155deg,var(--acc-mid),var(--acc-deep));border-color:transparent;color:#fff}
.svc.dark h4,.svc.dark h3{color:#fff}
.svc.dark p{color:rgba(255,255,255,.82)}
.svc.dark .ic{background:rgba(255,255,255,.16);color:#fff}
.svc .ic{width:46px;height:46px;border-radius:14px;background:var(--acc-soft);color:var(--acc-deep);
  display:grid;place-items:center;margin-bottom:16px;flex:none}
.svc .ic svg{width:22px;height:22px}
.svc h4{font-family:'Figtree';font-weight:700;color:var(--ink);font-size:1.04rem;letter-spacing:-.008em}
.svc.wide h4{font-family:'Fraunces';font-size:1.45rem;font-weight:600;letter-spacing:-.016em}
.svc p{font-size:.9rem;color:var(--muted);margin-top:9px;line-height:1.55}

/* ---------- doctors ---------- */
.tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:1000px){.tgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:780px){.tgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.tgrid{grid-template-columns:1fr;max-width:320px;margin:0 auto}}
.doc{border-radius:var(--r);overflow:hidden;background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh-sm);display:flex;flex-direction:column}
.doc .ph{position:relative;aspect-ratio:1/1;overflow:hidden;
  background:linear-gradient(165deg,var(--acc-soft),var(--acc-tint))}
.doc .ph img{width:100%;height:100%;object-fit:cover;object-position:top center}
.doc .ph .mono{position:absolute;inset:0;display:grid;place-items:center;font-family:'Fraunces';
  font-size:2.7rem;font-weight:600;color:var(--acc-deep);opacity:.42;letter-spacing:-.02em}
.doc .ph::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(20,25,29,.86) 0,rgba(20,25,29,.32) 26%,transparent 48%)}
.doc .qual{position:absolute;top:11px;left:11px;z-index:2;font-size:.63rem;font-weight:700;
  letter-spacing:.03em;color:var(--ink);background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  padding:6px 11px;border-radius:100px;max-width:calc(100% - 22px);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 4px 10px -4px rgba(0,0,0,.3)}
.doc .plate{position:absolute;left:15px;right:15px;bottom:13px;z-index:2}
.doc .plate h4{color:#fff;font-family:'Fraunces';font-size:1.1rem;font-weight:600;letter-spacing:-.014em}
.doc .plate span{display:block;font-size:.75rem;color:rgba(255,255,255,.8);margin-top:3px;font-weight:500}
.doc .in{padding:16px 17px 17px;flex:1;display:flex;flex-direction:column}
.doc .int{font-size:.85rem;color:var(--muted);line-height:1.5}
.doc .note{margin-top:11px;font-size:.75rem;font-weight:600;color:var(--acc-deep);background:var(--acc-soft);
  padding:8px 11px;border-radius:10px;line-height:1.4}
.bioT{margin-top:auto;padding-top:13px;display:inline-flex;align-items:center;gap:7px;background:none;
  border:none;cursor:pointer;font-size:.8rem;font-weight:700;color:var(--acc-deep);align-self:flex-start}
.bioT svg{width:13px;height:13px;transition:transform .22s var(--ease-out)}
.bioT[aria-expanded="true"] svg{transform:rotate(180deg)}
.bio{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s var(--ease-out),
  opacity .22s var(--ease-out);opacity:0}
.bio>div{overflow:hidden}
.bio p{font-size:.85rem;color:var(--text);line-height:1.55;padding-top:11px}
.doc[data-open="true"] .bio{grid-template-rows:1fr;opacity:1}

/* ---------- allied / reception ---------- */
.arow{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.arow.few{grid-template-columns:1fr;max-width:560px;margin:0 auto}
.arow.two{grid-template-columns:repeat(2,1fr);max-width:820px;margin:0 auto}
@media(max-width:900px){.arow{grid-template-columns:repeat(2,1fr)}}
@media(max-width:580px){.arow{grid-template-columns:1fr}}
.ally{display:flex;gap:15px;align-items:flex-start;padding:18px;border-radius:var(--r);background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-sm)}
.ally img,.ally .mono{width:62px;height:62px;border-radius:15px;object-fit:cover;object-position:top center;flex:none}
.ally .mono{background:var(--acc-soft);color:var(--acc-deep);display:grid;place-items:center;
  font-family:'Fraunces';font-size:1.25rem;font-weight:600}
.ally h4{font-family:'Figtree';font-weight:700;color:var(--ink);font-size:.98rem}
.ally .role{font-size:.76rem;font-weight:700;color:var(--acc-deep);margin-top:3px;letter-spacing:.008em}
.ally p{font-size:.84rem;color:var(--muted);margin-top:7px;line-height:1.5}

/* reception — small round avatars */
.crew{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:18px}
.crew .p{text-align:center}
.crew .p img,.crew .p .mono{width:88px;height:88px;border-radius:50%;object-fit:cover;object-position:top center;
  margin:0 auto;border:3px solid #fff;box-shadow:var(--sh-sm)}
.crew .p .mono{background:var(--acc-soft);color:var(--acc-deep);display:grid;place-items:center;
  font-family:'Fraunces';font-size:1.4rem;font-weight:600}
.crew .p b{display:block;font-size:.87rem;color:var(--ink);font-weight:600;margin-top:12px;letter-spacing:-.004em}
.crew .p span{display:block;font-size:.75rem;color:var(--muted);margin-top:2px}
.lead-card{display:flex;gap:18px;align-items:center;padding:22px 24px;border-radius:var(--r);
  background:var(--acc-soft);border:1px solid var(--acc-tint);margin-bottom:26px}
.lead-card img,.lead-card .mono{width:74px;height:74px;border-radius:50%;object-fit:cover;object-position:top center;
  flex:none;border:3px solid #fff}
.lead-card .mono{background:#fff;color:var(--acc-deep);display:grid;place-items:center;font-family:'Fraunces';
  font-size:1.4rem;font-weight:600}
.lead-card b{display:block;font-size:1.06rem;color:var(--ink);font-weight:700}
.lead-card .role{font-size:.8rem;font-weight:700;color:var(--acc-deep);margin-top:2px}
.lead-card p{font-size:.87rem;color:var(--text);margin-top:6px}

/* ---------- gallery ---------- */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:820px){.gal{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.gal{grid-template-columns:1fr}}
.gal figure{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-sm);background:var(--acc-tint);
  aspect-ratio:4/5;position:relative}
.gal img{width:100%;height:100%;object-fit:cover}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 13px;color:#fff;font-size:.79rem;
  font-weight:600;letter-spacing:.01em;background:linear-gradient(transparent,rgba(20,25,29,.8))}

/* ---------- fees ---------- */
.fees{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}
@media(max-width:840px){.fees{grid-template-columns:1fr}}
.feecard{padding:clamp(24px,3vw,34px);border-radius:var(--r-lg);background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh-sm)}
.feecard h3{margin-bottom:14px}
.feecard .big{margin-top:2px}
.feecard.dark{background:linear-gradient(155deg,var(--acc),var(--acc-mid));color:var(--on-acc);border-color:transparent}
.feecard.dark h3,.feecard.dark b{color:var(--on-acc)}
.feecard.dark p,.feecard.dark li{color:var(--on-acc-soft)}
.feecard ul{list-style:none;margin-top:14px}
.feecard li{display:flex;gap:11px;align-items:flex-start;font-size:.91rem;padding:8px 0;color:var(--text)}
.feecard li svg{width:16px;height:16px;flex:none;margin-top:4px;color:var(--acc)}
.feecard.dark li svg{color:var(--on-acc)}
.feecard .big{font-family:'Fraunces';font-size:2.2rem;color:var(--acc-deep);font-weight:600;line-height:1;
  letter-spacing:-.028em}
.feecard.dark .big{color:var(--on-acc)}

/* ---------- reviews ---------- */
.gbar{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:20px 24px;border-radius:var(--r);
  background:#fff;border:1px solid var(--line);box-shadow:var(--sh-sm);margin-bottom:24px}
.gbar .glogo{width:38px;height:38px;flex:none}
.gbar .num{font-family:'Fraunces';font-size:1.6rem;color:var(--ink);line-height:1;display:flex;
  align-items:center;gap:10px;letter-spacing:-.024em}
.gbar small{color:var(--muted);font-size:.82rem;display:block;margin-top:5px}
.stars{display:flex;gap:2px}
.stars svg{width:16px;height:15px}
.stars svg path{fill:var(--gold)}
.gbar .live{margin-left:auto;display:inline-flex;align-items:center;gap:9px;font-size:.79rem;font-weight:600;
  color:var(--acc-deep);background:var(--acc-soft);padding:9px 15px;border-radius:100px}
.gbar .live i{width:8px;height:8px;border-radius:50%;background:var(--acc);flex:none}
@media(max-width:640px){.gbar .live{margin-left:0}}
.rgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:900px){.rgrid{grid-template-columns:1fr;max-width:460px;margin:0 auto}}
.rev{padding:24px;border-radius:var(--r);background:#fff;border:1px solid var(--line);box-shadow:var(--sh-sm);
  display:flex;flex-direction:column}
.rev p{font-size:.92rem;color:var(--text);margin-top:13px;flex:1;line-height:1.58}
.rev .who{display:flex;align-items:center;gap:11px;margin-top:18px}
.rev .who .av{width:40px;height:40px;border-radius:50%;background:var(--acc-soft);color:var(--acc-deep);
  display:grid;place-items:center;font-family:'Fraunces';font-weight:600;flex:none}
.rev .who h5{font-family:'Figtree';font-weight:700;color:var(--ink)}
.rev .who span{font-size:.78rem;color:var(--muted)}
.ph-flag{display:inline-flex;align-items:center;gap:8px;font-size:.72rem;font-weight:700;color:var(--muted);
  background:#fff;border:1px dashed var(--line);padding:7px 14px;border-radius:100px;margin-top:14px}
.ph-flag svg{width:13px;height:13px}

/* ---------- map ---------- */
.mapwrap{display:grid;grid-template-columns:1fr 1.15fr;border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--sh-sm);background:#fff}
@media(max-width:820px){.mapwrap{grid-template-columns:1fr}}
.mapwrap .info{padding:clamp(26px,3.4vw,40px)}
.mapwrap .row{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-bottom:1px dashed var(--line)}
.mapwrap .row:last-of-type{border-bottom:none}
.mapwrap .row svg{width:17px;height:17px;color:var(--acc);flex:none;margin-top:4px}
.mapwrap .row small{display:block;font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--muted);font-weight:700}
.mapwrap .row b{font-size:.92rem;color:var(--ink);font-weight:600;letter-spacing:-.004em}
.mapwrap iframe{width:100%;height:100%;min-height:360px;border:0;display:block;filter:grayscale(.28) contrast(1.03)}

/* ---------- FAQ ---------- */
/* The question is a gradient pill that fades to white; the answer sits below it
   on the page background. --acc-soft is per-theme, so each clinic page carries
   its own colour without any page-specific rules. */
.faq{max-width:880px;margin:0 auto}
.faq details{margin-bottom:12px}
.faq summary{cursor:pointer;padding:17px 20px;font-weight:600;color:var(--ink);font-size:1rem;list-style:none;
  display:flex;align-items:center;gap:14px;letter-spacing:-.006em;min-height:48px;
  background:linear-gradient(90deg,var(--acc-soft),var(--paper));
  border:1px solid var(--acc-tint);border-radius:var(--r-sm);
  transition:border-color .24s var(--ease-out),box-shadow .24s var(--ease-out)}
.faq summary:hover{border-color:var(--acc-glow);box-shadow:var(--sh-sm)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";margin-left:auto;width:10px;height:10px;border-right:2px solid var(--acc);
  border-bottom:2px solid var(--acc);transform:rotate(45deg) translateY(-3px);flex:none;
  transition:transform .5s var(--ease-out)}
.faq details[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.faq details[open] summary{color:var(--acc-deep);border-color:var(--acc-glow)}
.faq .a{padding:16px 20px 6px;font-size:.93rem;color:var(--text);line-height:1.6;max-width:68ch}
/* Slide + fade the answer where the browser supports it; elsewhere it just opens. */
@supports selector(::details-content){
  .faq details::details-content{opacity:0;max-height:0;overflow:hidden;
    transition:opacity .4s var(--ease-out),max-height .4s var(--ease-out),
      content-visibility .4s allow-discrete}
  .faq details[open]::details-content{opacity:1;max-height:340px}
}

/* ---------- CTA band ---------- */
.ctaband{background:linear-gradient(150deg,var(--acc),var(--acc-mid));color:var(--on-acc);text-align:center;
  position:relative;overflow:hidden}
.ctaband::before{content:"";position:absolute;inset:0;
  background:radial-gradient(620px 340px at 14% 0,var(--on-acc-fill),transparent 62%),
             radial-gradient(620px 340px at 86% 100%,var(--on-acc-fill),transparent 62%)}
.ctaband .wrap{position:relative;z-index:1}
.ctaband h2{color:var(--on-acc)}
.ctaband p{color:var(--on-acc-soft);max-width:52ch;margin:16px auto 0;font-size:1.04rem}
.ctaband .hero-cta{justify-content:center}

/* ---------- footer ---------- */
.ftr{background:var(--brand-deep);color:#AFB9C2;padding:clamp(48px,6vw,72px) 0 0}
.ftr h4{color:#fff;font-family:'Figtree';font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;
  font-weight:700;margin-bottom:16px}
.ftr .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px}
@media(max-width:940px){.ftr .cols{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ftr .cols{grid-template-columns:1fr}}
.ftr .about .logo .txt{color:#fff}
.ftr .about .logo .txt small{color:#8A96A2}
.ftr .about p{font-size:.88rem;margin-top:16px;max-width:34ch}
.ftr .fc b{display:block;color:#fff;font-size:.93rem;font-weight:600;font-family:'Figtree'}
.ftr .fc .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle}
.ftr .fc p{font-size:.86rem;margin-top:9px;line-height:1.62}
.ftr .fc a:hover{color:#fff}
.ftr .accred{margin-top:38px;padding:20px 22px;border-radius:var(--r);background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.12);display:flex;gap:clamp(16px,3vw,34px);align-items:center;flex-wrap:wrap}
.ftr .accred img{height:38px;width:auto;background:#fff;padding:5px 9px;border-radius:8px}
.ftr .accred span{font-size:.85rem}
.ftr .accred b{color:#fff}
.ftr .emerg{margin-top:16px;padding:18px 22px;border-radius:var(--r);background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.12);display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:.89rem}
.ftr .emerg svg{width:22px;height:22px;color:#E0A2A0;flex:none}
.ftr .emerg b{color:#fff}
.ftr .bar{margin-top:38px;border-top:1px solid rgba(255,255,255,.12);padding:22px 0;display:flex;
  justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.79rem;align-items:center}
.ftr .bar img{height:22px;opacity:.85}

/* ---------- mobile sticky ---------- */
.mobile-bar{position:fixed;left:0;right:0;bottom:0;z-index:95;display:none;gap:1px;background:var(--line);
  box-shadow:0 -8px 24px -12px rgba(31,37,43,.35)}
.mobile-bar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 8px;
  font-weight:700;font-size:.92rem;background:#fff;color:var(--ink);min-height:48px}
.mobile-bar a.book{background:var(--acc-deep);color:#fff}
.mobile-bar svg{width:17px;height:17px}
@media(max-width:760px){.mobile-bar{display:flex}body{padding-bottom:58px}}

/* ---------- staging chrome ---------- */
.stage-flag{display:block;background:var(--ink);color:#fff;font-size:.68rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;padding:9px 24px;text-align:center}
.stage-flag b{color:var(--acc-glow);font-weight:700}
html[data-theme="core"] .stage-flag b{color:#B3C3C6}
.approve{position:fixed;right:18px;bottom:18px;z-index:96;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--sh-lg);padding:15px 17px;max-width:315px}
.approve .t{font-size:.66rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}
.approve .t b{color:var(--acc-deep)}
.approve p{font-size:.82rem;color:var(--text);margin-top:6px;line-height:1.45}
.approve .row{display:flex;gap:8px;margin-top:12px}
.approve .btn{flex:1;padding:11px 12px;font-size:.82rem;min-height:42px}
.approve .close{position:absolute;top:8px;right:9px;border:none;background:transparent;cursor:pointer;
  color:var(--muted);font-size:1.15rem;line-height:1;padding:5px}
.approve.hidden{display:none}
@media(max-width:760px){.approve{right:10px;left:10px;bottom:68px;max-width:none}
  .stage-flag{font-size:.6rem;letter-spacing:.12em;padding:8px 16px}}


/* ---------- clinic cards on the homepage ---------- */
.bento.three{grid-template-columns:repeat(3,1fr)}
@media(max-width:940px){.bento.three{grid-template-columns:1fr;max-width:440px;margin:0 auto}}
.svc.clinic{padding:0;overflow:hidden}
.svc.clinic .cap{padding:22px 24px 20px}
.svc.clinic .cap h4{font-family:'Fraunces';font-size:1.55rem;font-weight:600;color:inherit;letter-spacing:-.018em}
.svc.clinic .cap small{display:block;font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;
  opacity:.82;font-weight:700;margin-top:6px}
.svc.clinic.w .cap{background:var(--w);color:#fff}
.svc.clinic.b .cap{background:var(--b);color:#1B2126}
.svc.clinic.t .cap{background:var(--t);color:#fff}
.svc.clinic .bd{padding:19px 24px 24px;display:flex;flex-direction:column;flex:1}
.ln{display:flex;gap:11px;align-items:flex-start;font-size:.89rem;color:var(--text);padding:7px 0;line-height:1.5}
.ln svg{width:16px;height:16px;flex:none;margin-top:4px}
.svc.clinic.w .ln svg{color:var(--w)}
.svc.clinic.b .ln svg{color:var(--b-mid)}
.svc.clinic.t .ln svg{color:var(--t)}
.svc.clinic .acts{display:flex;gap:9px;margin-top:auto;padding-top:18px}
.svc.clinic .acts .btn{flex:1;padding:12px 14px;font-size:.86rem;min-height:44px}
.svc.clinic.w .acts .btn-acc{background:var(--w-deep)}
.svc.clinic.b .acts .btn-acc{background:var(--b-deep)}
.svc.clinic.t .acts .btn-acc{background:var(--t-deep)}
@media(max-width:400px){.svc.clinic .acts{flex-direction:column}}

/* float-chip already provides the surface — don't stack a second one inside it */
.float-chip .status{background:none;border:none;box-shadow:none;padding:0;font-size:.83rem}
.trust .wrap{row-gap:14px}


/* ---------- scripts & referrals modal ----------
   Native <dialog>: focus trap, Esc and top-layer come free.
   Modals are exempt from trigger-anchored origin — they stay centred. */
.rx{width:min(760px,calc(100vw - 32px));max-width:none;height:min(760px,calc(100dvh - 48px));
  max-height:calc(100dvh - 48px);margin:auto;padding:0;border:none;
  border-radius:var(--r-lg);background:#fff;box-shadow:var(--sh-lg);overflow:hidden;
  color:var(--text)}
.rx[open]{display:flex;flex-direction:column}
.rx::backdrop{background:rgba(20,25,29,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.rx[open]{animation:none}
/* enter: deliberate (220ms); exit snaps (150ms) — asymmetric on purpose */
.rx{opacity:0;transform:scale(.96);transition:opacity .15s var(--ease-out),transform .15s var(--ease-out),
  overlay .15s allow-discrete,display .15s allow-discrete}
.rx[open]{opacity:1;transform:scale(1);transition-duration:.22s}
@starting-style{.rx[open]{opacity:0;transform:scale(.96)}}
.rx::backdrop{opacity:0;transition:opacity .15s var(--ease-out),overlay .15s allow-discrete,display .15s allow-discrete}
.rx[open]::backdrop{opacity:1;transition-duration:.22s}
@starting-style{.rx[open]::backdrop{opacity:0}}

.rx-head{display:flex;align-items:flex-start;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--line)}
.rx-head small{display:block;font-size:.66rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;
  color:var(--acc-deep)}
.rx-head h3{font-size:1.35rem;margin-top:5px}
.rx-x{margin-left:auto;width:40px;height:40px;flex:none;border-radius:50%;border:1px solid var(--line);
  background:#fff;cursor:pointer;display:grid;place-items:center;color:var(--ink);
  transition:transform .16s var(--ease-out),background-color .2s var(--ease-out)}
.rx-x svg{width:17px;height:17px}
.rx-x:active{transform:scale(.94)}
@media (hover:hover) and (pointer:fine){.rx-x:hover{background:var(--mist)}}
.rx-note{display:flex;gap:12px;align-items:flex-start;padding:14px 24px;background:var(--acc-soft);
  font-size:.83rem;line-height:1.5;color:var(--ink)}
.rx-note svg{width:17px;height:17px;color:var(--acc-deep);flex:none;margin-top:2px}
.rx-body{position:relative;flex:1;min-height:280px;background:#fff;overflow:hidden}
.rx-body iframe{width:100%;height:100%;min-height:280px;border:0;display:block}
.rx-load{position:absolute;inset:0;display:grid;place-items:center;font-size:.87rem;color:var(--muted);
  background:#fff;pointer-events:none}
.rx-body.ready .rx-load{display:none}
.rx-foot{display:flex;align-items:center;gap:12px;padding:14px 24px;border-top:1px solid var(--line);
  background:var(--mist);flex-wrap:wrap}
.rx-foot a{font-size:.84rem;font-weight:600;color:var(--acc-deep);text-decoration:underline;
  text-underline-offset:3px}
.rx-foot .btn{margin-left:auto;padding:11px 20px;min-height:42px;font-size:.86rem}
@media(max-width:600px){
  .rx{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0}
  .rx-head{padding:18px 18px 14px}.rx-note,.rx-foot{padding:13px 18px}
  .rx-foot .btn{margin-left:0;flex:1}
}
@media (prefers-reduced-motion: reduce){
  .rx,.rx[open]{transform:none}
  @starting-style{.rx[open]{transform:none}}
}
body.rx-open{overflow:hidden}


/* ---------- scripts & referrals picker (homepage) ---------- */
.rxpick{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:860px;margin:0 auto}
@media(max-width:760px){.rxpick{grid-template-columns:1fr}}
.rxp{display:flex;align-items:center;gap:14px;padding:20px 22px;border-radius:var(--r);background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-sm);
  transition:transform .16s var(--ease-out),box-shadow .28s var(--ease-out),border-color .28s var(--ease-out)}
.rxp:active{transform:scale(.98)}
@media (hover:hover) and (pointer:fine){.rxp:hover{box-shadow:var(--sh)}}
.rxp i{width:12px;height:12px;border-radius:50%;flex:none}
.rxp.w i{background:var(--w)} .rxp.b i{background:var(--b)} .rxp.t i{background:var(--t)}
.rxp.w:hover{border-color:var(--w)} .rxp.b:hover{border-color:var(--b)} .rxp.t:hover{border-color:var(--t)}
.rxp b{font-family:'Fraunces';font-size:1.2rem;font-weight:600;color:var(--ink);letter-spacing:-.014em;
  line-height:1.1}
.rxp span{display:block;font-size:.78rem;color:var(--muted);margin-top:3px;font-weight:500}
.rxp svg{width:17px;height:17px;margin-left:auto;color:var(--muted);flex:none}
.rxp>div{flex:1}


/* ---------- real logo ---------- */
.logo img{height:46px;width:auto}
.ftr .logo img{height:44px}
@media(max-width:520px){.logo img{height:38px}}

/* ---------- clinic tiles: name + big legible location ---------- */
.svc.clinic .cap h4{font-family:'Fraunces';font-size:1.62rem;font-weight:600;color:inherit;letter-spacing:-.02em}
.svc.clinic .loc{display:flex;gap:10px;align-items:flex-start;margin-top:12px}
.svc.clinic .loc svg{width:20px;height:20px;flex:none;margin-top:2px;opacity:.95}
.svc.clinic .loc span{font-size:1.02rem;font-weight:600;line-height:1.34;letter-spacing:-.006em}
.svc.clinic.b .cap{background:var(--b);color:#fff;text-shadow:0 1px 2px rgba(20,25,29,.30)}
.svc.clinic.b .cap small{opacity:.95}

/* ---------- scripts & referrals form ---------- */
.rxform{padding:22px 24px 26px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.fgrid{grid-template-columns:1fr}}
.fld{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}
.fld label{font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.fld label .req{color:#B0665F;margin-left:3px}
.fld input,.fld select,.fld textarea{font:inherit;font-size:.96rem;color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:12px;padding:13px 15px;width:100%;min-height:50px;
  transition:border-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}
.fld textarea{min-height:104px;resize:vertical;line-height:1.5}
.fld select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:44px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2378838E' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;background-size:17px}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--acc);
  box-shadow:0 0 0 3px var(--acc-soft)}
.fld input::placeholder,.fld textarea::placeholder{color:#A6AEB6}
.fld .hint{font-size:.78rem;color:var(--muted);line-height:1.45}
.fld .err{font-size:.79rem;font-weight:600;color:#A85B54;display:none}
.fld.bad input,.fld.bad select,.fld.bad textarea{border-color:#C98079}
.fld.bad .err{display:block}

/* segmented request type */
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media(max-width:480px){.seg{grid-template-columns:1fr}}
.seg label{display:flex;align-items:center;justify-content:center;gap:8px;text-align:center;
  padding:13px 12px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fff;
  font-size:.88rem;font-weight:600;color:var(--text);letter-spacing:0;text-transform:none;min-height:50px;
  transition:border-color .18s var(--ease-out),background-color .18s var(--ease-out),color .18s var(--ease-out)}
.seg input{position:absolute;opacity:0;width:0;height:0}
.seg input:checked+label{border-color:var(--acc-deep);background:var(--acc-soft);color:var(--acc-deep)}
.seg input:focus-visible+label{outline:3px solid var(--acc-deep);outline-offset:2px}
.seg .o{position:relative;display:flex}
.seg label{width:100%}

/* consent checkboxes */
.chk{display:flex;gap:12px;align-items:flex-start;padding:13px 15px;border:1px solid var(--line);
  border-radius:12px;background:var(--mist);margin-bottom:11px;cursor:pointer;
  transition:border-color .18s var(--ease-out)}
.chk.bad{border-color:#C98079}
.chk input{appearance:none;-webkit-appearance:none;width:22px;height:22px;flex:none;margin-top:1px;
  border:1.5px solid var(--muted);border-radius:6px;background:#fff;cursor:pointer;position:relative;
  transition:background-color .16s var(--ease-out),border-color .16s var(--ease-out)}
.chk input:checked{background:var(--acc-deep);border-color:var(--acc-deep)}
.chk input:checked::after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;
  border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.chk input:focus-visible{outline:3px solid var(--acc-deep);outline-offset:2px}
.chk span{font-size:.87rem;line-height:1.5;color:var(--text)}
.chk b{color:var(--ink)}
.chk a{color:var(--acc-deep);text-decoration:underline;text-underline-offset:3px}

.rxsubmit{width:100%;margin-top:6px}
.rxerr{display:none;margin-top:12px;padding:12px 15px;border-radius:12px;background:#FBF0EF;
  border:1px solid #E8CFCC;color:#8E4A43;font-size:.87rem;font-weight:600}
.rxerr.on{display:block}

/* success state */
.rxdone{display:none;padding:44px 30px;text-align:center}
.rxdone.on{display:block}
.rxdone .tick{width:66px;height:66px;border-radius:50%;background:var(--acc-soft);color:var(--acc-deep);
  display:grid;place-items:center;margin:0 auto 20px}
.rxdone .tick svg{width:30px;height:30px}
.rxdone h4{font-family:'Fraunces';font-size:1.5rem;font-weight:600;letter-spacing:-.018em}
.rxdone p{font-size:.94rem;color:var(--muted);margin-top:12px;max-width:44ch;margin-left:auto;margin-right:auto}
.rxdone .ref{margin-top:18px;display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--acc-deep);background:var(--acc-soft);padding:9px 16px;border-radius:100px}
.rxdemo{margin-top:22px;font-size:.8rem;color:var(--muted);border-top:1px dashed var(--line);padding-top:16px;
  max-width:46ch;margin-left:auto;margin-right:auto;line-height:1.5}


/* ---------- location tiles ----------
   Feel borrowed from two references: the animated feature card (tall rounded
   card, mono index, radial wash, spring lift, frosted panel with a tag pill)
   and the spotlight card (cursor-tracked glow on the surface and the border,
   background-attachment:fixed so one light source crosses all three cards).
   Colours are ours — each tile glows in its own clinic hex, no hue rotation. */
.ltiles{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;--x:50;--y:-400;--sp:340}
@media(max-width:1000px){.ltiles{grid-template-columns:1fr;max-width:460px;margin:0 auto}}

.ltile{position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  min-height:clamp(420px,46vw,470px);padding:24px;border-radius:var(--r-lg);overflow:hidden;
  background:#fff;border:1px solid var(--line);box-shadow:var(--sh-sm);isolation:isolate;
  transition:transform .26s var(--ease-out),box-shadow .26s var(--ease-out)}
.ltile.w{--tile:var(--w);--tile-rgb:31,58,104;--tile-tint:var(--w-tint);--tile-soft:var(--w-soft);
  --tile-deep:var(--w-deep);--tile-name:var(--w)}
.ltile.b{--tile:var(--b);--tile-rgb:147,168,172;--tile-tint:var(--b-tint);--tile-soft:var(--b-soft);
  --tile-deep:var(--b-deep);--tile-name:var(--b-mid)}
.ltile.t{--tile:var(--t);--tile-rgb:47,107,82;--tile-tint:var(--t-tint);--tile-soft:var(--t-soft);
  --tile-deep:var(--t-deep);--tile-name:var(--t)}

/* static radial wash */
.ltile::before{content:"";position:absolute;inset:0;z-index:0;
  background:radial-gradient(circle at 50% 26%,var(--tile-tint) 0%,transparent 68%);opacity:.9;
  transition:opacity .26s var(--ease-out)}
/* soft disc carrying the exact clinic hex */
.ltile .disc{position:absolute;left:50%;top:clamp(84px,11vw,106px);width:clamp(190px,22vw,230px);
  aspect-ratio:1;border-radius:50%;background:var(--tile);opacity:.14;z-index:0;
  transform:translate(-50%,-50%);
  transition:transform .3s var(--ease-out),opacity .26s var(--ease-out)}

/* cursor spotlight — surface fill + masked border light. Off until JS enables it. */
.ltile .spot{position:absolute;inset:0;z-index:1;border-radius:inherit;pointer-events:none;
  opacity:0;transition:opacity .3s var(--ease-out)}
.ltiles.spot-on .ltile .spot{opacity:1}
.ltile .spot::before,.ltile .spot::after{content:"";position:absolute;border-radius:inherit;
  background-attachment:fixed;background-repeat:no-repeat}
.ltile .spot::before{inset:0;
  background-image:radial-gradient(calc(var(--sp)*1px) calc(var(--sp)*1px) at
    calc(var(--x)*1px) calc(var(--y)*1px),rgba(var(--tile-rgb),.20),transparent 70%)}
.ltile .spot::after{inset:-1px;border:1.5px solid transparent;
  background-image:radial-gradient(calc(var(--sp)*.72px) calc(var(--sp)*.72px) at
    calc(var(--x)*1px) calc(var(--y)*1px),rgba(var(--tile-rgb),.95),transparent 72%);
  -webkit-mask:linear-gradient(#fff,#fff) padding-box,linear-gradient(#fff,#fff) border-box;
  mask:linear-gradient(#fff,#fff) padding-box,linear-gradient(#fff,#fff) border-box;
  -webkit-mask-composite:xor;mask-composite:exclude}

.ltile .pin{position:absolute;top:19px;right:22px;z-index:4;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;background:var(--tile-soft);color:var(--tile-deep)}
.ltile .pin svg{width:18px;height:18px}

/* the dominant element */
.ltile .nm{position:absolute;left:0;right:0;top:clamp(84px,11vw,106px);z-index:2;text-align:center;
  transform:translateY(-50%);pointer-events:none;padding:0 16px}
.ltile .nm b{display:block;font-family:'Fraunces',Georgia,serif;font-weight:600;
  font-size:clamp(2.5rem,4.4vw,3.5rem);line-height:.98;letter-spacing:-.032em;color:var(--tile-name);
  transform-origin:center;transition:transform .3s var(--ease-out)}
.ltile .nm em{display:block;font-style:normal;font-size:.72rem;font-weight:700;letter-spacing:.22em;
  text-transform:uppercase;color:var(--muted);margin-top:11px;
  transition:transform .3s var(--ease-out),opacity .26s var(--ease-out)}

/* frosted content panel */
.ltile .pane{position:relative;z-index:3;border-radius:var(--r);border:1px solid var(--line);
  background:rgba(255,255,255,.88);backdrop-filter:blur(12px) saturate(160%);
  -webkit-backdrop-filter:blur(12px) saturate(160%);padding:16px 17px 17px;
  box-shadow:0 10px 26px -18px rgba(31,37,43,.4)}
.ltile .tag{display:inline-block;margin-bottom:11px;padding:6px 13px;border-radius:100px;
  font-size:.68rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  background:var(--tile-soft);color:var(--tile-deep)}
.ltile .row{display:flex;gap:10px;align-items:flex-start;font-size:.87rem;color:var(--text);padding:4px 0;
  line-height:1.45}
.ltile .row svg{width:15px;height:15px;flex:none;margin-top:3px;color:var(--tile-deep);opacity:.85}
.ltile .row a{font-weight:600}
.ltile .addr{font-size:.97rem;font-weight:600;color:var(--ink);letter-spacing:-.006em;line-height:1.35}
.ltile .acts{display:flex;gap:9px;margin-top:14px}
.ltile .acts .btn{flex:1;padding:12px 12px;font-size:.86rem;min-height:46px}
.ltile .acts .btn-acc{background:var(--tile-deep)}
@media(max-width:380px){.ltile .acts{flex-direction:column}}

.ltile:active{transform:scale(.99)}
@media (hover:hover) and (pointer:fine){
  .ltile:hover{transform:translateY(-10px);box-shadow:var(--sh)}
  .ltile:hover .nm b{transform:scale(1.14) translateY(-14px)}
  .ltile:hover .nm em{transform:translateY(-10px);opacity:.75}
  .ltile:hover .disc{transform:translate(-50%,-50%) scale(1.16);opacity:.2}
  .ltile:hover::before{opacity:1}
}
@media (prefers-reduced-motion: reduce){
  .ltile:hover{transform:none}
  .ltile:hover .nm b,.ltile:hover .nm em{transform:none}
  .ltile:hover .disc{transform:translate(-50%,-50%)}
  .ltiles.spot-on .ltile .spot{opacity:0}
}
@media (prefers-reduced-transparency: reduce){
  .ltile .pane{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
}


/* ---------- interactive hover button ----------
   Label slides out, a second label + arrow slides in, and a dot expands to
   flood the button. Expansion uses clip-path (compositor-friendly) rather than
   animating width/height/left/top. Hover-capable pointers only. */
.ihb{position:relative;overflow:hidden;isolation:isolate;z-index:0;gap:0}
.ihb .bt{display:inline-flex;align-items:center;justify-content:center;gap:9px;position:relative;z-index:2}
.ihb .bt2{position:absolute;inset:0;display:none;align-items:center;justify-content:center;gap:8px;
  z-index:2;white-space:nowrap;color:#fff;padding:0 14px}
.ihb .bt2 svg{width:16px;height:16px;flex:none}
.ihb .bdot{display:none;position:absolute;inset:0;z-index:1;background:var(--ihb-fill,var(--acc-deep))}

/* fill colour per button role — never a tone that would strand the label */
.btn-acc{--ihb-fill:var(--acc)}
:is(html[data-theme="bexley"],html[data-theme="botany"]) .btn-acc{--ihb-fill:var(--acc-mid)}
.btn-line,.btn-onacc{--ihb-fill:var(--acc-deep)}
.btn-onacc-line{--ihb-fill:var(--on-acc)}
.btn-onacc-line .bt2{color:var(--acc-deep)}
:is(html[data-theme="bexley"],html[data-theme="botany"]) .btn-onacc-line .bt2{color:#fff}
.ltile .btn-acc{--ihb-fill:var(--tile-name)}
.ltile .btn-line{--ihb-fill:var(--tile-deep)}

@media (hover:hover) and (pointer:fine){
  .ihb .bt2{display:flex;opacity:0;transform:translateX(34px);
    transition:transform .28s var(--ease-out),opacity .28s var(--ease-out)}
  .ihb .bt{transition:transform .28s var(--ease-out),opacity .28s var(--ease-out)}
  /* At rest the dot must be invisible: its fill is chosen to contrast the hover
     label, which makes it match the resting label — a 9px dot at 15% sat inside
     the text and swallowed the first character. Expand from zero instead. */
  .ihb .bdot{display:block;clip-path:circle(0 at 15% 50%);
    transition:clip-path .32s var(--ease-out)}
  .ihb:hover .bt{transform:translateX(34px);opacity:0}
  .ihb:hover .bt2{transform:translateX(0);opacity:1}
  .ihb:hover .bdot{clip-path:circle(142% at 15% 50%)}
  .ihb:focus-visible .bt{transform:translateX(34px);opacity:0}
  .ihb:focus-visible .bt2{transform:translateX(0);opacity:1}
  .ihb:focus-visible .bdot{clip-path:circle(142% at 15% 50%)}
}
@media (prefers-reduced-motion: reduce){
  .ihb .bt2,.ihb .bdot{display:none}
  .ihb:hover .bt{transform:none;opacity:1}
}

/* ---------- rolling headings ----------
   Each letter carries two stacked faces: the outgoing one rolls away from
   50% 25%, the incoming one rolls up from 50% 100%, offset so they cross.
   A hidden third copy holds the letter's real width, and letters are grouped
   per word so a heading still wraps between words and never mid-word.
   site.js builds the markup, so with JS off the heading is just a heading. */
.rw{display:inline-block}
.rl{position:relative;display:inline-block;perspective:10000px;transform-style:preserve-3d}
.rl > i{position:absolute;left:0;top:0;display:inline-block;font-style:inherit;
  backface-visibility:hidden}
.rl > .a{transform-origin:50% 25%}
.rl > .b{transform-origin:50% 100%;transform:rotateX(90deg)}
.rl > .sp{display:inline-block;visibility:hidden}
html.anim .rl > i{transition:transform .5s ease-in}
html.anim .roll.go .rl > .a{transform:rotateX(90deg)}
html.anim .roll.go .rl > .b{transform:rotateX(0deg)}

/* ---------- reveal: quiet fade + rise, marketing pages only ---------- */
.rv{opacity:1}
html.anim .rv{opacity:0;transform:translateY(18px);
  transition:opacity .24s var(--ease-out),transform .24s var(--ease-out)}
html.anim .rv.in{opacity:1;transform:none}

/* ---------- accessibility preferences ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *{transition-duration:.01ms!important;animation-duration:.01ms!important}
  html.anim .rv{opacity:1;transform:none}
  .bio{transition:opacity .15s linear}
}
@media (prefers-reduced-transparency: reduce){
  .hdr{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom:1px solid var(--line)}
  .hdr::after{display:none}
  .float-chip,.doc .qual{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
}
@media (prefers-contrast: more){
  :root{--muted:#5A646E;--line:#9AA4AD}
  .btn-line,.svc,.doc,.ally,.rev,.stat-c,.feecard{border-color:#8C97A1}
  .float-chip{background:#fff;border:1px solid #8C97A1}
}
@media print{.hdr,.mobile-bar,.approve,.stage-flag,.switch{display:none!important}}

/* =================================================================
   Botany — client feedback round 3 (Oct 2026)
   ================================================================= */
/* Botany's Fresh Teal is now Sage (tokens in :root). #E7EEE7 is the client's
   own hue; #4F7D5B keeps white text at 4.75:1. */
html[data-theme="botany"] .hero{background:linear-gradient(180deg,#F4F7F3 0%,#fff 100%)}

/* light hero photo: no dark scrim, no stat */
.hero-media .frame.light{background:var(--acc-tint)}
.hero-media .frame.light::after{background:linear-gradient(to top,rgba(53,90,64,.10),transparent 40%)}

/* pinned phone + Script/Referral + Book Now */
.hdr .acts{display:flex;align-items:center;gap:10px;flex:none}
.hdr .acts .btn{padding-top:11px;padding-bottom:11px;white-space:nowrap}
.tel-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:#fff;
  border:1px solid var(--acc-tint);box-shadow:var(--sh-sm);color:var(--ink);font-weight:700;font-size:.92rem;
  white-space:nowrap;transition:border-color .2s var(--ease-out)}
.tel-pill:hover{border-color:var(--acc-glow)}
.tel-pill svg{width:16px;height:16px;color:var(--acc-deep)}
.tel-pill .live{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px rgba(78,140,106,.2)}
.tel-pill:active,.hdr .acts .btn:active{transform:scale(.97)}
@media(max-width:1200px){
  .hdr.has-acts .mainnav{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:#fff;padding:8px 24px 20px;display:none;box-shadow:var(--sh)}
  .hdr.has-acts .mainnav.open{display:flex}
  .hdr.has-acts .mainnav a{padding:15px 0;border-bottom:1px solid var(--line-soft);font-size:1rem}
  .hdr.has-acts .mainnav a::after{display:none}
  .hdr.has-acts .acts{margin-left:auto;order:2}
  .hdr.has-acts .burger{display:flex;margin-left:0;order:3}
}
@media(max-width:900px){.hdr.has-acts .logo .sub{display:none}.tel-pill .live{display:none}}
@media(max-width:760px){.hdr.has-acts .acts{display:none}.hdr.has-acts .burger{margin-left:auto}}

/* Mission & Values (replaces the photo fan) */
.mv{display:grid;grid-template-columns:1fr 1.15fr;gap:18px;margin-top:8px}
@media(max-width:860px){.mv{grid-template-columns:1fr}}
.mv-card{border-radius:var(--r-lg);padding:34px 34px 30px;border:1px solid var(--line);background:#fff;box-shadow:var(--sh-sm)}
.mv-card .eyebrow{margin-bottom:14px}
.mv-card.mission{background:linear-gradient(155deg,var(--acc-mid),var(--acc-deep));border-color:transparent;color:#fff;
  display:flex;flex-direction:column}
.mv-card.mission .eyebrow{color:rgba(255,255,255,.8)}
.mv-card.mission p{font-family:'Fraunces';font-size:clamp(1.35rem,2.2vw,1.7rem);line-height:1.28;letter-spacing:-.016em;color:#fff}
.mv-card.mission small{margin-top:auto;padding-top:24px;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;
  font-weight:700;color:rgba(255,255,255,.7)}
.mv-card.values{background:linear-gradient(155deg,var(--acc-soft),#fff 75%);border-color:var(--acc-tint)}
.mv-card.values ul{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:12px 22px}
@media(max-width:420px){.mv-card.values ul{grid-template-columns:1fr}}
.mv-card.values li{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--ink)}
.mv-card.values li svg{width:18px;height:18px;flex:none;color:var(--acc);background:var(--acc-tint);border-radius:50%;padding:3px}

/* News */
.news{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:900px){.news{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.news{grid-template-columns:1fr}}
.news-empty{grid-column:1/-1;text-align:center;color:var(--muted)}
.news-card{display:flex;flex-direction:column;border-radius:var(--r-lg);overflow:hidden;background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-sm);transition:box-shadow .25s var(--ease-out),transform .25s var(--ease-out)}
.news-card:hover{box-shadow:var(--sh);transform:translateY(-2px)}
.news-card .im{aspect-ratio:16/10;background:var(--acc-tint);overflow:hidden}
.news-card .im img{width:100%;height:100%;object-fit:cover;display:block}
.news-card .tx{padding:20px 22px 22px;display:flex;flex-direction:column;gap:8px;flex:1}
.news-card time{font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--acc-deep)}
.news-card h3{font-family:'Fraunces';font-size:1.16rem;line-height:1.25;letter-spacing:-.012em;color:var(--ink)}
.news-card p{font-size:.92rem;color:var(--text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.news-card .more{margin-top:auto;padding-top:6px;font-weight:700;font-size:.88rem;color:var(--acc-deep)}

/* ACL logo on the pathology card — white badge keeps the brand colours true */
.svc.acl .acl-logo{flex:none;display:grid;place-items:center;background:#fff;border-radius:var(--r);
  padding:14px 22px;box-shadow:0 10px 24px -14px rgba(0,0,0,.45)}
.svc.acl .acl-logo img{display:block;height:46px;width:auto}
@media(max-width:600px){.svc.acl .acl-logo{margin-top:16px}.svc.acl .acl-logo img{height:38px}}

/* FAQ group heading + placeholder marker */
.faq-grp{font-family:'Fraunces';font-size:1.3rem;font-weight:600;color:var(--ink);margin:34px 0 14px;letter-spacing:-.014em}
.ph-inline{display:inline-block;margin-left:4px;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:#8A5A00;
  background:#FFF6E0;border:1px dashed #E2B04A;padding:3px 10px;border-radius:100px;vertical-align:middle}

/* Long bios (clinic deck, Oct 2026) — shared by doctor and allied cards */
.bio .bio-h{padding-top:12px}
.bio-list{margin:6px 0 0 18px;font-size:.85rem;color:var(--text);line-height:1.55}
.bio .bio-note{font-size:.78rem;font-weight:600;color:var(--acc-deep)}
.ally[data-open]>div{flex:1;min-width:0;display:flex;flex-direction:column}
.ally[data-open="true"] .bio{grid-template-rows:1fr;opacity:1}
.ally .bioT{margin-top:0}

/* Scrolling services strip (Botany, Oct 2026 — client asked for Malabar's).
   Pauses on hover; held still and scrollable under prefers-reduced-motion. */
.ticker{overflow:hidden;background:linear-gradient(90deg,var(--acc-soft),#fff 50%,var(--acc-soft));
  border-top:2px solid var(--acc-tint);border-bottom:2px solid var(--acc-tint)}
.tk-track{display:flex;width:max-content;animation:tk-scroll 45s linear infinite}
.ticker:hover .tk-track{animation-play-state:paused}
.tk-run{display:flex;align-items:center;gap:40px;padding:15px 20px;white-space:nowrap}
.tk-i{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:1.02rem;color:var(--acc-deep);letter-spacing:-.005em}
.tk-i svg{width:20px;height:20px;flex:none;color:var(--acc)}
.tk-dot{color:var(--acc-glow)}
@keyframes tk-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:600px){.tk-i{font-size:.92rem}.tk-run{gap:28px;padding:12px 14px}}
@media(prefers-reduced-motion:reduce){
  .ticker{overflow-x:auto}.tk-track{animation:none}.tk-run[aria-hidden]{display:none}}

/* light hero photo: lift the address chip clear of the pots */
.frame.light~.float-chip.br{bottom:auto;top:30%}
@media(max-width:520px){.frame.light~.float-chip.br{top:26%}}
/* address chip: keep each address line on one line (2 lines, never 3) */
.float-chip.br{max-width:none}
.float-chip.br b{white-space:nowrap}
.float-chip.link{cursor:pointer;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.float-chip.link:hover{transform:translateY(-2px);box-shadow:0 22px 44px -18px rgba(31,37,43,.42)}
.float-chip.link:hover b{color:var(--acc-deep)}
.float-chip.link:active{transform:scale(.97)}
.float-chip.link:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
/* Clinic-page info strip: give the address column room so it sits on 2 lines */
@media(min-width:1141px){:is(html[data-theme="botany"],html[data-theme="waterloo"],html[data-theme="bexley"]) .infostrip .wrap{grid-template-columns:1fr .8fr 1.3fr 1fr}}
@media(max-width:1140px) and (min-width:901px){
  :is(html[data-theme="botany"],html[data-theme="waterloo"],html[data-theme="bexley"]) .infostrip .wrap{grid-template-columns:repeat(2,1fr)}
  :is(html[data-theme="botany"],html[data-theme="waterloo"],html[data-theme="bexley"]) .infostrip .col:nth-child(2n){border-right:none}
  :is(html[data-theme="botany"],html[data-theme="waterloo"],html[data-theme="bexley"]) .infostrip .col:nth-child(-n+2){border-bottom:1px solid var(--line)}}
:is(html[data-theme="botany"],html[data-theme="waterloo"],html[data-theme="bexley"]) .infostrip b{white-space:nowrap}
html[data-theme="waterloo"] .hero{background:linear-gradient(180deg,#F3F5F8 0%,#fff 100%)}
/* Waterloo hero: plants sit on the right, so the address chip goes on the plain left wall */
html[data-theme="waterloo"] .frame.light~.float-chip.br{top:36%;right:auto;left:-16px}
@media(max-width:960px){html[data-theme="waterloo"] .frame.light~.float-chip.br{left:8px}}

html[data-theme="bexley"] .hero{background:linear-gradient(180deg,#F3F6F6 0%,#fff 100%)}
/* Bexley: white text needs the deep tone, not #93A8AC (see the Bexley contrast rule) */
html[data-theme="bexley"] .mv-card.mission{background:linear-gradient(155deg,var(--b-deep),#3A484B)}
html[data-theme="bexley"] .tel-pill svg,html[data-theme="bexley"] .tk-i,html[data-theme="bexley"] .tk-i svg{color:var(--b-deep)}

/* Inside the clinic (Bexley's commissioned photos, after the fan was retired) */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:900px){.gal{grid-template-columns:repeat(2,1fr)}}
.gal-i{margin:0;border-radius:var(--r-lg);overflow:hidden;background:var(--acc-tint);box-shadow:var(--sh-sm);position:relative}
.gal-i img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}
.gal-i figcaption{position:absolute;left:12px;right:12px;bottom:12px;padding:8px 12px;border-radius:12px;
  background:rgba(255,255,255,.9);font-size:.8rem;font-weight:600;color:var(--ink)}

/* Two-column FAQ for the long clinic lists (Oct 2026) */
.faq.two{max-width:1120px}
.faq-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
.faq-col{display:flex;flex-direction:column}
@media(max-width:820px){.faq-cols{grid-template-columns:1fr}}
.faq.two .faq-grp{display:flex;align-items:center;gap:14px}
.faq.two .faq-grp::after{content:"";flex:1;height:1px;background:var(--line)}
.faq.two .faq-grp.first{margin-top:0}

/* =================================================================
   Homepage — minimal layout from the client mock-up (Oct 2026)
   ================================================================= */
.h-hero{padding-bottom:110px}
.h-hero h1{font-size:clamp(2.6rem,5.4vw,4.4rem)}
/* feature card overlapping the hero */
.h-feat-wrap{position:relative;z-index:4;margin-top:-64px}
.h-feat{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:rgba(255,255,255,.92);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh);padding:22px 26px}
.h-f{display:flex;align-items:center;gap:14px;padding:6px 8px}
.h-f .ic{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--brand-soft);color:var(--brand)}
.h-f .ic svg{width:24px;height:24px}
.h-f b{font-weight:600;color:var(--ink);font-size:.95rem;line-height:1.3}
@media(max-width:900px){.h-feat{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.h-feat{grid-template-columns:1fr;padding:16px}}
.h-feat-wrap+.ticker{margin-top:44px}
/* clinic photo cards — each in its own colour */
.ccard.w{--cc:var(--w);--cd:var(--w-deep)} .ccard.b{--cc:var(--b);--cd:var(--b-deep)} .ccard.t{--cc:var(--t);--cd:var(--t-deep)}
.ccards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:900px){.ccards{grid-template-columns:1fr;max-width:520px;margin:0 auto}}
.ccard{display:flex;flex-direction:column;border-radius:var(--r-lg);overflow:hidden;background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-sm);border-top:5px solid var(--cc);
  transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out)}
.ccard:hover{transform:translateY(-3px);box-shadow:var(--sh)}
/* 4:3 window anchored low, so the pots and shelf stay in frame */
.ccard .im{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--mist)}
.ccard .im img{width:100%;height:100%;object-fit:cover;object-position:50% 85%;display:block;transition:transform .5s var(--ease-out)}
.ccard:hover .im img{transform:scale(1.03)}
.ccard .bd{padding:20px 22px 22px;display:flex;flex-direction:column;gap:10px;flex:1}
.ccard .nm{font-family:'Fraunces';font-size:1.6rem;font-weight:600;letter-spacing:-.018em;color:var(--ink)}
.ccard .nm:hover{color:var(--cd)}
.ccard .ad{display:flex;gap:9px;font-size:.9rem;color:var(--text);line-height:1.45}
.ccard .ad svg{width:17px;height:17px;flex:none;color:var(--cc);margin-top:2px}
.ccard .acts{display:flex;gap:10px;margin-top:auto;padding-top:8px;flex-wrap:wrap}
.cbook,.cvisit{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:999px;
  font-weight:700;font-size:.9rem;transition:transform .2s var(--ease-out),background .2s var(--ease-out)}
.cbook{background:var(--cd);color:#fff;flex:1}
.cvisit{background:#fff;color:var(--cd);border:1.5px solid var(--cc)}
.cbook svg,.cvisit svg{width:16px;height:16px}
.cbook:hover{filter:brightness(1.1)} .cvisit:hover{background:var(--mist)}
.cbook:active,.cvisit:active{transform:scale(.97)}
/* home header — centred nav + arrow pill (mock-up) */
.hdr-home .mainnav{margin:0 auto;gap:30px}
.hdr-home .cta{gap:10px;padding-left:24px;padding-right:20px}
.hdr-home .cta svg{width:17px;height:17px}
@media(max-width:1040px){.hdr-home .cta{display:inline-flex;margin-left:auto;order:2}.hdr-home .burger{margin-left:12px;order:3}}
@media(max-width:560px){.hdr-home .cta{display:none}.hdr-home .burger{margin-left:auto}}
@media(max-width:1160px) and (min-width:1041px){.hdr-home .mainnav{gap:20px}}
/* services icon row */
.h-svcs{display:grid;grid-template-columns:repeat(10,1fr);gap:10px}
@media(max-width:1100px){.h-svcs{grid-template-columns:repeat(5,1fr);row-gap:22px}}
@media(max-width:560px){.h-svcs{grid-template-columns:repeat(2,1fr)}}
.h-s{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;font-size:.84rem;font-weight:600;color:var(--ink);line-height:1.3}
.h-s .ic{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-sm);color:var(--brand)}
.h-s .ic svg{width:26px;height:26px}
/* about */
.h-about{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}
@media(max-width:860px){.h-about{grid-template-columns:1fr}}
.h-about h2{font-size:clamp(2rem,3.6vw,2.9rem);margin-top:6px}
.h-about .lede{margin-top:16px;max-width:36rem}
.h-about .ph{border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--sh);aspect-ratio:4/3}
.h-about .ph img{width:100%;height:100%;object-fit:cover;display:block}
/* scripts / FAQs split band */
.h-split{display:grid;grid-template-columns:1fr 1fr}
@media(max-width:860px){.h-split{grid-template-columns:1fr}}
.h-sp{display:flex;gap:20px;align-items:flex-start;padding:52px max(24px,calc((100vw - var(--maxw))/2 + 24px)) 52px 40px}
.h-sp.h-rx{background:linear-gradient(150deg,var(--brand-mid),var(--brand-deep));color:#fff;
  padding-left:max(24px,calc((100vw - var(--maxw))/2 + 24px));padding-right:40px}
.h-sp.h-fq{background:var(--mist)}
.h-sp .ic{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;flex:none;background:#fff;color:var(--brand)}
.h-sp .ic svg{width:26px;height:26px}
.h-sp.h-rx .eyebrow{color:rgba(255,255,255,.75)}
.h-sp h3{font-family:'Fraunces';font-size:1.6rem;font-weight:600;letter-spacing:-.016em;margin-top:6px;color:var(--ink)}
.h-sp.h-rx h3{color:#fff}
.h-sp p{margin-top:6px;font-size:.92rem;color:var(--text)}
.h-sp.h-rx p{color:rgba(255,255,255,.85)}
.h-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.h-pill{display:inline-flex;align-items:center;gap:9px;padding:10px 18px;border-radius:999px;background:#fff;
  color:var(--ink);font-weight:600;font-size:.9rem;border:1px solid var(--line);box-shadow:var(--sh-sm);
  transition:transform .2s var(--ease-out),border-color .2s var(--ease-out)}
.h-pill:hover{transform:translateY(-2px)}
.h-pill:active{transform:scale(.97)}
.h-pill i{width:10px;height:10px;border-radius:50%}
.h-pill.w i{background:var(--w)} .h-pill.b i{background:var(--b)} .h-pill.t i{background:var(--t)}
.h-pill.w:hover{border-color:var(--w)} .h-pill.b:hover{border-color:var(--b)} .h-pill.t:hover{border-color:var(--t)}
@media(max-width:560px){.h-sp{padding:40px 20px!important;flex-direction:column}}
.h-sp.h-rx .eyebrow::before{background:rgba(255,255,255,.6)}

/* Home hero = full-bleed client photo with a white fade for the copy (Oct 2026).
   The url lives here, not in an inline custom property: Chrome resolved that
   against the stylesheet and 404'd. */
.h-hero{background:linear-gradient(90deg,rgba(255,255,255,.97) 0%,rgba(255,255,255,.9) 30%,rgba(255,255,255,.35) 50%,rgba(255,255,255,0) 64%),
  url('clinic/home-hero-client-o.jpg') 70% center/cover no-repeat;min-height:min(78vh,680px);display:flex;align-items:center}
.h-hero .wrap{display:block;width:100%}
.h-hero .hero-copy{max-width:540px}
@media(max-width:860px){
  .h-hero{background:linear-gradient(180deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.9) 52%,rgba(255,255,255,.25) 100%),
    url('clinic/home-hero-client-o.jpg') 62% center/cover no-repeat;min-height:0}
}
/* Choose your clinic: heading + legend beside the Sydney map */
.h-loc{display:grid;grid-template-columns:1fr minmax(0,460px);gap:48px;align-items:center;margin-bottom:44px}
@media(max-width:900px){.h-loc{grid-template-columns:1fr}.h-map{max-width:460px;width:100%;margin:0 auto}}
.h-loc .sec-head{margin-bottom:0}
.h-legs{display:flex;flex-direction:column;gap:10px;margin-top:26px;max-width:440px}
.h-leg{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:var(--r);background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh-sm);transition:transform .2s var(--ease-out),border-color .2s var(--ease-out)}
.h-leg i{width:14px;height:14px;border-radius:50%;flex:none}
.h-leg.w i{background:var(--w)} .h-leg.b i{background:var(--b)} .h-leg.t i{background:var(--t)}
.h-leg.w:hover{border-color:var(--w)} .h-leg.b:hover{border-color:var(--b)} .h-leg.t:hover{border-color:var(--t)}
.h-leg:hover{transform:translateX(3px)}
.h-leg span{flex:1;display:flex;flex-direction:column}
.h-leg b{font-weight:700;color:var(--ink)} .h-leg small{font-size:.82rem;color:var(--muted)}
.h-leg svg{width:17px;height:17px;color:var(--muted)}

/* ---- Home: closer to the client mock-up (27 Oct 2026) ---- */
.h-hero h1{font-size:clamp(2.8rem,5.6vw,4.6rem);line-height:1.02;letter-spacing:-.03em}
.h-hero .sub{max-width:28rem}
.h-arrow{gap:12px;padding-left:28px;padding-right:24px}
.h-arrow svg{width:17px;height:17px}
/* feature bar: tinted and wider, outlined icon circles */
.h-feat{background:rgba(238,242,245,.94);border-color:#DCE3E9;padding:24px 34px}
.h-feat-wrap .wrap{max-width:calc(var(--maxw) + 80px)}
.h-f .ic{background:#fff;border:1.5px solid #CBD5DE;color:var(--brand)}
.h-f b{font-weight:500}
/* clinic cards: round arrow beside Book Now */
.cgo{width:44px;height:44px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--cd);color:#fff;
  margin-left:auto;transition:transform .2s var(--ease-out)}
.cgo svg{width:18px;height:18px}
.cgo:hover{transform:translateX(3px)} .cgo:active{transform:scale(.94)}
.ccard .acts{align-items:center}
.ccard .cbook{flex:0 1 auto;padding-left:22px;padding-right:22px}
/* services band */
#services.mist{background:linear-gradient(180deg,#EAF0F4,#E2E9EF)}
.h-svcs{gap:0}
.h-s{padding:4px 8px;border-right:1px solid rgba(66,75,84,.14)}
.h-s:last-child{border-right:none}
@media(max-width:1100px){.h-s:nth-child(5n){border-right:none}}
@media(max-width:560px){.h-s{border-right:none}}
/* about: client family/doctor photo fills the right side; only its left edge
   fades, so the people (left of the frame) stay clear of the copy */
.h-aboutband{position:relative;overflow:hidden;background:#fff}
.h-aboutband::after{content:"";position:absolute;top:0;bottom:0;right:0;left:max(46%,calc((100% - var(--maxw))/2 + 540px));z-index:0;
  background:url('clinic/home-about-client-o.jpg') 22% center/cover no-repeat;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18%);mask-image:linear-gradient(90deg,transparent 0,#000 18%)}
.h-aboutband .wrap{position:relative;z-index:1}
.h-about-copy{max-width:min(470px,40vw)}
.h-about-copy h2{font-size:clamp(2.1rem,3.8vw,3rem);margin-top:6px;line-height:1.06}
.h-rule{display:block;width:44px;height:3px;border-radius:2px;background:var(--brand);margin:18px 0 4px}
.h-about-copy .lede{margin:14px 0 26px}
@media(max-width:860px){
  .h-aboutband{padding-top:0}
  .h-aboutband::after{position:relative;display:block;left:auto;width:auto;height:240px;margin-top:30px;
    -webkit-mask-image:linear-gradient(180deg,#000 75%,transparent);mask-image:linear-gradient(180deg,#000 75%,transparent)}
  .h-about-copy{max-width:none}
}
/* split band: steel panel + light panel, one button each */
.h-sp.h-rx{background:linear-gradient(150deg,#5E7186,#46566A)}
.h-sp .ic{border:1.5px solid rgba(255,255,255,.3)}
.h-sp.h-fq .ic{border-color:#CBD5DE}
.h-choose{position:relative;margin-top:18px;display:inline-block}
.h-choose summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:12px;padding:12px 22px 12px 24px;
  border-radius:999px;font-weight:600;font-size:.92rem;transition:transform .2s var(--ease-out)}
.h-choose summary::-webkit-details-marker{display:none}
.h-choose summary svg{width:16px;height:16px;transition:transform .2s var(--ease-out)}
.h-choose[open] summary svg{transform:rotate(90deg)}
.h-choose summary:active{transform:scale(.97)}
.h-choose.light summary{background:#fff;color:var(--ink)}
.h-choose.dark summary{background:#5E7186;color:#fff}
.h-menu{position:absolute;left:0;top:calc(100% + 8px);z-index:5;min-width:220px;background:#fff;border-radius:var(--r);
  box-shadow:var(--sh-lg);border:1px solid var(--line);padding:6px}
.h-menu a{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;color:var(--ink);font-weight:600;font-size:.92rem}
.h-menu a:hover{background:var(--mist)}
.h-menu a i{width:10px;height:10px;border-radius:50%}
.h-menu a.w i{background:var(--w)} .h-menu a.b i{background:var(--b)} .h-menu a.t i{background:var(--t)}
/* Choose your clinic: map as a full-width band (Oct 2026) */
.h-mapwide{margin-bottom:24px}
.h-mapwide .frame{aspect-ratio:1100/430;border-radius:var(--r-xl)}
@media(max-width:600px){.h-mapwide .frame{aspect-ratio:1100/620;border-radius:var(--r-lg)}}
/* heading sits on the empty inland side of the map band */
.h-mapwide{position:relative}
.h-mapcap{position:absolute;left:clamp(28px,5%,64px);top:50%;transform:translateY(-50%);max-width:min(380px,36%);
  z-index:3;pointer-events:none}
.h-mapcap .eyebrow{color:rgba(255,255,255,.7)}
.h-mapcap .eyebrow::before{background:rgba(255,255,255,.55)}
.h-mapcap h2{color:#fff;margin-top:8px}
.h-mapcap .lede{color:rgba(255,255,255,.72);margin-top:12px}
@media(max-width:860px){
  .h-mapwide{display:flex;flex-direction:column-reverse;gap:22px}
  .h-mapcap{position:static;transform:none;max-width:none}
  .h-mapcap .eyebrow{color:var(--muted)} .h-mapcap .eyebrow::before{background:var(--acc)}
  .h-mapcap h2{color:var(--ink)} .h-mapcap .lede{color:var(--text)}
}

/* Botany light sage: white text keeps to the deep tone (mirrors Bexley) */

html[data-theme="botany"] .tel-pill svg,html[data-theme="botany"] .tk-i,html[data-theme="botany"] .tk-i svg{color:var(--t-deep)}
html[data-theme="botany"] .hero{background:linear-gradient(180deg,#F3F5F5 0%,#fff 100%)}

/* Header pinning on Android: overflow-x:hidden on body can make Chrome mobile
   drop position:sticky. clip prevents sideways scroll without that side effect. */
@supports (overflow:clip){body{overflow-x:clip}}

/* Botany #92A5A3 (client palette, 28 Oct 2026). White text was asked for, and
   white on #92A5A3 itself is only 2.3:1 — so every surface carrying white text
   uses a deeper shade of the same hue: #667372 (4.9:1) / #586362 (6.2:1). */
html[data-theme="botany"] .btn-acc{background:#667372;color:#fff;--ihb-fill:#586362}
html[data-theme="botany"] .btn-acc .bt2{color:#fff}
html[data-theme="botany"] .sw-pill.t[aria-current]{background:#667372;color:#fff}
html[data-theme="botany"] .mobile-bar a.book{background:#667372;color:#fff}
html[data-theme="botany"] .ctaband,
html[data-theme="botany"] .feecard.dark,
html[data-theme="botany"] .mv-card.mission,
html[data-theme="botany"] .svc.dark{background:linear-gradient(155deg,#667372,#586362);color:#fff}
html[data-theme="botany"] .ctaband h2,html[data-theme="botany"] .feecard.dark h3,html[data-theme="botany"] .feecard.dark b,
html[data-theme="botany"] .feecard.dark .big,html[data-theme="botany"] .mv-card.mission p,html[data-theme="botany"] .svc.dark h4{color:#fff}
html[data-theme="botany"] .ctaband p,html[data-theme="botany"] .feecard.dark p,html[data-theme="botany"] .feecard.dark li,
html[data-theme="botany"] .mv-card.mission .eyebrow,html[data-theme="botany"] .mv-card.mission small,
html[data-theme="botany"] .svc.dark p{color:rgba(255,255,255,.9)}
html[data-theme="botany"] .feecard.dark li svg{color:#fff}
html[data-theme="botany"] .mv-card.mission .eyebrow::before{background:rgba(255,255,255,.6)}
html[data-theme="botany"] .svc.dark .ic{background:rgba(255,255,255,.16);color:#fff}
html[data-theme="botany"] .ctaband .btn-onacc{background:#fff;color:#586362}
html[data-theme="botany"] .ctaband .btn-onacc-line{color:#fff;border-color:rgba(255,255,255,.4)}
html[data-theme="botany"] .ctaband .btn-onacc-line .bt2{color:#586362}
html[data-theme="botany"] .ctaband .btn-onacc-line{--ihb-fill:#fff}

/* Round 5 (30 Oct 2026) — tighter gaps between sections on the clinic pages */
:is(html[data-theme="waterloo"],html[data-theme="bexley"],html[data-theme="botany"]) .sec{padding:clamp(40px,4.6vw,66px) 0}
:is(html[data-theme="waterloo"],html[data-theme="bexley"],html[data-theme="botany"]) .sec-head{margin-bottom:clamp(22px,2.8vw,36px)}
.nowrap{white-space:nowrap}
/* receptionist initials (no photos until new ones arrive) */
.crew .p .mono{font-family:'Fraunces',Georgia,serif;font-weight:600;letter-spacing:.02em;
  background:linear-gradient(150deg,var(--acc-soft),var(--acc-tint));color:var(--acc-deep);border:1px solid var(--acc-tint)}
@media(max-width:580px){.arow.two{grid-template-columns:1fr}}
/* "Book at <clinic>": room for the sentence + phone on one line on desktop */
.ctaband p{max-width:66ch}
/* an opened bio no longer stretches every card in its row */
.tgrid{align-items:start}
/* Round 5b — two white (or two mist) sections in a row no longer double the gap,
   e.g. Front desk → Fees & billing */
:is(html[data-theme="waterloo"],html[data-theme="bexley"],html[data-theme="botany"]) .sec:not(.mist):not(.ctaband)+.sec:not(.mist):not(.ctaband),
:is(html[data-theme="waterloo"],html[data-theme="bexley"],html[data-theme="botany"]) .sec.mist+.sec.mist{padding-top:0}
:is(html[data-theme="waterloo"],html[data-theme="bexley"],html[data-theme="botany"]) .crew{margin-bottom:0}
/* Bigger allied-health and practice-manager photos (client, 30 Oct 2026) */
.ally{gap:20px;padding:20px}
.ally img,.ally .mono{width:120px;height:120px;border-radius:20px}
.ally .mono{font-size:1.9rem}
.lead-card{gap:26px;padding:26px 30px}
.lead-card img,.lead-card .mono{width:132px;height:132px}
@media(max-width:520px){
  .ally{flex-direction:column;align-items:center;text-align:center}
  .ally img,.ally .mono{width:140px;height:140px}
  .ally .bioT{align-self:center}
  .lead-card{flex-direction:column;text-align:center}
  .lead-card img,.lead-card .mono{width:140px;height:140px}
}

/* Back-to-top arrow (30 Oct 2026) */
.totop{position:fixed;right:22px;bottom:24px;z-index:96;width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;
  display:grid;place-items:center;background:var(--acc-deep);color:#fff;box-shadow:0 14px 30px -12px rgba(20,25,29,.55);
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .25s var(--ease-out),transform .25s var(--ease-out),visibility .25s}
.totop.show{opacity:1;visibility:visible;transform:none}
.totop:hover{filter:brightness(1.12)}
.totop:active{transform:scale(.94)}
.totop:focus-visible{outline:3px solid var(--acc);outline-offset:3px}
.totop svg{width:22px;height:22px}
html[data-theme="botany"] .totop{background:#586362}
/* phones: sit above the Call / Book Now bar */
@media(max-width:760px){.totop{right:16px;bottom:74px;width:48px;height:48px}}
@media(prefers-reduced-motion:reduce){.totop{transition:none}}
@media print{.totop{display:none!important}}
.totop{border:2px solid rgba(255,255,255,.85)}
.rev .who .av .glogo{width:22px;height:22px}

/* Botany = Laminex L4 "Bluegrass" #91A5A5 (client finishes board, 4 Nov 2026).
   Light tone, so buttons and panels carry near-black text (6.3:1); white text on
   it would be 2.6:1. Headline accents use a deeper L4 (#6E8686, 3.9:1 large text);
   small text/links use --t-deep #5A7171 (5.2:1). Supersedes the #667372 block above. */
html[data-theme="botany"] .em{color:#6E8686}
html[data-theme="botany"] .btn-acc{background:#91A5A5;color:#1B2126;--ihb-fill:#A3B5B5}
html[data-theme="botany"] .btn-acc .bt2{color:#1B2126}
html[data-theme="botany"] .sw-pill.t[aria-current]{background:#91A5A5;color:#1B2126}
html[data-theme="botany"] .mobile-bar a.book,html[data-theme="botany"] .hdr-mbar a.book{background:#91A5A5;color:#1B2126}
html[data-theme="botany"] .ctaband,
html[data-theme="botany"] .feecard.dark,
html[data-theme="botany"] .mv-card.mission,
html[data-theme="botany"] .svc.dark{background:linear-gradient(155deg,#A3B5B5,#91A5A5);color:#1B2126}
html[data-theme="botany"] .ctaband h2,html[data-theme="botany"] .feecard.dark h3,html[data-theme="botany"] .feecard.dark b,
html[data-theme="botany"] .feecard.dark .big,html[data-theme="botany"] .mv-card.mission p,html[data-theme="botany"] .svc.dark h4{color:#1B2126}
html[data-theme="botany"] .ctaband p,html[data-theme="botany"] .feecard.dark p,html[data-theme="botany"] .feecard.dark li,
html[data-theme="botany"] .mv-card.mission .eyebrow,html[data-theme="botany"] .mv-card.mission small,
html[data-theme="botany"] .svc.dark p{color:rgba(27,33,38,.82)}
html[data-theme="botany"] .feecard.dark li svg{color:#1B2126}
html[data-theme="botany"] .mv-card.mission .eyebrow::before{background:rgba(27,33,38,.5)}
html[data-theme="botany"] .svc.dark .ic{background:rgba(255,255,255,.45);color:#1B2126}
html[data-theme="botany"] .ctaband .btn-onacc{background:#1B2126;color:#fff}
html[data-theme="botany"] .ctaband .btn-onacc-line{color:#1B2126;border-color:rgba(27,33,38,.35);--ihb-fill:#1B2126}
html[data-theme="botany"] .ctaband .btn-onacc-line .bt2{color:#fff}
html[data-theme="botany"] .totop{background:#91A5A5;color:#1B2126}

/* Phone action bar pinned at the TOP, inside the sticky header (client, 4 Nov 2026) */
.hdr .mobile-bar{position:static;box-shadow:none;border-top:1px solid var(--line);display:none}
@media(max-width:760px){
  .hdr .mobile-bar{display:flex}
  .hdr .mobile-bar a{padding:12px 6px;min-height:46px}
  body{padding-bottom:0}
  .totop{bottom:22px}
}

/* Go-live: keyword kicker line inside the H1 (keeps "medical centre + suburb" in the H1) */
h1 .h1k{display:flex;width:max-content;max-width:100%;margin-bottom:16px;font-family:'Figtree',system-ui,sans-serif;
  font-style:normal;line-height:1.4;letter-spacing:.14em;white-space:normal}

/* Botany = #2F6B52 deep green (client, 6 Nov 2026) — supersedes the L4 #91A5A5 block.
   Dark tone, so white text everywhere (6.3:1 on #2F6B52). */
html[data-theme="botany"]{--on-acc:#FFFFFF;--on-acc-soft:rgba(255,255,255,.9);--on-acc-line:rgba(255,255,255,.26);--on-acc-fill:rgba(255,255,255,.14)}
html[data-theme="botany"] .em{color:#2F6B52}
html[data-theme="botany"] .btn-acc{background:#2F6B52;color:#fff;--ihb-fill:#214C3A}
html[data-theme="botany"] .btn-acc .bt2{color:#fff}
html[data-theme="botany"] .sw-pill.t[aria-current]{background:#2F6B52;color:#fff}
html[data-theme="botany"] .mobile-bar a.book,html[data-theme="botany"] .hdr-mbar a.book{background:#2F6B52;color:#fff}
html[data-theme="botany"] .ctaband,
html[data-theme="botany"] .feecard.dark,
html[data-theme="botany"] .mv-card.mission,
html[data-theme="botany"] .svc.dark{background:linear-gradient(155deg,#2F6B52,#214C3A);color:#fff}
html[data-theme="botany"] .ctaband h2,html[data-theme="botany"] .feecard.dark h3,html[data-theme="botany"] .feecard.dark b,
html[data-theme="botany"] .feecard.dark .big,html[data-theme="botany"] .mv-card.mission p,html[data-theme="botany"] .svc.dark h4{color:#fff}
html[data-theme="botany"] .ctaband p,html[data-theme="botany"] .feecard.dark p,html[data-theme="botany"] .feecard.dark li,
html[data-theme="botany"] .mv-card.mission .eyebrow,html[data-theme="botany"] .mv-card.mission small,
html[data-theme="botany"] .svc.dark p{color:rgba(255,255,255,.9)}
html[data-theme="botany"] .feecard.dark li svg{color:#fff}
html[data-theme="botany"] .mv-card.mission .eyebrow::before{background:rgba(255,255,255,.6)}
html[data-theme="botany"] .svc.dark .ic{background:rgba(255,255,255,.16);color:#fff}
html[data-theme="botany"] .ctaband .btn-onacc{background:#fff;color:#214C3A}
html[data-theme="botany"] .ctaband .btn-onacc-line{color:#fff;border-color:rgba(255,255,255,.4);--ihb-fill:#fff}
html[data-theme="botany"] .ctaband .btn-onacc-line .bt2{color:#214C3A}
html[data-theme="botany"] .btn-onacc{background:#fff;color:#214C3A}
html[data-theme="botany"] .totop{background:#2F6B52;color:#fff}
html[data-theme="botany"] .svc.acl .acl-logo{box-shadow:0 10px 24px -14px rgba(0,0,0,.45)}
