/* =========================================================
   Precision Dental | Homepage prototype v2 | GYA
   Palette from the Precision Dental logo
   ========================================================= */
:root{
  --navy:#012A41; --navy-800:#04385A; --navy-900:#021C2C;
  --blue-700:#0A6E9E; --blue-600:#0A84B8; --blue-500:#1A9AD4; --blue-400:#4FB2E3;
  --sky-300:#8FD0F0; --sky-200:#BFE3F6; --sky-100:#DCEFFA; --sky-50:#EEF6FB;
  --paper:#FCFDFE; --white:#fff;
  --ink:#0E2433; --ink-2:#44596A; --ink-3:#6E8291; --line:rgba(1,42,65,.10);
  --font-head:"Manrope","Segoe UI",Helvetica,Arial,sans-serif;
  --font-serif:"Instrument Serif",Georgia,"Times New Roman",serif;
  --font-body:"Manrope","Inter","Segoe UI",Helvetica,Arial,sans-serif;
  --r-xl:28px; --r-lg:22px; --r-md:16px; --r-pill:999px;
  --container:1240px; --ease:cubic-bezier(.2,.7,.2,1);
  --glass-bg:rgba(255,255,255,.62); --glass-border:rgba(255,255,255,.7); --glass-blur:blur(18px) saturate(160%);
  /* revision 1: heading weight is a token so the whole page lightens in one place */
  --w-head:600; --w-head-strong:700; --track-head:-.015em;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden}
body{font-family:var(--font-body);color:var(--ink);background:var(--paper);line-height:1.65;font-size:16px;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
button{font:inherit;cursor:pointer;background:none;border:0;color:inherit}
h1,h2,h3,h4{font-family:var(--font-head);color:var(--navy);line-height:1.1;letter-spacing:var(--track-head);font-weight:var(--w-head)}
h1{font-size:clamp(2.45rem,5.4vw,4.1rem);line-height:1.02}
h2{font-size:clamp(1.95rem,3.6vw,3rem)}
h3{font-size:1.3rem;font-weight:var(--w-head);letter-spacing:-.012em}
p{color:var(--ink-2)}
.container{width:min(var(--container),calc(100% - 40px));margin-inline:auto}
section{position:relative;padding:104px 0;overflow-x:clip}
@media(max-width:768px){section{padding:68px 0}}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* ---------- labels, buttons ---------- */
.pill{display:inline-flex;align-items:center;gap:9px;padding:9px 20px;border-radius:var(--r-pill);font-family:var(--font-head);font-weight:600;font-size:.88rem;letter-spacing:-.005em;color:var(--navy);background:var(--sky-50);border:1px solid rgba(1,42,65,.12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.pill svg{width:15px;height:15px;flex:none;color:var(--blue-500)}
.pill.on-dark{color:#fff;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.28)}
.pill.on-dark svg{color:var(--blue-400)}
.btn{display:inline-flex;align-items:center;gap:12px;padding:8px 8px 8px 24px;border-radius:var(--r-pill);font-family:var(--font-head);font-weight:600;font-size:1rem;line-height:1;transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s;white-space:nowrap}
.btn .arr{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;transition:transform .3s var(--ease)}
.btn .arr svg{width:16px;height:16px}
.btn:hover{transform:translateY(-2px)}
.btn:hover .arr{transform:rotate(-45deg)}
/* revision 1: the solid navy button is retired. .btn-dark is kept as an alias of
   .btn-blue so no markup has to change, and no navy fill survives on the page. */
.btn-dark{color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));box-shadow:0 14px 30px -14px rgba(10,110,158,.7)}
.btn-dark .arr{background:#fff;color:var(--blue-700)}
.btn-blue{color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));box-shadow:0 14px 30px -14px rgba(10,110,158,.7)}
.btn-blue .arr{background:#fff;color:var(--blue-700)}
.btn-white{color:var(--navy);background:#fff;box-shadow:0 14px 30px -18px rgba(1,42,65,.35);border:1px solid var(--line)}
.btn-white .arr{background:linear-gradient(135deg,var(--blue-500),var(--blue-700));color:#fff}
.btn-outline{color:#fff;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.btn-outline .arr{background:rgba(255,255,255,.15);color:#fff}
.btn-plain{padding:14px 24px}
.btn-group{display:flex;flex-wrap:wrap;gap:12px}
.section-head .pill,.about-top .pill,.cta .pill,.form-card .pill{margin-bottom:18px}
.section-head{max-width:760px;margin-bottom:52px}
.section-head.center{margin-inline:auto;text-align:center}
.section-head p{margin-top:16px;font-size:1.08rem}
.accent{background:linear-gradient(90deg,var(--sky-300),var(--blue-500));-webkit-background-clip:text;background-clip:text;color:transparent}
.glass{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:0 20px 50px -20px rgba(1,42,65,.3)}

/* ---------- header ---------- */
.header{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);border-bottom:1px solid rgba(1,42,65,.07);transition:background .3s var(--ease),box-shadow .3s var(--ease)}
.header.scrolled{background:rgba(255,255,255,.96);box-shadow:0 18px 40px -30px rgba(1,42,65,.5)}
.nav{position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;height:78px;transition:height .3s var(--ease)}
.header.scrolled .nav{height:68px}
.nav .logo img{height:42px;width:auto;transition:height .3s var(--ease)}
.header.scrolled .nav .logo img{height:38px}
.nav-links{display:flex;align-items:center;gap:2px}
.nav-links>li{position:relative}
.nav-links>li.has-mega{position:static}
.nav-links>li>a,.nav-links>li>button{display:inline-flex;align-items:center;gap:6px;padding:10px 15px;border-radius:var(--r-pill);font-family:var(--font-head);font-weight:500;font-size:.97rem;color:var(--ink-2);transition:background .2s,color .2s}
.nav-links>li>a:hover,.nav-links>li>button:hover,.nav-links>li:hover>button,.nav-links>li:focus-within>button{background:var(--sky-50);color:var(--navy)}
.nav-links svg.chev{width:14px;height:14px;transition:transform .25s}
.nav-links>li:hover svg.chev{transform:rotate(180deg)}
.dropdown{position:absolute;top:100%;left:0;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .22s var(--ease),transform .28s var(--ease),visibility 0s .28s;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:0 44px 80px -30px rgba(0,0,0,.45);z-index:5}
.dropdown::before{content:"";position:absolute;top:-16px;left:0;right:0;height:16px}
.nav-links>li:hover .dropdown,.nav-links>li:focus-within .dropdown{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.dropdown.panel{min-width:300px;padding:10px;margin-top:10px}
/* full-width mega panel docked under the nav bar */
.mega{left:0;right:0;width:auto;padding:24px 14px 18px;border-radius:var(--r-lg);display:grid;grid-template-columns:repeat(4,1fr);margin-top:10px;max-height:calc(100vh - 120px);overflow-y:auto}
.mega-col{padding:0 10px}
.mega-col+.mega-col{border-left:1px solid var(--line)}
.mega-col h4{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-600);padding:0 9px 9px;font-weight:700}
.mega-col h4 a{color:inherit}
.mega-col h4 a:hover{color:var(--navy)}
.mega-item{display:grid;grid-template-columns:46px 1fr 14px;align-items:center;gap:13px;padding:7px 10px;border-radius:12px;transition:background .2s}
.mega-item:hover{background:var(--sky-50)}
.mega-item:hover .mi-txt strong{color:var(--navy)}
.mi-img{width:46px;height:46px;border-radius:10px;overflow:hidden;background:var(--sky-100);flex:none}
.mi-img img{width:100%;height:100%;object-fit:cover;transition:transform .45s var(--ease)}
.mega-item:hover .mi-img img{transform:scale(1.09)}
.mi-txt{min-width:0}
.mi-txt strong{display:block;font-family:var(--font-head);font-weight:500;font-size:.91rem;line-height:1.3;color:var(--ink);letter-spacing:-.005em}
.mi-txt strong sup{font-size:.6em;font-weight:600}
.mega-item .go{width:14px;height:14px;color:var(--blue-500);opacity:.55;transition:transform .25s var(--ease),opacity .2s}
.mega-item:hover .go{opacity:1;transform:translateX(3px)}
.nav-cta{display:flex;align-items:center;gap:6px}
.nav-phone{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-head);font-weight:600;color:var(--navy);padding:10px 14px;border-radius:var(--r-pill);transition:background .2s}
.nav-phone:hover{background:var(--sky-50)}
.nav-phone svg{width:18px;height:18px;color:var(--blue-600)}
.nav .btn{padding:6px 6px 6px 20px;font-size:.93rem}
.nav .btn .arr{width:34px;height:34px}
.burger{display:none;width:46px;height:46px;border-radius:50%;align-items:center;justify-content:center;background:rgba(1,42,65,.07);color:var(--navy)}
.burger svg{width:22px;height:22px}
@media(max-width:1120px){
  .nav-links,.nav-phone span{display:none}
  .burger{display:inline-flex}
}
.mobile-menu{position:fixed;inset:0;z-index:60;background:rgba(246,248,250,.9);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);padding:20px;overflow-y:auto;transform:translateX(100%);visibility:hidden;transition:transform .35s var(--ease),visibility 0s .35s}
.mobile-menu.open{transform:translateX(0);visibility:visible;transition-delay:0s}
.mobile-menu .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.mobile-menu .burger{background:rgba(1,42,65,.08);color:var(--navy)}
.mobile-menu .top img{height:40px}
.mobile-menu details{border-bottom:1px solid var(--line)}
.mobile-menu summary,.mobile-menu>nav>a{display:block;padding:16px 4px;font-family:var(--font-head);font-weight:600;font-size:1.15rem;color:var(--navy);list-style:none;cursor:pointer}
.mobile-menu summary::-webkit-details-marker{display:none}
.mobile-menu details ul{padding:0 4px 12px 12px}
.mobile-menu details ul a{display:block;padding:8px 0;color:var(--ink-2)}
.mobile-menu details ul strong{display:block;padding:10px 0 4px;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-600)}
.mobile-menu .btn-group{margin-top:24px}

/* ---------- hero (full-bleed photo) ---------- */
/* revision 1: the video is left bright. Instead of darkening the whole frame,
   the copy sits in a white frosted panel, which also guarantees contrast on
   every frame of the video rather than only the ones we happened to check. */
/* The copy sits straight on the video, as it did before revision 1. The overlay
   is roughly a third lighter than the original so the footage reads brighter,
   and a soft text shadow carries the contrast the removed darkness used to,
   which keeps the copy legible on the bright frames as well as the dark ones. */
.hero{padding:0;min-height:100svh;display:flex;align-items:flex-end;color:#fff;isolation:isolate}
.hero-bg{position:absolute;inset:0;z-index:-1;overflow:hidden}
.hero-bg video,.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:60% 50%;display:block}
/* the hero is a still now, so it gets a slow drift to keep some life in it.
   The global prefers-reduced-motion rule switches this off. */
.hero-bg img{animation:heroDrift 30s ease-in-out infinite alternate;transform-origin:62% 48%;will-change:transform}
@keyframes heroDrift{from{transform:scale(1.02) translate3d(0,0,0)}to{transform:scale(1.11) translate3d(-1.2%,-0.8%,0)}}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(2,28,44,.56) 0%,rgba(2,28,44,.34) 45%,rgba(2,28,44,.32) 100%),linear-gradient(180deg,rgba(1,42,65,.12) 0%,rgba(1,42,65,.03) 24%,rgba(1,42,65,.46) 58%,rgba(2,28,44,.72) 100%),rgba(2,28,44,.1)}
.hero-inner{padding:150px 0 64px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:end}
.hero h1{color:#fff;margin-bottom:6px;text-shadow:0 2px 28px rgba(1,42,65,.5)}
.hero h2{font-family:var(--font-serif);font-style:italic;font-weight:400;color:#fff;font-size:clamp(1.7rem,3vw,2.6rem);letter-spacing:-.01em;line-height:1.12;max-width:24ch;text-shadow:0 2px 24px rgba(1,42,65,.5)}
.hero-right p{color:rgba(255,255,255,.92);font-size:1.08rem;max-width:520px;margin-bottom:26px;text-shadow:0 1px 18px rgba(1,42,65,.55)}
.hero-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:var(--r-pill);font-size:.84rem;font-weight:600;color:#fff;background:rgba(2,28,44,.3);border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.chip svg{width:15px;height:15px;color:var(--sky-300)}
@media(max-width:1000px){.hero-inner{grid-template-columns:1fr;gap:28px;padding-top:130px}.hero h2{max-width:none}}

/* ---------- about (heading + stats, then image + checklist) ---------- */
.about{background:var(--white)}
.about-top{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.about-top h2{font-size:clamp(2.1rem,4.2vw,3.5rem);margin-bottom:22px}
.about-top p{font-size:1.1rem;max-width:640px;margin-bottom:18px}
.about-top .btn{margin-top:10px}
.stats{display:grid;gap:26px;justify-items:start}
.stat{padding-left:22px;border-left:2px solid var(--sky-200)}
.stat b{display:block;font-family:var(--font-head);font-weight:var(--w-head);font-size:clamp(2.4rem,4vw,3.4rem);letter-spacing:-.03em;line-height:1;color:var(--blue-600)}
.stat span{display:block;margin-top:6px;font-size:.92rem;color:var(--ink-2);font-weight:500}
.about-bottom{display:grid;grid-template-columns:.95fr 1.05fr;gap:48px;align-items:center}
.about-img{position:relative;border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/3.6;box-shadow:0 40px 80px -30px rgba(1,42,65,.4)}
.about-img img{width:100%;height:100%;object-fit:cover}
.about-img .glass{position:absolute;left:20px;bottom:20px;right:20px;padding:18px 20px;border-radius:var(--r-md);display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.7)}
.about-img .glass .ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));color:#fff;flex:none}
.about-img .glass .ico svg{width:20px;height:20px}
.about-img .glass b{display:block;font-family:var(--font-head);color:var(--navy);font-size:.98rem}
.about-img .glass span{font-size:.85rem;color:var(--ink-2)}
.checklist{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.checklist li{display:flex;gap:12px;align-items:flex-start;padding:16px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);font-size:.93rem;font-weight:500;color:var(--ink);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.checklist li:hover{transform:translateY(-3px);box-shadow:0 20px 40px -24px rgba(1,42,65,.35)}
.checklist .ico{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--sky-100);color:var(--blue-700)}
.checklist .ico svg{width:16px;height:16px}
@media(max-width:1000px){.about-top{grid-template-columns:1fr;gap:36px;align-items:start}.about-img{aspect-ratio:4/3}}


