/* Dr. Ian Gray Dental Group – landing page styles. WordPress: enqueue as theme stylesheet. */
@font-face{font-family:"Lora";font-style:normal;font-weight:500 600;font-display:swap;src:url("fonts/lora-latin.woff2") format("woff2")}
@font-face{font-family:"Lora";font-style:italic;font-weight:500;font-display:swap;src:url("fonts/lora-italic-latin.woff2") format("woff2")}
@font-face{font-family:"Dancing Script";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/dancing-script-latin.woff2") format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400 700;font-display:swap;src:url("fonts/source-sans-3-latin.woff2") format("woff2")}
:root{
  --cream:#FAF7F2; --paper:#FFFFFF; --ink:#2B2F33; --muted:#56616B;
  --anchor:#0E5E78; --anchor-deep:#0A4558; --turq:#1AA1CD; --mint:#75D69C; --mint-soft:#E3F5EA;
  --line:#E6E0D6; --radius:20px; --pill:40px;
  --serif:"Lora", Georgia, serif; --sans:"Source Sans 3", "Source Sans Pro", system-ui, sans-serif;
  --wrap:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:var(--header-h,80px);scroll-padding-bottom:var(--callbar-h,0px)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--cream);color:var(--ink);font:400 18px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--anchor)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #111;outline-offset:3px;box-shadow:0 0 0 6px #fff;border-radius:6px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.18;margin:0;color:var(--ink)}
