/* ============================================================================
   BALLARAT DOCTORS — SHARED SERVICE PAGE STYLESHEET
   One file for all 37 service pages. Each page sets data-theme on <html>;
   everything below is driven by the --accent* tokens so no page carries
   its own CSS. Every text/ground pair in every theme is contrast-checked.
   ============================================================================ */

:root{
  /* site chrome — identical on every page */
  --navy:#0B1E36; --bar-1:#0B2A42; --bar-2:#0E5A7A; --bar-3:#0A3C57;
  --cyan:#00B4D8; --cyan-ink:#08698A;
  --mc-green:#00703C; --mc-gold:#FFC425;

  --white:#FFFFFF;
  --display:"Figtree","Helvetica Neue",Helvetica,Arial,sans-serif;
  --body:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
  --shell:1200px;
  --gutter:clamp(18px,4vw,48px);
  --ease:cubic-bezier(.22,.61,.28,1);
}

/* ---------------------------------------------------------------- THEMES --
   tint      page canvas          tint-2  alternating band
   soft      chips / icon tiles   line    hairlines
   lite      DECORATIVE ONLY (fails as text — never used for type)
   accent    brand colour         ink     small accent text on light
   btn       button fill (white label ≥4.5:1)    head  headings   body  prose
   -------------------------------------------------------------------------- */
[data-theme="rose"]{
  --tint:#FFF7FA; --tint-2:#FDEDF3; --soft:#FADCE7; --line:#F0DEE7; --line-a:#F3CBDB;
  --lite:#E8608A; --accent:#C2185B; --ink:#A8356B; --btn:#B0356E; --btn-hi:#9C2B62;
  --head:#8C2B55; --deep:#6B1F42; --text:#4A3140; --muted:#7A5D6E; --prose:#6E5462;
  --glow:232,96,138;
}
[data-theme="blue"]{
  --tint:#F5FAFD; --tint-2:#E8F4FB; --soft:#D6EDF8; --line:#DCE9F1; --line-a:#BFE2F2;
  --lite:#4FC3E8; --accent:#0B6E96; --ink:#08698A; --btn:#0B6E96; --btn-hi:#08596F;
  --head:#0B2A42; --deep:#0B1E36; --text:#26384A; --muted:#5D7285; --prose:#3E5468;
  --glow:79,195,232;
}
[data-theme="green"]{
  --tint:#F6FBF8; --tint-2:#E9F5EE; --soft:#D5EDDF; --line:#DDEBE3; --line-a:#BEE0CC;
  --lite:#70C094; --accent:#2F7551; --ink:#2A6B4A; --btn:#32734F; --btn-hi:#265C3E;
  --head:#123A27; --deep:#0E2E1E; --text:#243A2E; --muted:#587065; --prose:#3B5648;
  --glow:112,192,148;
}
[data-theme="amber"]{
  --tint:#FFFBF4; --tint-2:#FDF3E3; --soft:#FAE6C8; --line:#F0E4D2; --line-a:#EDD4AE;
  --lite:#E3A34B; --accent:#8A5312; --ink:#7E4B10; --btn:#8A5312; --btn-hi:#6F420E;
  --head:#5A3708; --deep:#432905; --text:#3E3020; --muted:#7A6547; --prose:#5A4832;
  --glow:227,163,75;
}
[data-theme="plum"]{
  --tint:#FBF8FD; --tint-2:#F4EDFA; --soft:#E8DCF4; --line:#E7DDEF; --line-a:#D6C3E8;
  --lite:#A97BD1; --accent:#6B3A93; --ink:#63358A; --btn:#6B3A93; --btn-hi:#562E77;
  --head:#3F1F5C; --deep:#2F1745; --text:#332740; --muted:#6B5A7C; --prose:#4D3F5C;
  --glow:169,123,209;
}
[data-theme="teal"]{
  --tint:#F4FBFB; --tint-2:#E6F5F5; --soft:#D0EDED; --line:#D9EAEA; --line-a:#B6E0E0;
  --lite:#48B3B3; --accent:#186767; --ink:#14605F; --btn:#186767; --btn-hi:#115050;
  --head:#0C3B3B; --deep:#082C2C; --text:#1F3838; --muted:#557070; --prose:#365252;
  --glow:72,179,179;
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--tint);color:var(--text);
  font-family:var(--body);font-size:16.5px;line-height:1.72;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit}
button,select,input{font:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--display);margin:0;text-wrap:balance;
  font-weight:800;letter-spacing:-.03em;line-height:1.12;color:var(--head)}
p{margin:0}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.shell{max-width:var(--shell);margin-inline:auto;padding-inline:var(--gutter)}
.sec{padding-block:clamp(3.4rem,7vw,5.8rem);position:relative}
.sec.band{background:var(--tint-2)}
.eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink);margin-bottom:.8rem;display:flex;align-items:center;gap:.8em}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--lite);flex:none}
.sec-head{margin-bottom:clamp(1.9rem,3.6vw,2.8rem);max-width:64ch}
.sec-head h2{font-size:clamp(1.8rem,3.5vw,2.6rem);margin-bottom:.8rem}
.lede{font-size:clamp(1.02rem,1.45vw,1.14rem);color:var(--prose);max-width:62ch}
.mid{margin-inline:auto;text-align:center}
.mid .eyebrow{justify-content:center}
.mid .lede{margin-inline:auto}
.prose p{color:var(--prose);margin-bottom:1rem;max-width:68ch}
.prose p:last-child{margin-bottom:0}
.prose b{color:var(--deep);font-weight:700}

.anim .rv{opacity:0;transform:translateY(18px)}
.anim .rv.on{opacity:1;transform:none;transition:opacity .7s var(--ease),transform .8s var(--ease)}
.anim .rv-1.on{transition-delay:.08s}.anim .rv-2.on{transition-delay:.16s}
.anim .rv-3.on{transition-delay:.24s}.anim .rv-4.on{transition-delay:.32s}
@media (prefers-reduced-motion:reduce){
  .anim .rv{opacity:1!important;transform:none!important;transition:none!important}
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}
  .drift,.burst{display:none!important}
}

/* --------------------------------------------------------------- BUTTONS -- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  font-family:var(--body);font-weight:700;font-size:.95rem;padding:.95em 1.6em;
  border-radius:999px;border:1.5px solid transparent;text-decoration:none;cursor:pointer;
  white-space:nowrap;transition:background .25s,color .25s,border-color .25s,transform .25s var(--ease),box-shadow .25s}
.btn svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.btn-a{background:var(--btn);color:#fff;border-color:var(--btn);box-shadow:0 6px 18px rgba(var(--glow),.28)}
.btn-a:hover{background:var(--btn-hi);border-color:var(--btn-hi);transform:translateY(-2px);box-shadow:0 10px 26px rgba(var(--glow),.38)}
.btn-o{background:#fff;color:var(--head);border-color:var(--line-a)}
.btn-o:hover{border-color:var(--accent);color:var(--accent)}
.btn-g{background:rgba(255,255,255,.72);color:var(--head);border-color:var(--line-a)}
.btn-g:hover{background:#fff;border-color:var(--accent)}
.btn-sm{padding:.7em 1.15em;font-size:.86rem}

/* ------------------------------------------------------- CHROME + PROGRESS -- */
.progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:120;
  background:linear-gradient(90deg,var(--lite),var(--accent));transition:width .1s linear}