/* ---------- services (light rows, revision 1) ---------- */
.services{background:var(--sky-50);color:var(--ink)}
.services .section-head{margin-bottom:44px}
.services h2{color:var(--navy);font-size:clamp(2.1rem,4.2vw,3.5rem);max-width:12ch}
/* the badge in this section was set on-dark in the markup; it is light now */
.services .pill.on-dark{color:var(--navy);background:rgba(255,255,255,.7);border-color:rgba(1,42,65,.16)}
.services .pill.on-dark svg{color:var(--blue-500)}
.svc-list{display:grid;gap:14px}
.svc-row{display:grid;grid-template-columns:110px 1.05fr 1.4fr auto;gap:28px;align-items:center;padding:22px 26px 22px 22px;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);box-shadow:0 20px 44px -36px rgba(1,42,65,.45);transition:box-shadow .3s,transform .3s var(--ease),border-color .3s}
.svc-row:hover{border-color:var(--sky-200);box-shadow:0 26px 54px -32px rgba(1,42,65,.4);transform:translateX(4px)}
.svc-row .thumb{width:110px;height:84px;border-radius:14px;overflow:hidden;position:relative}
.svc-row .thumb img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.svc-row:hover .thumb img{transform:scale(1.08)}
.svc-row .thumb .num{position:absolute;left:8px;top:8px;font-family:var(--font-head);font-weight:700;font-size:.7rem;letter-spacing:.1em;padding:4px 8px;border-radius:var(--r-pill);background:rgba(255,255,255,.85);color:var(--navy)}
.svc-row h3{color:var(--navy);font-size:clamp(1.35rem,2.1vw,1.85rem);font-weight:var(--w-head);letter-spacing:-.015em}
.svc-row h3 a:hover{color:var(--blue-600)}
.svc-row .explore{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:.88rem;font-weight:600;color:var(--blue-600)}
.svc-row .explore svg{width:14px;height:14px;transition:transform .25s var(--ease)}
.svc-row .explore:hover svg{transform:translateX(3px)}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tags li{padding:7px 12px;border-radius:var(--r-pill);font-size:.82rem;font-weight:500;color:var(--blue-700);background:var(--sky-50);border:1px solid rgba(10,132,184,.16)}
.svc-row .go{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--sky-100);color:var(--blue-700);transition:background .3s,color .3s,transform .3s var(--ease)}
.svc-row .go svg{width:20px;height:20px}
.svc-row:hover .go{background:var(--blue-500);color:#fff;transform:rotate(45deg)}
@media(max-width:1000px){.svc-row{grid-template-columns:90px 1fr auto;grid-template-areas:"thumb title go" "tags tags tags"}.svc-row .thumb{grid-area:thumb;width:90px;height:70px}.svc-row .go{grid-area:go}.tags{grid-area:tags}.svc-row .title{grid-area:title}}
@media(max-width:560px){.svc-row{padding:18px;gap:16px}.svc-row .go{width:46px;height:46px}}

/* ---------- why choose (numbered list + image with glass card) ---------- */
.why{background:var(--white)}
.why .section-head{margin-bottom:56px}
.why .section-head .pill{margin-bottom:18px}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.why-list li{padding:22px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:start;transition:padding .3s var(--ease)}
.why-list li:first-child{border-top:1px solid var(--line)}
.why-list .n{font-family:var(--font-head);font-weight:600;color:var(--blue-500);font-size:1rem;padding-top:6px}
.why-list h3{font-size:clamp(1.35rem,2vw,1.7rem);font-weight:600;color:var(--navy);margin-bottom:8px}
.why-list h3 button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;font:inherit;color:inherit;letter-spacing:inherit}
.why-list h3 .plus{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--sky-100);color:var(--blue-700);transition:transform .3s var(--ease),background .3s}
.why-list h3 .plus svg{width:14px;height:14px}
.why-list li.open h3 .plus{transform:rotate(45deg);background:var(--blue-600);color:#fff}
.why-list .body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s var(--ease)}
.why-list li.open .body{grid-template-rows:1fr}
.why-list .body>div{overflow:hidden}
.why-list .body p{font-size:.97rem;padding-bottom:6px}
.why-visual{position:relative}
.why-img{border-radius:var(--r-xl);overflow:hidden;aspect-ratio:5/4;box-shadow:0 40px 80px -30px rgba(1,42,65,.4)}
.why-img img{width:100%;height:100%;object-fit:cover;object-position:center}
.why-card{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:22px;margin-top:14px;padding:22px 26px;border-radius:var(--r-lg);background:var(--white);color:var(--ink-2);border:1px solid var(--line);border-left:4px solid var(--blue-500);box-shadow:0 24px 50px -34px rgba(1,42,65,.45)}
.why-card small{display:block;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-600)}
.why-card b{display:block;font-family:var(--font-head);font-weight:var(--w-head);font-size:2.2rem;letter-spacing:-.025em;line-height:1.05;margin-top:4px;white-space:nowrap;color:var(--navy)}
.why-card span{display:block;font-size:.9rem;color:var(--ink-2);border-left:1px solid var(--line);padding-left:22px}
@media(max-width:480px){.why-card{grid-template-columns:1fr;gap:12px}.why-card span{border-left:0;padding-left:0}}
@media(max-width:1000px){.why-grid{grid-template-columns:1fr;gap:40px}}

/* ---------- offers (photo band + overlapping cards) ---------- */
.offers{padding:0;background:var(--white)}
.offers-band{position:relative;padding:104px 0 200px;color:#fff;text-align:center;overflow:hidden}
.offers-band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 35%}
/* revision 1: this stays a photo band rather than a navy block. The overlay is
   only as strong as the heading needs, so it reads as imagery, not a fill. */
.offers-band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(1,42,65,.46),rgba(1,42,65,.5))}
.offers-band .inner{position:relative;z-index:1}
.offers-band h2{color:#fff;font-size:clamp(2.1rem,4.2vw,3.5rem);max-width:20ch;margin-inline:auto;text-shadow:0 2px 24px rgba(1,42,65,.45)}
.offers-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:-150px;position:relative;z-index:2;padding-bottom:104px}
.offer-card{background:#fff;border-radius:var(--r-lg);padding:30px 26px 26px;display:flex;flex-direction:column;box-shadow:0 30px 60px -30px rgba(1,42,65,.4);border:1px solid var(--line);transition:transform .35s var(--ease)}
.offer-card:hover{transform:translateY(-6px)}
.offer-card .ico{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;margin-bottom:22px;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));color:#fff;box-shadow:0 10px 20px -10px rgba(10,110,158,.8)}
.offer-card .ico svg{width:24px;height:24px}
.offer-card h3{font-size:1.45rem;margin-bottom:16px;line-height:1.15}
.offer-card ul{display:grid;gap:11px;flex:1;margin-bottom:26px;align-content:start}
.offer-card li{display:flex;gap:10px;align-items:flex-start;font-size:.92rem;color:var(--ink-2)}
.offer-card li svg{flex:none;width:18px;height:18px;color:var(--blue-500);margin-top:2px}
.offer-card .btn{width:100%;justify-content:space-between;padding:6px 6px 6px 22px}
/* revision 1: the featured card is marked out with a sky tint and a blue edge
   instead of a navy fill, so it still stands out on a light page. */
.offer-card.featured{background:var(--sky-50);color:var(--ink-2);border-color:rgba(10,132,184,.22);box-shadow:0 30px 60px -32px rgba(10,110,158,.45)}
.offer-card.featured h3{color:var(--navy)}
.offer-card.featured li{color:var(--ink-2)}
.offer-card.featured li svg{color:var(--blue-600)}
@media(max-width:1100px){.offers-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.offers-grid{grid-template-columns:1fr;margin-top:-120px}.offers-band{padding:72px 0 170px}}

/* ---------- CTA (gradient fade, heading + phone) ---------- */
.cta{background:var(--sky-50)}
.cta-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:56px;align-items:end}
.cta h2{font-size:clamp(2.1rem,4.2vw,3.5rem);margin-bottom:22px}
.cta p{font-size:1.1rem;max-width:640px;margin-bottom:28px}
.cta-side{display:grid;gap:22px;justify-items:start}
.cta-side .stat b{font-size:clamp(1.8rem,3vw,2.6rem)}
@media(max-width:1000px){.cta-grid{grid-template-columns:1fr;gap:36px}}

