/* Self-hosted fonts (latin subset, woff2) — no third-party font origins */
@font-face{font-family:'Cinzel';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/cinzel-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/cinzel-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/nunito-sans-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/nunito-sans-latin-400-italic.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/nunito-sans-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/nunito-sans-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/nunito-sans-latin-800-normal.woff2') format('woff2')}
/* Thompson Pediatric Dentistry — site styles (Brand & Design System v2.0, July 11 2026)
   Palette measured from official vector logos · Cinzel + Nunito Sans */
:root{
--forest:#3E5441;--evergreen:#2E4032;--sage:#799177;--sage-deep:#55755D;
--olive:#9BAB15;--rose:#E87386;--rose-deep:#C94F63;
--disc:#E4E6D9;--disc-light:#F1F2EA;--ink:#1F2A22;--line:#DCE0D8;--star:#E2A93B;
--r-btn:14px;--r-card:18px;--r-photo:24px;--r-banner:28px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Nunito Sans',Arial,sans-serif;color:var(--ink);font-size:17px;line-height:1.65;background:#fff}
h1,h2{font-family:'Cinzel',Georgia,serif;font-weight:600;color:var(--forest);line-height:1.22;text-wrap:balance}
h3,h4{font-weight:800;color:var(--forest);line-height:1.3}
.display{font-family:'Cinzel',Georgia,serif;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--forest)}
a{color:var(--forest);text-underline-offset:3px}
a:hover{color:var(--evergreen);text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--rose-deep);outline-offset:2px}
img{max-width:100%}
p{text-wrap:pretty}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
.skip{position:absolute;left:-9999px;top:0;background:var(--forest);color:#fff;padding:10px 16px;border-radius:0 0 10px 0;z-index:200;font-weight:700}
.skip:focus{left:0}
/* ---------- announcement + header ---------- */
.announce{background:var(--forest);color:#fff;text-align:center;font-weight:600;font-size:14.5px;padding:9px 16px}
.announce a{color:#fff;font-weight:800}
header.site{background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:100}
.nav{display:flex;align-items:center;gap:14px;padding:12px 0}
.brand{display:flex;align-items:center;text-decoration:none;flex-shrink:0}
.brand img.lockup{height:58px;width:auto;display:block}
@media (max-width:1360px){.brand img.lockup{height:46px}}
nav.main{margin-left:auto}
nav.main ul{display:flex;gap:2px;list-style:none;flex-wrap:nowrap}
nav.main a{display:block;text-decoration:none;font-weight:700;font-size:14px;white-space:nowrap;padding:8px 9px;border-radius:999px;transition:background .2s,color .2s}
nav.main a:hover{background:var(--disc-light);color:var(--forest)}
nav.main a[aria-current=page]{background:var(--disc);color:var(--forest)}
.call{display:flex;gap:12px;align-items:center;flex-shrink:0}
.call .tel{font-weight:800;text-decoration:none;white-space:nowrap;display:flex;align-items:center;gap:7px;font-size:15px;padding:10px 4px}
.call .tel svg{width:17px;height:17px}
.menu-btn{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:12px;padding:9px 11px;cursor:pointer;color:var(--forest)}
.menu-btn svg{width:22px;height:22px;display:block}
#mobile-nav{display:none}
/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;background:var(--forest);color:#fff;font-weight:700;font-size:16px;padding:14px 28px;border-radius:var(--r-btn);text-decoration:none;border:2px solid var(--forest);transition:background .2s,transform .2s,border-color .2s;cursor:pointer}
.btn:hover{background:var(--evergreen);border-color:var(--evergreen);color:#fff;transform:translateY(-2px)}
.btn.ghost{background:#fff;color:var(--forest)}
.btn.ghost:hover{background:var(--disc-light);color:var(--forest)}
.btn.on-dark{background:#fff;color:var(--forest);border-color:#fff}
.btn.on-dark:hover{background:var(--disc)}
.btn.ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.65)}
.btn.ghost-dark:hover{background:rgba(255,255,255,.12);color:#fff;border-color:#fff}
.btn svg{width:18px;height:18px}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
/* ---------- type helpers ---------- */
.kicker{color:var(--sage-deep);font-weight:800;letter-spacing:.14em;text-transform:uppercase;font-size:13px;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.kicker::before{content:"";width:26px;height:2px;background:var(--rose);border-radius:2px}
.kicker.centered{justify-content:center}
.kicker.centered::after{content:"";width:26px;height:2px;background:var(--rose);border-radius:2px}
.lead{font-size:19px;max-width:64ch}
.byline{font-size:14px;color:var(--sage-deep);font-weight:600;margin-top:14px;position:relative}
.byline a{color:var(--sage-deep)}
.arrow-link{font-weight:800;text-decoration:none}
.arrow-link::after{content:" →";transition:margin .2s}
.arrow-link:hover::after{margin-left:4px}
/* ---------- hero ---------- */
.hero{background:linear-gradient(180deg,var(--disc-light),#fff);padding:64px 0 56px;position:relative;overflow:hidden}
.hero .floral{position:absolute;right:-140px;top:-120px;width:560px;height:560px;opacity:.09;pointer-events:none;user-select:none}
.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:56px;align-items:center;position:relative}
.hero .display{font-size:clamp(34px,4.6vw,54px);margin-bottom:16px}
.hero h1,.page-hero h1{font-size:clamp(24px,2.5vw,32px)}
.hero h1{color:var(--ink);font-family:'Nunito Sans',Arial,sans-serif;font-weight:800;margin-bottom:16px}
.hero p{max-width:54ch;margin-bottom:26px;font-size:18px}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.chip{background:#fff;border:1px solid var(--sage);border-radius:999px;padding:8px 16px;font-size:14px;font-weight:700;color:var(--forest);display:inline-flex;align-items:center;gap:7px}
.chip .star{color:var(--star)}
.chip svg{width:15px;height:15px;color:var(--sage-deep)}
.blob{position:relative;border-radius:58% 42% 55% 45%/50% 46% 54% 50%;overflow:hidden;background:var(--disc);aspect-ratio:1/1.04;border:6px solid #fff;outline:1px solid var(--line)}
.blob img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-badge{position:absolute;bottom:6%;left:-14px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:10px 20px;font-weight:800;font-size:14.5px;color:var(--forest);display:flex;align-items:center;gap:8px}
.hero-badge .star{color:var(--star);letter-spacing:1px}
/* ---------- page hero ---------- */
.page-hero{background:linear-gradient(180deg,var(--disc-light),#fff);padding:56px 0 44px;position:relative;overflow:hidden}
.page-hero .floral{position:absolute;right:-160px;top:-160px;width:480px;height:480px;opacity:.08;pointer-events:none}
.page-hero h1{margin-bottom:14px;position:relative}
.page-hero .lead{position:relative}
.page-hero .kicker{position:relative}
/* ---------- waves ---------- */
.wave{display:block;height:52px;line-height:0}
.wave svg{width:100%;height:100%;display:block}
/* ---------- sections ---------- */
section{padding:64px 0}
.on-mist{background:var(--disc-light)}
.on-cream{background:var(--disc)}
.tight{padding:44px 0}
.sec-head{max-width:680px;margin-bottom:38px}
.sec-head.centered{margin:0 auto 38px;text-align:center}
.sec-head h2{font-size:clamp(26px,3vw,32px);margin-bottom:12px}
.sec-head p{color:var(--ink)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
/* ---------- cards ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-card);padding:26px;transition:transform .25s,border-color .25s;display:flex;flex-direction:column;gap:8px}
.card:hover{transform:translateY(-4px);border-color:var(--sage)}
.card h3{font-size:19px}
.card p{font-size:15.5px}
.card .arrow-link{font-size:15px;margin-top:auto}
.on-mist .card,.on-cream .card{border-color:transparent}
.on-mist .card:hover,.on-cream .card:hover{border-color:var(--sage)}
.ic{width:46px;height:46px;border-radius:14px;background:var(--disc-light);display:grid;place-items:center;color:var(--forest);margin-bottom:6px}
.ic svg{width:23px;height:23px}
.card:hover .ic{background:var(--disc)}
/* ---------- comfort ladder ---------- */
.ladder{counter-reset:step;display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.step{background:#fff;border:1px solid var(--line);border-top:5px solid var(--rose);border-radius:var(--r-card);padding:24px;transition:transform .25s}
.step:nth-child(2){border-top-color:var(--olive)}
.step:nth-child(3){border-top-color:var(--sage)}
.step:nth-child(4){border-top-color:var(--forest)}
.step:hover{transform:translateY(-4px)}
.step b{display:block;color:var(--forest);margin-bottom:6px;font-size:17px}
.step p{font-size:14.5px}
.step::before{counter-increment:step;content:counter(step);display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--forest);color:#fff;font-weight:800;font-size:15px;margin-bottom:12px}
/* ---------- banner CTA ---------- */
.banner{background:var(--forest);color:#fff;border-radius:var(--r-banner);padding:48px;display:grid;grid-template-columns:1.2fr .8fr;gap:36px;align-items:center;position:relative;overflow:hidden}
.banner .floral{position:absolute;right:-90px;bottom:-110px;width:340px;height:340px;opacity:.12;pointer-events:none}
.banner>div{position:relative}
.banner h2{color:#fff;font-size:clamp(24px,2.6vw,30px);margin-bottom:12px}
.banner p{color:var(--disc);max-width:52ch;margin-bottom:20px}
.banner ul{list-style:none;display:grid;gap:10px;position:relative}
.banner li{background:rgba(255,255,255,.08);border:1px solid rgba(228,230,217,.35);border-radius:14px;padding:12px 16px;font-weight:700;font-size:15px;display:flex;align-items:center;gap:10px}
.banner li svg{width:17px;height:17px;color:var(--disc);flex-shrink:0}
/* ---------- reviews ---------- */
.stars{color:var(--star);font-size:20px;letter-spacing:2px}
.review-head{display:flex;align-items:center;gap:16px;margin-bottom:28px;flex-wrap:wrap}
.review-head b{font-size:21px;color:var(--forest);font-family:'Cinzel',Georgia,serif;font-weight:600}
.quote{background:#fff;border:1px solid var(--line);border-radius:var(--r-card);padding:26px 26px 22px;font-size:15.5px;font-style:italic;font-weight:400;position:relative;transition:transform .25s,border-color .25s;display:flex;flex-direction:column}
.quote:hover{transform:translateY(-4px);border-color:var(--sage)}
.quote::before{content:"\201C";font-family:'Cinzel',Georgia,serif;font-size:52px;line-height:1;color:var(--rose);display:block;margin-bottom:2px}
.quote footer{margin-top:14px;font-style:normal;font-weight:800;color:var(--sage-deep);font-size:14px}
.quote .stars{font-size:15px;letter-spacing:1px;margin-top:8px}
/* ---------- prose ---------- */
.prose{max-width:70ch}
.prose p{margin-bottom:16px}
.prose h2{font-size:26px;margin:34px 0 14px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:20px;margin:24px 0 10px;color:var(--sage-deep)}
.prose ul{margin:0 0 16px 22px}
.prose li{margin-bottom:10px}
/* ---------- FAQ ---------- */
details{border:1px solid var(--line);border-radius:var(--r-btn);margin-bottom:12px;background:#fff;overflow:hidden}
summary{font-weight:800;color:var(--forest);cursor:pointer;font-size:16.5px;padding:18px 52px 18px 22px;list-style:none;position:relative;transition:background .2s}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:24px;font-weight:400;color:var(--sage-deep);transition:transform .25s}
details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
summary:hover{background:var(--disc-light)}
details>p,details>div{padding:0 22px 18px;font-size:15.5px}
details a{font-weight:700}
/* ---------- photos & gallery ---------- */
.photo{border-radius:var(--r-photo);background:var(--disc);min-height:340px;display:grid;place-items:center;color:var(--sage-deep);font-weight:700;text-align:center;padding:16px;overflow:hidden;position:relative}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slot{border-radius:var(--r-photo);overflow:hidden;position:relative}
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.gallery .slot{aspect-ratio:1}
.gallery .slot:nth-child(2),.gallery .slot:nth-child(3){border-radius:52% 48% 45% 55%/48% 52% 48% 52%}
/* ---------- visit strip ---------- */
.visit-cards .card{padding:28px}
.visit-cards h3{font-size:18px}
.visit-cards p{font-size:15.5px}
/* ---------- footer ---------- */
footer.site{background:var(--evergreen);color:var(--disc);padding:56px 0 28px;font-size:15px}
footer.site .grid-4{align-items:start;grid-template-columns:1.35fr 1fr 1fr .9fr}
footer.site h4{color:#fff;font-size:15px;margin-bottom:12px;letter-spacing:.08em;text-transform:uppercase}
footer.site a{color:var(--disc)}
footer.site a:hover{color:#fff}
footer.site ul{list-style:none}
footer.site li{margin-bottom:8px}
.foot-name{font-family:'Cinzel',Georgia,serif;font-weight:600;color:#fff;font-size:17px;letter-spacing:.04em;margin:12px 0 8px}
.foot-badge{width:84px;height:84px;border-radius:50%;background:#fff;padding:4px}
.foot-bottom{border-top:1px solid rgba(228,230,217,.25);margin-top:38px;padding-top:18px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13.5px;color:#AFBCAB}
.lang-switch{font-size:14px;font-weight:700}
/* ---------- mobile bottom bar ---------- */
.mobile-cta{display:none;position:fixed;bottom:0;left:0;right:0;z-index:120;background:#fff;border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));grid-template-columns:1fr 1fr;gap:10px}
.mobile-cta .btn{justify-content:center;padding:12px 10px;font-size:15px}
/* ---------- reveal ---------- */
html.js .rv{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
html.js .rv.in,.rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.08s}.rv-d2{transition-delay:.16s}.rv-d3{transition-delay:.24s}
@media (prefers-reduced-motion:reduce){
html.js .rv,html.js .rv.in{opacity:1;transform:none;transition:none}
.btn:hover,.card:hover,.step:hover,.quote:hover{transform:none}
html{scroll-behavior:auto}
}
/* ---------- responsive ---------- */
@media (max-width:1239px){
.mobile-cta{display:grid}
body{padding-bottom:74px}
nav.main{display:none}
.menu-btn{display:block}
.call .btn{display:none}
#mobile-nav.open{display:block;background:#fff;border-bottom:1px solid var(--line)}
#mobile-nav ul{list-style:none;padding:8px 24px 18px;display:grid;gap:2px}
#mobile-nav a{display:block;text-decoration:none;font-weight:700;font-size:17px;padding:12px 10px;border-radius:12px}
#mobile-nav a:hover,#mobile-nav a[aria-current=page]{background:var(--disc-light)}
}
@media (max-width:900px){
.hero-grid,.grid-2,.banner{grid-template-columns:1fr}
.grid-4,.ladder,.gallery{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:1fr}
footer.site .grid-4{grid-template-columns:1fr 1fr}
.blob{max-width:440px;margin:0 auto}
.hero{padding:48px 0 44px}
section{padding:52px 0}
}
@media (max-width:640px){
.grid-4,.ladder,.gallery{grid-template-columns:1fr}
footer.site .grid-4{grid-template-columns:1fr}
.banner{padding:32px 24px}
.call .tel span{display:none}
.brand img.lockup{height:48px}
}

/* ---------- audit-fix additions (July 12, 2026) ---------- */
footer.site h3{color:#fff;font-size:15px;margin-bottom:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:800}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.cta-note{font-size:13.5px;color:var(--sage-deep);margin-top:10px}
.foot-legal a{font-weight:600}
.lucide{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;width:1em;height:1em;flex-shrink:0}
.banner :focus-visible,footer.site :focus-visible,.announce :focus-visible,.mobile-cta .btn:focus-visible{outline:3px solid #fff;outline-offset:2px}
.btn:focus-visible{outline:3px solid var(--evergreen);outline-offset:3px}
.quote footer a{color:var(--sage-deep)}
.plan-note{font-size:14px;color:var(--sage-deep);background:var(--disc-light);border-radius:12px;padding:12px 16px}
.step h3{font-size:17px;margin-bottom:6px;color:var(--forest)}

/* ---------- mobile tap-target + nav-fit pass (July 12, 2026) ---------- */
.call .btn{padding:12px 16px;font-size:15px}
footer.site li a,.foot-legal a{display:inline-block;padding:4px 0}
.arrow-link{display:inline-block;padding:3px 0}
.quote footer a{display:inline-block;padding:4px 0}
@media (max-width:640px){.call .tel{padding:12px 10px;margin:-4px 0}}
