/* Locally hosted WOFF2; Latin and extended Latin load only as needed. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/dm-sans-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Serif Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-serif-display-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Serif Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-serif-display-italic-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-serif-display-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/dm-serif-display-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
  --ink:#103e3f;
  --text:#293b39;
  --sage:#e0e7d9;
  --muted:#5f6d64;
  --line:#c7d2c8;
  --paper:#fff;
  --serif:'DM Serif Display',Georgia,serif;
  --body:'DM Sans',sans-serif
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:1rem
}
body {
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:var(--body);
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased
}
button,input,select,textarea {
  font:inherit
}
img,video {
  max-width:100%;
  height:auto
}
iframe {
  max-width:100%
}
a {
  color:var(--ink);
  text-underline-offset:4px
}
a:hover {
  text-decoration-thickness:2px
}
button,a,input,select,textarea {
  touch-action:manipulation
}
button {
  cursor:pointer
}
::selection {
  background:var(--sage);
  color:var(--ink)
}
:focus-visible {
  outline:3px solid #496952;
  outline-offset:5px
}
.shell {
  width:min(calc(100% - 100px),1200px);
  margin-inline:auto
}
h1,h2,h3,h4 {
  font-family:var(--serif);
  font-weight:400;
  color:var(--ink);
  line-height:1.08;
  letter-spacing:-.025em;
  margin:0 0 1.3rem
}
h1 {
  font-size:clamp(3.4rem,6.8vw,6.6rem)
}
h2 {
  font-size:clamp(2.6rem,4.2vw,4rem)
}
h3 {
  font-size:2.1rem
}
p {
  margin:0 0 1.2rem
}
em {
  font-family:inherit;
  font-weight:400;
  font-size:1em;
  letter-spacing:-.035em
}
.eyebrow,.brand-descriptor {
  font-family:var(--body);
  font-size:.7rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:600;
  line-height:1.6;
  color:#466040
}
.eyebrow {
  margin-bottom:1.25rem
}
.small-note {
  font-size:.82rem;
  color:var(--muted);
  max-width:850px;
  margin-top:1.4rem
}
.section-rule {
  border-top:1px solid var(--line)
}
.section-space {
  padding-block:65px
}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:2rem;
  margin-bottom:32px
}
.section-heading h2 {
  margin-bottom:0
}
.section-heading>.text-link {
  white-space:nowrap
}
.text-link {
  display:inline-flex;
  gap:20px;
  align-items:center;
  text-decoration:none;
  font-size:.9rem;
  font-weight:500;
  border-bottom:1px solid var(--line);
  padding-bottom:6px
}
.text-link span {
  font-size:1.2rem
}
.button,.wp-block-button__link {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  min-height:50px;
  padding:12px 25px;
  border:1px solid var(--ink);
  border-radius:100px;
  background:var(--ink);
  color:#fff;
  text-decoration:none;
  font-size:.88rem;
  font-weight:500;
  line-height:1.5;
  transition:background .15s ease,box-shadow .15s ease
}
.button:hover,.wp-block-button__link:hover {
  background:#245654;
  box-shadow:0 5px 16px #103e3f12
}
.button span {
  font-size:1.05rem
}
.button-small {
  min-height:43px;
  padding:9px 18px;
  font-size:.74rem
}
.preview-bar {
  font-size:10px;
  text-align:center;
  background:#f0f3ed;
  color:#52614f;
  padding:5px 10px;
  letter-spacing:.05em
}
.preview-bar span {
  padding-inline:7px
}
.site-header {
  min-height:130px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  position:relative;
  z-index:3
}
.site-name {
  font-family:var(--serif);
  font-size:2.15rem;
  line-height:1.15;
  letter-spacing:-.04em;
  text-decoration:none;
  display:inline-block;
  white-space:nowrap
}
.brand-descriptor {
  font-size:.6rem;
  margin:5px 0 0;
  letter-spacing:.21em
}
.custom-logo {
  max-width:180px;
  max-height:80px;
  width:auto
}
.primary-nav {
  display:flex;
  align-items:center;
  gap:25px
}
.primary-nav>ul {
  display:flex;
  align-items:center;
  list-style:none;
  gap:23px;
  margin:0;
  padding:0
}
.primary-nav>ul a {
  font-size:.78rem;
  text-decoration:none;
  position:relative
}
.primary-nav>ul a:hover,.current-menu-item>a {
  text-decoration:underline;
  text-underline-offset:7px
}
.menu-toggle {
  display:none
}
.hero {
  position:relative;
  display:grid;
  grid-template-columns:1.3fr .8fr;
  gap:65px;
  padding-block:35px 65px;
  min-height:620px;
  align-items:center;
  isolation:isolate
}
.hero-copy {
  position:relative;
  z-index:1;
  padding-bottom:25px
}
.hero-copy>.eyebrow {
  margin-bottom:22px;
  font-size:.66rem
}
.hero h1 {
  font-size:clamp(4rem,7.25vw,6.6rem);
  line-height:.98;
  letter-spacing:-.035em;
  margin-bottom:30px
}
.hero h1 em {
  white-space:nowrap
}
.hero-intro {
  font-size:1.06rem;
  line-height:1.65;
  max-width:500px;
  margin-bottom:30px
}
.hero-footnote {
  font-size:.67rem;
  color:var(--muted);
  margin:14px 0 0;
  max-width:400px
}
.hero-portrait {
  padding-bottom:10px
}
.portrait-placeholder,.portrait-image {
  display:block;
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:50% 50% 0 0;
  background:linear-gradient(140deg,#e0e7d9,#ced7c4);
  max-height:560px
}
.portrait-placeholder {
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center
}
.portrait-placeholder span {
  font-family:var(--serif);
  font-size:2rem;
  color:#52624b;
  font-style:italic;
  line-height:1.2
}
.portrait-caption {
  display:block;
  font-size:.63rem;
  letter-spacing:.11em;
  text-align:center;
  color:var(--muted);
  padding-top:15px
}
.hero-dental-art {
  position:absolute;
  width:355px;
  left:-100px;
  bottom:15px;
  z-index:0;
  opacity:.45;
  pointer-events:none;
  mask-image:linear-gradient(to top,#000 45%,transparent 95%)
}
.doctor-intro {
  position:relative;
  padding-block:58px 65px;
  isolation:isolate
}
.intro-copy {
  position:relative;
  z-index:1;
  max-width:850px
}
.intro-copy h2 {
  max-width:850px;
  font-size:clamp(2.8rem,4.65vw,4.6rem)
}
.intro-copy>p:not(.eyebrow) {
  max-width:740px;
  font-size:1rem;
  line-height:1.8
}
.intro-copy>.text-link {
  margin-top:7px
}
.intro-dental-art {
  position:absolute;
  right:-30px;
  top:50px;
  width:370px;
  z-index:0;
  opacity:.42;
  pointer-events:none;
  mask-image:linear-gradient(to right,transparent,#000 50%)
}
.doctor-intro:has(.intro-dental-art) .intro-copy {
  max-width:880px
}
.home-editor-content .wp-block-group.section-space {
  border-top:1px solid var(--line)
}
.home-editor-content .wp-block-columns {
  gap:48px;
  margin-bottom:0
}
.care-columns h3 {
  font-size:2.45rem;
  margin-bottom:17px;
  max-width:250px
}
.care-columns p {
  font-size:.95rem;
  line-height:1.75;
  margin-bottom:0
}
.home-services .section-heading {
  align-items:center
}
.service-index {
  border-top:1px solid var(--line);
  margin-top:30px
}
.service-row {
  display:flex;
  align-items:center;
  gap:25px;
  padding:20px 0;
  border-bottom:1px solid var(--line);
  text-decoration:none
}
.service-row>span:first-child {
  font-size:.75rem;
  color:var(--muted)
}
.service-row strong {
  font-family:var(--serif);
  font-weight:400;
  font-size:1.8rem;
  line-height:1.2;
  flex:1
}
.service-row>span:last-child {
  font-size:1.4rem
}
.service-row:hover {
  background:#f7f9f4
}
.location-section {
  padding-block:60px
}
.locations-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));
  gap:25px
}
.clinic-card {
  background:#f6f8f3;
  border:1px solid #e0e6dc;
  padding:30px 35px;
  position:relative
}
.clinic-header {
  display:flex;
  align-items:center;
  gap:20px;
  margin-bottom:20px
}
.clinic-header h3 {
  font-size:2rem;
  margin:0
}
.clinic-header .eyebrow {
  font-size:.6rem;
  margin-bottom:3px
}
.location-mark {
  font-size:3rem;
  line-height:1;
  color:#577051
}
.clinic-address {
  font-size:1rem
}
.clinic-hours {
  border-top:1px solid #dce3d7;
  padding-top:18px;
  margin-top:20px
}
.clinic-hours>.eyebrow {
  font-size:.6rem
}
.clinic-hours p {
  margin-bottom:15px;
  font-size:.88rem
}
.clinic-links {
  display:flex;
  flex-wrap:wrap;
  gap:25px;
  margin-bottom:23px;
  font-size:.85rem
}
.clinic-card>.text-link {
  font-size:.8rem
}
.appointment-band {
  background:var(--sage);
  padding-block:50px 55px;
  position:relative
}
.appointment-band h2 {
  font-size:clamp(2.7rem,4.8vw,4.6rem);
  margin-bottom:13px
}
.appointment-band p:not(.eyebrow) {
  max-width:710px;
  font-size:.96rem;
  margin-bottom:22px
}
.appointment-band .eyebrow {
  margin-bottom:17px
}
.faq-section {
  padding-block:65px 70px
}
.wp-block-details {
  border-top:1px solid var(--line);
  padding:20px 0
}
.wp-block-details:last-child {
  border-bottom:1px solid var(--line)
}
.wp-block-details summary {
  position:relative;
  font-size:1rem;
  cursor:pointer;
  list-style:none;
  padding-right:45px;
  color:var(--ink);
  font-weight:500
}
.wp-block-details summary::-webkit-details-marker {
  display:none
}
.wp-block-details summary:after {
  content:'+';
  position:absolute;
  right:5px;
  font-size:1.45rem;
  top:-4px;
  font-weight:400
}
.wp-block-details[open] summary:after {
  content:'−'
}
.wp-block-details>p {
  margin-top:16px;
  max-width:850px;
  font-size:.9rem;
  color:#53635d
}
.site-footer {
  border-top:1px solid var(--line)
}
.footer-top {
  display:flex;
  justify-content:space-between;
  gap:45px;
  align-items:flex-start;
  padding-block:45px 30px
}
.footer-top .site-name {
  font-size:2rem
}
.footer-note {
  font-size:.78rem;
  margin:16px 0 0;
  color:var(--muted)
}
.footer-top nav ul {
  display:grid;
  grid-template-columns:repeat(3,auto);
  gap:12px 28px;
  list-style:none;
  margin:0;
  padding:6px 0
}
.footer-top nav a {
  font-size:.78rem;
  text-decoration:none
}
.footer-bottom {
  border-top:1px solid #e5e9e1;
  padding-block:20px;
  display:flex;
  justify-content:space-between;
  gap:20px;
  font-size:.66rem;
  color:var(--muted)
}
.footer-bottom p {
  margin:0
}
.footer-bottom>div {
  display:flex;
  gap:22px
}
.footer-bottom a {
  color:var(--muted);
  text-decoration:none
}
.page-heading {
  border-top:1px solid var(--line);
  padding-block:65px 45px
}
.page-heading h1 {
  font-size:clamp(3.4rem,6.8vw,6rem);
  max-width:1050px
}
.page-intro {
  font-size:1.12rem;
  max-width:740px;
  line-height:1.7;
  color:#53665e
}
.page-heading .eyebrow {
  margin-bottom:16px
}
.page-layout {
  padding-bottom:70px
}
.prose {
  max-width:820px;
  margin:0 0 65px
}
.editor-content h2 {
  font-size:2.65rem;
  margin-top:40px
}
.editor-content h3 {
  font-size:2rem;
  margin-top:30px
}
.editor-content h2:first-child,.editor-content h3:first-child {
  margin-top:0
}
.editor-content p,.editor-content li {
  line-height:1.85
}
.editor-content ul,.editor-content ol {
  padding-left:23px
}
.editor-content li {
  padding-left:5px;
  margin-bottom:8px
}
.editor-content>.wp-block-buttons {
  margin-block:25px
}
.editor-content .wp-block-group {
  margin-bottom:30px
}
.editor-content .notice,.review-note {
  border-left:3px solid #91a585;
  background:#f3f6ef;
  padding:18px 22px;
  font-size:.86rem;
  margin-block:25px
}
.editor-content blockquote {
  border-left:1px solid var(--line);
  padding-left:25px;
  margin:25px 0
}
.editor-content .wp-block-details h2 {
  font-size:2.3rem
}
.about-layout {
  display:grid;
  grid-template-columns:.65fr 1fr;
  gap:80px;
  align-items:start;
  padding-bottom:70px
}
.about-portrait {
  max-width:370px;
  position:sticky;
  top:40px
}
.about-layout .prose {
  margin-bottom:0
}
.contact-layout {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  padding-bottom:70px
}
.contact-layout h2 {
  font-size:2.7rem
}
.contact-email {
  display:inline-block;
  font-size:clamp(1rem,1.6vw,1.3rem);
  margin-block:10px 25px;
  overflow-wrap:anywhere
}
.location-page {
  padding-bottom:65px
}
.location-page>.prose {
  margin-bottom:30px
}
.offers-list {
  max-width:900px;
  margin-bottom:50px
}
.empty-state {
  background:#f5f7f1;
  padding:35px;
  border:1px solid #e1e7db
}
.empty-state h2 {
  font-size:2.7rem;
  margin-bottom:15px
}
.empty-state h3 {
  font-size:2rem
}
.empty-state p:last-child {
  margin-bottom:0
}
.offer-card {
  border:1px solid var(--line);
  padding:35px;
  margin-bottom:30px
}
.offer-price {
  font-size:3rem;
  color:var(--ink)
}
.offer-price small {
  font-size:.85rem
}
.booking-layout {
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:60px;
  padding-bottom:80px;
  align-items:start
}
.booking-form-panel {
  border:1px solid var(--line);
  padding:32px
}
.booking-form-panel h2 {
  font-size:2.7rem
}
.request-notice {
  font-size:.85rem;
  background:#f1f5ec;
  padding:17px 20px;
  margin-bottom:20px
}
.test-form-notice {
  font-size:.72rem;
  color:#606b5c;
  padding-bottom:17px;
  border-bottom:1px solid var(--line)
}
.booking-aside>.editor-content {
  margin-bottom:30px
}
.booking-aside h2 {
  font-size:2.3rem
}
.booking-aside h3 {
  font-size:1.8rem
}
.booking-aside .clinic-card {
  padding:24px
}
.fluentform .ff-el-form-control {
  border:1px solid #bac9be!important;
  border-radius:3px!important;
  min-height:46px;
  font-family:var(--body)!important;
  font-size:.9rem!important;
  padding:10px 12px!important;
  background:#fff!important;
  color:var(--ink)!important
}
.fluentform .ff-el-input--label label {
  font-size:.82rem!important;
  font-weight:500!important;
  color:var(--ink)!important
}
.fluentform .ff-el-group {
  margin-bottom:21px!important
}
.fluentform .ff-btn-submit {
  border-radius:50px!important;
  background:var(--ink)!important;
  font-family:var(--body)!important;
  padding:14px 25px!important;
  font-size:.9rem!important;
  border:1px solid var(--ink)!important
}
.fluentform .ff-el-form-check-label {
  font-size:.8rem;
  line-height:1.65
}
.fluentform .ff-message-success {
  border:1px solid #b3c3ab!important;
  box-shadow:none!important;
  background:#f2f6ed!important;
  color:var(--ink)!important;
  padding:20px!important
}
.journal-grid {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:30px;
  margin-bottom:60px
}
.journal-card {
  padding:35px;
  background:#f6f8f2;
  border:1px solid #e2e7dc
}
.journal-card h2 {
  font-size:2.6rem
}
.journal-card h2 a {
  text-decoration:none
}
.journal-card>p:not(.eyebrow) {
  font-size:.92rem
}
.journal-card .eyebrow {
  font-size:.61rem
}
.article-date {
  font-size:.8rem;
  color:var(--muted)
}
.pagination {
  margin-bottom:50px
}
.not-found {
  padding-block:100px 130px
}
.not-found h1 {
  font-size:5rem
}
.skip-link {
  position:fixed;
  top:-10rem;
  left:1rem;
  z-index:100;
  background:#fff;
  padding:15px
}
.skip-link:focus {
  top:1rem
}
.screen-reader-text {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0
}
.editor-styles-wrapper {
  font-family:var(--body)
}
.editor-styles-wrapper .wp-block {
  max-width:900px
}
@media(min-width:1400px) {
  .hero {
    min-height:680px
  }
  .hero-portrait {
    padding-left:20px
  }
  .hero-dental-art {
    bottom:7px
  }
}
@media(max-width:1100px) {
  .shell {
    width:calc(100% - 64px)
  }
  .site-header {
    min-height:115px;
    flex-wrap:wrap;
    padding-block:25px
  }
  .site-name {
    font-size:2rem
  }
  .primary-nav {
    width:100%;
    justify-content:space-between;
    padding-top:10px
  }
  .js .primary-nav {
    display:none
  }
  .js .primary-nav.is-open {
    display:flex
  }
  .js .menu-toggle {
    display:flex;
    align-items:center;
    gap:10px;
    border:1px solid var(--line);
    background:#fff;
    border-radius:30px;
    padding:10px 16px;
    font-size:.8rem;
    color:var(--ink)
  }
  .menu-icon {
    width:16px;
    height:10px;
    border-top:1px solid;
    border-bottom:1px solid
  }
  .hero {
    gap:35px;
    min-height:560px;
    padding-block:20px 50px
  }
  .hero h1 {
    font-size:clamp(3.8rem,7.8vw,5.5rem)
  }
  .hero-intro {
    font-size:1rem
  }
  .hero-footnote {
    max-width:300px
  }
  .hero-dental-art {
    width:280px;
    left:-50px;
    bottom:10px;
    opacity:.35
  }
  .intro-dental-art {
    width:290px;
    right:-20px;
    opacity:.22
  }
  .intro-copy {
    max-width:770px
  }
  .about-layout {
    gap:45px
  }
  .contact-layout {
    gap:35px
  }
  .booking-layout {
    gap:30px
  }
  .footer-top nav ul {
    grid-template-columns:repeat(2,auto)
  }
}
@media(max-width:767px) {
  .shell {
    width:calc(100% - 40px)
  }
  .preview-bar {
    font-size:8px;
    letter-spacing:0;
    padding:5px
  }
  .preview-bar span {
    padding-inline:3px
  }
  .site-header {
    padding-block:22px;
    min-height:105px;
    gap:20px
  }
  .site-name {
    font-size:1.75rem
  }
  .brand-descriptor {
    font-size:.52rem;
    letter-spacing:.17em
  }
  .js .menu-toggle {
    padding:9px 12px;
    font-size:.74rem
  }
  .primary-nav,.js .primary-nav.is-open {
    flex-direction:column;
    align-items:stretch;
    gap:20px;
    padding-block:15px 5px;
    border-top:1px solid var(--line)
  }
  .primary-nav>ul {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:13px 25px
  }
  .primary-nav>ul a {
    font-size:.95rem;
    display:block;
    padding:5px 0
  }
  .nav-appointment {
    align-self:flex-start
  }
  .hero {
    grid-template-columns:1fr;
    gap:32px;
    padding-block:20px 38px;
    min-height:0
  }
  .hero-copy {
    padding-bottom:0
  }
  .hero-copy>.eyebrow {
    font-size:.59rem;
    margin-bottom:22px
  }
  .hero h1 {
    font-size:clamp(3.2rem,11.8vw,5.7rem);
    margin-bottom:25px;
    line-height:1.02
  }
  .hero h1 em {
    white-space:normal
  }
  .hero-intro {
    font-size:.95rem;
    margin-bottom:25px;
    max-width:440px
  }
  .button {
    font-size:.82rem;
    min-height:48px;
    padding:12px 22px;
    gap:25px
  }
  .hero-footnote {
    font-size:.62rem;
    max-width:100%;
    margin-top:13px
  }
  .hero-portrait {
    max-width:310px;
    width:78%;
    justify-self:center;
    padding-bottom:0;
    margin-top:10px
  }
  .portrait-placeholder,.portrait-image {
    aspect-ratio:4/4.7
  }
  .portrait-placeholder span {
    font-size:1.7rem
  }
  .portrait-caption {
    font-size:.57rem
  }
  .hero-dental-art {
    width:200px;
    bottom:12px;
    left:-40px;
    opacity:.22
  }
  .doctor-intro {
    padding-block:38px 42px
  }
  .intro-copy h2 {
    font-size:2.9rem;
    line-height:1.1
  }
  .intro-copy>p:not(.eyebrow) {
    font-size:.93rem
  }
  .intro-dental-art {
    width:180px;
    right:-20px;
    top:auto;
    bottom:20px;
    opacity:.12
  }
  .eyebrow {
    font-size:.62rem;
    margin-bottom:17px
  }
  .section-space {
    padding-block:35px
  }
  .home-editor-content .wp-block-columns {
    gap:28px
  }
  .care-columns h3 {
    font-size:2.2rem;
    max-width:100%;
    margin-bottom:10px
  }
  .care-columns p {
    font-size:.9rem
  }
  .section-heading {
    display:block;
    margin-bottom:25px
  }
  .section-heading>.text-link {
    margin-top:20px
  }
  .section-heading h2 {
    font-size:2.8rem
  }
  .service-row {
    gap:18px;
    padding:18px 0
  }
  .service-row strong {
    font-size:1.6rem
  }
  .location-section {
    padding-block:38px
  }
  .clinic-card {
    padding:23px
  }
  .clinic-header h3 {
    font-size:1.9rem
  }
  .clinic-address {
    font-size:.94rem
  }
  .clinic-links {
    font-size:.8rem;
    gap:18px
  }
  .appointment-band {
    padding-block:38px 42px
  }
  .appointment-band h2 {
    font-size:3rem
  }
  .appointment-band p:not(.eyebrow) {
    font-size:.9rem
  }
  .faq-section {
    padding-block:38px 45px
  }
  .wp-block-details {
    padding:18px 0
  }
  .wp-block-details summary {
    font-size:.9rem
  }
  .wp-block-details>p {
    font-size:.86rem
  }
  .footer-top {
    display:block;
    padding-block:32px
  }
  .footer-top nav {
    margin-top:30px
  }
  .footer-top nav ul {
    grid-template-columns:repeat(3,1fr);
    gap:12px 16px
  }
  .footer-top nav a {
    font-size:.73rem
  }
  .footer-top .site-name {
    font-size:1.8rem
  }
  .footer-bottom {
    font-size:.6rem;
    gap:10px;
    flex-wrap:wrap
  }
  .page-heading {
    padding-block:38px 30px
  }
  .page-heading h1 {
    font-size:3.5rem;
    line-height:1.05
  }
  .page-intro {
    font-size:1rem
  }
  .page-layout {
    padding-bottom:35px
  }
  .prose {
    margin-bottom:40px
  }
  .editor-content h2 {
    font-size:2.4rem;
    margin-top:30px
  }
  .editor-content h3 {
    font-size:1.9rem
  }
  .editor-content p,.editor-content li {
    font-size:.94rem
  }
  .editor-content .notice,.review-note {
    font-size:.82rem;
    padding:16px
  }
  .about-layout,.contact-layout,.booking-layout {
    grid-template-columns:1fr;
    gap:35px;
    padding-bottom:40px
  }
  .about-portrait {
    position:static;
    width:70%;
    margin-inline:auto
  }
  .location-page {
    padding-bottom:35px
  }
  .offers-list {
    margin-bottom:30px
  }
  .empty-state {
    padding:24px
  }
  .empty-state h2 {
    font-size:2.3rem
  }
  .booking-form-panel {
    padding:24px 20px
  }
  .booking-form-panel h2 {
    font-size:2.45rem
  }
  .booking-aside .clinic-card {
    padding:23px
  }
  .journal-grid {
    grid-template-columns:1fr;
    gap:25px;
    margin-bottom:40px
  }
  .journal-card {
    padding:28px
  }
  .journal-card h2 {
    font-size:2.4rem
  }
  .not-found {
    padding-block:65px 90px
  }
  .not-found h1 {
    font-size:3.6rem
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  * {
    transition:none!important
  }
}
.offer-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:25px
}
.offer-card {
  background:#f7f9f4;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  margin:0;
  padding:32px
}
.offer-card h3 {
  font-size:2.2rem
}
.offer-price {
  font-family:var(--serif);
  font-size:3.7rem;
  line-height:1.1;
  margin:5px 0 20px
}
.offer-price sup {
  font-size:1.3rem
}
.offer-card .editor-content {
  font-size:.9rem
}
.offer-period {
  font-size:.7rem;
  color:var(--muted)
}
.offer-terms {
  font-size:.8rem;
  border-top:1px solid var(--line);
  padding-top:15px;
  margin:0 0 25px;
  width:100%
}
.offer-terms summary {
  cursor:pointer;
  color:var(--ink);
  font-weight:500
}
.offer-terms p {
  margin-top:14px
}
.offer-card>.text-link {
  margin-top:auto
}
.offers-list {
  max-width:none
}
.home-services ul {
  list-style:none;
  padding:0;
  margin:25px 0
}
.home-services li {
  margin:0;
  border-bottom:1px solid var(--line)
}
.home-services li:first-child {
  border-top:1px solid var(--line)
}
.home-services li a {
  display:block;
  font-family:var(--serif);
  font-size:1.8rem;
  text-decoration:none;
  padding:13px 0
}
.home-services li a:after {
  content:"↗";
  float:right;
  font-family:var(--body);
  font-size:1rem;
  margin-top:8px
}
@media(max-width:767px) {
  .offer-grid {
    grid-template-columns:1fr
  }
  .offer-card {
    padding:24px
  }
  .home-services li a {
    font-size:1.6rem
  }
  .offer-card h3 {
    font-size:2rem
  }
}
/* All main navigation stays visible at every viewport size. */
.menu-toggle {
  display:none!important
}
@media(max-width:1100px) {
  .site-header {
    justify-content:center;
    text-align:center;
    gap:20px;
    padding-block:25px
  }
  .primary-nav,.js .primary-nav {
    display:flex;
    width:100%;
    justify-content:center;
    flex-direction:row;
    align-items:center;
    border:0;
    padding:0;
    gap:24px
  }
  .primary-nav>ul {
    display:flex;
    justify-content:center;
    gap:22px
  }
  .primary-nav>ul a {
    display:block;
    min-height:44px;
    align-content:center;
    font-size:.82rem
  }
  .nav-appointment {
    align-self:center
  }
}
@media(max-width:767px) {
  .site-header {
    padding-block:22px 18px;
    gap:18px
  }
  .site-name {
    font-size:1.9rem
  }
  .brand-descriptor {
    font-size:.55rem
  }
  .primary-nav,.js .primary-nav {
    flex-direction:column;
    gap:14px
  }
  .primary-nav>ul {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:4px 8px;
    width:100%;
    border-block:1px solid var(--line);
    padding-block:7px
  }
  .primary-nav>ul a {
    min-height:44px;
    padding:9px 6px;
    font-size:.81rem
  }
  .nav-appointment {
    width:100%;
    min-height:46px;
    font-size:.8rem
  }
  .hero {
    padding-top:24px
  }
  .hero h1 {
    font-size:clamp(2.9rem,10.8vw,5.2rem)
  }
  .hero-portrait {
    max-width:290px;
    width:72%
  }
  .brand-descriptor {
    margin-top:7px
  }
}
.offer-terms h4 {
  font-family:var(--body);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:0;
  margin:0 0 10px
}
.offer-terms p {
  margin:0;
  font-size:.78rem;
  line-height:1.75
}
/* Visible mobile navigation: six tidy touch targets; booking belongs in the hero. */
@media(max-width:767px) {
  .site-header {
    padding-block:22px 8px;
    gap:19px
  }
  .primary-nav,.js .primary-nav {
    gap:0
  }
  .primary-nav>ul {
    padding:0;
    border:0;
    gap:8px;
    grid-template-columns:repeat(3,minmax(0,1fr))
  }
  .primary-nav>ul li {
    min-width:0
  }
  .primary-nav>ul a {
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:43px;
    padding:10px 6px;
    background:#f5f7f1;
    border:1px solid #dce4d7;
    border-radius:10px;
    font-size:.78rem;
    font-weight:500;
    text-decoration:none;
    transition:background .15s ease,color .15s ease
  }
  .primary-nav>ul a:hover,.primary-nav>ul .current-menu-item>a {
    background:var(--ink);
    border-color:var(--ink);
    color:white
  }
  .primary-nav .nav-appointment {
    display:none
  }
  .hero {
    padding-top:32px
  }
}
@media(max-width:1100px) {
  .primary-nav .nav-appointment {
    display:none
  }
}

/* Keep the supplied portrait headroom visible inside the arch. */
.portrait-image { object-position: 50% 0%; }
.portrait-image { padding-top: 16px; background: #e7e3d9; object-position: 50% 0%; }

.appointment-date-hint {
  display: block;
  margin-top: .4rem;
  color: var(--muted);
}
body .flatpickr-calendar.open {
  background: var(--paper);
}
body .flatpickr-day:not(.flatpickr-disabled):not(.selected):not(.prevMonthDay):not(.nextMonthDay) {
  color: var(--ink);
  background: var(--sage);
  font-weight: 600;
}
body .flatpickr-day:not(.flatpickr-disabled):focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: -2px;
}

.booking-form-panel {
  scroll-margin-top: 1rem;
}
.booking-form-panel .ff-el-group[hidden] {
  display: none;
}
.booking-form-panel .fluentform button.ff-btn-submit {
  background: var(--ink);
  color: #fff;
}
.booking-form-panel .fluentform button.ff-btn-submit:hover {
  background: #082d2e !important;
  color: #fff;
}