/* ---------- FAQ ---------- */
.faq{background:var(--white);padding-top:40px}
.faq-list{max-width:900px;margin-inline:auto;display:grid;gap:14px}
.faq-item{background:#fff;border-radius:var(--r-md);border:1px solid var(--line);overflow:hidden;transition:box-shadow .3s}
.faq-item.open{box-shadow:0 24px 50px -30px rgba(1,42,65,.35)}
.faq-q{width:100%;display:grid;grid-template-columns:56px 1fr 40px;align-items:center;gap:18px;text-align:left;padding:14px 18px 14px 14px}
.faq-q .num{width:56px;height:56px;border-radius:12px;display:grid;place-items:center;background:var(--sky-100);color:var(--blue-700);font-family:var(--font-head);font-weight:600;font-size:.95rem}
.faq-h{font-size:inherit;font-weight:inherit}
.faq-q .q{font-family:var(--font-head);font-size:clamp(1.05rem,1.6vw,1.35rem);font-weight:600;color:var(--navy);letter-spacing:-.015em}
.faq-q .chev{width:40px;height:40px;display:grid;place-items:center;color:var(--navy);transition:transform .3s var(--ease)}
.faq-q .chev svg{width:18px;height:18px}
.faq-item.open .chev{transform:rotate(180deg)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s var(--ease)}
.faq-item.open .faq-a{grid-template-rows:1fr}
.faq-a>div{overflow:hidden}
.faq-a p{padding:0 22px 22px 88px;font-size:.97rem}
@media(max-width:560px){.faq-q{grid-template-columns:44px 1fr 32px;gap:12px}.faq-q .num{width:44px;height:44px}.faq-a p{padding-left:18px}}

/* ---------- contact / form + map ---------- */
.contact{padding-top:40px}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:stretch}
.form-card,.map-card{background:#fff;border-radius:var(--r-xl);border:1px solid var(--line);box-shadow:0 30px 60px -36px rgba(1,42,65,.35)}
.form-card{padding:40px}
.form-card h3{font-size:1.7rem;margin-bottom:8px}
.form-card>p{margin-bottom:24px;font-size:.95rem}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid .full{grid-column:1/-1}
.field label{display:block;font-size:.8rem;font-weight:600;color:var(--navy);margin-bottom:6px;font-family:var(--font-head)}
.field input,.field select,.field textarea{width:100%;padding:14px 16px;border-radius:12px;border:1px solid rgba(1,42,65,.14);background:var(--paper);font:inherit;font-size:.95rem;color:var(--ink);transition:border .2s,box-shadow .2s,background .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue-500);box-shadow:0 0 0 4px rgba(26,154,212,.18);background:#fff}
.field textarea{min-height:120px;resize:vertical}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:.82rem;color:var(--ink-2);margin:6px 0 18px}
.consent input{margin-top:3px;accent-color:var(--blue-600)}
.consent a{color:var(--blue-600);font-weight:600;text-decoration:underline}
.map-card{overflow:hidden;position:relative;min-height:440px;display:flex;flex-direction:column}
.map-card iframe{width:100%;flex:1;min-height:320px;border:0}
.map-info{padding:22px 24px;display:grid;grid-template-columns:1fr 1fr;gap:16px;border-top:1px solid var(--line)}
.map-info strong{display:block;font-family:var(--font-head);color:var(--navy);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}
.map-info p{font-size:.9rem}
.map-info a{color:var(--blue-600);font-weight:600}
@media(max-width:960px){.contact-grid{grid-template-columns:1fr}}
@media(max-width:560px){.form-card{padding:26px 20px}.form-grid{grid-template-columns:1fr}.map-info{grid-template-columns:1fr}}