h2{font-size:clamp(1.9rem,3.2vw,2.6rem)}
h3{font-size:1.3rem}
p{margin:0 0 14px}
.eyebrow{font:700 1rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--anchor);margin:0 0 14px}
.lead{font-size:1.12rem;color:var(--muted)}
.skip{position:absolute;left:-999px;top:8px;background:var(--anchor);color:#fff;padding:10px 16px;z-index:100}
.skip:focus{left:8px}
/* facts still to confirm with the practice: remove class when confirmed */
.tbc{background:#FFF4C2;border-bottom:2px dashed #D9A400;padding:0 3px;border-radius:3px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font:700 1rem/1 var(--sans);text-decoration:none;padding:16px 26px;border-radius:var(--pill);border:2px solid transparent;transition:background .15s}
.btn-primary{background:var(--anchor);color:#fff}
.btn-primary:hover{background:var(--anchor-deep)}
.btn-mint{background:var(--mint);color:#0B3A2A}
.btn-ghost{border-color:currentColor;color:var(--anchor)}

/* ---------- HEAD AREA ---------- */
.topbar{background:var(--anchor-deep);color:#DDEFF4;font-size:1rem}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:4px 28px;justify-content:space-between;padding-top:8px;padding-bottom:8px}
.topbar a{color:#fff;text-decoration:none;font-weight:600}
.topbar b{color:var(--mint);font-weight:600}
.site-header{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:12px;padding-bottom:12px}
.brand img{width:230px}
.nav{display:flex;align-items:center;gap:26px}
.nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:1rem}
.nav a:hover{color:var(--anchor)}
.nav .btn{color:#fff;padding:12px 20px}
.menu-toggle{display:none;background:none;border:2px solid var(--anchor);color:var(--anchor);border-radius:var(--pill);padding:9px 14px;font:700 1rem var(--sans);cursor:pointer;align-items:center;gap:8px;min-height:44px}
.menu-toggle .bars,.menu-toggle .bars::before,.menu-toggle .bars::after{display:block;width:18px;height:2px;background:currentColor;border-radius:2px;position:relative}
.menu-toggle .bars::before,.menu-toggle .bars::after{content:"";position:absolute;left:0}
.menu-toggle .bars::before{top:-6px}.menu-toggle .bars::after{top:6px}
/* phone number always visible in the sticky header (desktop: the Call button in the nav) */
.header-phone{display:none;background:var(--anchor);color:#fff;text-decoration:none;font:700 1rem/1 var(--sans);padding:13px 16px;border-radius:var(--pill);white-space:nowrap;min-height:44px;align-items:center}
.header-phone:hover{background:var(--anchor-deep)}

.hero{background:linear-gradient(180deg,var(--paper) 0%,var(--cream) 100%);padding:56px 0 0}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(2.3rem,4.6vw,3.7rem);letter-spacing:-.01em}
.hero h1 em{display:block;font-style:italic;font-weight:500;color:var(--anchor);font-size:.72em;margin-top:8px}
.hero .lead{margin:22px 0 12px;max-width:600px}
.hero-list{list-style:none;padding:0;margin:0 0 26px;display:flex;flex-wrap:wrap;gap:8px}
.hero-list li{background:var(--mint-soft);color:#14513A;border-radius:var(--pill);padding:6px 14px;font-size:1rem;font-weight:600}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.hero-photo{position:relative}
.hero-photo .shape{border-radius:48% 52% 46% 54% / 56% 50% 50% 44%;overflow:hidden;background:var(--mint-soft);aspect-ratio:1/1}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.hero-photo::before{content:"";position:absolute;inset:-14px -14px auto auto;width:42%;aspect-ratio:1;border-radius:50%;background:var(--mint);opacity:.55;z-index:-1}
.hero-card{position:absolute;left:-24px;bottom:22px;background:var(--paper);border-radius:16px;padding:14px 18px;box-shadow:0 14px 36px rgba(14,94,120,.16);font-size:1rem;line-height:1.4}
.hero-card strong{display:block;font-family:var(--serif);font-size:1.08rem}
.hero-card span{color:var(--muted)}
/* fact bar overlaps the next section: no empty band */
.facts{list-style:none;margin:44px 0 0;padding:22px 28px;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;background:var(--anchor);border-radius:var(--radius);color:#D7EBF1;position:relative;top:36px;box-shadow:0 18px 40px rgba(10,69,88,.18)}
.facts b{display:block;font-family:var(--serif);font-size:1.18rem;font-weight:600;color:#fff}
.facts span{font-size:1rem}

/* ---------- SECTIONS ---------- */
section{padding:72px 0}
section:focus{outline:none}
.section-head{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;margin-bottom:36px}
.section-head .lead{margin:0}
#expertise{padding-top:108px}

/* Expertise: 4 detailed blocks */
.ex-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.ex{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:32px;display:flex;flex-direction:column}
.ex h3{margin-bottom:10px}
.ex p{color:var(--muted)}
.ex ul{margin:4px 0 0;padding-left:20px;color:var(--ink)}
.ex li{margin:4px 0}
.ex li::marker{color:var(--turq)}
.ex.dark{background:var(--anchor);border-color:var(--anchor);color:#E2F1F5}
.ex.dark h3{color:#fff}
.ex.dark p{color:#CFE6EE}
.ex.dark ul{color:#fff}
.ex.dark li::marker{color:var(--mint)}
.ex .note{font-size:1rem;margin:14px 0 0;padding-top:12px;border-top:1px solid rgba(255,255,255,.2)}
.ex:not(.dark) .note{border-top-color:var(--line)}

/* Contact strip */
.callband{background:var(--anchor-deep);color:#fff;padding:34px 0}
.callband .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}
.callband h2{color:#fff;font-size:clamp(1.5rem,2.6vw,2rem)}
.callband p{margin:4px 0 0;color:#CFE6EE}

/* Why us */
.why-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
.why-photo{border-radius:var(--radius);overflow:hidden;position:sticky;top:110px}
.why-photo img{aspect-ratio:4/3.6;object-fit:cover}
.why-photo figcaption{background:var(--paper);padding:14px 18px;font-size:1rem;color:var(--muted)}
.why h2{margin-bottom:16px}
.why-points{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px;margin-top:26px}
.why-points div{border-top:2px solid var(--mint);padding-top:14px}
.why-points h3{font-size:1.12rem;margin-bottom:6px}
.why-points p{color:var(--muted);font-size:1rem;margin:0}

/* Services */
.services{background:var(--paper)}
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.svc{background:var(--cream);border-radius:18px;padding:26px 24px}
.svc h3{font-size:1.15rem;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.svc ul{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:1rem}
.svc li{padding-left:18px;position:relative}
.svc li::before{content:"";position:absolute;left:0;top:.6em;width:7px;height:7px;border-radius:50%;background:var(--turq)}
.svc-foot{margin-top:22px;color:var(--muted)}

/* Patient service */
.ps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.ps{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:28px}
.ps h3{margin-bottom:10px;font-size:1.2rem}
.ps p,.ps li{color:var(--muted);font-size:1rem}
.ps ol{margin:0;padding-left:20px}
.ps li{margin-bottom:6px}
.ps a{font-weight:700}

/* FAQ */
.faq{background:var(--paper)}
.faq-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.faq-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px 40px;margin-bottom:18px}
details{border-bottom:1px solid var(--line);padding:16px 0}
summary{cursor:pointer;font:600 1.12rem/1.4 var(--serif);list-style:none;display:flex;justify-content:space-between;gap:16px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--anchor);font:700 1.4rem/1 var(--sans)}
details[open] summary::after{content:"–"}
details p{margin:10px 0 0;color:var(--muted)}

/* Contact */
.contact{background:var(--anchor);color:#E2F1F5}
.contact h2,.contact h3{color:#fff}
.contact .eyebrow{color:var(--mint)}
.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;margin-top:30px}
.contact a{color:#fff}
.contact .big{font-family:var(--serif);font-size:clamp(1.7rem,2.8vw,2.2rem);text-decoration:none;font-weight:600}
.contact h3{margin-bottom:10px;font-size:1.15rem}
.contact p{margin:6px 0}
.hours{border-collapse:collapse;width:100%}
.hours td{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.18)}
.hours td:last-child{text-align:right}
.contact .tbc{color:var(--ink)}

footer{background:#083845;color:#A9C6CF;font-size:1rem;padding:26px 0 26px}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px}
footer a{color:#fff}
.mobile-call{display:none}

/* Open-now status (filled by assets/site.js) */
.open-status:empty{display:none}
.open-status{font-weight:600;color:#fff}
.open-status::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;background:#B8C7CC}
.open-status.is-open::before{background:var(--mint)}
/* Active menu item */
.nav a[aria-current]{color:var(--anchor);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
/* Back to top */
.to-top{position:fixed;right:20px;bottom:24px;z-index:55;display:flex;flex-direction:column;align-items:center;justify-content:center;width:54px;height:54px;border-radius:50%;background:var(--anchor);color:#fff;text-decoration:none;font:700 1.2rem/1 var(--sans);box-shadow:0 8px 24px rgba(10,69,88,.28);opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .2s,transform .2s,visibility .2s}
.to-top .to-top-label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;margin-top:2px}
.to-top.show{opacity:1;visibility:visible;transform:none}
.to-top:hover{background:var(--anchor-deep)}
@media (prefers-reduced-motion:reduce){.to-top{transition:none}}
/* Print: practice info only */
@media print{.topbar,.site-header,.mobile-call,.to-top,.callband,.hero-actions{display:none!important}body{background:#fff;font-size:12pt}section{padding:16px 0}.contact,.ex.dark,.facts{background:#fff!important;color:#000!important;box-shadow:none}.contact *,.ex.dark *,.facts *{color:#000!important}}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1000px){
  .hero-grid,.why-grid,.faq-grid,.section-head{grid-template-columns:1fr}
  .section-head{gap:12px}
  .hero-photo{max-width:420px;margin:0 auto}
  .why-photo{position:static}
  .svc-grid{grid-template-columns:1fr 1fr}
  .ps-grid{grid-template-columns:1fr 1fr}
  .facts{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .menu-toggle{display:inline-flex}
  .header-phone{display:inline-flex;margin-left:auto}
  .site-header .wrap{gap:10px}
  .nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--paper);flex-direction:column;align-items:flex-start;padding:16px 24px 24px;border-bottom:1px solid var(--line);gap:16px}
  .nav.open{display:flex}
  .brand img{width:185px}
  .ex-grid{grid-template-columns:1fr}
  .topbar .hide-sm{display:none}
}
@media (max-width:600px){
  body{font-size:17px}
  .wrap{padding:0 16px}
  section{padding:56px 0}
  #expertise{padding-top:88px}
  .hero{padding-top:36px}
  .ex,.ps{padding:24px 20px}
  .svc-grid,.ps-grid,.contact-grid,.why-points{grid-template-columns:1fr}
  .facts{padding:18px 20px;gap:14px;margin-top:28px}
  .hero-photo{max-width:320px}
  .hero-card{left:0}
  .hero-actions .btn{width:100%}
  footer{padding-bottom:96px}
  .mobile-call{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--paper);box-shadow:0 -6px 20px rgba(0,0,0,.08)}
  .mobile-call .btn{flex:1;padding:15px 10px}
  .brand img{width:140px}
  .menu-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .menu-toggle{padding:9px 12px}
  .header-phone{padding:12px 13px;font-size:1rem}
  .to-top{right:14px;bottom:calc(84px + env(safe-area-inset-bottom));width:48px;height:48px}
}
@media (max-width:360px){.brand img{width:104px}.header-phone{font-size:1rem;padding:12px 10px}.site-header .wrap{padding-left:12px;padding-right:12px}}

/* utility classes (replace former inline styles, so the CSP needs no 'unsafe-inline') */
.m0{margin:0}
.addr{font-style:normal}
.eyebrow.on-dark{color:var(--mint)}

/* ---------- Callback request ---------- */
.callback{background:var(--mint-soft)}
.cb-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:start}
.cb-intro h2{margin-bottom:14px}
.cb-facts{list-style:none;padding:0;margin:22px 0;display:grid;gap:12px}
.cb-facts li{background:var(--paper);border-radius:14px;padding:14px 18px;font-size:1rem;color:var(--muted)}
.cb-facts b{display:block;color:var(--ink)}
.cb-urgent{border-left:4px solid #B3261E;background:var(--paper);padding:12px 16px;border-radius:8px;font-size:1rem}
.cb-form{background:var(--paper);border-radius:var(--radius);padding:32px;box-shadow:0 14px 36px rgba(14,94,120,.10)}
.field{margin:0 0 18px;border:0;padding:0;min-width:0}
.field label,.field legend{display:block;font-weight:700;margin-bottom:6px}
.req{font-weight:400;color:var(--muted);font-size:1rem}
.hint{display:block;font-size:1rem;color:var(--muted);margin-top:4px}
.cb-form input[type=text],.cb-form input[type=tel],.cb-form select{width:100%;font:400 1rem var(--sans);padding:12px 14px;border:1.5px solid #9AA7AF;border-radius:10px;background:#fff;color:var(--ink);min-height:48px}
.cb-form input:focus-visible,.cb-form select:focus-visible{outline:3px solid #111;outline-offset:2px;box-shadow:0 0 0 6px #fff}
.cb-form [aria-invalid=true]{border-color:#B3261E}
.field-row{display:grid;grid-template-columns:1fr 1.3fr;gap:16px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{display:inline-flex;align-items:center;gap:6px;font-weight:600;border:1.5px solid #9AA7AF;border-radius:var(--pill);padding:9px 14px;margin:0;cursor:pointer;min-height:44px}
.chips label:has(input:checked){border-color:var(--anchor);background:var(--mint-soft)}
.consent{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start}
.consent input{width:22px;height:22px;margin-top:3px}
.consent label{font-weight:400;font-size:1rem}
.cb-error{color:#B3261E;font-weight:700;margin:0 0 12px}
.cb-error:empty{display:none}
.cb-actions{display:flex;flex-wrap:wrap;gap:10px}
.cb-preview{margin-top:18px;background:var(--cream);border-radius:12px;padding:14px 16px;font-size:1rem}
.cb-preview pre{white-space:pre-wrap;font:400 1rem/1.5 var(--sans);margin:6px 0 0}
.cb-privacy{font-size:1rem;color:var(--muted);margin:16px 0 0}
.hero-sub{margin:14px 0 0;font-weight:600}
.topbar-cb{background:var(--mint);color:#0B3A2A!important;border-radius:var(--pill);padding:2px 12px}

/* ---------- Floating call button (desktop/tablet) ---------- */
.call-fab{position:fixed;right:20px;bottom:24px;z-index:56;display:inline-flex;align-items:center;gap:10px;background:var(--anchor);color:#fff;text-decoration:none;font:700 1rem/1 var(--sans);padding:16px 22px;border-radius:var(--pill);box-shadow:0 10px 28px rgba(10,69,88,.32)}
.call-fab:hover{background:var(--anchor-deep)}
.call-fab-icon::before{content:"\260E";font-size:1.15rem}
.to-top{bottom:92px}
@media (max-width:1000px){.cb-grid{grid-template-columns:1fr;gap:28px}}
@media (max-width:600px){
  .call-fab{display:none}
  .to-top{bottom:calc(84px + env(safe-area-inset-bottom))}
  .cb-form{padding:22px 18px}
  .field-row{grid-template-columns:1fr}
}
@media print{.call-fab,.callback{display:none!important}}

/* ---------- Legal pages + footer links ---------- */
.legal{padding:56px 0 80px}
.legal-wrap{max-width:820px}
.legal h1{font-size:clamp(2rem,4vw,2.8rem);margin-bottom:8px}
.legal h2{font-size:1.4rem;margin:34px 0 10px}
.legal p,.legal li{color:var(--ink)}
.legal ul{padding-left:22px}
.legal li{margin-bottom:8px}
.legal code{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:.92em}
.legal-meta{color:var(--muted);font-size:1rem}
.legal-dl{display:grid;grid-template-columns:200px 1fr;gap:10px 20px;margin:0}
.legal-dl dt{font-weight:700}
.legal-dl dd{margin:0}
.footer-grid{align-items:center}
.footer-legal{display:flex;flex-wrap:wrap;gap:6px 18px}
@media (max-width:600px){.legal-dl{grid-template-columns:1fr;gap:2px}.legal-dl dd{margin-bottom:10px}}

/* collapse the menu earlier, so menu items never wrap onto two lines */
@media (max-width:1080px){
  .menu-toggle{display:inline-flex}
  .header-phone{display:inline-flex;margin-left:auto}
  .site-header .wrap{gap:10px}
  .nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--paper);flex-direction:column;align-items:flex-start;padding:16px 24px 24px;border-bottom:1px solid var(--line);gap:16px}
  .nav.open{display:flex}
}
.nav a{white-space:nowrap}

/* section order v3: patient info directly under the hero (clears the overlapping fact bar) */
#patient-service{padding-top:108px}
#expertise{padding-top:72px}
.hero-list a{color:inherit;text-decoration:none;display:block}
.hero-list a:hover{text-decoration:underline}
@media (max-width:600px){#patient-service{padding-top:88px}#expertise{padding-top:56px}}

/* ---------- v4 layout fixes ---------- */
/* top bar: two live status lines */
.topbar .wrap{align-items:center}
.status-line{display:inline-flex;align-items:center}
.open-status{color:#fff}
.open-status.is-closed::before{background:#E5675C}
/* expertise cards: same structure in all four, note always at the bottom */
.ex .note{margin-top:auto!important}
.ex ul{margin-bottom:14px}
/* patient info: 3 columns on wide screens; on two columns the last card spans the full width */
@media (min-width:1001px){.ps-grid{grid-template-columns:repeat(3,1fr)}}
@media (min-width:601px) and (max-width:1000px){.ps-grid .ps:last-child:nth-child(odd){grid-column:1/-1}}
/* callback form */
.cb-form input[type=email]{width:100%;font:400 1rem var(--sans);padding:12px 14px;border:1.5px solid #9AA7AF;border-radius:10px;background:#fff;color:var(--ink);min-height:48px}
.field-row{grid-template-columns:1fr 1fr}
@media (max-width:600px){.field-row{grid-template-columns:1fr}}
/* callback gate: while closed, hide the form and every callback link, show the phone instead */
body.cb-off [data-cb-link]{display:none!important}
body.cb-off .cb-form > :not(.cb-actions):not(noscript){display:none}
body.cb-off .cb-form .cb-actions{margin:0}
body.cb-off .cb-intro .cb-facts li:nth-child(2){display:none}
.hours-note{font-size:1rem;opacity:.85}
body.cb-off #callback{display:none}

/* ---------- v5: after Gemini/ChatGPT review ---------- */
/* section order: hero, about, treatments, first visit, callback, FAQ, contact */
#why-us{padding-top:108px}
#patient-service{padding-top:72px}
@media (max-width:600px){#why-us{padding-top:88px}#patient-service{padding-top:56px}}
/* headings and intro stacked, no empty column next to the heading */
.section-head{grid-template-columns:1fr;gap:12px;max-width:760px}
/* hero */
.hero-tagline{font:500 italic clamp(1.25rem,2.2vw,1.6rem)/1.3 var(--serif);color:var(--anchor);margin:10px 0 0}
.hero-photo img{object-position:50% 30%;transform:scale(1.12);transform-origin:50% 40%}
@media (max-width:1000px){.hero-photo{max-width:300px}}
@media (max-width:600px){.hero-photo{max-width:240px}.hero-card{left:-10px;bottom:10px}}
/* all treatments as compact tags */
.all-treatments{margin-top:28px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:24px 28px}
.all-treatments h3{font-size:1.15rem;margin-bottom:14px}
.tag-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.tag-list li{background:var(--cream);border:1px solid var(--line);border-radius:var(--pill);padding:6px 14px;font-size:1rem}
/* callback */
.cb-hours-line{background:var(--paper);border-radius:14px;padding:14px 18px;font-size:1rem;color:var(--muted)}
.cb-hours-line b{display:block;color:var(--ink)}
/* about: photo fills the column height, no empty space under it */
@media (min-width:1001px){
  .why-grid{align-items:stretch}
  .why-photo{position:static;display:flex;flex-direction:column}
  .why-photo img{flex:1;height:100%;aspect-ratio:auto;object-fit:cover}
}
/* callback: intro above, form below, no empty left column */
.cb-grid{grid-template-columns:1fr!important;max-width:820px;gap:24px}
.cb-intro .lead{margin-bottom:12px}
[hidden]{display:none!important}
.cb-grid{margin-left:0;margin-right:auto}
.cb-grid{max-width:var(--wrap)!important;margin-left:auto;margin-right:auto}
.cb-intro,.cb-form{max-width:820px;width:100%}

/* ---------- v6: photos, badge, gallery ---------- */
.hero-badge{display:inline-block;background:var(--mint);color:#0B3A2A;font:700 1rem/1 var(--sans);letter-spacing:.02em;border-radius:var(--pill);padding:9px 16px;margin:0 0 14px}
.hero-photo img{transform:none;object-position:50% 20%}
.gallery{padding-top:24px}
.gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.gal-grid figure{margin:0;position:relative;border-radius:16px;overflow:hidden;background:var(--line)}
.gal-grid img{width:100%;height:100%;object-fit:cover;aspect-ratio:16/10;display:block}
.gal-grid .g-big{grid-column:span 2;grid-row:span 2}
.gal-grid .g-big img{aspect-ratio:auto}
.gal-grid figcaption{position:absolute;left:12px;bottom:12px;background:rgba(255,255,255,.92);color:var(--ink);font:600 1rem var(--sans);padding:6px 12px;border-radius:var(--pill)}
@media (max-width:800px){.gal-grid{grid-template-columns:1fr 1fr}.gal-grid .g-big{grid-column:span 2;grid-row:auto}.gal-grid .g-big img{aspect-ratio:16/10}}
@media (max-width:800px){.gal-grid figure:last-child{grid-column:span 2}.gal-grid figure:last-child img{aspect-ratio:16/8}}

/* ---------- v7: premium finish, soft transitions ---------- */
/* soft background transitions between sections instead of hard edges */
.hero{background:radial-gradient(900px 480px at 85% 12%,rgba(117,214,156,.20),transparent 65%),radial-gradient(700px 420px at 0% 0%,rgba(26,161,205,.08),transparent 60%),linear-gradient(180deg,var(--paper) 0%,var(--cream) 100%)}
.equipment{background:linear-gradient(180deg,var(--cream) 0,var(--paper) 140px,var(--paper) calc(100% - 140px),var(--cream) 100%)}
.callback{background:linear-gradient(180deg,var(--cream) 0,var(--mint-soft) 160px,var(--mint-soft) calc(100% - 160px),var(--paper) 100%)}
.faq{background:var(--paper)}
.contact{border-radius:44px 44px 0 0;background:linear-gradient(180deg,var(--anchor) 0%,#0C5068 100%)}
.faq{padding-bottom:110px}
footer{background:#0A4558}
section{padding:88px 0}
#why-us{padding-top:120px}
@media (max-width:600px){section{padding:60px 0}.contact{border-radius:28px 28px 0 0}}
/* cards: soft shadow instead of hard borders, gentle lift on hover */
.ex,.ps,.eq,.all-treatments,.cb-form{border:1px solid rgba(14,94,120,.08);box-shadow:0 1px 2px rgba(14,94,120,.04),0 12px 32px rgba(14,94,120,.07);border-radius:24px}
.ex,.ps,.eq{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.ex:hover,.ps:hover,.eq:hover{transform:translateY(-4px);box-shadow:0 2px 4px rgba(14,94,120,.05),0 22px 48px rgba(14,94,120,.12)}
.why-photo{box-shadow:0 20px 50px rgba(14,94,120,.14);border-radius:24px}
.facts{background:linear-gradient(135deg,var(--anchor) 0%,#0C5068 100%);border-radius:24px}
.btn{transition:background .25s,transform .25s,box-shadow .25s}
.btn-primary{box-shadow:0 8px 20px rgba(14,94,120,.22)}
.btn:hover{transform:translateY(-2px)}
.hero-list li{transition:background .25s}
.hero-list li:hover{background:#D3EFDD}
h2{letter-spacing:-.01em}
.eyebrow{display:inline-flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--mint);border-radius:2px}
/* equipment */
.eq-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.eq{background:var(--paper);padding:28px}
.eq-icon{display:block;width:56px;height:56px;padding:14px;border-radius:16px;background:var(--mint-soft);color:var(--anchor);fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;margin-bottom:16px}
.eq h3{font-size:1.2rem;margin-bottom:8px}
.eq p{color:var(--muted);font-size:1rem;margin:0}
@media (max-width:1000px){.eq-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.eq-grid{grid-template-columns:1fr}}
/* gentle reveal on scroll (only with JS, never with reduced motion) */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}.ex,.ps,.eq,.btn{transition:none}.ex:hover,.ps:hover,.eq:hover,.btn:hover{transform:none}}
@media print{.js .reveal{opacity:1;transform:none}}
.hero .eyebrow{display:flex}
.call-fab{transition:opacity .3s,transform .3s,background .25s}
.call-fab.away{opacity:0;pointer-events:none;transform:translateY(10px)}
@media (max-width:600px){.eq{display:grid;grid-template-columns:56px 1fr;column-gap:16px;padding:20px}.eq-icon{grid-row:span 2;margin:0}.eq h3{font-size:1.1rem;margin-bottom:4px}}


/* ---------- v8: readable for older patients, tighter spacing ---------- */
body{font-size:19px;color:#1F272D}
:root{--muted:#3C4852}
.lead{font-size:1.25rem;line-height:1.6}
p,li{line-height:1.65}
h2{font-size:clamp(2.1rem,3.6vw,3rem)}
h3{font-size:1.45rem}
.eyebrow{font:700 1.1rem/1.2 var(--sans);letter-spacing:.1em;color:#0B4F68}
.eyebrow::before{width:28px}
.ex p,.ps p,.ps li,.eq p,.why-points p,.svc li,.tag-list li,.cb-privacy,.hint,footer,.topbar,.facts span,.hours td,.contact p,details p{font-size:1.06rem}
.eq p,.why-points p{color:#34414B}
.facts b{font-size:1.3rem}
.facts span{display:block;font-size:1.05rem;line-height:1.4}
details summary{font-size:1.25rem}
.btn{font-size:1.1rem}
.chips label{font-size:1.05rem}
.cb-form input[type=text],.cb-form input[type=tel],.cb-form select{font-size:1.1rem}
@media (max-width:600px){body{font-size:18px}.lead{font-size:1.15rem}h2{font-size:2rem}.eyebrow{font-size:1rem}}

/* spacing: one clear rhythm, no double paddings */
section{padding:56px 0}
.section-head{margin-bottom:28px}
#why-us{padding-top:92px}
.equipment{padding-top:40px;padding-bottom:40px;background:linear-gradient(180deg,var(--cream) 0,var(--paper) 48px,var(--paper) calc(100% - 48px),var(--cream) 100%)}
#expertise{padding-top:28px}
#patient-service{padding-top:20px}
.callback{background:linear-gradient(180deg,var(--cream) 0,var(--mint-soft) 56px,var(--mint-soft) calc(100% - 56px),var(--paper) 100%)}
.faq{padding-bottom:72px}
.all-treatments{margin-top:24px}
@media (max-width:600px){section{padding:40px 0}#why-us{padding-top:70px}.equipment{padding:28px 0}#expertise{padding-top:20px}#patient-service{padding-top:12px}.section-head{margin-bottom:20px}}

/* welcome note under the header */
.welcome-note{background:linear-gradient(90deg,var(--mint-soft),#EAF6F9);border-bottom:1px solid rgba(14,94,120,.10)}
.welcome-note p{margin:0;padding:14px 0;font-size:1.1rem;color:#1F272D;line-height:1.5}
.welcome-note a{font-weight:700;color:var(--anchor-deep)}
@media (max-width:600px){.welcome-note p{padding:12px 0;font-size:1.05rem}}
@media print{.welcome-note{display:none}}
/* v8b: tighter vertical rhythm */
section{padding:44px 0}
.equipment{padding-top:28px;padding-bottom:28px}
#expertise{padding-top:12px}
#patient-service{padding-top:4px}
.callback{padding:44px 0}
.faq{padding-top:44px;padding-bottom:56px}
.contact{padding-top:48px}
@media (max-width:600px){section{padding:32px 0}.equipment{padding:20px 0}#expertise{padding-top:8px}#patient-service{padding-top:4px}}
@media (max-width:600px){.facts li:nth-child(4){grid-column:1/-1}.facts li{padding:0}}

/* v9: "since 1987" badge, the eye-catcher */
.since-badge{position:absolute;z-index:2;top:-26px;left:-14px;width:280px;padding:22px 18px 20px;border-radius:22px;border:5px solid var(--cream);background:linear-gradient(160deg,#14708F 0,var(--anchor) 55%,var(--anchor-deep) 100%);color:#fff;text-align:center;box-shadow:0 16px 36px rgba(10,69,88,.32);display:flex;flex-direction:column;align-items:center}
.since-badge .sb-top,.since-badge .sb-bot{font:500 1.08rem/1.2 var(--serif);letter-spacing:.07em;text-transform:uppercase;color:#fff}
.since-badge .sb-num{display:block;font:700 5.6rem/1 var(--serif);letter-spacing:.01em;margin:8px 0 0;color:rgba(255,255,255,.16);-webkit-text-stroke:1.4px rgba(255,255,255,.9)}
.since-badge .sb-script{display:block;font:600 3.3rem/1 "Dancing Script",var(--serif);color:#fff;margin:-2.55rem 0 10px;transform:rotate(-7deg);text-shadow:0 2px 10px rgba(10,69,88,.55)}
.why-photo{overflow:visible;position:relative}
.why-photo img{border-radius:24px 24px 0 0}
.why-photo figcaption{border-radius:0 0 24px 24px}
@media (max-width:900px){
  .since-badge{position:relative;top:auto;left:auto;width:100%;max-width:300px;margin:0 auto 16px;border-width:0}
  .why-photo{display:flex;flex-direction:column}
}
@media (prefers-reduced-motion:reduce){.since-badge{transition:none}}

/* v10: snoring and sleep section */
.snore{background:radial-gradient(1000px 420px at 85% -10%,rgba(26,161,205,.35),transparent 60%),linear-gradient(180deg,var(--anchor-deep) 0,#0B4F66 100%);color:#fff;position:relative}
.snore::before,.snore::after{content:"";position:absolute;left:0;right:0;height:70px;pointer-events:none}
.snore::before{top:0;background:linear-gradient(180deg,var(--cream),transparent)}
.snore::after{bottom:0;background:linear-gradient(0deg,var(--cream),transparent);opacity:.0}
.snore .wrap{position:relative;z-index:1}
.snore-head{max-width:760px;margin:0 0 30px}
.snore h2,.snore h3{color:#fff}
.snore .lead{color:rgba(255,255,255,.92);margin-top:12px}
.snore-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.snore-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius);padding:28px;backdrop-filter:blur(2px)}
.snore-card h3{margin:12px 0 8px}
.snore-card p{margin:0;color:rgba(255,255,255,.92)}
.snore-icon{fill:none;stroke:var(--mint);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.snore-steps{margin-top:34px}
.snore-steps h3{margin-bottom:14px}
.snore-steps ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:s}
.snore-steps li{counter-increment:s;background:rgba(255,255,255,.95);color:var(--ink);border-radius:var(--radius);padding:22px 20px 20px;position:relative}
.snore-steps li::before{content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--anchor);color:#fff;font:700 1rem var(--sans);margin-bottom:10px}
.snore-steps li b{display:block;font-family:var(--serif);font-size:1.1rem;margin-bottom:4px;color:var(--ink)}
.snore-steps li span{color:var(--muted);font-size:1rem;line-height:1.5;display:block}
.snore-note{margin:26px 0 0;max-width:820px;font-size:1rem;color:rgba(255,255,255,.85)}
.snore-cta{margin-top:22px;display:flex;flex-wrap:wrap;gap:18px;align-items:center}
.snore-link{color:#fff;font-weight:600;text-underline-offset:4px}
.ex .more{margin:14px 0 0}
.ex .more a{font-weight:600}
@media (max-width:980px){.snore-grid{grid-template-columns:1fr}.snore-steps ol{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.snore-steps ol{grid-template-columns:1fr}}

/* v10b: "since" above the number, and a mini badge in the footer */
.since-badge .sb-script{margin:.35rem 0 0;transform:rotate(-6deg);position:relative;z-index:2;line-height:.9}
.since-badge .sb-num{margin:-1.55rem 0 .35rem;position:relative;z-index:1}
.footer-seal{justify-content:center!important;padding-bottom:18px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.14)}
.since-badge.sb-mini{position:relative;top:auto;left:auto;width:210px;max-width:100%;padding:12px 12px 12px;border:2px solid rgba(255,255,255,.35);border-radius:16px;box-shadow:none;margin:0}
.sb-mini .sb-top,.sb-mini .sb-bot{font-size:.78rem}
.sb-mini .sb-script{font-size:1.9rem}
.sb-mini .sb-num{font-size:3.3rem;margin:-1rem 0 .2rem}
@media (max-width:900px){.since-badge.sb-mini{margin:0 auto}}

/* v10c: badge restyled after the original "Celebrating 35 years" graphic: flat blue, filled outlined numerals, straight script */
.since-badge{background:linear-gradient(180deg,#31708F 0,#2B6486 100%);padding:24px 18px 24px;border-radius:24px}
.since-badge .sb-top,.since-badge .sb-bot{font:500 1.4rem/1.2 var(--serif);letter-spacing:.09em;text-transform:none;color:#fff}
.since-badge .sb-num{font:700 6.6rem/.95 var(--serif);letter-spacing:.005em;margin:-1.7rem 0 .45rem;color:#4A8FB5;-webkit-text-stroke:1.8px #fff;text-shadow:none}
.since-badge .sb-script{font:600 3.9rem/1 "Dancing Script",var(--serif);color:#fff;transform:none;margin:.5rem 0 0;text-shadow:0 2px 12px rgba(20,60,90,.45)}
.since-badge.sb-mini{width:230px;padding:14px 12px 14px;border-radius:18px}
.sb-mini .sb-top,.sb-mini .sb-bot{font-size:.95rem;letter-spacing:.07em}
.sb-mini .sb-script{font-size:2.3rem}
.sb-mini .sb-num{font-size:3.9rem;margin:-1.05rem 0 .25rem;-webkit-text-stroke-width:1.2px}
/* v10d: slightly larger script */
.since-badge .sb-script{font-size:4.5rem;margin:.3rem 0 0}
.since-badge .sb-num{margin:-2.15rem 0 .45rem}
.sb-mini .sb-script{font-size:2.7rem}
.sb-mini .sb-num{margin:-1.3rem 0 .25rem}

/* v10e: "since" sits on its own line, no overlap with text or number */
.since-badge .sb-script{font-size:3.4rem;line-height:1.05;margin:.35rem 0 .1rem;transform:none;text-shadow:none}
.since-badge .sb-num{margin:0 0 .5rem;line-height:1}
.since-badge .sb-top{margin-bottom:.1rem}
.sb-mini .sb-script{font-size:2.1rem;margin:.2rem 0 0}
.sb-mini .sb-num{margin:0 0 .3rem}

/* v11: treatment pages (wrapper class tp, not svc: svc is the landing-page service cards) */
.tp .legal-wrap{max-width:860px}
.crumbs{font-size:1rem;color:var(--muted);margin:0 0 16px}
.crumbs a{color:var(--anchor)}
.tp h2{font-size:1.6rem;margin:40px 0 12px}
.tp .svc-lead{font-size:1.25rem;line-height:1.6;color:var(--ink);margin:10px 0 0}
.tp ul.svc-list{list-style:none;padding:0;margin:12px 0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px 18px}
.tp ul.svc-list li{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin:0}
.tp ol.svc-steps{list-style:none;padding:0;margin:14px 0;display:grid;gap:12px;counter-reset:st}
.tp ol.svc-steps li{counter-increment:st;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px 18px 16px 64px;position:relative;margin:0}
.tp ol.svc-steps li::before{content:counter(st);position:absolute;left:18px;top:16px;width:34px;height:34px;border-radius:50%;background:var(--anchor);color:#fff;display:grid;place-items:center;font:700 1rem var(--sans)}
.tp ol.svc-steps b{display:block;font-family:var(--serif);font-size:1.1rem}
.tp .svc-note{background:var(--mint-soft);border-radius:16px;padding:16px 20px;margin:22px 0;color:#14513A}
.svc-faq{margin-top:44px}
.svc-faq details{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:4px 18px;margin:0 0 10px}
.svc-faq summary{cursor:pointer;font-weight:600;padding:14px 0;list-style-position:outside}
.svc-faq details p{margin:0 0 14px;color:var(--ink)}
.svc-cta{margin-top:44px;background:linear-gradient(160deg,#14708F 0,var(--anchor-deep) 100%);color:#fff;border-radius:24px;padding:30px 32px}
.svc-cta h2{color:#fff;margin:0 0 8px;font-size:1.6rem}
.svc-cta p{color:rgba(255,255,255,.92);margin:0 0 14px}
.svc-cta-actions{display:flex;flex-wrap:wrap;gap:18px;align-items:center}
.svc-cta-link{color:#fff;font-weight:600;text-underline-offset:4px}
@media (max-width:640px){.tp ul.svc-list{grid-template-columns:1fr}.svc-cta{padding:24px 20px}}

/* v12: mobile spacing. The photo box kept the old sticky offset (top:110px) after it became relative, which pushed it onto the text and left a gap above it. */
.why-photo{top:auto}
@media (max-width:900px){
  .hero-grid{gap:18px}
  .hero-photo{margin-top:0}
  .why-grid{gap:28px}
  .facts{margin-top:28px}
}

/* v12b: facts bar as an even 2 x 2 grid on phones */
@media (max-width:900px){
  .facts{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px;padding:22px 20px}
  .facts li{min-width:0;margin:0}
  .facts li b{font-size:1.15rem;line-height:1.25}
  .facts li span{font-size:1rem;line-height:1.45}
}
@media (max-width:380px){.facts{grid-template-columns:1fr}}
@media (max-width:900px){.facts li:nth-child(4){grid-column:auto}}

/* v13: honeypot field is out of sight for people and screen readers */
.hp-wrap{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* v14: softer, richer motion. Gentle rise and fade on scroll, a calm entrance for the top of the page, soft header shadow. */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,.7,.2,1)}
.js .reveal.in{opacity:1;transform:none}
.js.calm .reveal{transform:none;transition:opacity .8s ease}
@keyframes gd-rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes gd-fade{from{opacity:0}to{opacity:1}}
@keyframes gd-bloom{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}
.js .hero-grid > div:first-child > *{animation:gd-rise .9s cubic-bezier(.22,.7,.2,1) both}
.js .hero-grid > div:first-child > :nth-child(2){animation-delay:.08s}
.js .hero-grid > div:first-child > :nth-child(3){animation-delay:.16s}
.js .hero-grid > div:first-child > :nth-child(4){animation-delay:.24s}
.js .hero-grid > div:first-child > :nth-child(5){animation-delay:.32s}
.js .hero-grid > div:first-child > :nth-child(6){animation-delay:.4s}
.js .hero-grid > div:first-child > :nth-child(n+7){animation-delay:.48s}
.js .hero-photo{animation:gd-bloom 1.1s cubic-bezier(.22,.7,.2,1) .2s both}
.js.calm .hero-grid > div:first-child > *,.js.calm .hero-photo{animation:gd-fade .9s ease both}
.site-header{transition:box-shadow .35s ease,background-color .35s ease}
.site-header.scrolled{box-shadow:0 8px 28px rgba(10,69,88,.12)}
.since-badge,.snore-card,.snore-steps li{transition:transform .35s ease,box-shadow .35s ease}
@media (hover:hover){.snore-card:hover,.snore-steps li:hover{transform:translateY(-4px)}}
@media print{.js .reveal,.js .hero-grid > div:first-child > *,.js .hero-photo{opacity:1!important;transform:none!important;animation:none!important}}

/* v15: two-tone numerals like the original "35 years" graphic (19 darker, 87 lighter), steel blue card */
.since-badge{background:linear-gradient(180deg,#336F94 0,#2A6186 100%)}
.since-badge .sb-num i{font-style:normal}
.since-badge .sb-num i:first-child{color:#3A7BA6}
.since-badge .sb-num i:last-child{color:#6AA8CE}
.since-badge .sb-num i:first-child{color:#34709B}
.since-badge .sb-num i:last-child{color:#74B1D6}

/* v16: soft floating bubbles around the portrait, in the colours of the site, with small symbols */
.hero-photo{position:relative}
.hero-bubbles{position:absolute;inset:-6% -8% -4% -8%;pointer-events:none;z-index:1}
.bub{position:absolute;display:grid;place-items:center;border-radius:50%;box-shadow:0 12px 28px rgba(10,69,88,.16);animation:gd-float 7s ease-in-out infinite}
.bub svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.b-moon{width:74px;height:74px;left:2%;top:10%;background:var(--anchor);color:#fff}
.b-tooth{width:64px;height:64px;right:2%;top:46%;background:#fff;color:var(--anchor);animation-delay:-2s;animation-duration:8s}
.b-heart{width:54px;height:54px;right:12%;bottom:8%;background:var(--mint);color:#0B3A2A;animation-delay:-4s}
.b-shield{width:58px;height:58px;left:-1%;top:52%;background:var(--turq);color:#fff;animation-delay:-1s;animation-duration:9s}
.b-smiley{width:46px;height:46px;left:22%;top:-2%;background:var(--mint-soft);color:var(--anchor);animation-delay:-3s;animation-duration:6s}
.b-smiley svg,.b-heart svg{width:24px;height:24px}
.b-dot{background:var(--mint);box-shadow:none;opacity:.7}
.b-dot.d1{width:22px;height:22px;right:30%;top:-4%;animation-delay:-5s}
.b-dot.d2{width:16px;height:16px;left:12%;bottom:6%;background:var(--turq);animation-delay:-2.500s}
@keyframes gd-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.hero-card{position:relative;z-index:2}
@media (max-width:900px){
  .hero-bubbles{inset:-2% -2% 0 -2%}
  .b-moon{width:56px;height:56px;left:0;top:6%}
  .b-tooth{width:50px;height:50px;right:0}
  .b-heart{width:44px;height:44px;right:6%;bottom:22%}
  .b-shield{width:46px;height:46px;left:-2%;top:44%}
  .b-smiley{width:38px;height:38px;left:20%}
  .bub svg{width:22px;height:22px}
}
@media (prefers-reduced-motion:reduce){.bub{animation:none}}
@media print{.hero-bubbles{display:none}}
.hero{overflow-x:clip}

/* v17: four calm line symbols (tooth, sleep, smile, apple), one stroke weight, soft gradients, a fine mint accent */
.bub{box-shadow:0 14px 30px rgba(10,69,88,.18)}
.bub::after{content:"";position:absolute;inset:5px;border-radius:50%;border:1px solid rgba(255,255,255,.38);pointer-events:none}
.bub svg{stroke-width:1.5}
.bub svg .acc{stroke:var(--mint)}
.b-sleep{width:78px;height:78px;left:1%;top:9%;background:linear-gradient(150deg,#14708F 0,var(--anchor-deep) 100%);color:#fff}
.b-tooth{width:68px;height:68px;right:1%;top:44%;background:#fff;color:var(--anchor);animation-delay:-2s;animation-duration:8s}
.b-tooth::after{border-color:rgba(14,94,120,.16)}
.b-tooth svg .acc{stroke:var(--turq)}
.b-heart{width:62px;height:62px;right:11%;bottom:7%;background:linear-gradient(150deg,#8BE0AC 0,var(--mint) 100%);color:#0B3A2A;animation-delay:-4s}
.b-heart svg .acc{stroke:#0B3A2A}
.b-smiley{width:58px;height:58px;left:0;top:50%;background:linear-gradient(150deg,#3DB4DA 0,var(--turq) 100%);color:#fff;animation-delay:-1s;animation-duration:9s}
.b-smiley svg .acc{stroke:#fff}
.b-sleep svg,.b-tooth svg{width:32px;height:32px}
.b-heart svg,.b-smiley svg{width:30px;height:30px}
@media (max-width:900px){
  .b-sleep{width:58px;height:58px;left:0;top:6%}
  .b-tooth{width:52px;height:52px;right:0}
  .b-heart{width:48px;height:48px;right:6%;bottom:22%}
  .b-smiley{width:46px;height:46px;left:-2%;top:44%}
  .b-sleep svg,.b-tooth svg,.b-heart svg,.b-smiley svg{width:24px;height:24px}
}
/* v18: scroll-linked circling uses the separate translate property, the float animation keeps transform */
.bub{translate:var(--ox,0px) var(--oy,0px);transition:translate .25s ease-out;will-change:translate,transform}
@media (prefers-reduced-motion:reduce){.bub{translate:none;transition:none}}

/* v19: order of topics tooth, sleep, heart, smiley. The smiley is a thin line face with happy eyes, not an emoji. */
.b-heart svg .acc{stroke:#0B3A2A}
.b-smiley svg .acc{stroke:#fff}
/* v19b: heart sits left above the name card so it is not hidden */
.b-heart{right:auto;left:7%;bottom:27%;top:auto}
@media (max-width:900px){.b-heart{left:3%;bottom:30%;right:auto}}

/* v20: facts bar with even columns and fine dividers on wide screens */
@media (min-width:901px){
  .facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:26px 8px}
  .facts li{padding:2px 28px;min-width:0}
  .facts li + li{border-left:1px solid rgba(255,255,255,.2)}
  .facts b{font-size:1.2rem;line-height:1.25;margin-bottom:6px}
  .facts span{font-size:1rem;line-height:1.5}
}
@media (min-width:901px) and (max-width:1180px){
  .facts li{padding:2px 18px}
  .facts b{font-size:1.1rem}
}

/* v21: the badge no longer lies on the photo. It sits above it, centred in the column. */
.why-photo .since-badge{position:relative;top:auto;left:auto;width:min(100%,300px);max-width:300px;margin:0 auto 22px;border:5px solid var(--cream)}
@media (min-width:901px){
  .why-photo{display:block}
  .why-photo img{border-radius:24px 24px 0 0}
}
.why-photo img{object-position:78% 45%}

/* v22: photo size is fixed in itself so it can never run over the next section; snoring signs as soft chips */
.why-photo{display:block}
.why-photo img{display:block;width:100%;height:auto;aspect-ratio:4/3.6;object-fit:cover;object-position:78% 45%;flex:none}
@media (min-width:901px){.why-photo{align-self:start}}
.snore-signs{margin-top:34px}
.snore-signs h3{margin-bottom:12px}
.snore-signs ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.snore-signs li{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.24);color:#fff;border-radius:999px;padding:8px 16px;font-size:1rem;line-height:1.3}

/* v23: treatment pages: one spacing system, icons on headings, picture band and two drawings */
.tp .legal-wrap{max-width:900px}
.tp .svc-lead{margin:12px 0 22px}
.tp h2{display:flex;align-items:center;gap:14px;margin:46px 0 14px;font-size:1.6rem;line-height:1.2}
.tp p{margin:0 0 14px}
.tp ul.svc-list{margin:14px 0 14px}
.tp ol.svc-steps{margin:16px 0 14px}
.tp .svc-note{margin:30px 0 0}
.tp .tp-ico{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(150deg,#14708F,var(--anchor-deep));color:#fff;box-shadow:0 8px 18px rgba(10,69,88,.18)}
.tp .tp-ico svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tp .tp-ico .acc{stroke:var(--mint)}
.tp .svc-faq{margin-top:50px}
.tp .svc-faq h2{margin:0 0 18px}
.tp .svc-cta{margin-top:42px}
.tp .svc-cta h2{margin:0 0 8px}
.tp-art{position:relative;margin:6px 0 4px;min-height:132px;border-radius:26px;background:radial-gradient(420px 160px at 85% 0%,rgba(26,161,205,.28),transparent 70%),linear-gradient(135deg,#0E5E78 0,#0A4558 100%);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 32px;overflow:hidden}
.tp-art .a-bub{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;flex:none;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);color:#fff;animation:gd-float 7s ease-in-out infinite}
.tp-art .a-bub.white{background:#fff;color:var(--anchor);border-color:transparent;animation-delay:-3s}
.tp-art .a-bub svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.tp-art .a-bub .acc{stroke:var(--mint)}
.tp-art .a-bub.white .acc{stroke:var(--turq)}
.tp-art .a-line{flex:1;height:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.5) 0 8px,transparent 8px 18px);border-radius:2px;position:relative}
.tp-art .a-line::before,.tp-art .a-line::after{content:"";position:absolute;top:-5px;width:12px;height:12px;border-radius:50%;background:var(--mint)}
.tp-art .a-line::before{left:30%}
.tp-art .a-line::after{left:68%;background:var(--turq);width:9px;height:9px;top:-3.500px}
.tp-fig{margin:22px 0 8px;background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:20px 22px 14px}
.tp-fig svg{display:block;width:100%;height:auto}
.tp-fig figcaption{font-size:1rem;color:var(--muted);margin-top:8px;text-align:center}
.tp-fig .tube{fill:var(--mint-soft);stroke:var(--anchor);stroke-width:2.2}
.tp-fig .tube.narrow{fill:#E4F1F7}
.tp-fig .air{fill:none;stroke:var(--turq);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
.tp-fig .wave{fill:none;stroke:var(--anchor);stroke-width:2.4;stroke-linecap:round;opacity:.7}
.tp-fig .tooth{fill:#fff;stroke:var(--anchor);stroke-width:2}
.tp-fig .appl{fill:rgba(117,214,156,.22);stroke:var(--mint);stroke-width:2.4;stroke-dasharray:7 6}
.tp-fig .arrow{fill:none;stroke:var(--turq);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
.tp-fig .t{font:600 16px "Source Sans 3",sans-serif;fill:#2B2F33}
@media (max-width:640px){.tp h2{font-size:1.35rem;gap:12px}.tp .tp-ico{width:40px;height:40px}.tp-art{padding:18px 20px;min-height:110px}.tp-art .a-bub{width:62px;height:62px}.tp-art .a-bub svg{width:30px;height:30px}.tp-fig{padding:14px 12px 10px}}
@media (prefers-reduced-motion:reduce){.tp-art .a-bub{animation:none}}

/* v24: decorative floating stops after 5 seconds (WCAG 2.2.2). Scroll-linked movement stays, it only moves when the visitor scrolls. */
.bub,.tp-art .a-bub{animation-duration:5s!important;animation-iteration-count:1!important;animation-fill-mode:both}
@media (prefers-reduced-motion:reduce){.js .hero-grid > div:first-child > *,.js .hero-photo{animation:none!important;opacity:1}}

/* v25: airflow arrows are drawn with the scroll (default is the finished drawing, also without JavaScript or with reduced motion) */
.tp-fig .air.draw{stroke-dasharray:96;stroke-dashoffset:calc((1 - var(--p,1)) * 96)}
.tp-fig .t.sm{font-size:13px;font-weight:600;fill:#56616B}
@media (prefers-reduced-motion:reduce){.tp-fig .air.draw{stroke-dashoffset:0}}

/* v26: contact map card. The drawn map is a stand-in, the real Google map loads only after a click. */
.map-card{margin-top:34px;display:grid;grid-template-columns:1.5fr 1fr;gap:0;background:#fff;color:var(--ink);border-radius:24px;overflow:hidden;box-shadow:0 18px 44px rgba(0,0,0,.18)}
.map-stage{position:relative;min-height:320px;background:#E3F5EA}
.map-art{position:absolute;inset:0;width:100%;height:100%;display:block}
.map-load{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);box-shadow:0 10px 24px rgba(10,69,88,.28)}
.map-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.map-side{padding:28px 30px;display:flex;flex-direction:column;justify-content:center}
.contact .map-side h3{color:var(--ink);margin:0 0 10px}
.contact .map-side p{color:var(--ink);margin:0 0 10px}
.contact .map-side a{color:var(--anchor);font-weight:600}
.contact .map-note{font-size:1rem;color:var(--muted)!important}
@media (max-width:900px){.map-card{grid-template-columns:1fr}.map-stage{min-height:280px}.map-side{padding:22px 20px}}

/* v27: concept diagram on the airway page: the connections build up with the scroll (finished drawing without JavaScript or with reduced motion) */
.tp-fig .link{fill:none;stroke:var(--turq);stroke-width:2.6;stroke-linecap:round;stroke-dasharray:240px;stroke-dashoffset:calc((1 - clamp(0, calc(var(--p,1) * 6 - var(--i,0)), 1)) * 240px)}
.tp-fig .link.n1,.tp-fig .node.n1{--i:0}
.tp-fig .link.n2,.tp-fig .node.n2{--i:1}
.tp-fig .link.n3,.tp-fig .node.n3{--i:2}
.tp-fig .link.n4,.tp-fig .node.n4{--i:3}
.tp-fig .link.n5,.tp-fig .node.n5{--i:4}
.tp-fig .node{opacity:clamp(0, calc(var(--p,1) * 6 - var(--i,0) - .35), 1)}
.tp-fig .node rect{fill:#fff;stroke:var(--anchor);stroke-width:2}
.tp-fig .node .t{font-size:15px;fill:#2B2F33}
.tp-fig .hub circle{fill:var(--anchor)}
.tp-fig .hub .hubt{fill:#fff;font-size:19px;font-weight:700}
@media (prefers-reduced-motion:reduce){.tp-fig .link{stroke-dashoffset:0}.tp-fig .node{opacity:1}}
.tp-fig svg text{font-family:"Source Sans 3",sans-serif}