.ticker{position:relative;overflow:hidden;background:linear-gradient(90deg,var(--bar-1),var(--bar-2) 45%,var(--bar-3));color:#fff}
.ticker-track{display:flex;width:max-content;animation:slide 44s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}
.ticker-set{display:flex;align-items:center;flex:none}
.ticker-set span{font-weight:800;font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;padding:.6rem 0;white-space:nowrap}
.ticker-set i{display:block;width:5px;height:5px;border-radius:50%;background:#fff;margin:0 1.25rem;flex:none;opacity:.8}
/* the Medicare green marquee, same as the homepage */
.ticker.green{background:var(--mc-green);color:#FFFFFF;border-block:3px solid var(--mc-gold)}
.ticker.green .ticker-set span{color:#FFFFFF;font-size:.9rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;padding:.82rem 0}
.ticker.green .ticker-set span.hl{background:var(--mc-gold);color:#0A3D22;padding:.45em 1.25em;
  margin:.3rem 0;border-radius:999px}
.ticker.green .ticker-set i{
  width:96px;height:12px;border-radius:0;margin:0;background:none;opacity:1;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 12' fill='none' stroke='%23FFC425' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'><path d='M0 6h9l2.5-5 3 10 2.5-5h17'/></svg>");
  background-repeat:no-repeat;background-position:center;background-size:34px 12px}
.ticker.green.rev .ticker-track{animation-direction:reverse;animation-duration:56s}
@media (max-width:620px){
  .ticker.green .ticker-set span{font-size:.78rem}
  .ticker.green .ticker-set i{width:64px}
}

.hdr{position:sticky;top:0;z-index:60;background:#fff;border-bottom:1px solid var(--line);transition:box-shadow .4s}
.hdr.solid{box-shadow:0 1px 18px rgba(11,30,54,.08)}
.hdr-in{display:flex;align-items:center;gap:clamp(12px,2vw,28px);padding-block:.85rem}
.hdr-logo{height:38px;width:auto;flex:none}
.hdr-nav{flex:1;display:flex;justify-content:flex-start;min-width:0}
.hdr-nav ul{list-style:none;display:flex;align-items:center;gap:clamp(12px,1.9vw,30px);margin:0;padding:0}
.hdr-nav a{font-size:.92rem;font-weight:600;color:var(--navy);text-decoration:none;padding:.35em 0;position:relative;white-space:nowrap;transition:color .25s}
.hdr-nav a:hover,.hdr-nav a.here{color:var(--accent)}
.hdr-nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.hdr-nav a:hover::after,.hdr-nav a.here::after{transform:scaleX(1)}
.hdr-tel{display:inline-flex;align-items:center;gap:.5em;font-weight:700;font-size:.9rem;background:var(--cyan);color:var(--navy);
  border-radius:999px;padding:.62rem 1.05rem;text-decoration:none;white-space:nowrap;transition:background .25s,transform .25s var(--ease)}
.hdr-tel:hover{background:#25C4E6;transform:translateY(-1px)}
.hdr-tel svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.hdr-burger{display:none;background:none;border:0;padding:10px;cursor:pointer;margin-left:auto}
.hdr-burger span{display:block;width:22px;height:2px;background:var(--navy);margin:4.5px 0;border-radius:2px}
@media (max-width:1040px){.hdr-nav,.hdr-tel,.hdr-in .btn{display:none}.hdr-burger{display:block}}
.drawer{position:fixed;inset:0;z-index:90;background:#fff;padding:5rem var(--gutter) 6rem;overflow:auto;transform:translateY(-100%);transition:transform .45s var(--ease)}
.drawer.open{transform:none}
.drawer a{display:flex;justify-content:space-between;align-items:center;font-family:var(--display);font-size:1.45rem;font-weight:800;color:var(--navy);text-decoration:none;padding:.6rem 0;border-bottom:1px solid var(--line)}
.drawer-x{position:absolute;top:18px;right:var(--gutter);width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:1.3rem;cursor:pointer;color:var(--navy)}
.drawer-cta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.8rem}

/* ------------------------------------------------------------ DECORATION -- */
.drift{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.drift i{position:absolute;top:-8%;width:11px;height:15px;border-radius:60% 0 60% 0;
  background:var(--soft);opacity:.6;animation:fall var(--dur,18s) linear infinite;animation-delay:var(--dly,0s)}
@keyframes fall{0%{transform:translate3d(0,-10vh,0) rotate(0);opacity:0}10%{opacity:.7}
  100%{transform:translate3d(var(--dx,40px),115vh,0) rotate(540deg);opacity:0}}
.burst{position:fixed;width:11px;height:14px;border-radius:60% 0 60% 0;pointer-events:none;z-index:200;
  background:var(--lite);animation:burst .95s var(--ease) forwards}
@keyframes burst{0%{opacity:1;transform:translate(0,0) rotate(0) scale(1)}
  100%{opacity:0;transform:translate(var(--bx),var(--by)) rotate(var(--br)) scale(.4)}}

/* ------------------------------------------------------------------ HERO -- */
.hero{position:relative;overflow:hidden;background:
  radial-gradient(1100px 620px at 82% 8%, var(--tint-2) 0%, transparent 62%),
  radial-gradient(900px 560px at 8% 92%, var(--tint-2) 0%, transparent 60%),
  linear-gradient(180deg,var(--tint-2) 0%, var(--tint) 78%)}
.hero-in{position:relative;z-index:2;padding-block:clamp(3rem,7vw,5.4rem) clamp(2.6rem,6vw,4.4rem);
  display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(2rem,5vw,4rem);align-items:center}
@media (max-width:960px){.hero-in{grid-template-columns:1fr;gap:2.4rem}}
.hero h1{font-size:clamp(2.3rem,5.4vw,4rem);margin-bottom:1.1rem;max-width:15ch}
.hero h1 em{font-style:italic;font-weight:700;color:var(--accent)}
.hero-sub{font-size:clamp(1.06rem,1.6vw,1.24rem);color:var(--prose);max-width:48ch;margin-bottom:2rem;line-height:1.65}
.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem}
.hero-art{position:relative;min-height:320px;display:grid;place-items:center}
.hero-art .ring{position:absolute;border-radius:50%;border:1.5px dashed var(--line-a);animation:spin 60s linear infinite}
.hero-art .ring.a{inset:2%}
.hero-art .ring.b{inset:16%;animation-duration:44s;animation-direction:reverse;border-style:solid;border-color:var(--soft)}
@keyframes spin{to{transform:rotate(360deg)}}
.hero-art .core{position:relative;z-index:2;width:min(74%,300px);aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle at 34% 30%, #fff 0%, var(--tint-2) 52%, var(--soft) 100%);
  display:grid;place-items:center;box-shadow:0 18px 50px rgba(var(--glow),.22)}
.hero-art .core svg{width:56%;height:auto;fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.hero-art .core svg *{stroke-dasharray:var(--len,400);stroke-dashoffset:var(--len,400)}
.hero-art.on .core svg *{animation:draw 2s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* ----------------------------------------------------------------- STATS -- */
.stats{background:#fff;border-block:1px solid var(--line)}
.stats-in{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:820px){.stats-in{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat{padding:clamp(1.4rem,3vw,2.2rem) clamp(.8rem,2vw,1.6rem);border-left:1px solid var(--line);text-align:center;position:relative;overflow:hidden}
.stats-in>.stat:first-child{border-left:0}
@media (max-width:820px){.stat:nth-child(odd){border-left:0}.stat:nth-child(n+3){border-top:1px solid var(--line)}}
.stat b{display:block;font-family:var(--display);font-size:clamp(1.7rem,3.6vw,2.7rem);font-weight:900;
  color:var(--btn);letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.stat span{display:block;font-size:.85rem;color:var(--prose);margin-top:.45rem;line-height:1.4}
.stat::after{content:"";position:absolute;left:50%;bottom:0;width:0;height:2px;background:var(--lite);transform:translateX(-50%);transition:width .8s var(--ease)}
.stat.on::after{width:44%}

/* -------------------------------------------------------------- JUMP NAV -- */
.jump{position:sticky;top:0;z-index:50;background:var(--tint);background:color-mix(in srgb,var(--tint) 93%,transparent);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-block:1px solid var(--line)}
.jump-in{display:flex;gap:.4rem;overflow-x:auto;scrollbar-width:none;padding-block:.65rem}
.jump-in::-webkit-scrollbar{display:none}
.jump a{flex:none;font-size:.85rem;font-weight:700;color:var(--prose);text-decoration:none;padding:.5rem .95rem;
  border-radius:999px;border:1px solid transparent;white-space:nowrap;transition:background .25s,color .25s,border-color .25s}
.jump a:hover{color:var(--accent);background:var(--tint-2)}
.jump a.active{background:var(--btn);color:#fff;border-color:var(--btn)}

/* --------------------------------------------------------- CONCERN PICKER -- */
.chips{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:1.6rem}
.chips button{background:#fff;border:1.5px solid var(--line-a);border-radius:999px;padding:.68rem 1.15rem;
  font-size:.9rem;font-weight:600;color:var(--head);cursor:pointer;transition:all .25s var(--ease)}
.chips button:hover{border-color:var(--accent);transform:translateY(-2px)}
.chips button[aria-pressed="true"]{background:var(--btn);border-color:var(--btn);color:#fff}
.pick-out{background:#fff;border:1px solid var(--line-a);border-radius:20px;padding:clamp(1.4rem,3vw,2.2rem);
  box-shadow:0 8px 24px rgba(var(--glow),.1);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;align-items:center}
@media (max-width:760px){.pick-out{grid-template-columns:1fr}}
.pick-out h3{font-size:clamp(1.15rem,1.9vw,1.4rem);margin-bottom:.5rem}
.pick-out p{color:var(--prose);font-size:.97rem}
.pick-out .who{margin-top:.9rem;font-size:.88rem;color:var(--ink);font-weight:700}
.fade{animation:fadeUp .45s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ------------------------------------------------------------ STAGE TABS -- */
.age-wrap{background:#fff;border:1px solid var(--line-a);border-radius:20px;padding:clamp(1.3rem,3vw,2rem);
  box-shadow:0 8px 24px rgba(var(--glow),.08);margin-bottom:1.4rem}
.age-top{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.4rem}
.age-top label{font-size:.9rem;font-weight:700;color:var(--head)}
.age-val{font-family:var(--display);font-weight:900;font-size:clamp(1.5rem,3vw,2.1rem);color:var(--btn);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.age-val small{font-size:.5em;font-weight:700;color:var(--muted);margin-left:.25em}
.age-range{-webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:999px;margin:.7rem 0 .4rem;
  background:linear-gradient(90deg,var(--btn) var(--pct,20%),var(--soft) var(--pct,20%));cursor:pointer}
.age-range::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;
  border:3px solid var(--btn);box-shadow:0 3px 10px rgba(var(--glow),.45);cursor:grab;transition:transform .2s}
.age-range::-webkit-slider-thumb:active{transform:scale(1.15);cursor:grabbing}
.age-range::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:#fff;border:3px solid var(--btn);box-shadow:0 3px 10px rgba(var(--glow),.45)}
.age-ticks{display:flex;justify-content:space-between;font-size:.72rem;color:var(--muted);font-weight:600}
.stage-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.8rem}
.stage-tabs button{background:#fff;border:1.5px solid var(--line-a);border-radius:14px;padding:.85rem 1.2rem;cursor:pointer;
  text-align:left;font-weight:700;font-size:.92rem;color:var(--head);transition:all .3s var(--ease)}
.stage-tabs button small{display:block;font-weight:500;font-size:.76rem;color:var(--muted);margin-top:.12rem}
.stage-tabs button:hover{transform:translateY(-3px);border-color:var(--accent)}
.stage-tabs button[aria-selected="true"]{background:var(--btn);border-color:var(--btn);color:#fff;box-shadow:0 10px 26px rgba(var(--glow),.25)}
.stage-tabs button[aria-selected="true"] small{color:rgba(255,255,255,.82)}
.stage-panel{background:#fff;border:1px solid var(--line-a);border-radius:20px;padding:clamp(1.5rem,3vw,2.4rem);box-shadow:0 8px 24px rgba(var(--glow),.1)}
.stage-panel h3{font-size:clamp(1.25rem,2.2vw,1.6rem);margin-bottom:.7rem}
.stage-panel>p{color:var(--prose);max-width:64ch;margin-bottom:1.3rem}
.stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:.7rem}
.stage-grid div{background:var(--tint-2);border:1px solid var(--line-a);border-radius:12px;padding:.85rem 1rem;
  font-size:.9rem;font-weight:600;color:var(--head);display:flex;align-items:flex-start;gap:.6em}
.stage-grid svg{width:16px;height:16px;flex:none;margin-top:.22em;fill:none;stroke:var(--accent);stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}

/* --------------------------------------------------------- SERVICE ACCORD -- */
.acc{display:grid;gap:.7rem;max-width:920px;margin-inline:auto}
.acc-item{background:#fff;border:1.5px solid var(--line);border-radius:18px;overflow:hidden;transition:border-color .3s,box-shadow .3s var(--ease)}
.acc-item.open{border-color:var(--accent);box-shadow:0 18px 42px rgba(var(--glow),.16)}
.acc-q{width:100%;display:flex;align-items:center;gap:1rem;background:none;border:0;cursor:pointer;text-align:left;padding:1.05rem 1.3rem;font:inherit}
.acc-ico{width:44px;height:44px;flex:none;border-radius:13px;background:var(--soft);display:grid;place-items:center;transition:background .35s var(--ease),transform .5s var(--ease)}
.acc-ico svg{width:21px;height:21px;fill:none;stroke:var(--btn);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:stroke .35s}
.acc-item.open .acc-ico{background:var(--btn);transform:rotate(-6deg) scale(1.06)}
.acc-item.open .acc-ico svg{stroke:#fff}
.acc-t{flex:1;min-width:0}
.acc-t b{display:block;font-family:var(--display);font-size:1.04rem;font-weight:800;color:var(--head);line-height:1.3}
.acc-t span{display:block;font-size:.86rem;color:var(--muted);margin-top:.1rem}
.acc-x{flex:none;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line-a);display:grid;place-items:center;
  transition:transform .45s var(--ease),background .35s,border-color .35s}
.acc-x svg{width:11px;height:11px;fill:none;stroke:var(--btn);stroke-width:2.4;stroke-linecap:round;transition:stroke .3s}
.acc-item.open .acc-x{transform:rotate(135deg);background:var(--btn);border-color:var(--btn)}
.acc-item.open .acc-x svg{stroke:#fff}
.acc-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
.acc-item.open .acc-a{grid-template-rows:1fr}
.acc-a>div{overflow:hidden}
.acc-body{padding:0 1.3rem 1.4rem 4.3rem}
.acc-body p{color:var(--prose);margin-bottom:.9rem;font-size:.96rem}
.acc-body p:last-of-type{margin-bottom:0}
.acc-body b{color:var(--deep);font-weight:700}
.acc-body ul{margin:.2rem 0 1rem;padding-left:1.1rem;color:var(--prose);font-size:.95rem}
.acc-body li{margin-bottom:.35rem}
.cta-row{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.1rem}
@media (max-width:560px){.acc-body{padding-left:1.3rem}}

/* --------------------------------------------------------------- STEPPER -- */
.step-wrap{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(1.6rem,4vw,3.4rem);align-items:start}
@media (max-width:900px){.step-wrap{grid-template-columns:1fr}}
.step-rail{display:grid;gap:.5rem}
.step-btn{display:flex;align-items:center;gap:.9rem;width:100%;text-align:left;cursor:pointer;background:#fff;
  border:1.5px solid var(--line);border-radius:14px;padding:.85rem 1rem;font:inherit;transition:border-color .3s,background .3s,transform .3s var(--ease)}
.step-btn:hover{transform:translateX(3px);border-color:var(--line-a)}
.step-btn[aria-selected="true"]{border-color:var(--accent);background:var(--tint-2)}
.step-btn i{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;font-style:normal;
  font-weight:800;font-size:.85rem;background:var(--soft);color:var(--btn);transition:background .35s,color .35s}
.step-btn[aria-selected="true"] i{background:var(--btn);color:#fff}
.step-btn b{font-size:.94rem;font-weight:700;color:var(--head)}
.step-view{background:#fff;border:1px solid var(--line-a);border-radius:20px;padding:clamp(1.5rem,3vw,2.3rem);
  box-shadow:0 8px 24px rgba(var(--glow),.1);min-height:260px}
.step-view h3{font-size:clamp(1.2rem,2vw,1.5rem);margin-bottom:.8rem}
.step-view p{color:var(--prose);margin-bottom:.9rem}
.step-view ul{margin:.2rem 0 1rem;padding-left:1.1rem;color:var(--prose);font-size:.95rem}
.step-view b{color:var(--deep);font-weight:700}
.step-view .tip{background:var(--tint-2);border-left:3px solid var(--accent);border-radius:0 12px 12px 0;
  padding:.9rem 1.1rem;font-size:.92rem;color:var(--deep);margin-top:1.1rem}

/* --------------------------------------------------------------- DOCTORS -- */
.gp-filter{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;align-items:center}
.gp-filter span{font-size:.85rem;color:var(--muted);font-weight:600;margin-right:.3rem}
.gp-filter button{background:#fff;border:1.5px solid var(--line-a);border-radius:999px;padding:.5rem 1rem;
  font-size:.86rem;font-weight:600;color:var(--head);cursor:pointer;transition:all .25s}
.gp-filter button[aria-pressed="true"]{background:var(--btn);border-color:var(--btn);color:#fff}
.gps{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:clamp(14px,2vw,20px)}
.gp{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 8px 24px rgba(var(--glow),.1);transform-style:preserve-3d;
  transition:border-color .3s,transform .35s var(--ease),box-shadow .35s var(--ease)}
.gp:hover{border-color:var(--accent);box-shadow:0 18px 42px rgba(var(--glow),.2)}
.gp-ph{position:relative;aspect-ratio:4/3.6;overflow:hidden;background:var(--soft)}
.gp-ph img{width:100%;height:100%;object-fit:cover;object-position:50% 20%;transition:transform .8s var(--ease)}
.gp:hover .gp-ph img{transform:scale(1.05)}
.gp-body{padding:1rem 1.1rem 1.2rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.gp-name{font-family:var(--display);font-size:1.03rem;font-weight:800;color:var(--head);line-height:1.25}
.gp-qual{font-size:.76rem;font-weight:600;color:var(--ink)}
.gp-tag{align-self:flex-start;background:var(--soft);color:var(--deep);border:1px solid var(--line-a);
  font-size:.68rem;font-weight:800;padding:.3em .6em;border-radius:8px;margin:.3rem 0 .1rem}
.gp-bio{font-size:.85rem;color:var(--prose);line-height:1.55}
.gp-lang{font-size:.76rem;color:var(--muted);margin-top:.2rem}
.gp-lang b{color:var(--prose);font-weight:600}
.gp-acts{margin-top:auto;padding-top:1rem}
.gp-acts .btn{width:100%;padding:.75em .5em;font-size:.86rem}

/* -------------------------------------------------------------- TIMELINE -- */
.tl{display:grid;gap:0;max-width:820px;margin-inline:auto;position:relative}
.tl::before{content:"";position:absolute;left:21px;top:22px;bottom:22px;width:2px;background:var(--line-a);border-radius:2px}
.tl-fill{position:absolute;left:21px;top:22px;width:2px;height:0;border-radius:2px;z-index:0;
  background:linear-gradient(180deg,var(--lite),var(--btn));box-shadow:0 0 10px rgba(var(--glow),.45)}
.tl-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.2rem;padding-bottom:1.9rem;position:relative}
.tl-item:last-child{padding-bottom:0}
.tl-dot{width:44px;height:44px;border-radius:50%;background:var(--soft);border:2px solid var(--line-a);display:grid;place-items:center;
  flex:none;position:relative;z-index:2;transition:background .45s var(--ease),border-color .45s,transform .5s var(--ease),box-shadow .45s}
.tl-dot svg{width:20px;height:20px;fill:none;stroke:var(--btn);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:stroke .45s}
.tl-item.lit .tl-dot{background:var(--btn);border-color:var(--btn);transform:scale(1.09);box-shadow:0 6px 18px rgba(var(--glow),.35)}
.tl-item.lit .tl-dot svg{stroke:#fff}
.tl-dot svg path,.tl-dot svg circle{stroke-dasharray:60;stroke-dashoffset:0}
.tl-item.lit .tl-dot svg path,.tl-item.lit .tl-dot svg circle{animation:trace .9s var(--ease) both}
@keyframes trace{from{stroke-dashoffset:60}to{stroke-dashoffset:0}}
.tl-item.lit .tl-dot::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid var(--lite);opacity:0;animation:tlRing 2.4s var(--ease) infinite}
@keyframes tlRing{0%{transform:scale(.85);opacity:.65}70%{transform:scale(1.35);opacity:0}100%{opacity:0}}
.tl-body{padding:.15rem .9rem .15rem 0;transition:opacity .5s var(--ease)}
.tl-body h3{font-size:1.1rem;margin-bottom:.35rem}
.tl-body p{color:var(--prose);font-size:.96rem}
.anim .tl-item{opacity:0;transform:translateX(-22px)}
.anim .tl-item.on{opacity:1;transform:none;transition:opacity .65s var(--ease),transform .7s var(--ease)}
.tl-item:not(.lit) .tl-body{opacity:.62}
.tl-item.lit .tl-body{opacity:1}
@media (prefers-reduced-motion:reduce){
  .anim .tl-item{opacity:1!important;transform:none!important}
  .tl-item:not(.lit) .tl-body{opacity:1}
  .tl-fill{display:none}
}

/* ---------------------------------------------------------- COST/FAQ/CTA -- */
.cost{background:#fff;border:1px solid var(--line-a);border-radius:20px;padding:clamp(1.6rem,3.4vw,2.6rem);
  max-width:900px;margin-inline:auto;box-shadow:0 8px 24px rgba(var(--glow),.1)}
.cost h2{font-size:clamp(1.5rem,2.8vw,2rem);margin-bottom:.8rem}
.cost p{color:var(--prose)}
.cost b{color:var(--deep)}
.cost-list{list-style:none;margin:1.4rem 0 0;padding:0;display:grid;gap:.1rem}
.cost-list li{display:flex;justify-content:space-between;gap:1.2rem;align-items:baseline;padding:.7rem 0;
  border-bottom:1px solid var(--line);font-size:.95rem;color:var(--prose)}
.cost-list li b{color:var(--head);font-weight:700;white-space:nowrap}
.cost-note{font-size:.86rem;color:var(--muted);margin-top:1.1rem}
.cost-note a{color:var(--ink);font-weight:700}
.faq{max-width:880px;margin-inline:auto;display:grid;gap:.6rem}
.faq-item{background:#fff;border:1.5px solid var(--line);border-radius:14px;overflow:hidden;transition:border-color .3s}
.faq-item.open{border-color:var(--accent)}
.faq-q{width:100%;display:flex;align-items:center;gap:1rem;background:none;border:0;cursor:pointer;text-align:left;
  padding:1rem 1.2rem;font:inherit;font-weight:700;font-size:.98rem;color:var(--head)}
.faq-q span{flex:1}
.faq-q svg{width:14px;height:14px;flex:none;fill:none;stroke:var(--btn);stroke-width:2.4;stroke-linecap:round;transition:transform .4s var(--ease)}
.faq-item.open .faq-q svg{transform:rotate(135deg)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.faq-item.open .faq-a{grid-template-rows:1fr}
.faq-a>div{overflow:hidden}
.faq-a p{padding:0 1.2rem 1.2rem;color:var(--prose);font-size:.95rem}
.cta{position:relative;overflow:hidden;background:
  radial-gradient(800px 420px at 20% 20%, var(--soft) 0%, transparent 60%),
  linear-gradient(135deg,var(--tint-2),var(--soft))}
.cta-in{position:relative;z-index:2;text-align:center;padding-block:clamp(3.4rem,7vw,5.4rem)}
.cta h2{font-size:clamp(1.9rem,4vw,3rem);margin-bottom:1rem;max-width:20ch;margin-inline:auto}
.cta p{color:var(--prose);max-width:56ch;margin:0 auto 1.9rem;font-size:clamp(1rem,1.4vw,1.12rem)}
.cta-btns{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}

/* ---------------------------------------------------------------- FOOTER -- */
.foot{background:var(--bar-1);color:#B9D4D8;padding-block:clamp(2.6rem,5vw,3.6rem) 1.6rem;font-size:.9rem}
.foot-top{display:grid;grid-template-columns:1.5fr 1fr 1.2fr;gap:2rem;padding-bottom:2rem}
@media (max-width:760px){.foot-top{grid-template-columns:1fr}}
.foot h5{font-family:var(--body);font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#fff;margin:0 0 .9rem}
.foot ul{list-style:none;padding:0;margin:0;display:grid;gap:.55rem}
.foot a{text-decoration:none;transition:color .25s}
.foot a:hover{color:#fff}
.foot-logo{height:40px;width:auto;margin-bottom:1rem}
a:has(>.hdr-logo),a:has(>.foot-logo){display:inline-block;line-height:0;transition:opacity .25s}
a:has(>.hdr-logo):hover,a:has(>.foot-logo):hover{opacity:.78}
.foot-top p{max-width:34ch;line-height:1.7}
.foot-bot{display:flex;flex-wrap:wrap;gap:.5rem 1.3rem;align-items:center;padding-top:1.3rem;border-top:1px solid rgba(255,255,255,.16);font-size:.82rem}
.foot .foot-legal{font-size:.8rem;line-height:1.65;color:#9DBDC2;margin-top:.9rem;
  max-width:none;width:100%;text-align:left}
.foot-legal b{color:#DCEDEF}
.mobar{position:fixed;left:0;right:0;bottom:0;z-index:75;display:none;gap:.55rem;padding:.6rem var(--gutter);
  padding-bottom:calc(.6rem + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.97);
  border-top:1px solid var(--line);backdrop-filter:blur(12px)}
.mobar .btn{flex:1;padding:.85em .5em;font-size:.88rem}
@media (max-width:1040px){.mobar{display:flex}body{padding-bottom:76px}}


/* ---- HEADER: logo hard left and bigger; the nav takes the slack on the
   right so nothing rides over the phone pill or the booking button. Seven
   items is a lot, so the labels tighten between 1040px and 1400px, the
   phone number collapses to its icon under 1300px, and the burger takes
   over at 1040px instead of 980px. ---- */
.hdr-in{gap:clamp(10px,1.5vw,22px)}
.hdr-logo{height:clamp(44px,4.4vw,56px)}
.hdr-nav{flex:1 1 auto;justify-content:flex-end;min-width:0;
  margin-inline-start:clamp(26px,5vw,76px)}
.hdr-nav ul{gap:clamp(10px,1.45vw,26px);flex-wrap:nowrap}
.hdr-nav a{font-size:clamp(.82rem,.92vw,.92rem)}
.hdr-tel{padding:.58rem .95rem}
@media (max-width:1300px){
  .hdr-tel-t{display:none}
  .hdr-tel{padding:.6rem;border-radius:999px}
  .hdr-tel svg{width:18px;height:18px}
}
@media (max-width:1040px){
  .hdr-nav,.hdr-tel,.hdr-in .btn{display:none}
  .hdr-burger{display:block}
}

/* ============================================================
   "WHAT THIS IS" EXPLAINER
   Plain-English definition, pressable fact cards, and a tabbed
   panel (why / covered / who / not covered) with a sliding ink
   bar, cross-fading panels and a checklist that ticks itself in
   with a running count. Everything stills on reduced motion.
   ============================================================ */
.def{background:var(--tint)}
.def-lead{font-size:clamp(1.15rem,2vw,1.5rem);line-height:1.5;color:var(--head);
  font-weight:600;max-width:60ch;margin-bottom:clamp(1.4rem,3vw,2.2rem)}
.def-lead b{color:var(--ink);background-image:linear-gradient(transparent 62%,rgba(var(--glow),.32) 0);
  background-repeat:no-repeat;background-size:0 100%;animation:defMark 1.1s .35s var(--ease) forwards}
@keyframes defMark{to{background-size:100% 100%}}

/* --- fact cards --- */
.def-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:.8rem;margin-bottom:clamp(1.6rem,3vw,2.4rem)}
.def-fact{position:relative;overflow:hidden;text-align:left;font:inherit;cursor:pointer;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:.95rem 1.1rem 1.05rem;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .3s}
.def-fact:hover,.def-fact:focus-visible{transform:translateY(-4px);border-color:var(--line-a);
  box-shadow:0 16px 36px rgba(var(--glow),.2);outline:none}
.def-fact[aria-pressed="true"]{border-color:var(--lite);box-shadow:0 16px 36px rgba(var(--glow),.24)}
.def-fact span{display:block;font-size:.7rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:.3rem;transition:color .3s}
.def-fact:hover span,.def-fact[aria-pressed="true"] span{color:var(--ink)}
.def-fact b{font-family:var(--display);font-size:1.02rem;font-weight:800;color:var(--head);line-height:1.3}
.def-fact-bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--lite);
  transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.def-fact:hover .def-fact-bar,.def-fact[aria-pressed="true"] .def-fact-bar{transform:scaleX(1)}

/* --- tabbed box --- */
.def-box{background:#fff;border:1px solid var(--line);border-radius:24px;overflow:hidden;
  box-shadow:0 18px 44px rgba(var(--glow),.1)}
.def-tabs{position:relative;display:flex;gap:.2rem;flex-wrap:wrap;padding:.5rem .5rem 0;
  background:var(--tint-2);border-bottom:1px solid var(--line)}
.def-tab{font:inherit;cursor:pointer;background:none;border:0;border-radius:12px 12px 0 0;
  padding:.85rem 1.15rem;font-size:.93rem;font-weight:700;color:var(--muted);
  transition:color .25s,background .25s;position:relative}
.def-tab:hover{color:var(--ink);background:rgba(255,255,255,.6)}
.def-tab[aria-selected="true"]{color:var(--head);background:#fff}
.def-tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.def-ink{position:absolute;bottom:-1px;left:0;height:3px;width:0;background:var(--accent);
  border-radius:3px;transition:transform .45s var(--ease),width .45s var(--ease)}
.def-panels{padding:clamp(1.3rem,2.8vw,2.2rem)}
.def-panel{display:none}
.def-panel.on{display:block}
.def-panel.fade{animation:defPan .45s var(--ease) both}
@keyframes defPan{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.def-panel p{color:var(--prose);line-height:1.72;margin-bottom:.9rem;max-width:74ch}
.def-panel p:last-child{margin-bottom:0}

/* --- the checklist --- */
.def-count{font-family:var(--display);font-weight:800;color:var(--head);font-size:1.05rem;
  margin-bottom:1rem!important}
.def-count b{display:inline-block;min-width:1.4em;font-size:1.6rem;color:var(--accent);
  font-variant-numeric:tabular-nums}
.def-list{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}
.def-list li{display:flex;gap:.7em;align-items:flex-start;color:var(--prose);line-height:1.55;
  padding:.45rem .6rem;border-radius:12px;opacity:0;transform:translateY(8px);
  transition:background .25s,transform .25s var(--ease)}
.def-panels.go .def-list li{animation:defIn .5s var(--ease) var(--d,0ms) forwards}
.def-list li:hover{background:var(--tint-2);transform:translateX(3px)}
@keyframes defIn{to{opacity:1;transform:none}}
.def-tick{width:20px;height:20px;flex:none;margin-top:.12em;fill:none;stroke:var(--accent);
  stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:24;stroke-dashoffset:24}
.def-panels.go .def-tick{animation:defDraw .45s var(--ease) var(--d,0ms) forwards}
@keyframes defDraw{to{stroke-dashoffset:0}}
.def-not{color:var(--muted);line-height:1.7}
.def-not b{color:var(--head)}

/* --- CTA strip --- */
.def-cta{margin-top:clamp(1.4rem,3vw,2.2rem);background:var(--tint-2);border:1px solid var(--line-a);
  border-radius:22px;padding:clamp(1.2rem,2.6vw,1.8rem);display:flex;flex-wrap:wrap;
  align-items:center;justify-content:space-between;gap:1.1rem}
.def-cta b{display:block;font-family:var(--display);font-size:clamp(1.1rem,1.9vw,1.35rem);
  color:var(--head);margin-bottom:.3rem}
.def-cta p{color:var(--prose);font-size:.95rem;line-height:1.55;max-width:52ch}

@media (max-width:560px){
  .def-tab{flex:1 1 auto;text-align:center;padding:.75rem .6rem;font-size:.86rem}
}
@media (prefers-reduced-motion:reduce){
  .def-list li{opacity:1;transform:none;animation:none}
  .def-tick{stroke-dashoffset:0;animation:none}
  .def-panel.fade{animation:none}
  .def-lead b{background-size:100% 100%;animation:none}
  .def-fact,.def-ink{transition:none}
}

/* ---- header overlap fix ------------------------------------------------
   The nav was allowed to grow into the logo: its list is nowrap, so once
   seven items no longer fitted they ran underneath the wordmark instead of
   wrapping or collapsing. The nav now sits in the space that is left over
   (flex:0 1 auto, pushed right with margin-inline-start:auto), the logo
   never shrinks, and the burger takes over at 1180px rather than 1040px
   so the desktop bar only ever shows when it genuinely fits. ---- */
.hdr-in{flex-wrap:nowrap}
.hdr-logo{flex:0 0 auto;margin-right:clamp(12px,2.5vw,34px)}
.hdr-nav{flex:0 1 auto;min-width:0;margin-inline-start:auto;justify-content:flex-end}
.hdr-nav ul{flex-wrap:nowrap;min-width:0}
.hdr-nav a{font-size:clamp(.8rem,.88vw,.92rem)}
@media (max-width:1400px){.hdr-nav ul{gap:clamp(9px,1.25vw,20px)}}
@media (max-width:1240px){
  .hdr-nav a{font-size:.82rem}
  .hdr-in{gap:clamp(8px,1.2vw,16px)}
  .hdr-logo{margin-right:12px}
}
@media (max-width:1180px){
  .hdr-nav,.hdr-tel,.hdr-in .btn{display:none}
  .hdr-burger{display:block}
}

/* light from above on the dark bands, echoing the homepage hero spotlights */
.pi-cta,.cta,.lg-hero,.jr-hero,.pi-end,.hs{position:relative;isolation:isolate}
.pi-cta::before,.cta::before,.lg-hero::before,.jr-hero::before,.pi-end::before{
  content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);z-index:-1;
  width:min(720px,88%);height:clamp(150px,22vw,300px);pointer-events:none;
  background:radial-gradient(ellipse at 50% 0%,
    rgba(191,239,251,.18) 0%, rgba(191,239,251,.07) 42%, rgba(191,239,251,0) 72%);
}
h2 em{font-style:italic;font-weight:800}

.def-tile-ic,.step-btn i{border-radius:50%!important}

/* ---- header spacing, second pass -------------------------------------
   Seven nav items plus a phone number plus a booking button still could
   not fit at 1180–1280px, so "Contact" ran under the phone pill. The
   phone now collapses to its icon earlier (below 1400px), the labels
   tighten below 1320px, and the burger takes over at 1280px — the
   width at which everything provably fits with room to spare. ---- */
@media (max-width:1400px){
  .hdr-tel-t{display:none}
  .hdr-tel{padding:.6rem;border-radius:999px}
  .hdr-tel svg{width:18px;height:18px}
}
@media (max-width:1320px){
  .hdr-nav ul{gap:clamp(8px,1vw,14px)}
  .hdr-nav a{font-size:.82rem}
  .hdr-in{gap:clamp(8px,1vw,14px)}
  .hdr-logo{margin-right:10px;height:clamp(40px,3.6vw,48px)}
  .hdr-in .btn-sm{padding:.66em 1em;font-size:.82rem}
}
@media (max-width:1280px){
  .hdr-nav,.hdr-tel,.hdr-in .btn{display:none}
  .hdr-burger{display:block}
}

/* ---- header, third pass: make overlap structurally impossible -----------
   Breakpoints alone were not enough, because the nav list is nowrap: when
   its intrinsic width exceeded the space left over it simply spilled over
   the phone pill instead of shrinking. The header row now wraps, and the
   nav carries a flex-basis — if there is not enough room beside the
   logo, phone and button, the nav drops onto its own full-width row rather
   than overlapping anything. ---- */
.hdr-in{flex-wrap:wrap;row-gap:.35rem;align-items:center}
.hdr-logo{flex:0 0 auto}
.hdr-nav{flex:1 1 560px;min-width:0;overflow:visible}
.hdr-nav ul{flex-wrap:nowrap;min-width:0;justify-content:flex-end}
.hdr-tel,.hdr-in .btn{flex:0 0 auto}
/* when the nav does take its own row, centre it and give it a hairline */
@media (min-width:1281px){
  .hdr-nav{margin-inline-start:auto}
}

/* ---- header, final: one row, bigger logo hard left, bigger nav ----------
   The header no longer sits inside the 1200px content shell — it uses
   the full window width, which buys roughly 200px on a laptop. That pays
   for a larger wordmark on the far left and a larger nav, with everything
   on a single row. The phone becomes an icon on desktop; the full number
   stays in the drawer, the footer and the mobile bar. ---- */
.hdr .shell{max-width:none}
.hdr-in{
  flex-wrap:nowrap;
  padding-inline:clamp(16px,2.2vw,36px);
  gap:clamp(10px,1.4vw,20px);
}
/* logo: bigger, and hard against the left edge */
.hdr-logo{
  flex:0 0 auto;
  height:clamp(48px,4.6vw,66px);
  margin-right:clamp(16px,3vw,48px);
}
/* nav: bigger type, sitting right up against the actions */
.hdr-nav{flex:0 1 auto;min-width:0;margin-inline-start:auto;justify-content:flex-end}
.hdr-nav ul{flex-wrap:nowrap;gap:clamp(14px,1.6vw,26px)}
.hdr-nav a{font-size:clamp(.9rem,1.02vw,1.02rem);white-space:nowrap}
/* the phone stays an icon at every desktop width so the labels can breathe */
.hdr-tel-t{display:none}
.hdr-tel{padding:.62rem;border-radius:999px;flex:0 0 auto}
.hdr-tel svg{width:19px;height:19px}
.hdr-in .btn{flex:0 0 auto}
.hdr-in .btn-sm{padding:.78em 1.25em;font-size:.9rem}
/* with the extra width the desktop bar now fits well below the old cut-off */
@media (max-width:1150px){
  .hdr-nav,.hdr-tel,.hdr-in .btn{display:none}
  .hdr-burger{display:block}
}
@media (min-width:1151px){
  .hdr-burger{display:none}
}

/* ---- nav centred between the logo and the actions ---- */
.hdr-nav{flex:1 1 auto;min-width:0;margin-inline:auto;justify-content:center}
.hdr-nav ul{justify-content:center;flex-wrap:nowrap}

/* ------------------------------------------------- ON-SITE PROVIDERS --
   The two allied health services that physically share the building.
   Theme-token driven, so it reads correctly on any service page. */
.os{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:clamp(1rem,2.2vw,1.6rem);max-width:980px;margin-inline:auto}
.os-card{background:#fff;border:1.5px solid var(--line);border-radius:22px;
  padding:clamp(1.3rem,2.4vw,1.8rem);display:flex;flex-direction:column;gap:1rem;
  transition:border-color .35s var(--ease),box-shadow .45s var(--ease),transform .45s var(--ease)}
.os-card:hover,.os-card:focus-visible{border-color:var(--accent);transform:translateY(-4px);
  box-shadow:0 22px 48px rgba(var(--glow),.18);outline:none}
.os-top{display:flex;align-items:center;gap:1rem}
.os-logo{width:76px;height:76px;flex:none;border-radius:16px;background:#fff;
  border:1px solid var(--line);display:grid;place-items:center;padding:9px}
.os-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.os-k{font-size:.66rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin:0 0 .25rem}
.os-id h3{font-family:var(--display);font-size:1.12rem;font-weight:800;color:var(--deep);
  line-height:1.25;margin:0}
.os-s{font-size:.85rem;color:var(--muted);margin:.18rem 0 0}
.os-lede{font-size:.95rem;line-height:1.6;color:var(--prose);margin:0}
.os-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.os-list li{display:flex;gap:.6rem;align-items:flex-start;font-size:.92rem;
  line-height:1.5;color:var(--text)}
.os-list svg{width:18px;height:18px;flex:none;margin-top:.18rem;fill:none;
  stroke:var(--accent);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.os-note{margin-top:auto;background:var(--tint);border:1px solid var(--line);
  border-radius:14px;padding:.85rem 1rem;font-size:.87rem;line-height:1.55;color:var(--prose)}
.os-note b{display:block;font-family:var(--display);font-size:.72rem;font-weight:800;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin-bottom:.3rem}
.os-note a{color:var(--ink);font-weight:600}
@media (prefers-reduced-motion:reduce){
  .os-card{transition:none}
  .os-card:hover,.os-card:focus-visible{transform:none}
}

/* ---- universal footer (synced from the homepage by sync-footer.py) ---- */
.foot-top{grid-template-columns:1.5fr 1fr 1fr 1.2fr}
@media (max-width:980px){.foot-top{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.foot-top{grid-template-columns:1fr}}
.foot-about{line-height:1.7;max-width:34ch;margin-bottom:1.2rem}
.foot-social{display:flex;gap:.5rem}
.foot-social a{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#fff;
  transition:background .25s,transform .25s}
.foot-social a:hover{background:rgba(255,255,255,.2);transform:translateY(-2px)}
.foot-social svg{width:17px;height:17px}


/* ==================================================== SERVICES MEGA MENU ==
   Lifted verbatim from the homepage chrome so the dropdown is identical on
   the 37 service pages. The header needs a positioning context and must not
   clip the panel, which is why the two rules below come first. */
/* .hdr stays position:sticky — a sticky element already anchors the .mega panel */
.hdr-in{overflow:visible}
.has-mega{position:static}
.nav-chev{width:11px;height:11px;margin-left:.34em;fill:none;stroke:currentColor;
  stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;
  transition:transform .3s var(--ease);vertical-align:-1px}
.has-mega.open .nav-chev{transform:rotate(180deg)}
.hdr-nav a{display:inline-flex;align-items:center}

.mega{
  position:absolute;left:0;right:0;top:100%;z-index:59;
  background:#FFFFFF;border-top:1px solid var(--line);
  box-shadow:0 26px 60px rgba(11,30,54,.14);
  padding:clamp(1.6rem,3vw,2.5rem) 0 clamp(1.2rem,2.4vw,1.8rem);
  opacity:0;transform:translateY(-10px);pointer-events:none;visibility:hidden;
  transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s;
}
.mega.open{opacity:1;transform:none;pointer-events:auto;visibility:visible}
@media (max-width:980px){.mega{display:none}}
.mega-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.2rem,2.5vw,2.4rem)}
@media (max-width:1180px){.mega-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.6rem 2rem}}
.mega-col h4{font-family:var(--body);font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--slate-2);margin-bottom:.9rem}
.mega-col ul{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.mega-col a{display:flex;align-items:center;gap:.7em;padding:.36rem 0;font-size:.93rem;color:var(--ink);text-decoration:none;transition:color .2s,transform .25s var(--ease)}
.mega-col a::before{content:"";width:6px;height:6px;border-radius:50%;flex:none;background:var(--dot,var(--cyan));transition:transform .25s var(--ease)}
.mega-col a:hover{color:var(--cyan-ink);transform:translateX(3px)}
.mega-col a:hover::before{transform:scale(1.45)}
.mega-col:nth-child(1){--dot:#00B4D8}
.mega-col:nth-child(2){--dot:#0E5A7A}
.mega-col:nth-child(3){--dot:#0B2A42}
.mega-col:nth-child(4){--dot:#3A835B}
.mega-foot{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-top:clamp(1.2rem,2.4vw,1.8rem);padding-top:clamp(1.1rem,2.2vw,1.5rem);border-top:1px solid var(--line)}
.mega-foot p{font-size:.86rem;color:var(--slate);max-width:56ch;line-height:1.55}
.mega-acts{display:flex;gap:.6rem;flex:none}
.drawer-svc{border-bottom:1px solid var(--line)}
.drawer-svc-q{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:0;cursor:pointer;padding:.6rem 0;font-family:var(--display);font-size:1.5rem;font-weight:800;color:var(--navy)}
.drawer-svc-q svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease)}
.drawer-svc.open .drawer-svc-q svg{transform:rotate(180deg)}
.drawer-svc-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.drawer-svc.open .drawer-svc-a{grid-template-rows:1fr}
.drawer-svc-a>div{overflow:hidden}
.drawer-svc h5{font-family:var(--body);font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--slate-2);margin:1rem 0 .5rem}
.drawer-svc .dsv{display:grid;gap:.1rem;padding-bottom:.4rem}

@media (max-width:1150px){ .mega{display:none} }

.foot-k{display:inline-block;min-width:1.35em;font-weight:700;color:#fff;flex:none}
.foot-top ul li{display:flex;gap:.15em;align-items:baseline}

/* bulk-billing badge on service-page doctor cards */
.gp-bb{display:inline-block;background:var(--soft);color:var(--ink);
  border:1px solid var(--line-a);font-size:.66rem;font-weight:800;
  letter-spacing:.01em;padding:.32em .62em;border-radius:8px;margin:.4rem 0 .1rem}

/* ---------------------------------------------- FLOATING BOOK / TO-TOP --
   Book Now rides the scroll on desktop; on phones the .mobar already pins the
   same action, so this is suppressed to avoid two overlapping CTAs. */
.fab{position:fixed;right:clamp(14px,2vw,26px);bottom:clamp(16px,2.4vw,30px);
  z-index:70;display:flex;flex-direction:column;align-items:flex-end;gap:.55rem;
  pointer-events:none}
.fab-book,.fab-top{pointer-events:auto;opacity:0;transform:translateY(14px) scale(.96);
  transition:opacity .35s cubic-bezier(.22,.61,.28,1),transform .35s cubic-bezier(.22,.61,.28,1),
             background .25s,box-shadow .25s;visibility:hidden}
.fab-book.on,.fab-top.on{opacity:1;transform:none;visibility:visible}

.fab-book{display:inline-flex;align-items:center;gap:.55em;text-decoration:none;
  background:#0E8A4F;color:#fff;font-weight:800;font-size:.95rem;letter-spacing:-.01em;
  border-radius:999px;padding:.85em 1.3em;
  box-shadow:0 12px 30px rgba(11,30,54,.28),0 2px 6px rgba(11,30,54,.18)}
.fab-book:hover{background:#0B7342;box-shadow:0 16px 38px rgba(11,30,54,.34)}
.fab-book svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;
  stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

.fab-top{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.96);color:#0B1E36;border:1px solid rgba(11,30,54,.14);
  cursor:pointer;box-shadow:0 10px 26px rgba(11,30,54,.20)}
.fab-top:hover{background:#fff;box-shadow:0 14px 32px rgba(11,30,54,.26)}
.fab-top svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round}

/* the mobile bar owns the bottom of the screen below 980px */
@media (max-width:980px){.fab{display:none}}
@media (prefers-reduced-motion:reduce){
  .fab-book,.fab-top{transition:opacity .01s}
}
@media print{.fab{display:none}}

/* fee list: let long labels wrap on narrow screens instead of forcing sideways scroll */
@media (max-width:520px){
  .cost-list li{flex-wrap:wrap;gap:.25rem 1.2rem}
  .cost-list li b{white-space:normal}
}