/* ---------- footer (light, revision 1) ---------- */
.footer{position:relative;overflow-x:clip;margin-top:40px;padding:80px 0 0;color:var(--ink-2);background:var(--sky-50);border-top:1px solid var(--line);border-radius:var(--r-xl) var(--r-xl) 0 0}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:56px}
.footer h4{color:var(--navy);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:18px;font-weight:700}
.footer li,.footer p{font-size:.92rem;line-height:1.7}
.footer a:hover{color:var(--blue-700)}
.footer .brand img{height:48px;margin-bottom:18px}
.footer .brand p{margin-bottom:10px}
.footer .brand a{color:var(--blue-700);font-weight:600}
.footer .brand .pk{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:8px 12px;border-radius:var(--r-pill);background:var(--white);border:1px solid var(--line);font-size:.82rem;color:var(--navy)}
.footer .brand .pk svg{width:16px;height:16px;color:var(--blue-600)}
.hours-foot li{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed rgba(1,42,65,.14);padding:4px 0}
.hours-foot li span:last-child{color:var(--navy);font-weight:600}
.footer-bottom{border-top:1px solid var(--line);padding:22px 0 110px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;align-items:center;font-size:.82rem}
.footer-bottom ul{display:flex;flex-wrap:wrap;gap:6px 18px}
.social{display:flex;gap:8px}
.social a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--white);border:1px solid var(--line);color:var(--navy);transition:background .2s,transform .2s,color .2s}
.social a:hover{background:var(--blue-500);color:#fff;transform:translateY(-2px)}
.social svg{width:17px;height:17px;fill:currentColor}
@media(min-width:1121px){.footer-bottom{padding-bottom:28px}}
@media(max-width:1000px){.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer-grid{grid-template-columns:1fr;gap:32px}.footer{padding-top:56px}}

/* ---------- mobile sticky bar ---------- */
.sticky-bar{position:fixed;left:12px;right:12px;bottom:12px;z-index:45;display:none;gap:8px;padding:8px;border-radius:var(--r-pill);background:rgba(255,255,255,.9);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:0 20px 50px -20px rgba(1,42,65,.5);border:1px solid rgba(255,255,255,.8)}
.sticky-bar .btn{flex:1;justify-content:center;padding:13px 12px;font-size:.92rem}
@media(max-width:1120px){.sticky-bar{display:flex}}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.1s}.reveal[data-delay="2"]{transition-delay:.2s}.reveal[data-delay="3"]{transition-delay:.3s}.reveal[data-delay="4"]{transition-delay:.4s}
.reveal-left{opacity:0;transform:translateX(-32px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal-left.in{opacity:1;transform:none}
.reveal-right{opacity:0;transform:translateX(32px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal-right.in{opacity:1;transform:none}
.hero-up{opacity:0;transform:translateY(24px);animation:heroUp 1s var(--ease) forwards}
.hero-up.d2{animation-delay:.2s}
@keyframes heroUp{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal,.reveal-left,.reveal-right,.hero-up{opacity:1;transform:none}}
/* ---------- responsive hardening ---------- */
/* grid children must be allowed to shrink, or a nowrap child widens the whole track */
.hero-inner>*,.about-top>*,.why-grid>*,.offers-grid>*,.cta-grid>*,.contact-grid>*,.services-grid>*,.svc-row>*,.footer-grid>*{min-width:0}
.mi-txt,.faq-q .q,.mega-col{min-width:0}
/* long button labels wrap instead of blowing out the layout */
@media(max-width:600px){
  .btn{white-space:normal;text-align:left;gap:10px}
  .btn-plain{text-align:center;justify-content:center}
}
/* fixed header offset for in-page anchors */
section[id]{scroll-margin-top:96px}
/* touch targets */
@media(max-width:834px){
  .why-list h3 button{min-height:44px}
  .why-list li{padding:16px 0}
  .svc-row h3 a{display:inline-block;padding:3px 0}
  .svc-row .explore{min-height:40px;align-items:center}
  .mega-item,.dropdown a{min-height:44px}
  .consent input{width:20px;height:20px;margin-top:1px}
  .footer-bottom ul a,.footer li a{display:inline-block;padding:3px 0}
  .social a{width:42px;height:42px}
}
/* header and sticky bar controls never wrap */
.nav .btn,.sticky-bar .btn{white-space:nowrap}
@media(max-width:420px){
  .nav-phone{display:none}
  /* the sticky bar already carries Book and Call, so the header button is
     redundant at this width and is dropped rather than squeezed */
  .nav .btn{display:none}
  .sticky-bar .btn{font-size:.84rem;padding:13px 10px}
}
/* very small phones */
@media(max-width:380px){
  .sticky-bar{gap:6px;padding:7px}
  .sticky-bar .btn{font-size:.8rem;padding:12px 6px}
  .container{width:calc(100% - 28px)}
  .hero h1{font-size:2.1rem}
  .hero h2{font-size:1.32rem}
  .chip{font-size:.78rem;padding:8px 12px}
  .form-card{padding:22px 16px}
  .cta-band,.offer-card{padding-left:20px;padding-right:20px}
}
/* phone landscape: let the hero size to content instead of the viewport */
@media(max-height:520px) and (orientation:landscape){
  .hero{min-height:0}
  .hero-inner{padding:120px 0 48px}
}

/* ==========================================================
   Revision 1: mobile first view
   The client said the first screen had too much on it. At 320 to 560 it now
   carries the headline, the subheading and one Book button, and nothing else.
   The intro paragraph and the trust chips return from 561 up, where there is
   room for them. The sticky Call and Book bar stays hidden while the hero is
   on screen, so Book is never offered twice at once.
   ========================================================== */
@media(max-width:560px){
  /* shorter hero, so the section below is visible at the bottom of the screen
     and it is obvious the page continues */
  .hero{min-height:74svh}
  .hero-inner{padding:118px 0 34px;gap:18px}
  .hero-bg video{object-position:58% 50%}
  .hero h1{margin-bottom:8px}
  .hero h2{font-size:1.45rem}
  /* below the fold, not deleted: these still render at 561 and up */
  .hero-right p,.hero-chips{display:none}
  /* one call to action in the hero: the primary Book button */
  .hero .btn-group{margin:0}
  .hero .btn-group .btn-white{display:none}
  .hero .btn-group .btn{width:100%;justify-content:space-between;padding:8px 8px 8px 22px}
}
/* the sticky bar slides in once the hero has scrolled away. The class is added
   by Interactions.tsx; with no JavaScript the bar simply stays visible, which
   is the previous behaviour. */
@media(max-width:1120px){
  .sticky-bar{transition:transform .35s var(--ease),opacity .25s var(--ease)}
  body.hero-onscreen .sticky-bar{transform:translateY(160%);opacity:0;pointer-events:none}
}
@media(prefers-reduced-motion:reduce){
  body.hero-onscreen .sticky-bar{transform:none;opacity:0}
}

/* enquiry form status */
.form-status{display:none;margin:0 0 14px;padding:12px 14px;border-radius:12px;font-size:.9rem;grid-column:1/-1}
.form-status:not(:empty){display:block}
.form-status{background:var(--sky-100);color:var(--navy)}
.form-status.ok{background:#E8F6EC;color:#1B5E2A}
.form-status.err{background:#FDECEC;color:#8A1F1F}
#formSubmit[disabled]{opacity:.6;pointer-events:none}

/* ==========================================================
   Inner page components: breadcrumbs, prose, related services, disclaimer,
   article listing. Same tokens as the homepage, so inner pages match it.
   ========================================================== */
.breadcrumbs{padding:104px 0 0}
.breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.85rem;color:var(--ink-3)}
.breadcrumbs li{display:inline-flex;align-items:center;gap:6px}
.breadcrumbs svg{width:13px;height:13px;opacity:.55}
.breadcrumbs a{color:var(--ink-2)}
.breadcrumbs a:hover{color:var(--blue-600)}
.breadcrumbs [aria-current]{color:var(--navy);font-weight:600}
@media(max-width:768px){.breadcrumbs{padding-top:92px}}

.container.narrow{width:min(760px,calc(100% - 40px))}
.prose{font-size:1.02rem;color:var(--ink-2)}
.prose h2{font-size:clamp(1.6rem,2.6vw,2.2rem);margin:34px 0 14px}
.prose h3{font-size:1.25rem;margin:26px 0 10px}
.prose p{margin-bottom:16px}
.prose ul,.prose ol{margin:0 0 18px 20px}
.prose ul li{list-style:disc;margin-bottom:8px}
.prose ol li{list-style:decimal;margin-bottom:8px}
.prose a{color:var(--blue-600);font-weight:600;text-decoration:underline}
/* in-article Book Online and Call buttons keep their button colours (26 October 2026) */
.prose a.btn{text-decoration:none}.prose a.btn-dark,.prose a.btn-blue{color:#fff}.prose a.btn-white{color:var(--navy)}
.prose strong{color:var(--navy)}

.fees-section{padding-top:0}
.disclaimer-section{padding:0 0 72px}
.disclaimer{font-size:.85rem;font-style:italic;color:var(--ink-3);max-width:900px;margin-bottom:10px}

.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.related-card{display:grid;grid-template-columns:46px 1fr 16px;align-items:center;gap:13px;padding:14px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.related-card:hover{transform:translateY(-3px);box-shadow:0 20px 40px -26px rgba(1,42,65,.4)}
.related-card strong{display:block;font-family:var(--font-head);font-weight:600;font-size:.95rem;color:var(--navy)}
.related-card small{display:block;font-size:.8rem;color:var(--ink-3);margin-top:2px}
.related-card .go{width:16px;height:16px;color:var(--blue-500)}
@media(max-width:900px){.related-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.related-grid{grid-template-columns:1fr}}

.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.post-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.post-card:hover{transform:translateY(-5px);box-shadow:0 30px 60px -34px rgba(1,42,65,.4)}
.post-card a{display:block}
.post-card .media{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--sky-100)}
.post-card .media img{width:100%;height:100%;object-fit:cover}
.post-card .body{display:block;padding:22px}
.post-card h3{font-size:1.15rem;margin-bottom:10px}
.post-card p{font-size:.92rem;margin-bottom:14px}
.text-link{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-head);font-weight:600;font-size:.9rem;color:var(--blue-600)}
.text-link svg{width:16px;height:16px}
@media(max-width:900px){.post-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.post-grid{grid-template-columns:1fr}}

.cat-filter{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:34px}
.cat-filter a{padding:9px 18px;border-radius:var(--r-pill);font-family:var(--font-head);font-weight:600;font-size:.88rem;color:var(--navy);background:#fff;border:1px solid var(--line)}
.cat-filter a:hover,.cat-filter a.active{background:var(--blue-600);color:#fff;border-color:var(--blue-600)}
.pagination{display:flex;gap:8px;justify-content:center;margin-top:40px}
.pagination a{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#fff;border:1px solid var(--line);font-weight:600;color:var(--navy)}
.pagination a.active,.pagination a:hover{background:var(--blue-600);color:#fff;border-color:var(--blue-600)}
.empty-note{text-align:center;color:var(--ink-3)}

.post{padding:40px 0 90px}
.post h1{font-size:clamp(2rem,4vw,3rem);margin-bottom:12px}
.post-meta{font-size:.9rem;color:var(--ink-3);margin-bottom:26px}
.post-hero{border-radius:var(--r-lg);overflow:hidden;margin-bottom:30px}
.post-hero img{width:100%;height:auto}

.nf .container{max-width:640px}
.nf img{height:52px;margin:0 auto 34px}
.nf h1{color:#fff;font-size:clamp(2.6rem,7vw,4.4rem);margin-bottom:16px}
.nf p{color:rgba(255,255,255,.82);font-size:1.05rem;margin-bottom:30px}
.nf .btn-group{justify-content:center}

/* ==========================================================
   Page level components for the inner pages.
   Built on the same tokens as the homepage, so nothing here
   introduces a new colour, radius or font.
   ========================================================== */

/* ---------- page hero: compact, light, sits under the fixed header ---------- */
.page-hero{background:var(--sky-50);padding:128px 0 64px;position:relative;overflow:hidden}
.page-hero .container{position:relative;z-index:1}
.page-hero .pill{margin-bottom:18px}
.page-hero h1{font-size:clamp(2.1rem,4.4vw,3.5rem);max-width:19ch;margin-bottom:18px}
.page-hero .lede{font-size:1.1rem;color:var(--ink-2);max-width:66ch;margin-bottom:14px}
.page-hero .lede:last-of-type{margin-bottom:0}
.page-hero .btn-group{margin-top:30px}
.page-hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:56px;align-items:center}
.page-hero-img{border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/3;box-shadow:0 40px 80px -34px rgba(1,42,65,.4)}
.page-hero-img img{width:100%;height:100%;object-fit:cover}
@media(max-width:1000px){
  .page-hero-grid{grid-template-columns:1fr;gap:34px}
  .page-hero{padding:112px 0 52px}
  .page-hero h1{max-width:none}
}
@media(max-width:560px){.page-hero{padding:104px 0 42px}}

/* ---------- body sections ---------- */
.section-alt{background:var(--sky-50)}
.body-section{padding:76px 0}
.body-section:first-of-type{padding-top:84px}
@media(max-width:768px){.body-section{padding:54px 0}}
.body-section h2{font-size:clamp(1.8rem,3.2vw,2.6rem);margin-bottom:20px;max-width:24ch}
.body-section .prose{max-width:74ch}

/* two column: heading on the left, copy on the right, for longer sections */
.split{display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;align-items:start}
.split h2{margin-bottom:0;position:sticky;top:104px}
@media(max-width:900px){.split{grid-template-columns:1fr;gap:18px}.split h2{position:static}}

/* ---------- numbered steps, for "What Happens at Your Appointment" ---------- */
.steps{display:grid;gap:14px;counter-reset:step}
.step{display:grid;grid-template-columns:56px 1fr;gap:20px;align-items:start;padding:24px 26px;
  border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);
  box-shadow:0 20px 44px -36px rgba(1,42,65,.45)}
.step .n{counter-increment:step;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
  background:var(--sky-100);color:var(--blue-700);font-family:var(--font-head);font-weight:600;font-size:1rem}
.step .n::before{content:counter(step,decimal-leading-zero)}
.step h3{font-size:1.2rem;margin-bottom:6px}
.step p{font-size:.97rem}
@media(max-width:560px){.step{grid-template-columns:44px 1fr;gap:14px;padding:20px}.step .n{width:44px;height:44px;font-size:.9rem}}

/* ---------- highlighted boxes on emergency pages ---------- */
.callout{padding:26px 30px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--white);
  border-left:4px solid var(--blue-500);box-shadow:0 20px 44px -36px rgba(1,42,65,.4)}
.callout h2,.callout h3{margin-bottom:12px}
.callout p{margin-bottom:12px}
.callout p:last-child,.callout ul:last-child{margin-bottom:0}
.callout.urgent{border-left-color:#B4232A;background:#FEF6F6}
.callout.urgent .cw{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-head);font-weight:700;
  font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:#B4232A;margin-bottom:12px}
.callout.urgent .cw svg{width:16px;height:16px}
.callout.firstaid{border-left-color:var(--blue-600);background:var(--sky-50)}

/* ---------- checklist, used where the copy supplies list items ---------- */
.check-list{display:grid;gap:12px;margin:0}
.check-list li{display:grid;grid-template-columns:24px 1fr;gap:12px;align-items:start;color:var(--ink-2);font-size:1rem}
.check-list li svg{width:20px;height:20px;color:var(--blue-500);margin-top:3px}

/* ---------- service cards, for category and suburb pages ---------- */
.svc-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
@media(max-width:820px){.svc-cards{grid-template-columns:1fr}}
.svc-card{display:flex;flex-direction:column;padding:30px 28px;border-radius:var(--r-lg);background:var(--white);
  border:1px solid var(--line);box-shadow:0 24px 50px -36px rgba(1,42,65,.45);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s}
.svc-card:hover{transform:translateY(-4px);border-color:var(--sky-200);box-shadow:0 30px 60px -34px rgba(1,42,65,.42)}
.svc-card h3{font-size:1.3rem;margin-bottom:10px}
.svc-card p{font-size:.97rem;flex:1;margin-bottom:18px}
.svc-card .explore{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-head);font-weight:600;
  font-size:.92rem;color:var(--blue-600);align-self:flex-start}
.svc-card .explore svg{width:15px;height:15px;transition:transform .25s var(--ease)}
.svc-card:hover .explore svg{transform:translateX(3px)}

/* ---------- team ---------- */
/* Six people, two rows of three. Every card the same shape: square photograph on a
   soft tint, then role, name and bio centred beneath it. */
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:900px){.team-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.team-grid{grid-template-columns:1fr}}

.team-card{background:var(--sky-50);border:1px solid var(--line);border-radius:var(--r-xl);
  padding:16px 16px 30px;display:flex;flex-direction:column;text-align:center;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.team-card:hover{transform:translateY(-4px);border-color:var(--sky-200);
  box-shadow:0 30px 60px -38px rgba(1,42,65,.5)}

.team-card .ph{aspect-ratio:1/1;overflow:hidden;border-radius:var(--r-lg);margin-bottom:22px;
  background:linear-gradient(180deg,var(--sky-100) 0%,var(--white) 100%)}
.team-card .ph img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s var(--ease)}
.team-card:hover .ph img{transform:scale(1.04)}

.team-card .tx{display:flex;flex-direction:column;flex:1;padding:0 12px}
/* role above the name on screen, heading still first in the markup */
.team-card .role{order:-1;font-family:var(--font-head);font-weight:700;font-size:.72rem;
  letter-spacing:.13em;text-transform:uppercase;color:var(--blue-600);margin-bottom:9px}
.team-card h3{font-size:1.3rem;margin-bottom:12px}
/* everything is centred except the bio: these run to 60 words and centred text that
   long is genuinely harder to read than the short lines in the reference design */
.team-card p{font-size:.93rem;color:var(--ink-2);margin-bottom:0;text-align:left}

/* pinned to the bottom so cards with a link stay level with those without */
.team-card .explore{margin-top:auto;padding-top:20px;display:inline-flex;align-items:center;
  justify-content:center;gap:10px;font-family:var(--font-head);font-weight:600;font-size:.92rem;
  color:var(--blue-700)}
.team-card .explore .ic{width:26px;height:26px;border-radius:50%;background:var(--blue-600);
  color:#fff;display:grid;place-items:center;flex:none;transition:transform .25s var(--ease)}
.team-card .explore .ic svg{width:13px;height:13px}
.team-card:hover .explore .ic{transform:translateX(3px)}
/* any explore link icon, wherever it appears, or the raw SVG renders full size */
.explore svg{width:15px;height:15px;flex:none}

@media(max-width:560px){
  .team-card{padding:14px 14px 26px}
  .team-card .tx{padding:0 6px}
}

/* practitioner page */
.bio-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:56px;align-items:start}
@media(max-width:900px){.bio-grid{grid-template-columns:1fr;gap:34px}}
.bio-portrait{border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/5;box-shadow:0 40px 80px -34px rgba(1,42,65,.4);position:sticky;top:104px}
@media(max-width:900px){.bio-portrait{position:static;aspect-ratio:4/3;max-width:420px}}
.bio-portrait img{width:100%;height:100%;object-fit:cover}
.cred{display:grid;gap:8px;padding:22px 24px;border-radius:var(--r-lg);background:var(--sky-50);
  border:1px solid var(--line);margin-bottom:26px}
.cred div{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:.94rem;color:var(--ink-2)}
.cred strong{font-family:var(--font-head);font-size:.76rem;letter-spacing:.11em;text-transform:uppercase;
  color:var(--navy);min-width:132px}

/* ---------- tables: fees, hours ---------- */
.table-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:0 24px 50px -36px rgba(1,42,65,.45)}
.table-card table{width:100%;border-collapse:collapse}
.table-card th,.table-card td{text-align:left;padding:15px 22px;font-size:.96rem;border-bottom:1px solid var(--line)}
.table-card th{font-family:var(--font-head);font-weight:600;color:var(--navy);background:var(--sky-50);
  font-size:.78rem;letter-spacing:.1em;text-transform:uppercase}
.table-card tr:last-child td{border-bottom:0}
.table-card td:last-child{text-align:right;font-weight:600;color:var(--navy);white-space:nowrap}
@media(max-width:560px){.table-card th,.table-card td{padding:13px 16px;font-size:.9rem}}

/* ---------- smile gallery ---------- */
.gallery-note{max-width:74ch;margin-bottom:26px}
.gallery-note p{margin-bottom:12px}
.gallery-note p:last-child{margin-bottom:0}

.gallery-filters{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:16px}
.filter-chip{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:999px;
  border:1px solid var(--line);background:var(--white);color:var(--ink-2);cursor:pointer;
  font-family:var(--font-head);font-weight:600;font-size:.88rem;line-height:1;
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}
.filter-chip:hover{border-color:var(--sky-200);color:var(--blue-700)}
.filter-chip .c{font-size:.74rem;font-weight:700;color:var(--ink-3);background:var(--sky-50);
  border-radius:999px;padding:3px 7px;transition:background .2s var(--ease),color .2s var(--ease)}
.filter-chip.is-on{background:var(--navy);border-color:var(--navy);color:#fff}
.filter-chip.is-on .c{background:rgba(255,255,255,.18);color:#fff}
.filter-chip:focus-visible{outline:3px solid var(--blue-500);outline-offset:2px}
.gallery-count{font-size:.86rem;color:var(--ink-3);margin-bottom:22px}

.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:900px){.gallery-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.gallery-grid{grid-template-columns:1fr}}
.gallery-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column}
.gallery-card[hidden]{display:none}
/* the photograph is fitted, never cropped: a before and after image has to be
   published as it was taken, and cropping one could remove half the comparison */
.gallery-card .ph{display:block;width:100%;aspect-ratio:1/1;background:var(--sky-50);border:0;padding:0;
  cursor:zoom-in;position:relative;overflow:hidden}
.gallery-card .ph img{width:100%;height:100%;object-fit:contain;display:block;
  transition:transform .45s var(--ease)}
.gallery-card .ph:hover img{transform:scale(1.03)}
.gallery-card .ph:focus-visible{outline:3px solid var(--blue-500);outline-offset:-3px}
.gallery-card figcaption{padding:16px 20px 20px;font-size:.88rem;color:var(--ink-2);
  display:flex;flex-direction:column;gap:3px}
.gallery-card figcaption strong{font-family:var(--font-head);color:var(--navy);
  font-size:.96rem;margin-bottom:2px}
.gallery-card .tt{color:var(--blue-600);font-weight:600;font-size:.85rem}
.gallery-card .tf{font-size:.82rem;color:var(--ink-3)}
.gallery-card .rv{font-size:.76rem;color:var(--ink-3);margin-top:5px}

/* ---------- lightbox ---------- */
.lightbox[hidden]{display:none}
.lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:22px}
.lb-backdrop{position:absolute;inset:0;background:rgba(2,28,44,.86);backdrop-filter:blur(3px)}
/* width:auto so the panel hugs the photograph instead of leaving pale bars beside
   it: the gallery images are square, the panel is not */
.lb-panel{position:relative;max-width:min(1100px,94vw);max-height:92vh;
  width:auto;min-width:min(430px,92vw);
  background:var(--white);border-radius:var(--r-xl);overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 50px 100px -30px rgba(1,42,65,.7)}
.lb-panel figure{display:flex;flex-direction:column;min-height:0}
.lb-panel img{width:auto;max-width:100%;max-height:72vh;object-fit:contain;
  background:var(--sky-50);display:block;margin:0 auto}
.lb-panel figcaption{padding:16px 22px 20px;display:flex;flex-direction:column;gap:3px;
  font-size:.9rem;color:var(--ink-2)}
.lb-panel figcaption strong{font-family:var(--font-head);color:var(--navy);font-size:1.02rem}
.lb-panel figcaption .rv{font-size:.78rem;color:var(--ink-3);margin-top:5px}
.lb-stage{position:relative;display:flex;min-height:0}
.lb-x,.lb-nav{position:absolute;z-index:2;display:grid;place-items:center;border:0;cursor:pointer;
  border-radius:50%;background:rgba(255,255,255,.92);color:var(--navy);
  box-shadow:0 10px 26px -10px rgba(1,42,65,.6);transition:background .2s var(--ease)}
.lb-x{top:12px;right:12px;width:40px;height:40px}
/* inside the image stage, so they stay over the photograph at every size */
.lb-nav{top:50%;transform:translateY(-50%);width:46px;height:46px}
.lb-prev{left:12px}.lb-next{right:12px}
.lb-x:hover,.lb-nav:hover{background:#fff}
.lb-x:focus-visible,.lb-nav:focus-visible{outline:3px solid var(--blue-500);outline-offset:2px}
.lb-x svg,.lb-nav svg{width:20px;height:20px}
body.lb-open{overflow:hidden}
@media(max-width:600px){
  .lightbox{padding:10px}
  .lb-nav{width:38px;height:38px}
  .lb-prev{left:8px}.lb-next{right:8px}
  .lb-panel img{max-height:56vh;width:100%}
  .lb-panel figcaption{padding:14px 18px 18px;font-size:.86rem}
  .lb-panel figcaption strong{font-size:.98rem}
}

/* ---------- misc ---------- */
.lead-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.note-card{padding:22px 26px;border-radius:var(--r-lg);background:var(--sky-50);border:1px solid var(--line);
  font-size:.95rem;color:var(--ink-2)}
.note-card strong{color:var(--navy)}
.placeholder-note{border-left:4px solid var(--blue-500);background:var(--sky-50);padding:20px 24px;
  border-radius:var(--r-md);font-size:.95rem;color:var(--ink-2);margin-bottom:22px}
.placeholder-note strong{color:var(--navy)}
.hours-list{display:grid;gap:0;max-width:480px}
.hours-list li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;
  border-bottom:1px dashed rgba(1,42,65,.16);font-size:.98rem;color:var(--ink-2)}
.hours-list li:last-child{border-bottom:0}
.hours-list li span:last-child{font-weight:600;color:var(--navy)}
.sitemap-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:34px}
@media(max-width:820px){.sitemap-cols{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.sitemap-cols{grid-template-columns:1fr}}
.sitemap-cols h3{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-600);margin-bottom:12px}
.sitemap-cols li{padding:5px 0}
.sitemap-cols a{color:var(--ink-2)}
.sitemap-cols a:hover{color:var(--blue-700)}

.page-hero .sub{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--blue-700);
  font-size:clamp(1.4rem,2.3vw,2rem);letter-spacing:-.01em;line-height:1.16;max-width:26ch;margin:-6px 0 20px}
@media(max-width:1000px){.page-hero .sub{max-width:none}}

/* ---------- section with a photograph beside the copy ---------- */
.media-split{display:grid;grid-template-columns:1.02fr .98fr;gap:60px;align-items:center}
.media-split.flip .media-img{order:-1}
.media-split h2{margin-bottom:18px}
.media-split .prose{max-width:60ch}
.media-img{border-radius:var(--r-xl);overflow:hidden;box-shadow:0 40px 80px -34px rgba(1,42,65,.42);
  background:var(--sky-100)}
.media-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s var(--ease)}
.media-split:hover .media-img img{transform:scale(1.03)}
.media-img.portrait{aspect-ratio:4/5}
.media-img.landscape{aspect-ratio:3/2}
/* a standing portrait is taller than the frames it sits in on small screens, so
   anchor it to the top of the crop rather than the centre and keep the face in */
.media-img img.face-top,.team-card .ph img.face-top{object-position:50% 0}
@media(max-width:900px){
  .media-split{grid-template-columns:1fr;gap:30px}
  .media-split.flip .media-img{order:0}
  .media-img.portrait{aspect-ratio:4/3}
}

/* ===================================================================
   Dental Articles: index, cards, filters, pager and the article page
   =================================================================== */

/* --- index: filters --- */
.art-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}
.art-chip{display:inline-flex;align-items:center;gap:9px;padding:9px 16px;border-radius:var(--r-pill);
  font-family:var(--font-head);font-weight:600;font-size:.88rem;color:var(--navy);
  background:#fff;border:1px solid var(--line);transition:background .22s var(--ease),
  border-color .22s var(--ease),color .22s var(--ease),transform .22s var(--ease)}
