@font-face{font-family:Fraunces;src:url(../fonts/Fraunces-var.woff2) format("woff2");font-weight:300 900;font-display:swap}
@font-face{font-family:Figtree;src:url(../fonts/Figtree-var.woff2) format("woff2");font-weight:300 900;font-display:swap}
:root{--enamel:#fbfaf6;--porcelain:#f1eee6;--espresso:#2b1d17;--wood:#5a4031;--mint:#1f8a78;--mint-soft:#d8efe9;--line:#e3ddd1;--ink:#231a15;--muted:#6d6158}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--enamel);color:var(--ink);font:400 18px/1.6 Figtree,system-ui,sans-serif;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.08;letter-spacing:-.02em;margin:0 0 .5em}
h1{font-size:clamp(2.4rem,6vw,4.6rem)}
h2{font-size:clamp(1.8rem,4vw,2.9rem)}
h3{font-size:1.3rem}
em{font-style:italic;color:var(--mint)}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}
:focus-visible{outline:3px solid var(--mint);outline-offset:3px}
/* header */
.top{position:sticky;top:0;z-index:50;background:rgba(251,250,246,.96);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:20px;height:72px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:Fraunces;font-weight:700;font-size:1.25rem;line-height:1}
.brand small{display:block;font:500 .72rem Figtree;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:3px}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{text-decoration:none;padding:8px 12px;border-radius:99px;font-weight:500;font-size:.95rem}
.nav a:hover,.nav a[aria-current]{background:var(--mint-soft);color:var(--mint)}
.status{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600;padding:6px 12px;border-radius:99px;background:var(--porcelain);white-space:nowrap}
.status i{width:9px;height:9px;border-radius:50%;background:#b9442f}
.status.open i{background:#27a35b;box-shadow:0 0 0 4px #27a35b33}
.menu-btn{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:10px;padding:10px 14px;font:600 1rem Figtree}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 24px;border-radius:99px;background:var(--mint);color:#fff;text-decoration:none;font-weight:600;border:0;font-size:1rem;cursor:pointer;font-family:inherit}
.btn:hover{background:#176d5f}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}
.btn.dark{background:var(--espresso)}
/* hero */
.hero{padding:56px 0 72px}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
.eyebrow{font-weight:600;font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mint);margin-bottom:14px}
.lead{font-size:1.2rem;color:var(--muted);max-width:34ch}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0}
.rating{display:flex;align-items:center;gap:12px;font-weight:600}
.stars{color:#e0a526;letter-spacing:2px}
.photo-stack{position:relative}
.photo-stack img{border-radius:28px;aspect-ratio:4/5;object-fit:cover;width:100%;max-height:560px;object-position:center 70%}
.photo-stack .tag{position:absolute;left:-18px;bottom:28px;background:#fff;border-radius:18px;padding:14px 18px;box-shadow:0 18px 40px -18px #2b1d1755;max-width:250px;font-size:.92rem}
.tag b{font-family:Fraunces;font-size:1.6rem;display:block;line-height:1}
/* sections */
section{padding:72px 0}
.band{background:var(--espresso);color:#f4ede4}
.band .lead{color:#cbbcae}
.porc{background:var(--porcelain)}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;align-items:center}
.card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:26px}
.card p{margin:0;color:var(--muted)}
.card .ic{width:46px;height:46px;border-radius:14px;background:var(--mint-soft);display:grid;place-items:center;margin-bottom:16px;color:var(--mint)}
.price{font-weight:700;color:var(--ink);margin-top:12px!important}
.note{font-size:.88rem;color:var(--muted)}
.marquee{overflow:hidden;padding:24px 0;border-block:1px solid var(--line);background:#fff}
.marquee div{display:flex;gap:48px;width:max-content;animation:mq 40s linear infinite;font-family:Fraunces;font-size:1.4rem;font-style:italic}
.marquee span::after{content:"✦";color:var(--mint);margin-left:48px;font-style:normal}
@keyframes mq{to{transform:translateX(-50%)}}
.quote{background:#fff;border-radius:22px;padding:28px;border:1px solid var(--line)}
.quote p{font-family:Fraunces;font-size:1.2rem;line-height:1.45;margin:0 0 14px}
.quote cite{font-style:normal;font-weight:600;color:var(--muted);font-size:.9rem}
.topics{display:flex;flex-wrap:wrap;gap:10px}
.topics span{background:var(--mint-soft);color:var(--mint);padding:8px 16px;border-radius:99px;font-weight:600}
.cta{background:var(--mint);color:#fff;text-align:center}
.cta p{font-size:1.15rem;opacity:.9}
.cta .btn{background:#fff;color:var(--mint)}
.cta .btn.ghost{background:transparent;color:#fff;border-color:#fff}
.cta .actions{justify-content:center}
/* tooth chart */
.chart-wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:start}
.mouth{background:#fff;border-radius:28px;padding:20px;border:1px solid var(--line)}
.mouth svg{width:100%;height:auto}
.tooth{fill:#fff;stroke:#c9bfb1;stroke-width:2;cursor:pointer;transition:fill .2s}
.tooth:hover{fill:var(--mint-soft)}
.tooth.on{fill:var(--mint);stroke:#176d5f}
.gum{fill:#f3c9c4}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:99px;padding:10px 16px;font:600 .95rem Figtree;cursor:pointer;min-height:44px}
.chip[aria-pressed=true]{background:var(--espresso);color:#fff;border-color:var(--espresso)}
.answer{background:var(--porcelain);border-radius:22px;padding:24px;margin-top:10px}
/* booking */
.book{display:grid;grid-template-columns:1fr 400px;gap:40px;align-items:start}
.field{margin-bottom:22px}
.field label,.field legend{display:block;font-weight:700;margin-bottom:8px}
fieldset{border:0;padding:0;margin:0 0 22px}
input,select,textarea{width:100%;min-height:52px;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;font:inherit;background:#fff}
.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.days button,.slots button{border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:10px 4px;font:600 .9rem Figtree;cursor:pointer;min-height:52px}
.days button small{display:block;font-weight:500;color:var(--muted)}
.days button:disabled{opacity:.35;cursor:not-allowed}
.days button[aria-pressed=true],.slots button[aria-pressed=true]{background:var(--mint);border-color:var(--mint);color:#fff}
.days button[aria-pressed=true] small{color:#e3fff8}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.bubble{position:sticky;top:96px;background:#e7ddd2;border-radius:24px;padding:20px}
.bubble .msg{background:#dcf8c6;border-radius:14px 14px 4px 14px;padding:14px 16px;white-space:pre-wrap;font-size:.95rem;min-height:120px;box-shadow:0 1px 1px #0001}
.bubble h3{font-size:1.05rem;font-family:Figtree;font-weight:700}
/* visit */
.hours{width:100%;border-collapse:collapse}
.hours td{padding:12px 0;border-bottom:1px solid var(--line)}
.hours td:last-child{text-align:right;font-weight:600}
.hours tr.today td{color:var(--mint);font-weight:700}
.map{border:0;width:100%;height:380px;border-radius:22px}
.pano{border-radius:28px;width:100%;aspect-ratio:2/1;object-fit:cover}
/* footer */
footer{background:var(--espresso);color:#cbbcae;padding:48px 0 110px;font-size:.95rem}
footer .wrap{display:grid;grid-template-columns:2fr 1fr 1fr;gap:30px}
footer b{color:#fff;font-family:Fraunces;font-size:1.2rem}
footer a{text-decoration:none;display:block;padding:3px 0}
.dock{display:none}
.reveal{opacity:1;transform:none;transition:opacity .7s,transform .7s}
.js .reveal:not(.in){opacity:0;transform:translateY(18px)}
@media (max-width:900px){
  .nav{display:none;position:fixed;inset:72px 0 auto 0;background:var(--enamel);flex-direction:column;padding:16px 20px 24px;border-bottom:1px solid var(--line)}
  .nav.open{display:flex}
  .nav a{padding:14px 12px;font-size:1.1rem}
  .menu-btn{display:block}
  .top .status{display:none}
  .brand small{display:none}
  .hero .wrap,.grid2,.chart-wrap,.book{grid-template-columns:minmax(0,1fr)}
  .grid3{grid-template-columns:minmax(0,1fr)}
  .photo-stack .tag{left:12px}
  footer .wrap{grid-template-columns:1fr}
  .bubble{position:static}
  .dock{display:grid;grid-template-columns:1fr 1fr 1fr;position:fixed;bottom:0;left:0;right:0;z-index:60;background:var(--espresso);padding:8px;gap:8px}
  .dock a{color:#fff;text-decoration:none;text-align:center;font-weight:600;padding:12px 4px;border-radius:12px;min-height:48px}
  .dock a:last-child{background:var(--mint)}
  section{padding:52px 0}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.js .reveal:not(.in){opacity:1;transform:none}}