.art-chip span{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;
  border-radius:var(--r-pill);font-size:.74rem;font-weight:700;color:var(--blue-700);background:var(--sky-50)}
.art-chip:hover{border-color:var(--blue-400);transform:translateY(-1px)}
.art-chip.is-on{color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));
  border-color:transparent;box-shadow:0 14px 28px -16px rgba(10,110,158,.75)}
.art-chip.is-on span{color:#fff;background:rgba(255,255,255,.22)}
.art-count{font-size:.9rem;color:var(--ink-3);margin-bottom:22px}

/* --- index: card grid --- */
.art-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.art-card[hidden]{display:none}
.art-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-lg);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.art-card:hover{transform:translateY(-4px);box-shadow:0 30px 60px -36px rgba(1,42,65,.45)}
.art-card-img{display:block;aspect-ratio:1200/630;overflow:hidden;background:var(--sky-50)}
.art-card-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.art-card:hover .art-card-img img{transform:scale(1.04)}
.art-card-tx{display:flex;flex-direction:column;flex:1;padding:22px}
.art-card-cat{font-family:var(--font-head);font-weight:600;font-size:.76rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--blue-600);margin-bottom:10px}
.art-card h3{font-size:1.12rem;line-height:1.32;margin-bottom:10px}
.art-card h3 a{color:var(--navy)}
.art-card h3 a:hover{color:var(--blue-600)}
.art-card-ex{font-size:.93rem;color:var(--ink-2);margin-bottom:16px}
.art-card-foot{display:flex;align-items:center;gap:9px;font-size:.82rem;color:var(--ink-3);margin-top:auto}
.art-card-foot .dot,.art-meta .dot{opacity:.5}
.art-card-more{display:inline-flex;align-items:center;gap:8px;margin-top:14px;
  font-family:var(--font-head);font-weight:600;font-size:.9rem;color:var(--blue-600)}
.art-card-more .go{width:16px;height:16px;transition:transform .25s var(--ease)}
.art-card:hover .art-card-more .go{transform:translateX(4px)}
.needs-date{color:#9A6A12;background:#FFF6E3;border:1px dashed #E3B964;
  padding:2px 8px;border-radius:var(--r-pill);font-size:.78rem;font-weight:600}

/* --- index: pager --- */
.art-pager{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:44px}
.art-pager button{min-width:42px;height:42px;padding:0 13px;border-radius:12px;
  font-family:var(--font-head);font-weight:600;font-size:.92rem;color:var(--navy);
  background:#fff;border:1px solid var(--line);transition:background .2s,color .2s,border-color .2s}
.art-pager button:hover:not(:disabled){border-color:var(--blue-400)}
.art-pager button.is-on{color:#fff;background:var(--navy);border-color:var(--navy)}
.art-pager button:disabled{opacity:.4}
.art-empty{padding:40px 0;text-align:center;color:var(--ink-3)}

/* --- article page --- */
.article-hero{padding-bottom:0;background:var(--sky-50)}
.art-head{max-width:820px}
.article-hero h1{max-width:24ch}
.art-meta{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:.93rem;color:var(--ink-3)}
.art-figure{margin-top:40px;border-radius:var(--r-xl);overflow:hidden;background:#fff;
  box-shadow:0 40px 80px -50px rgba(1,42,65,.5);transform:translateY(34px)}
.art-figure img{width:100%;height:auto;display:block;aspect-ratio:1600/840;object-fit:cover}
.art-figure figcaption{padding:10px 18px;font-size:.78rem;color:var(--ink-3);background:#fff;
  border-top:1px solid var(--line)}
.article-body{padding-top:76px}
.article-body .container{max-width:820px}
.article-body .prose h2:first-child{margin-top:0}
.article-cta{margin:30px 0 8px}
.article-body .prose ul{margin-left:22px}

/* --- related articles --- */
.art-rel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.art-rel-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-lg);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.art-rel-card:hover{transform:translateY(-4px);box-shadow:0 28px 54px -34px rgba(1,42,65,.45)}
.ar-img{display:block;aspect-ratio:1200/630;overflow:hidden;background:var(--sky-50)}
.ar-img img{width:100%;height:100%;object-fit:cover}
.ar-tx{padding:18px}
.ar-tx small{display:block;font-family:var(--font-head);font-weight:600;font-size:.74rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--blue-600);margin-bottom:7px}
.ar-tx strong{display:block;font-family:var(--font-head);font-weight:600;font-size:1rem;
  line-height:1.34;color:var(--navy)}

@media(max-width:980px){
  .art-grid,.art-rel-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .art-grid,.art-rel-grid{grid-template-columns:1fr}
  .art-figure{transform:translateY(26px);border-radius:var(--r-lg)}
  .article-body{padding-top:62px}
  .art-filters{gap:8px}
  .art-chip{font-size:.83rem;padding:8px 13px}
}

/* ===================================================================
   Virtual tour (Contact page): a 16:9 frame that fills the content
   width, with the same corners and shadow as the photographs
   =================================================================== */
.tour-section{padding-top:0}
.tour-frame{position:relative;aspect-ratio:16/9;border-radius:var(--r-xl);overflow:hidden;
  background:var(--sky-50);box-shadow:0 40px 80px -34px rgba(1,42,65,.42)}
.tour-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
@media(max-width:640px){.tour-frame{border-radius:var(--r-lg)}}

/* ===================================================================
   14 October 2026 revisions: new patient offer (homepage strip, New
   Patients panel, pop-up, terms), Google reviews badge, price list
   form, Health Funds page, registration lines, before and after
   =================================================================== */

/* ---------- new patient offer: strip under the homepage hero ---------- */
.offer-strip{padding:40px 0 8px;background:var(--white);z-index:2}
.offer-strip-inner{display:grid;grid-template-columns:auto 1fr auto;gap:36px;align-items:center;
  padding:28px 34px;border-radius:var(--r-xl);color:#fff;
  background:linear-gradient(135deg,var(--navy) 0%,var(--navy-800) 60%,var(--blue-700) 140%);
  box-shadow:0 34px 70px -40px rgba(1,42,65,.65)}
.os-price{display:flex;flex-direction:column;gap:4px;padding-right:34px;border-right:1px solid rgba(255,255,255,.18)}
.os-title{font-family:var(--font-head);font-weight:700;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sky-300)}
.os-price b{font-family:var(--font-head);font-weight:var(--w-head-strong);font-size:clamp(2.6rem,4.4vw,3.4rem);line-height:1;letter-spacing:-.02em;color:#fff}
.os-list{display:flex;flex-wrap:wrap;gap:8px 20px}
.os-list li{display:inline-flex;align-items:center;gap:8px;font-size:.95rem;color:rgba(255,255,255,.92)}
.os-list svg{width:17px;height:17px;flex:none;color:var(--sky-300)}
.os-terms{margin-top:12px;font-size:.82rem;color:rgba(255,255,255,.72)}
.os-terms a{color:var(--sky-200);text-decoration:underline;text-underline-offset:3px}
.os-terms .offer-period{margin-left:6px}
@media(max-width:640px){.os-terms .offer-period{display:block;margin:4px 0 0}}
.os-cta .btn-group{flex-wrap:nowrap}
.os-cta .btn-white{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.35);box-shadow:none}
.os-cta .btn-white:hover{background:rgba(255,255,255,.16)}
@media(max-width:1100px){
  .offer-strip-inner{grid-template-columns:auto 1fr;gap:22px 30px}
  .os-cta{grid-column:1/-1}
}
@media(max-width:640px){
  .offer-strip{padding:28px 0 0}
  .offer-strip-inner{grid-template-columns:1fr;padding:24px 22px;gap:18px}
  .os-price{padding:0 0 16px;border-right:0;border-bottom:1px solid rgba(255,255,255,.18)}
  .os-list{flex-direction:column;gap:8px}
  .os-cta .btn-group{flex-direction:column;align-items:stretch}
  .os-cta .btn{justify-content:space-between}
  .os-cta .btn-plain{justify-content:center}
}

/* ---------- new patient offer: New Patients page panel ---------- */
.offer-feature{padding:72px 0 0;background:var(--white)}
.offer-panel{display:grid;grid-template-columns:1.25fr .75fr;gap:40px;align-items:center;padding:44px;
  border-radius:var(--r-xl);background:#fff;border:1px solid var(--line);box-shadow:0 40px 80px -46px rgba(1,42,65,.45)}
.offer-panel .pill{margin-bottom:18px}
.offer-panel h2{font-size:clamp(1.9rem,3.4vw,2.7rem);margin-bottom:16px}
.op-amount{background:linear-gradient(90deg,var(--blue-500),var(--blue-700));-webkit-background-clip:text;background-clip:text;color:transparent}
.op-lead{margin-bottom:14px;font-weight:600;color:var(--navy)}
.op-side{padding:28px;border-radius:var(--r-lg);background:var(--sky-50);border:1px solid var(--line)}
.op-side .btn-group{flex-direction:column;align-items:stretch;gap:10px}
.op-side .btn{justify-content:space-between}
.op-side .btn-plain{justify-content:center}
.op-terms{margin-top:16px;font-size:.84rem}
.op-terms a{color:var(--blue-700);text-decoration:underline;text-underline-offset:3px}
@media(max-width:900px){.offer-panel{grid-template-columns:1fr;padding:30px 24px;gap:26px}.offer-feature{padding-top:54px}}

/* ---------- new patient offer: centred pop-up (once per visit) ---------- */
.offer-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px}
.offer-modal[hidden]{display:none}
.om-backdrop{position:absolute;inset:0;background:rgba(2,28,44,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  opacity:0;transition:opacity .35s var(--ease)}
.om-dialog{position:relative;width:min(980px,100%);max-height:calc(100dvh - 40px);overflow:auto;overscroll-behavior:contain;
  display:grid;grid-template-columns:1.08fr .92fr;align-items:center;background:#fff;border-radius:var(--r-xl);
  box-shadow:0 50px 120px -30px rgba(1,28,44,.6);opacity:0;transform:translateY(18px) scale(.98);
  transition:opacity .4s var(--ease),transform .5s var(--ease);isolation:isolate}
.offer-modal.is-in .om-backdrop{opacity:1}
.offer-modal.is-in .om-dialog{opacity:1;transform:none}
.om-dialog:focus{outline:none}
.om-x{position:absolute;top:14px;right:14px;z-index:5;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;
  color:var(--navy);background:#fff;border:1px solid var(--line);box-shadow:0 10px 24px -14px rgba(1,42,65,.5);transition:background .2s,transform .2s}
.om-x svg{width:18px;height:18px}
.om-x:hover,.om-x:focus-visible{background:var(--sky-50);transform:rotate(90deg)}
.om-main{position:relative;z-index:2;padding:40px 8px 64px 48px}
.om-logo{height:52px;width:auto;margin-bottom:22px}
.om-title{font-size:clamp(2.2rem,4.6vw,3.6rem);line-height:.98;letter-spacing:-.025em;font-weight:var(--w-head-strong);color:var(--navy);margin-bottom:20px}
.om-title span{display:block;font-family:var(--font-serif);font-style:italic;font-weight:400;letter-spacing:-.01em;
  background:linear-gradient(90deg,var(--blue-500),var(--blue-700));-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:4px}
.om-inc-label{font-family:var(--font-head);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-600);margin-bottom:12px}
.om-list{display:grid;grid-template-columns:1fr 1fr;gap:11px 22px;margin-bottom:26px}
.om-list li{display:flex;align-items:flex-start;gap:10px;font-family:var(--font-head);font-weight:600;font-size:1rem;color:var(--navy);line-height:1.3}
.om-list svg{flex:none;width:22px;height:22px;padding:4px;border-radius:50%;color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));margin-top:-1px}
.om-cta{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.om-cta .btn-plain svg{width:17px;height:17px;color:var(--blue-600)}
.om-cta .btn-white{gap:9px}
.om-terms{margin-top:16px;font-size:.8rem;color:var(--ink-3)}
.om-terms a{color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}
.om-terms .offer-period{margin-left:6px}
.om-visual{position:relative;z-index:1;align-self:stretch;display:grid;place-items:center;padding:44px 40px 70px 0}
.om-ring{position:relative;width:min(100%,380px);aspect-ratio:1;border-radius:50%;padding:12px;
  background:linear-gradient(140deg,var(--sky-300),var(--blue-500) 55%,var(--blue-700));box-shadow:0 30px 60px -30px rgba(10,110,158,.7)}
.om-ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:6px solid #fff}
.om-price{position:absolute;left:-6px;top:50%;transform:translateY(-36%);width:150px;height:150px;border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;
  background:radial-gradient(circle at 30% 25%,var(--blue-400),var(--blue-600) 55%,var(--blue-700));
  box-shadow:0 22px 40px -18px rgba(10,110,158,.9),inset 0 0 0 6px var(--blue-600),inset 0 0 0 8px rgba(255,255,255,.9)}
.om-price span{font-family:var(--font-head);font-weight:700;font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;opacity:.92;margin-top:4px}
.om-price b{font-family:var(--font-head);font-weight:800;font-size:2.7rem;line-height:1;letter-spacing:-.03em}
.om-wave{position:absolute;left:0;right:0;bottom:0;width:100%;height:96px;z-index:0;pointer-events:none}
body.om-open{overflow:hidden}
@media(max-width:820px){
  .om-dialog{grid-template-columns:1fr;max-width:520px}
  .om-visual{order:-1;padding:28px 24px 0;display:flex;justify-content:center}
  .om-ring{width:190px;padding:8px}
  .om-ring img{border-width:4px}
  .om-price{position:absolute;left:calc(50% + 46px);top:auto;bottom:-10px;transform:none;width:112px;height:112px}
  .om-price b{font-size:1.95rem}
  .om-price span{font-size:.5rem;letter-spacing:.08em}
  .om-main{padding:22px 24px 60px}
  .om-logo{display:none}
  .om-title{font-size:2.2rem;margin-bottom:16px;text-align:center}
  .om-inc-label{text-align:center}
  .om-list{gap:9px 14px;margin-bottom:20px}
  .om-list li{font-size:.92rem}
  .om-cta .btn{flex:1;justify-content:center}
  .om-cta .btn-blue{justify-content:space-between}
  .om-terms{text-align:center}
  .om-wave{height:60px}
}
@media(max-width:400px){
  .offer-modal{padding:12px}
  .om-dialog{max-height:calc(100dvh - 24px)}
  .om-list{grid-template-columns:1fr}
  .om-ring{width:150px}
  .om-price{left:calc(50% + 30px);width:100px;height:100px}
  .om-price b{font-size:1.7rem}
  .om-price span{font-size:.46rem}
  .om-cta{flex-direction:column;align-items:stretch}
}
@media(prefers-reduced-motion:reduce){.om-backdrop,.om-dialog{transition:none;transform:none}}

/* ---------- Google reviews band (homepage, under the offer strip) ---------- */
.gr-band{position:relative;margin-top:32px;padding:34px 0;overflow:hidden;background:#fff;isolation:isolate}
.gr-bg{position:absolute;inset:0;z-index:-1}
.gr-bg img{width:100%;height:100%;object-fit:cover;object-position:center 40%;opacity:.3;filter:saturate(.7) blur(1px)}
.gr-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.82) 45%,rgba(238,246,251,.7) 100%)}
.gr-link{display:flex;align-items:center;justify-content:center;gap:clamp(18px,3vw,34px);flex-wrap:wrap;padding:12px 0;color:var(--navy)}
.gr-count{display:flex;flex-direction:column;line-height:.86}
.gr-count small{font-family:var(--font-head);font-weight:800;font-size:clamp(1.4rem,2.4vw,1.9rem);letter-spacing:-.02em}
.gr-count b{font-family:var(--font-head);font-weight:800;font-size:clamp(3.6rem,7vw,5.4rem);letter-spacing:-.04em}
.gr-count-text{font-family:var(--font-head);font-weight:800;font-size:clamp(2rem,4vw,3rem)}
.gr-brand{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.gr-logo{height:clamp(52px,6vw,74px);width:auto}
.gr-word{font-family:var(--font-head);font-weight:700;font-size:clamp(2.6rem,5vw,3.8rem);letter-spacing:-.03em;line-height:1;color:var(--navy)}
.gr-sub{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-head);font-weight:700;font-size:clamp(1.05rem,1.6vw,1.3rem);color:var(--ink-2)}
.gr-stars::before{content:"\2605\2605\2605\2605\2605";letter-spacing:2px;font-size:1.15em;
  background:linear-gradient(90deg,#F5A623 calc(var(--rating) * 20%),rgba(1,42,65,.18) calc(var(--rating) * 20%));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.gr-rating{font-size:.9em;color:var(--navy)}
.gr-cta{display:inline-flex;align-items:center;gap:10px;margin-left:clamp(0px,2vw,24px);padding:8px 8px 8px 20px;border-radius:var(--r-pill);
  font-family:var(--font-head);font-weight:600;font-size:.92rem;background:#fff;border:1px solid var(--line);box-shadow:0 14px 30px -18px rgba(1,42,65,.35);transition:transform .25s var(--ease)}
.gr-cta .arr{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-700))}
.gr-cta .arr svg{width:16px;height:16px}
.gr-link:hover .gr-cta{transform:translateX(3px)}
.gr-link:focus-visible{outline:3px solid var(--blue-400);outline-offset:6px;border-radius:var(--r-lg)}
@media(max-width:640px){
  .gr-band{padding:22px 0;margin-top:24px}
  .gr-link{gap:14px 18px}
  .gr-cta{margin:4px 0 0;width:100%;justify-content:space-between}
}

/* ---------- price list form ---------- */
.price-dl{background:var(--white)}
.price-dl-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center}
.price-dl h2{margin:0 0 18px}
.price-dl .reveal-left>p{font-size:1.06rem;margin-bottom:26px;max-width:52ch}
.price-dl .form-card{padding:36px}
@media(max-width:900px){.price-dl-grid{grid-template-columns:1fr;gap:30px}.price-dl .form-card{padding:26px 22px}}
.pl-card{margin-top:26px;padding:30px;max-width:640px}
.pl-card .form-grid label{margin-bottom:6px}
.prose .pl-form p{margin-bottom:0}
.pl-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.pl-thanks{grid-column:1/-1;margin:0;padding:16px 18px;border-radius:12px;background:#E8F6EC;color:#1B5E2A;font-size:.95rem}
.pl-form .form-status{margin:0}
[data-pl-submit][disabled]{opacity:.6;pointer-events:none}
.pl-form.is-done .field,.pl-form.is-done .consent,.pl-form.is-done .full:last-child{display:none}
@media(max-width:560px){.pl-form.form-grid{grid-template-columns:1fr}}

/* ---------- footer additions ---------- */
.foot-reg{margin-top:16px;font-size:.8rem;line-height:1.55;color:var(--ink-3)}
.footer .foot-cta{margin-top:18px;font-size:.88rem;padding:6px 6px 6px 18px}

/* ---------- team card registration, and the initials tile used until a photo is added ---------- */
.team-card .ph-initials{display:grid;place-items:center}
.team-card .ph-initials span{font-family:var(--font-head);font-weight:700;font-size:clamp(3rem,6vw,4.4rem);letter-spacing:-.02em;
  background:linear-gradient(135deg,var(--blue-500),var(--blue-700));-webkit-background-clip:text;background-clip:text;color:transparent}
.team-card .reg{display:block;font-size:.78rem;color:var(--ink-3);margin:-6px 0 12px}

/* ---------- Health Funds and Government Schemes ---------- */
.prose .scheme-note{margin-top:22px;padding:14px 18px;border-left:3px solid var(--blue-500);background:var(--sky-50);
  border-radius:0 12px 12px 0;font-size:.9rem;color:var(--ink-2)}
.prose h3+p,.prose h3+ul{margin-top:0}
.scheme-cta{padding:8px 0 84px;background:var(--white);z-index:2}
.scheme-cta-card{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;padding:38px 42px;
  border-radius:var(--r-xl);color:#fff;background:linear-gradient(135deg,var(--navy) 0%,var(--navy-800) 60%,var(--blue-700) 140%);
  box-shadow:0 34px 70px -40px rgba(1,42,65,.65)}
.scheme-cta-card h2{color:#fff;font-size:clamp(1.6rem,2.8vw,2.2rem);margin-bottom:8px}
.scheme-cta-card p{color:rgba(255,255,255,.85);font-size:1.05rem}
.scheme-cta-card .btn-white{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.35);box-shadow:none}
@media(max-width:640px){.scheme-cta-card{padding:28px 22px}.scheme-cta-card .btn-group{width:100%;flex-direction:column;align-items:stretch}.scheme-cta-card .btn{justify-content:space-between}.scheme-cta-card .btn-plain{justify-content:center}}

/* ---------- offer terms page ---------- */
.terms-facts{margin:0 0 28px;border-top:1px solid var(--line)}
.terms-facts>div{display:grid;grid-template-columns:180px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}
.terms-facts dt{font-family:var(--font-head);font-weight:600;color:var(--navy)}
.terms-facts dd{color:var(--ink-2)}
@media(max-width:560px){.terms-facts>div{grid-template-columns:1fr;gap:4px}}

/* ---------- before and after (treatment pages) ---------- */
.ba-section{padding:56px 0;background:var(--white)}
.ba-gallery{border:1px solid var(--line);border-radius:var(--r-xl);background:#fff;box-shadow:0 30px 60px -46px rgba(1,42,65,.45)}
.ba-gallery summary{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:24px 28px;cursor:pointer;list-style:none}
.ba-gallery summary::-webkit-details-marker{display:none}
.ba-gallery summary:focus-visible{outline:3px solid var(--blue-400);outline-offset:3px;border-radius:var(--r-xl)}
.ba-sum{display:flex;flex-direction:column;gap:2px;flex:1;min-width:200px}
.ba-sum b{font-family:var(--font-head);font-weight:var(--w-head);font-size:1.35rem;color:var(--navy);letter-spacing:var(--track-head)}
.ba-count{font-size:.86rem;color:var(--ink-3)}
.ba-chev{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--sky-50);color:var(--navy);transition:transform .3s var(--ease)}
.ba-chev svg{width:18px;height:18px}
.ba-gallery[open] .ba-chev{transform:rotate(180deg)}
.ba-body{padding:0 28px 28px}
.ba-intro{max-width:74ch;margin-bottom:22px}
.ba-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}
.ba-case{margin:0}
.ba-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ba-img{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:14px;background:var(--sky-50)}
.ba-img img{width:100%;height:100%;object-fit:cover}
.ba-tag{position:absolute;left:8px;bottom:8px;padding:3px 10px;border-radius:var(--r-pill);font-size:.72rem;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--navy);background:rgba(255,255,255,.9)}
.ba-case figcaption{margin-top:10px;font-size:.9rem;color:var(--ink-2)}
.ba-case figcaption strong{display:block;color:var(--navy);font-family:var(--font-head);font-weight:600}
.ba-disclaimer{margin-top:24px;padding:14px 18px;border-left:3px solid var(--blue-500);background:var(--sky-50);border-radius:0 12px 12px 0;font-size:.9rem}
@media(max-width:560px){.ba-grid{grid-template-columns:1fr}.ba-gallery summary{padding:20px}.ba-body{padding:0 20px 22px}}

/* ---------- client update 19 Oct 2026: fee table (data/price-list.json), funds list, service area ---------- */
.fee-intro{max-width:70ch;margin-bottom:22px}
.fee-wrap{margin-top:8px}
.fee-disclaimer{margin:0 0 22px;padding:16px 20px;border-left:3px solid var(--blue-500);background:var(--sky-50);border-radius:0 14px 14px 0;font-size:.95rem;max-width:none}
.section-alt .fee-disclaimer{background:var(--white)}
.fee-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;font-size:.97rem}
.fee-table thead th{background:var(--navy);color:#fff;font-family:var(--font-head);font-weight:600;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;text-align:left;padding:15px 20px}
.fee-table thead th:last-child,.fee-table .fee-price{text-align:right}
.fee-table td{padding:14px 20px;border-top:1px solid var(--line);vertical-align:top;color:var(--ink-2)}
.fee-table .fee-cat th{background:var(--sky-50);color:var(--navy);font-family:var(--font-head);font-weight:600;font-size:1rem;text-align:left;padding:13px 20px;border-top:1px solid var(--line);box-shadow:inset 3px 0 0 var(--blue-500)}
.fee-table tbody:first-of-type .fee-cat th{border-top:0}
.fee-table .fee-service{color:var(--ink)}
.fee-table .fee-service sup{color:var(--blue-600);font-weight:700;margin-left:2px}
.fee-table .fee-items{width:22%;font-size:.88rem;color:var(--ink-3)}
.fee-table .fee-price{width:22%;font-family:var(--font-head);font-weight:700;color:var(--navy);white-space:normal}
.fee-table .fee-offer td{background:#EAF6FC}
.fee-table .fee-offer .fee-service{font-weight:600}
.fee-table .fee-offer .fee-price{color:var(--blue-600)}
.fee-terms{display:block;margin-top:4px;font-family:var(--font-body);font-weight:600;font-size:.8rem;color:var(--blue-600);text-decoration:underline;text-underline-offset:2px}
.fee-note,.fee-edition{margin:14px 0 0;font-size:.88rem;color:var(--ink-3)}
.fee-edition{margin-top:4px}
.fee-note a{color:var(--blue-600);font-weight:600;text-decoration:underline;text-underline-offset:2px}
@media(max-width:720px){
  .fee-table,.fee-table tbody,.fee-table tr,.fee-table td,.fee-table th{display:block;width:100%}
  .fee-table{border:0;background:none;border-radius:0;overflow:visible}
  .fee-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .fee-table tbody{margin-bottom:18px}
  .fee-table .fee-cat th{border:0;border-radius:12px;margin-bottom:10px;padding:12px 16px}
  .fee-table tr:not(.fee-cat){background:var(--white);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:10px;display:grid;grid-template-columns:1fr;gap:6px}
  .fee-table tr.fee-offer{background:#EAF6FC}
  .fee-table td{border:0;padding:0;background:none !important;width:auto}
  .fee-table .fee-service{grid-column:1/-1;font-size:.98rem}
  .fee-table .fee-items{width:auto;font-size:.82rem}
  .fee-table .fee-items::before{content:"ADA item no. ";font-weight:600;color:var(--ink-3)}
  .fee-table .fee-price{width:auto;text-align:left;font-size:1.02rem;margin-top:2px}
  .fee-terms{display:inline;margin:0 0 0 10px}
  .fee-terms{font-size:.78rem}
}
.prose .fund-grid,.fund-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin:6px 0 18px;padding:0}
.prose .fund-grid li,.fund-grid li{list-style:none;margin:0;position:relative;padding:10px 14px 10px 32px;background:var(--white);border:1px solid var(--line);border-radius:12px;font-size:.93rem;color:var(--ink);line-height:1.35}
.fund-grid li::before{content:"";position:absolute;left:14px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--blue-500)}
@media(max-width:560px){.fund-grid{grid-template-columns:1fr}}
.prose h3+.fund-grid{margin-top:12px}
.foot-area{font-size:.86rem;color:var(--ink-2);line-height:1.55}
.map-info .map-area{margin-top:8px;font-size:.84rem;color:var(--ink-3)}
.pl-thanks p{margin:0 0 12px;color:inherit}
.pl-thanks .pl-pdf{font-size:.9rem}
/* v3.4.0: everyday fees in the left column of the price list section, intro and form on the right */
.pl-split{display:grid;grid-template-columns:.85fr 1.15fr;grid-template-areas:"head copy" "fees copy" "fees form";grid-template-rows:auto auto 1fr;column-gap:48px;align-items:start}
.pl-split .pl-head{grid-area:head;margin:0 0 26px}
.pl-split .pl-copy{grid-area:copy}
.pl-split .price-teaser{grid-area:fees;align-self:start}
.pl-split .pl-card{grid-area:form;margin-top:8px}
@media(min-width:901px){.pl-split .price-teaser{position:sticky;top:104px}}
@media(max-width:900px){.pl-split{grid-template-columns:1fr;grid-template-areas:"head" "copy" "fees" "form";grid-template-rows:none}.pl-split .pl-head{margin-bottom:16px}.pl-split .pl-card{margin-top:18px}}
.price-teaser{max-width:520px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 24px 18px;box-shadow:0 24px 50px -40px rgba(1,42,65,.35)}
.price-teaser h3{font-size:1.1rem;margin:0 0 8px}
.price-teaser ul{list-style:none;margin:0;padding:0}
.price-teaser li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:11px 0;border-top:1px solid var(--line);font-size:.95rem}
.price-teaser li:first-child{border-top:0}
.price-teaser .pt-name{color:var(--ink);line-height:1.45}
.price-teaser .pt-price{flex:none;font-family:var(--font-head);font-weight:700;color:var(--navy);white-space:nowrap}
.price-teaser .pt-offer{margin:0 -12px 2px;padding:14px 12px;border-radius:14px;background:#EAF6FC;border-top:0}
.price-teaser .pt-offer+li{border-top:0}
.price-teaser .pt-offer strong{display:block;font-family:var(--font-head);color:var(--navy)}
.price-teaser .pt-incl{display:block;margin-top:3px;font-size:.86rem;color:var(--ink-2)}
.price-teaser .pt-offer .pt-price{color:var(--blue-600);font-size:1.25rem}
.price-teaser .pt-terms{display:block;margin-top:6px;font-weight:600;font-size:.78rem;line-height:1.4;color:var(--blue-600);text-decoration:underline;text-underline-offset:2px}
.price-teaser .pt-note{margin:10px 0 0;font-size:.84rem;line-height:1.5;color:var(--ink-3)}
@media(max-width:900px){.price-teaser{max-width:640px}}
@media(max-width:560px){.price-teaser{padding:20px 18px 16px}.price-teaser li{font-size:.93rem;gap:12px}}

/* ---------- v3.5.0 (23 October 2026) ---------- */
/* bigger header logo: 68px desktop, 56px tablet, 44px phone; at least 50px once the header shrinks */
.nav{height:96px}
.nav .logo img{height:68px}
.header.scrolled .nav{height:74px}
.header.scrolled .nav .logo img{height:52px}
@media(max-width:1000px){.nav{height:84px}.nav .logo img{height:56px}.header.scrolled .nav{height:72px}.header.scrolled .nav .logo img{height:50px}}
@media(max-width:560px){.nav{height:68px}.nav .logo img{height:44px}.header.scrolled .nav{height:62px}.header.scrolled .nav .logo img{height:44px}}
.breadcrumbs{padding-top:122px}
@media(max-width:1000px){.breadcrumbs{padding-top:106px}}
@media(max-width:560px){.breadcrumbs{padding-top:90px}}
.footer .brand img{height:58px}

/* map: links to the Google listing under the map */
.map-links{display:flex;flex-wrap:wrap;gap:10px 18px;margin:14px 0 0}
.map-links a{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-head);font-weight:600;font-size:.92rem;color:var(--blue-700);text-decoration:underline;text-underline-offset:3px}
.map-links a:hover{color:var(--navy)}
.map-links svg{width:17px;height:17px;flex:none}

/* HICAPS health fund logo grid */
.fund-logos{list-style:none;margin:30px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.fund-logo{position:relative;display:flex;align-items:center;justify-content:center;height:112px;padding:20px 18px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:0 18px 36px -32px rgba(1,42,65,.35);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.fund-logo img{max-width:100%;max-height:58px;width:auto;height:auto;object-fit:contain}
.fund-logo:hover{transform:translateY(-2px);box-shadow:0 22px 40px -30px rgba(1,42,65,.45)}
.fund-logo.is-preferred{border-color:rgba(26,154,212,.45);padding-top:30px}
.fund-badge{position:absolute;top:8px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:3px 10px;border-radius:var(--r-pill);background:var(--blue-600);color:#fff;font-family:var(--font-head);font-weight:600;font-size:.68rem;letter-spacing:.04em}
.fund-logos-compact{gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:22px;max-width:980px}
.fund-logos-compact .fund-logo{height:92px;padding:16px 12px}
.fund-logos-compact .fund-logo.is-preferred{padding-top:34px}.fund-logos-compact .fund-logo.is-preferred img{max-height:38px}
.fund-logos-compact .fund-logo img{max-height:44px}
@media(max-width:1000px){.fund-logos{grid-template-columns:repeat(3,minmax(0,1fr))}.fund-logos-compact{grid-template-columns:repeat(4,minmax(0,1fr))}}
.fund-logo.is-preferred img{max-height:48px}
@media(max-width:620px){.fund-logos,.fund-logos-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.fund-logo,.fund-logos-compact .fund-logo{height:100px;padding:16px 14px}.fund-logo img,.fund-logos-compact .fund-logo img{max-height:42px;max-width:88%}.fund-logo.is-preferred,.fund-logos-compact .fund-logo.is-preferred{padding-top:36px}.fund-logo.is-preferred img{max-height:36px}.fund-badge{font-size:.62rem;padding:2px 8px;top:7px}}
.fund-logos-section .section-head{margin-bottom:0}

/* click-to-play videos */
.video-grid{display:grid;gap:22px;margin-top:28px}
.video-grid-1{grid-template-columns:minmax(0,760px)}
.video-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.video-grid-many{grid-template-columns:repeat(3,minmax(0,1fr))}
.lite-video{margin:0}
.lv-btn,.lv-frame{display:block;position:relative;width:100%;aspect-ratio:16/9;border:0;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(135deg,var(--navy),var(--blue-700));cursor:pointer;padding:0}
.lv-btn img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}
.lv-btn:hover img{transform:scale(1.03)}
.lv-icon{position:absolute;left:50%;top:50%;width:66px;height:66px;margin:-33px 0 0 -33px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);color:var(--blue-700);box-shadow:0 14px 30px -12px rgba(1,42,65,.6);transition:transform .25s var(--ease)}
.lv-icon svg{width:28px;height:28px;margin-left:4px}
.lv-btn:hover .lv-icon,.lv-btn:focus-visible .lv-icon{transform:scale(1.08)}
.lv-time{position:absolute;right:12px;bottom:12px;padding:3px 9px;border-radius:var(--r-pill);background:rgba(1,28,44,.78);color:#fff;font-size:.78rem;font-weight:600}
.lite-video figcaption{margin-top:12px;font-family:var(--font-head);font-weight:600;font-size:1rem;color:var(--navy);line-height:1.35}
.video-note{margin-top:18px;font-size:.86rem;color:var(--ink-3);max-width:80ch}
@media(max-width:900px){.video-grid-many{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.video-grid-2,.video-grid-many{grid-template-columns:1fr}.lv-icon{width:56px;height:56px;margin:-28px 0 0 -28px}}
.section-alt .lv-btn{box-shadow:0 20px 40px -30px rgba(1,42,65,.5)}

/* Prices page: the New Patient Offer on its own beside the form */
.price-teaser-single{padding:8px 10px}
.price-teaser-single .pt-offer{margin:0;padding:18px 16px}
.price-teaser-single .pt-note{margin:12px 6px 6px}
.video-more{margin-top:24px}
/* Dental Videos page (23 October 2026) */
.lite-video .lv-sum{display:block;margin-top:6px;font-family:var(--font-body);font-weight:400;font-size:.9rem;line-height:1.55;color:var(--ink-2)}
.lite-video[id]{scroll-margin-top:118px}
.video-library{row-gap:34px}
/* Video pop-up player and topic filters (26 October 2026) */
.video-filters{margin:22px 0 0}
.video-filters + .video-grid{margin-top:22px}
.lite-video[hidden]{display:none}
.lite-video:target .lv-btn{outline:3px solid var(--blue-500);outline-offset:4px}
html.vm-open{overflow:hidden}
.video-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;opacity:0;transition:opacity .25s var(--ease)}
.video-modal[hidden]{display:none}
.video-modal.is-in{opacity:1}
.vm-backdrop{position:absolute;inset:0;background:rgba(1,20,32,.86)}
.vm-box{position:relative;width:min(960px,100%);transform:translateY(12px) scale(.98);transition:transform .3s var(--ease)}
.video-modal.is-in .vm-box{transform:none}
.vm-frame{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;background:#000;box-shadow:0 30px 70px -30px rgba(0,0,0,.8)}
.vm-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vm-title{margin:14px 52px 0 2px;color:#fff;font-family:var(--font-head);font-weight:600;font-size:1.05rem;line-height:1.35}
.vm-close{position:absolute;right:0;top:-52px;width:42px;height:42px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;transition:background .2s var(--ease)}
.vm-close:hover{background:rgba(255,255,255,.28)}
.vm-close:focus-visible{outline:3px solid #fff;outline-offset:2px}
.vm-close svg{width:22px;height:22px}
@media(max-width:620px){.video-modal{padding:12px}.vm-close{top:-50px}}
@media(prefers-reduced-motion:reduce){.video-modal,.vm-box{transition:none}}
.post-video-link{margin-top:22px;padding:14px 18px;border-left:4px solid var(--blue-500);border-radius:0 var(--r-md,12px) var(--r-md,12px) 0;background:var(--sky-50)}
/* Pre-launch audit (27 October 2026): form text at 16px on phones and tablets, so iOS does not zoom in on the field */
@media(max-width:1024px){.field input,.field select,.field textarea{font-size:16px}}
/* Pre-launch audit (27 October 2026): skip link, shown only when it has keyboard focus */
.skip-link{position:absolute;left:12px;top:-60px;z-index:2000;padding:10px 16px;border-radius:999px;background:var(--navy);color:#fff;font-weight:600;transition:top .2s}
.skip-link:focus{top:12px;outline:3px solid var(--blue-400);outline-offset:2px}
main#main:focus{outline:none}
