/* Naved Dental — base design system (per-site colors via --nd-* vars). */

:root {
  --nd-foreground: #1f2937;
  --nd-muted: #6b7280;
  --nd-border: #e5e7eb;
  --nd-radius: 16px;
}

body {
  color: var(--nd-foreground);
  background: #fff;
  margin: 0;
}

a { color: var(--nd-brand); }

.nd-container {
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: clamp(1rem, 4vw, 2rem);
}

/* ---------- Buttons ---------- */
.nd-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  white-space: nowrap;
  border-radius: 9999px;
  font-weight: 600;
  font-size: .95rem;
  padding: .75rem 1.5rem;
  text-decoration: none;
  transition: all .2s ease;
  cursor: pointer;
  border: 2px solid transparent;
  line-height: 1;
}
.nd-btn--accent { background: var(--nd-accent); color: var(--nd-accent-fg); }
.nd-btn--accent:hover { filter: brightness(.95); }
.nd-btn--brand { background: var(--nd-brand); color: #fff; }
.nd-btn--brand:hover { background: var(--nd-brand-dark); }
.nd-btn--white { background: #fff; color: var(--nd-brand); }
.nd-btn--outline { border-color: var(--nd-brand); color: var(--nd-brand); background: transparent; }
.nd-btn--outline:hover { background: var(--nd-brand); color: #fff; }

/* ============================================================== *
 *  SITE HEADER ([nd_site_header]) — utility bar + nav + drawer   *
 * ============================================================== */

.nd-ico-svg { width: 1.1rem; height: 1.1rem; flex: none; }

.nd-siteheader { position: sticky; top: 0; z-index: 50; }

/* ---------- Utility bar (brand-dark) ---------- */
.nd-util { display: none; background: var(--nd-brand-dark); color: rgba(255,255,255,.9); font-size: .875rem; }
.nd-util .nd-container { display: flex; align-items: center; justify-content: space-between; height: 40px; }
.nd-util a { display: inline-flex; align-items: center; gap: .4rem; color: inherit; text-decoration: none; transition: opacity .2s ease; }
.nd-util a:hover { opacity: .8; }
.nd-util__phone { font-weight: 600; }
@media (min-width: 768px) { .nd-util { display: block; } }

/* ---------- Main bar ---------- */
.nd-mainbar {
  background: rgba(255,255,255,.95);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--nd-border);
  transition: box-shadow .2s ease;
}
.nd-siteheader.is-scrolled .nd-mainbar { box-shadow: 0 4px 24px -12px rgba(0,0,0,.25); }
.nd-mainbar .nd-container {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; min-height: 72px; padding-block: .75rem;
}

/* ---------- Logo (initials badge + name/city) ---------- */
.nd-logo { display: flex; align-items: center; gap: .75rem; text-decoration: none; }
.nd-logo__badge {
  width: 44px; height: 44px; flex: none; border-radius: 12px;
  background: var(--nd-brand); color: #fff;
  display: grid; place-items: center;
  font-family: 'Fraunces', serif; font-weight: 700; font-size: 1.125rem;
  box-shadow: 0 1px 2px rgba(0,0,0,.08);
}
.nd-logo__text { display: flex; flex-direction: column; line-height: 1.15; }
.nd-logo__name { font-family: 'Fraunces', serif; font-weight: 700; font-size: 1.25rem; color: var(--nd-brand); }
.nd-logo__loc { font-size: .7rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: var(--nd-muted); }
@media (min-width: 640px) { .nd-logo__name { font-size: 1.35rem; } }

/* ---------- Desktop nav ---------- */
.nd-dnav { display: none; align-items: center; gap: .1rem; }
@media (min-width: 1024px) { .nd-dnav { display: flex; } }
.nd-dnav__item { position: relative; }
.nd-dnav__link {
  display: inline-flex; align-items: center; gap: .2rem;
  white-space: nowrap; border-radius: 9999px;
  padding: .5rem .75rem; font-size: .95rem; font-weight: 500;
  color: rgba(31,41,55,.8); text-decoration: none;
  transition: color .15s ease; cursor: pointer;
}
.nd-dnav__link:hover,
.nd-dnav__item:hover > .nd-dnav__link,
.nd-dnav__item.is-open > .nd-dnav__link,
.nd-dnav__link.is-active { color: var(--nd-brand); }
.nd-chev { display: inline-flex; transition: transform .2s ease; }
.nd-chev .nd-ico-svg { width: 1rem; height: 1rem; }
.nd-dnav__item:hover .nd-chev,
.nd-dnav__item.is-open .nd-chev { transform: rotate(180deg); }

/* ---------- Dropdown panels ---------- */
.nd-panel {
  position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(6px);
  padding-top: .75rem; width: 18rem; z-index: 60;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .15s ease, transform .15s ease;
}
.nd-panel--mega { width: min(60rem, 92vw); }
.nd-dnav__item:hover > .nd-panel,
.nd-dnav__item.is-open > .nd-panel {
  opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0);
}
.nd-panel__inner {
  border: 1px solid var(--nd-border); border-radius: 1rem; background: #fff;
  padding: 1.25rem; box-shadow: 0 24px 50px -20px rgba(0,0,0,.35), 0 8px 16px -12px rgba(0,0,0,.2);
}

/* Simple dropdown rows */
.nd-simple { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }
.nd-simple a { display: block; border-radius: .6rem; padding: .5rem .75rem; text-decoration: none; transition: background .15s ease; }
.nd-simple a:hover { background: var(--nd-brand-light); }
.nd-simple__label { display: block; font-size: .9rem; font-weight: 600; color: var(--nd-brand); }
.nd-simple__desc { display: block; font-size: .78rem; color: var(--nd-muted); margin-top: .1rem; }

/* Mega-menu grids */
.nd-mega { display: grid; gap: 1.25rem 2rem; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 768px) { .nd-mega--services { grid-template-columns: repeat(4, 1fr); } .nd-mega--edu { grid-template-columns: repeat(3, 1fr); } }
.nd-mega__head { display: flex; align-items: center; gap: .5rem; margin-bottom: .65rem; }
.nd-mega__icon { display: inline-flex; color: var(--nd-accent); }
.nd-mega__icon .nd-ico-svg { width: 1rem; height: 1rem; }
.nd-mega__cat { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--nd-brand); }
.nd-mega__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .15rem; }
.nd-mega__list a {
  display: block; border-radius: .4rem; padding: .25rem .5rem;
  font-size: .88rem; color: rgba(31,41,55,.8); text-decoration: none; transition: background .15s, color .15s;
}
.nd-mega__list a:hover { background: var(--nd-brand-light); color: var(--nd-brand); }
.nd-mega__foot { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--nd-border); }
.nd-mega__foot a { font-size: .9rem; font-weight: 600; color: var(--nd-brand); text-decoration: none; }
.nd-mega__foot a:hover { text-decoration: underline; }

/* ---------- Header action buttons ---------- */
.nd-header-actions { display: none; align-items: center; gap: .5rem; }
@media (min-width: 1024px) { .nd-header-actions { display: flex; } }
.nd-btn--sm { padding: .55rem 1.1rem; font-size: .88rem; }

/* ---------- Mobile menu toggle + drawer ---------- */
.nd-menu-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  padding: .5rem; border: 0; background: transparent; color: var(--nd-brand); cursor: pointer; border-radius: .5rem;
}
.nd-menu-toggle .nd-ico-svg { width: 1.5rem; height: 1.5rem; }
@media (min-width: 1024px) { .nd-menu-toggle { display: none; } }

.nd-drawer { position: fixed; inset: 0; z-index: 100; }
.nd-drawer[hidden] { display: none; }
.nd-drawer__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.4); }
.nd-drawer__panel {
  position: absolute; top: 0; right: 0; height: 100%; width: 88%; max-width: 24rem;
  background: #fff; box-shadow: -10px 0 40px -10px rgba(0,0,0,.3);
  display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .25s ease;
}
.nd-drawer.is-open .nd-drawer__panel { transform: translateX(0); }
.nd-drawer__head { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid var(--nd-border); }
.nd-drawer__title { font-family: 'Fraunces', serif; font-size: 1.15rem; font-weight: 700; color: var(--nd-brand); }
.nd-drawer__close { display: inline-flex; padding: .5rem; border: 0; background: transparent; color: var(--nd-brand); cursor: pointer; }
.nd-drawer__close .nd-ico-svg { width: 1.5rem; height: 1.5rem; }
.nd-drawer__nav { flex: 1; overflow-y: auto; padding: .75rem .75rem 1.25rem; }
.nd-macc__link, .nd-macc__btn {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  border-radius: .6rem; padding: .75rem; font-size: 1rem; font-weight: 500; color: var(--nd-foreground);
  text-decoration: none; background: transparent; border: 0; cursor: pointer; text-align: left;
}
.nd-macc__link:hover, .nd-macc__btn:hover { background: var(--nd-brand-light); }
.nd-macc__btn[aria-expanded="true"] .nd-chev { transform: rotate(180deg); }
.nd-macc__panel { padding: 0 0 .5rem .75rem; }
.nd-macc__panel[hidden] { display: none; }
.nd-macc__panel a { display: block; border-radius: .4rem; padding: .5rem .75rem; font-size: .9rem; color: rgba(31,41,55,.75); text-decoration: none; }
.nd-macc__panel a:hover { color: var(--nd-brand); }
.nd-macc__group { padding: .65rem .75rem .15rem; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--nd-brand); }
.nd-macc__all { font-weight: 600; color: var(--nd-brand) !important; }
.nd-drawer__foot { display: grid; gap: .5rem; padding: 1rem; border-top: 1px solid var(--nd-border); }
.nd-drawer__foot .nd-btn { width: 100%; }

/* ---------- Hero ---------- */
.nd-hero {
  position: relative;
  background: linear-gradient(135deg, var(--nd-hero-from), var(--nd-hero-to));
  color: #fff;
  overflow: hidden;
}
.nd-hero .nd-container { padding-block: clamp(3rem, 8vw, 6rem); }
.nd-hero h1 { font-size: clamp(2.25rem, 5vw, 3.4rem); margin: 0 0 1rem; color: #fff; }
.nd-hero p { font-size: 1.125rem; max-width: 38rem; color: rgba(255,255,255,.88); }
.nd-eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2);
  border-radius: 9999px; padding: .375rem 1rem; font-size: .875rem; font-weight: 500;
}
.nd-eyebrow .dot { width: 8px; height: 8px; border-radius: 9999px; background: var(--nd-accent); }
.nd-hero-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.nd-hero-actions .wp-block-button__link {
  border-radius: 9999px; font-weight: 600; padding: .8rem 1.6rem; border: 2px solid transparent;
}
.nd-hero-actions .is-style-fill .wp-block-button__link {
  background: var(--nd-accent); color: var(--nd-accent-fg);
}
.nd-hero-actions .is-style-fill .wp-block-button__link:hover { filter: brightness(.95); }
.nd-hero-actions .is-style-outline .wp-block-button__link {
  background: transparent; color: #fff; border-color: rgba(255,255,255,.7);
}
.nd-hero-actions .is-style-outline .wp-block-button__link:hover { background: rgba(255,255,255,.12); }

/* ---------- Sections ---------- */
.nd-section { padding-block: clamp(3rem, 6vw, 5rem); }
.nd-section--surface { background: var(--nd-surface); }
.nd-section h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
.nd-kicker { color: var(--nd-brand); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; font-size: .8rem; }

/* ---------- Content (imported pages) ---------- */
.nd-prose { max-width: 768px; margin-inline: auto; }
.nd-prose .entry-content { font-size: 1.0625rem; line-height: 1.75; color: var(--nd-foreground); }
.nd-prose .entry-content > *:first-child { margin-top: 0; }

.nd-prose .entry-content p { margin: 0 0 1.25rem; }
.nd-prose .entry-content h2,
.nd-prose .entry-content h3,
.nd-prose .entry-content h4 {
  font-family: 'Fraunces', serif; color: var(--nd-brand-dark);
  line-height: 1.25; margin: 2.25rem 0 .75rem;
}
.nd-prose .entry-content h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); }
.nd-prose .entry-content h3 { font-size: clamp(1.2rem, 2vw, 1.45rem); }
.nd-prose .entry-content h4 { font-size: 1.1rem; }

.nd-prose .entry-content a { color: var(--nd-brand); text-decoration: underline; text-underline-offset: 2px; }
.nd-prose .entry-content a:hover { color: var(--nd-brand-dark); }

.nd-prose .entry-content img { max-width: 100%; height: auto; border-radius: var(--nd-radius); display: block; }
.nd-prose .entry-content p > a > img { margin-bottom: 1.25rem; }

.nd-prose .entry-content ul,
.nd-prose .entry-content ol { margin: 0 0 1.25rem; padding-left: 1.4rem; }
.nd-prose .entry-content li { margin-bottom: .5rem; }

.nd-prose .entry-content blockquote {
  margin: 1.5rem 0; padding: .75rem 1.25rem; border-left: 4px solid var(--nd-accent);
  background: var(--nd-surface); border-radius: 0 var(--nd-radius) var(--nd-radius) 0; color: var(--nd-muted);
}

.nd-prose .entry-content table {
  width: 100%; border-collapse: collapse; margin: 0 0 1.5rem; font-size: .95rem;
  display: block; overflow-x: auto;
}
.nd-prose .entry-content th,
.nd-prose .entry-content td { border: 1px solid var(--nd-border); padding: .6rem .85rem; text-align: left; vertical-align: top; }
.nd-prose .entry-content th { background: var(--nd-surface); font-weight: 600; }

.nd-prose .entry-content hr { border: 0; border-top: 1px solid var(--nd-border); margin: 2rem 0; }

/* ---------- Front-page service cards ---------- */
.nd-services-grid { display: grid; gap: 1.25rem; margin-top: 2.5rem; }
@media (min-width: 700px) { .nd-services-grid { grid-template-columns: repeat(3, 1fr); } }
.nd-service-card {
  background: #fff; border: 1px solid var(--nd-border); border-radius: var(--nd-radius);
  padding: 1.5rem; text-align: left;
}
.nd-service-card h3 { font-family: 'Fraunces', serif; color: var(--nd-brand-dark); margin: 0 0 .5rem; font-size: 1.2rem; }
.nd-service-card p { color: var(--nd-muted); margin: 0; font-size: .95rem; line-height: 1.6; }

/* ============================================================== *
 *  SITE FOOTER ([nd_site_footer]) — CTA band + columns + mark    *
 * ============================================================== */
.nd-sitefooter { background: var(--nd-brand-dark); color: rgba(255,255,255,.85); }
.nd-sitefooter a { color: rgba(255,255,255,.7); text-decoration: none; transition: color .15s ease; }
.nd-sitefooter a:hover { color: #fff; }
.nd-sitefooter h3, .nd-sitefooter h4 { color: #fff; }

/* CTA band */
.nd-sitefooter__cta { border-bottom: 1px solid rgba(255,255,255,.1); }
.nd-sitefooter__cta-inner { display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 1.5rem; padding-block: 2.5rem; text-align: center; }
@media (min-width: 768px) { .nd-sitefooter__cta-inner { flex-direction: row; text-align: left; } }
.nd-sitefooter__cta-copy h2 { font-family: 'Fraunces', serif; color: #fff; font-size: clamp(1.5rem, 3vw, 1.9rem); margin: 0; }
.nd-sitefooter__cta-copy p { margin: .35rem 0 0; color: rgba(255,255,255,.75); }
.nd-sitefooter__cta-actions { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; }
.nd-sitefooter__cta-actions .nd-btn svg { width: 1.05rem; height: 1.05rem; }

/* Column grid */
.nd-sitefooter__grid { display: grid; gap: 2.5rem; padding-block: 3.5rem; }
@media (min-width: 640px) { .nd-sitefooter__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nd-sitefooter__grid { grid-template-columns: 2fr 1fr 1fr 1fr; } }
.nd-sitefooter__brand h3 { font-family: 'Fraunces', serif; font-size: 1.3rem; margin: 0; }
.nd-sitefooter__brand p { margin: .75rem 0 0; font-size: .9rem; line-height: 1.65; color: rgba(255,255,255,.7); max-width: 24rem; }
.nd-sitefooter__col h4 { font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; margin: 0 0 1rem; }
.nd-sitefooter__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .9rem; }
.nd-sitefooter__hours-head { display: flex; align-items: center; gap: .4rem; }
.nd-sitefooter__hours-head svg { width: 1rem; height: 1rem; color: var(--nd-accent); }
.nd-sitefooter__contact li { display: flex; gap: .6rem; align-items: flex-start; }
.nd-sitefooter__contact svg { width: 1rem; height: 1rem; flex: none; margin-top: .15rem; color: var(--nd-accent); }
.nd-sitefooter__hours li { display: flex; justify-content: space-between; gap: 1rem; }
.nd-sitefooter__hours li span:first-child { color: rgba(255,255,255,.7); }
.nd-sitefooter__hours li span:last-child { color: rgba(255,255,255,.9); }

/* Faded brand watermark */
.nd-sitefooter__mark { border-top: 1px solid rgba(255,255,255,.1); overflow: hidden; }
.nd-sitefooter__mark span { display: block; padding-block: 1.5rem; text-align: center; white-space: nowrap; font-family: 'Fraunces', serif; font-weight: 700; line-height: 1; font-size: clamp(3rem, 14vw, 8rem); color: rgba(255,255,255,.04); user-select: none; }

/* Bottom bar */
.nd-sitefooter__bottom { border-top: 1px solid rgba(255,255,255,.1); }
.nd-sitefooter__bottom-inner { display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: .75rem; padding-block: 1.25rem; font-size: .78rem; color: rgba(255,255,255,.6); }
@media (min-width: 640px) { .nd-sitefooter__bottom-inner { flex-direction: row; } }
.nd-sitefooter__bottom-inner p { margin: 0; }
.nd-sitefooter__legal { display: flex; gap: 1rem; }

/* ============================================================== *
 *  DESIGN PARITY COMPONENTS (ported from the Next.js components)  *
 * ============================================================== */

/* Full-bleed sections wrap a centered .nd-container. */
.nd-section--brand {
  background: linear-gradient(135deg, var(--nd-hero-from), var(--nd-hero-to));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.nd-section--brand h2,
.nd-section--brand h3 { color: #fff; }
.nd-section__head { max-width: 42rem; margin-inline: auto; }
.nd-section__head.is-left { margin-inline: 0; }
.nd-kicker--light { color: rgba(255,255,255,.7); }
.nd-lead { color: var(--nd-muted); font-size: 1.05rem; }
.nd-section--brand .nd-lead { color: rgba(255,255,255,.82); }

/* ---------- Hero (two-column) ---------- */
.nd-hero .nd-hero__grid {
  display: grid;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: center;
}
@media (min-width: 980px) {
  .nd-hero .nd-hero__grid { grid-template-columns: 1.05fr .95fr; }
}
.nd-hero__copy { position: relative; z-index: 2; }
.nd-hero h1 .nd-accent-text { color: var(--nd-accent); margin-right: .25em; }
.nd-hero__media {
  position: relative;
  border-radius: 2rem;
  overflow: hidden;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,.45);
  ring: 1px solid rgba(255,255,255,.2);
  margin: 0;
}
.nd-hero__media img {
  display: block; width: 100%; height: 100%;
  aspect-ratio: 5/4; object-fit: cover; object-position: top;
}
.nd-checks { list-style: none; margin: 2rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.75rem; }
.nd-checks li { display: flex; align-items: center; gap: .5rem; font-size: .9rem; font-weight: 500; color: rgba(255,255,255,.92); }
.nd-checks li::before {
  content: ""; width: 1rem; height: 1rem; flex: none;
  background: var(--nd-accent);
  -webkit-mask: var(--nd-check) center/contain no-repeat; mask: var(--nd-check) center/contain no-repeat;
}
:root { --nd-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E"); }

/* Generic button row used outside hero */
.nd-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.nd-actions .wp-block-button__link { border-radius: 9999px; font-weight: 600; padding: .8rem 1.6rem; border: 2px solid transparent; }
.nd-actions .is-style-fill .wp-block-button__link { background: var(--nd-accent); color: var(--nd-accent-fg); }
.nd-actions .is-style-fill .wp-block-button__link:hover { filter: brightness(.95); }
.nd-actions .is-style-outline .wp-block-button__link { background: transparent; color: var(--nd-brand); border-color: var(--nd-brand); }
.nd-actions .is-style-outline .wp-block-button__link:hover { background: var(--nd-brand); color: #fff; }
.nd-section--brand .nd-actions .is-style-outline .wp-block-button__link,
.nd-actions.is-on-brand .is-style-outline .wp-block-button__link { color: #fff; border-color: rgba(255,255,255,.7); }
.nd-actions.is-on-brand .is-style-fill .wp-block-button__link { background: #fff; color: var(--nd-brand); }

.nd-headrow { display: flex; flex-direction: column; gap: 1.25rem; align-items: flex-start; }
@media (min-width: 720px) { .nd-headrow { flex-direction: row; justify-content: space-between; align-items: flex-end; } }

/* ---------- Stats band ---------- */
.nd-stats { display: grid; grid-template-columns: repeat(2,1fr); gap: 1.5rem; }
@media (min-width: 720px) { .nd-stats { grid-template-columns: repeat(4,1fr); } }
.nd-stat { text-align: center; }
.nd-stat b { display: block; font-family: 'Fraunces', serif; font-size: clamp(2rem,4vw,2.6rem); color: var(--nd-brand); line-height: 1; }
.nd-stat span { display: block; margin-top: .35rem; font-size: .9rem; color: var(--nd-muted); }

/* ---------- Card grids ---------- */
.nd-card-grid { display: grid; gap: 1.25rem; margin-top: 2.5rem; }
@media (min-width: 640px) { .nd-card-grid { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 980px) { .nd-card-grid.cols-3 { grid-template-columns: repeat(3,1fr); }
  .nd-card-grid.cols-4 { grid-template-columns: repeat(4,1fr); } }

.nd-card {
  background: #fff; border: 1px solid var(--nd-border); border-radius: var(--nd-radius);
  padding: 1.6rem; transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}
.nd-card:hover { box-shadow: 0 18px 40px -20px rgba(0,0,0,.25); transform: translateY(-3px); border-color: color-mix(in srgb, var(--nd-brand) 30%, transparent); }
.nd-card h3 { font-family: 'Fraunces', serif; color: var(--nd-foreground); margin: 0 0 .4rem; font-size: 1.2rem; }
.nd-card p { color: var(--nd-muted); margin: 0; font-size: .94rem; line-height: 1.6; }
.nd-card ul { list-style: none; margin: .9rem 0 0; padding: 0; }
.nd-card ul li { position: relative; padding-left: 1rem; font-size: .9rem; color: rgba(31,41,55,.78); margin: .35rem 0; }
.nd-card ul li::before { content: ""; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; border-radius: 999px; background: var(--nd-accent); }
.nd-card .nd-ico {
  display: inline-flex; width: 3.25rem; height: 3.25rem; border-radius: 1rem; margin-bottom: 1rem;
  background: var(--nd-brand-light); align-items: center; justify-content: center;
}
.nd-card .nd-ico svg { width: 1.6rem; height: 1.6rem; color: var(--nd-brand); }
.nd-card-more { display: inline-flex; align-items: center; gap: .35rem; margin-top: 1.1rem; font-weight: 600; font-size: .9rem; color: var(--nd-brand); text-decoration: none; }

/* Feature cards (why-choose) icon */
.nd-feature .nd-ico { background: transparent; width: auto; height: auto; margin-bottom: .75rem; }
.nd-feature .nd-ico svg { width: 2rem; height: 2rem; }

/* ---------- Offers ---------- */
.nd-offer-card { overflow: hidden; border-radius: var(--nd-radius); border: 1px solid var(--nd-border); background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.04); display: flex; flex-direction: column; transition: box-shadow .2s, transform .2s; }
.nd-offer-card:hover { box-shadow: 0 22px 45px -22px rgba(0,0,0,.3); transform: translateY(-3px); }
.nd-offer-media { position: relative; aspect-ratio: 16/10; overflow: hidden; }
.nd-offer-media img { width: 100%; height: 100%; object-fit: cover; }
.nd-offer-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.7), rgba(0,0,0,.06) 55%, transparent); }
.nd-offer-badge { position: absolute; left: 1rem; bottom: .75rem; z-index: 2; font-family: 'Fraunces', serif; font-weight: 800; font-size: 1.9rem; color: #fff; text-shadow: 0 2px 6px rgba(0,0,0,.4); }
.nd-offer-ribbon { position: absolute; left: .75rem; top: .75rem; z-index: 2; background: var(--nd-accent); color: var(--nd-accent-fg); font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .3rem .7rem; border-radius: 999px; }
.nd-offer-body { padding: 1.4rem 1.5rem 1.6rem; display: flex; flex-direction: column; flex: 1; }
.nd-offer-body.is-featured { background: var(--nd-brand-light); }
.nd-offer-body h3 { font-family: 'Fraunces', serif; font-size: 1.15rem; margin: 0 0 .5rem; color: var(--nd-foreground); }
.nd-offer-body p { margin: 0 0 1.1rem; color: var(--nd-muted); font-size: .92rem; line-height: 1.6; flex: 1; }
.nd-offer-claim { align-self: flex-start; border-radius: 999px; padding: .7rem 1.3rem; font-weight: 600; font-size: .9rem; text-decoration: none; background: var(--nd-foreground); color: #fff; }
.nd-offer-body.is-featured .nd-offer-claim { background: var(--nd-brand); color: #fff; }

/* ---------- Doctor authority ---------- */
.nd-split { display: grid; gap: clamp(2rem,4vw,3rem); align-items: center; }
@media (min-width: 980px) { .nd-split { grid-template-columns: 1fr 1fr; } }
.nd-portrait { position: relative; max-width: 26rem; margin-inline: auto; }
.nd-portrait img { width: 100%; aspect-ratio: 4/5; object-fit: cover; border-radius: 2rem; box-shadow: 0 25px 50px -15px rgba(0,0,0,.4); display: block; }
.nd-portrait .nd-portrait-tag { position: absolute; bottom: -1.25rem; left: 50%; transform: translateX(-50%); white-space: nowrap; background: linear-gradient(135deg, var(--nd-hero-from), var(--nd-hero-to)); color: #fff; padding: .7rem 1.5rem; border-radius: 1rem; text-align: center; box-shadow: 0 15px 30px -10px rgba(0,0,0,.4); }
.nd-portrait .nd-portrait-tag b { font-family: 'Fraunces', serif; font-size: 1.05rem; display: block; }
.nd-portrait .nd-portrait-tag span { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; opacity: .85; }
.nd-cred { list-style: none; margin: 1.5rem 0 0; padding: 0; }
.nd-cred li { display: flex; gap: .75rem; align-items: flex-start; margin: .65rem 0; color: rgba(31,41,55,.85); }
.nd-cred li::before { content: ""; flex: none; width: 1.25rem; height: 1.25rem; margin-top: .15rem; background: var(--nd-accent); -webkit-mask: var(--nd-check) center/contain no-repeat; mask: var(--nd-check) center/contain no-repeat; }

/* ---------- Testimonials ---------- */
.nd-quote-grid { display: grid; gap: 1.25rem; margin-top: 2.5rem; }
@media (min-width: 768px) { .nd-quote-grid { grid-template-columns: repeat(2,1fr); } }
.nd-quote { border: 1px solid var(--nd-border); border-radius: var(--nd-radius); background: #fff; padding: 1.75rem; }
.nd-quote .mark { font-family: 'Fraunces', serif; font-size: 2.5rem; line-height: 1; color: color-mix(in srgb, var(--nd-brand) 25%, transparent); }
.nd-quote blockquote { margin: .25rem 0 0; color: rgba(31,41,55,.85); font-size: 1rem; line-height: 1.6; }
.nd-quote figcaption { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--nd-border); display: flex; align-items: center; gap: .75rem; }
.nd-quote figcaption .av { width: 2.5rem; height: 2.5rem; border-radius: 999px; display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, var(--nd-hero-from), var(--nd-hero-to)); }
.nd-quote figcaption b { display: block; font-size: .9rem; }
.nd-quote figcaption span { display: block; font-size: .78rem; color: var(--nd-muted); }
.nd-stars { color: var(--nd-accent); letter-spacing: 2px; }

/* ---------- Team ---------- */
.nd-team-grid { display: grid; gap: 1.25rem; margin-top: 2.5rem; grid-template-columns: repeat(2,1fr); }
@media (min-width: 980px) { .nd-team-grid { grid-template-columns: repeat(4,1fr); } }
.nd-team-card { overflow: hidden; border-radius: var(--nd-radius); background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); }
.nd-team-card .pic { aspect-ratio: 4/5; overflow: hidden; background: rgba(255,255,255,.1); }
.nd-team-card .pic img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.nd-team-card .meta { padding: 1.1rem 1.25rem; }
.nd-team-card .meta b { font-family: 'Fraunces', serif; font-size: 1.05rem; }
.nd-team-card .meta span { display: block; margin-top: .15rem; font-size: .85rem; color: rgba(255,255,255,.75); }

/* Full team page (doctor rows + staff grid) */
.nd-doc-row { display: grid; gap: 0; overflow: hidden; border: 1px solid var(--nd-border); border-radius: var(--nd-radius); background: #fff; margin-bottom: 1.5rem; }
@media (min-width: 720px) { .nd-doc-row { grid-template-columns: 260px 1fr; } }
.nd-doc-row .pic { background: var(--nd-brand-light); min-height: 16rem; }
.nd-doc-row .pic img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.nd-doc-row .body { padding: 1.75rem 2rem; }
.nd-doc-row .body h3 { font-family: 'Fraunces', serif; font-size: 1.5rem; margin: 0; }
.nd-doc-row .body .role { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--nd-brand); margin: .15rem 0 .75rem; }
.nd-doc-row .body p { color: var(--nd-muted); font-size: .94rem; line-height: 1.65; margin: 0 0 .75rem; }
.nd-staff-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(2,1fr); margin-top: 1.5rem; }
@media (min-width: 980px) { .nd-staff-grid { grid-template-columns: repeat(4,1fr); } }
.nd-staff-card { overflow: hidden; border: 1px solid var(--nd-border); border-radius: var(--nd-radius); background: #fff; text-align: center; }
.nd-staff-card .pic { aspect-ratio: 1/1; overflow: hidden; background: var(--nd-brand-light); }
.nd-staff-card .pic img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.nd-staff-card .meta { padding: 1rem; }
.nd-staff-card .meta b { font-family: 'Fraunces', serif; font-size: 1rem; }
.nd-staff-card .meta span { display: block; font-size: .82rem; color: var(--nd-muted); }

/* ---------- FAQ ---------- */
.nd-faq { max-width: 768px; margin: 2.5rem auto 0; }
.nd-faq details { border: 1px solid var(--nd-border); border-radius: 12px; background: #fff; margin-bottom: .75rem; padding: 0 1.25rem; }
.nd-faq summary { cursor: pointer; list-style: none; padding: 1.1rem 0; font-weight: 600; color: var(--nd-foreground); display: flex; justify-content: space-between; gap: 1rem; }
.nd-faq summary::-webkit-details-marker { display: none; }
.nd-faq summary::after { content: "+"; color: var(--nd-brand); font-size: 1.4rem; line-height: 1; }
.nd-faq details[open] summary::after { content: "\2212"; }
.nd-faq details[open] summary { border-bottom: 1px solid var(--nd-border); }
.nd-faq p { color: var(--nd-muted); padding: 1rem 0 1.25rem; margin: 0; line-height: 1.65; }

/* ---------- Final CTA ---------- */
.nd-cta { text-align: center; }
.nd-cta h2 { max-width: 48rem; margin-inline: auto; }
.nd-cta p { max-width: 40rem; margin: 1rem auto 0; }
.nd-cta .nd-actions { justify-content: center; }

/* ---------- Page header (interior pages) ---------- */
.nd-pagehead { background: linear-gradient(135deg, var(--nd-hero-from), var(--nd-hero-to)); color: #fff; position: relative; overflow: hidden; }
.nd-pagehead .nd-container { padding-block: clamp(3rem, 6vw, 5rem); }
.nd-pagehead h1 { color: #fff; font-size: clamp(2rem,4vw,3rem); margin: 0; max-width: 48rem; }
.nd-pagehead h1 .nd-about-prefix { margin-right: .25em; }
.nd-pagehead p { color: rgba(255,255,255,.85); font-size: 1.1rem; max-width: 42rem; margin: 1rem 0 0; }
.nd-crumbs { font-size: .85rem; color: rgba(255,255,255,.7); margin-bottom: .75rem; }
.nd-crumbs a { color: rgba(255,255,255,.7); text-decoration: none; }
.nd-crumbs a:hover { color: #fff; }

/* decorative blurred blob for brand sections */
.nd-blob { position: absolute; width: 22rem; height: 22rem; border-radius: 999px; background: var(--nd-accent); opacity: .18; filter: blur(70px); top: -6rem; right: -6rem; pointer-events: none; }

/* ---------- Contact ---------- */
.nd-contact-grid { display: grid; gap: clamp(2rem,4vw,3rem); }
@media (min-width: 980px) { .nd-contact-grid { grid-template-columns: 1fr 1fr; } }
.nd-info-row { display: flex; gap: 1rem; margin-bottom: 1.5rem; }
.nd-info-row .nd-ico { flex: none; width: 2.75rem; height: 2.75rem; border-radius: .75rem; background: var(--nd-brand-light); display: grid; place-items: center; }
.nd-info-row .nd-ico svg { width: 1.25rem; height: 1.25rem; color: var(--nd-brand); }
.nd-info-row h3 { font-family: 'Fraunces', serif; margin: 0 0 .25rem; font-size: 1.05rem; }
.nd-info-row .det, .nd-info-row a { color: rgba(31,41,55,.82); text-decoration: none; font-size: .95rem; }
.nd-info-row a:hover { color: var(--nd-brand); }
.nd-hours { list-style: none; margin: 0; padding: 0; }
.nd-hours li { display: flex; justify-content: space-between; gap: 1.5rem; font-size: .9rem; padding: .15rem 0; }
.nd-hours li span:last-child { color: var(--nd-muted); }
.nd-map { border: 1px solid var(--nd-border); border-radius: var(--nd-radius); overflow: hidden; margin-top: 1.5rem; }
.nd-map iframe { width: 100%; height: 320px; border: 0; display: block; }
.nd-card--soft { background: var(--nd-surface); border: 1px solid var(--nd-border); border-radius: var(--nd-radius); padding: clamp(1.5rem,3vw,2.25rem); }

/* ============================================================== *
 *  HOMEPAGE (build-home.php) — anchor-button icons + extra parts  *
 * ============================================================== */

/* Inline-SVG icons inside .nd-btn anchors (homepage hero/CTA/cards). */
.nd-btn svg { width: 1.1rem; height: 1.1rem; flex: none; }
.nd-btn span { line-height: 1; }

/* Hero copy z-index above the decorative blob. */
.nd-hero__copy, .nd-hero__media { position: relative; z-index: 2; }

/* Value / trust strip (compact stats band). */
.nd-statband { background: #fff; border-bottom: 1px solid var(--nd-border); }
.nd-statband .nd-container { padding-block: clamp(2rem, 4vw, 2.75rem); }

/* Section heading helper: centered heads still constrain width. */
.nd-section__head h2 { margin: .5rem 0 0; }
.nd-section__head .nd-lead { margin-top: .9rem; }
.nd-section__head[style*="center"] { margin-inline: auto; }

/* Offers claim link: align icon + label. */
.nd-offer-claim { display: inline-flex; align-items: center; gap: .4rem; }
.nd-offer-claim svg { width: 1rem; height: 1rem; }

/* Doctor authority action sits on white — keep brand button. */
.nd-split .nd-actions { margin-top: 1.75rem; }

/* Locations cards (umbrella site). */
.nd-loc-card { display: flex; flex-direction: column; padding-top: 1.6rem; }
.nd-loc-bar { display: block; height: 4px; border-radius: 999px; margin: -1.6rem -1.6rem 1.25rem; background: linear-gradient(90deg, var(--nd-brand), var(--nd-accent)); }
.nd-loc-city { display: flex; align-items: center; gap: .4rem; margin: .35rem 0 .75rem !important; font-size: .9rem; color: var(--nd-muted); }
.nd-loc-city svg { width: 1rem; height: 1rem; color: var(--nd-brand); }
.nd-loc-card p:not(.nd-loc-city) { flex: 1; }
.nd-loc-card .nd-actions { margin-top: 1.25rem; }

/* ============================================================== *
 *  ABOUT / TEAM (build-about.php)                                *
 * ============================================================== */

/* Two-column feature checklist (philosophy + contact CTA), dark text. */
.nd-feat-checks { list-style: none; margin: 1.75rem 0 0; padding: 0; display: grid; gap: .75rem; }
@media (min-width: 520px) { .nd-feat-checks { grid-template-columns: repeat(2, 1fr); } }
.nd-feat-checks li { position: relative; padding-left: 1.9rem; font-size: .92rem; font-weight: 500; color: var(--nd-foreground); line-height: 1.4; }
.nd-feat-checks li::before { content: ""; position: absolute; left: 0; top: .02em; width: 1.25rem; height: 1.25rem; background: var(--nd-accent); -webkit-mask: var(--nd-check) center/contain no-repeat; mask: var(--nd-check) center/contain no-repeat; }

/* Philosophy / about lifestyle image. */
.nd-about-media { margin: 0; border-radius: 2rem; overflow: hidden; box-shadow: 0 25px 50px -15px rgba(0,0,0,.3); border: 1px solid var(--nd-border); }
.nd-about-media img { display: block; width: 100%; aspect-ratio: 5/4; object-fit: cover; }

/* Lead-doctor biography paragraphs. */
.nd-bio { margin-top: 1.25rem; display: grid; gap: 1rem; }
.nd-bio p { color: var(--nd-muted); line-height: 1.7; margin: 0; }

/* Values split (why-choose) — wider card column on large screens. */
@media (min-width: 980px) { .nd-split--values { grid-template-columns: 1fr 1.4fr; } }
.nd-split--values .nd-card-grid { margin-top: 0; }

/* Team page sub-section (staff grid under doctors). */
.nd-team-sub { margin-top: 2.75rem; }
.nd-team-sub .nd-kicker { display: block; margin-bottom: .75rem; }

/* Visit / hours card (about page footer block). */
.nd-visit-card { display: grid; gap: 2rem; align-items: center; padding: clamp(1.75rem, 3vw, 3rem); }
@media (min-width: 860px) { .nd-visit-card { grid-template-columns: 1fr 1fr; } }
.nd-visit-card:hover { transform: none; box-shadow: 0 18px 40px -20px rgba(0,0,0,.12); border-color: var(--nd-border); }
.nd-visit-card h2 { font-family: 'Fraunces', serif; color: var(--nd-foreground); margin: .4rem 0 0; }
.nd-hours--card { background: var(--nd-brand-light); border-radius: 1rem; padding: 1.5rem; }
.nd-hours--card li { border-bottom: 1px solid color-mix(in srgb, var(--nd-brand) 12%, transparent); padding: .45rem 0; }
.nd-hours--card li:last-child { border-bottom: 0; }
.nd-hours--card li span:first-child { font-weight: 500; color: var(--nd-foreground); }

/* ============================================================== *
 *  SERVICES OVERVIEW (build-services.php)                        *
 * ============================================================== */

/* Stacked category blocks (icon + title over a card grid). */
.nd-svc-cats { display: grid; gap: clamp(3rem, 5vw, 4.5rem); }
.nd-svc-cat { scroll-margin-top: 7rem; }
.nd-svc-cat__head { display: flex; align-items: center; gap: 1rem; }
.nd-svc-cat__icon {
  flex: none; width: 3rem; height: 3rem; border-radius: 1rem;
  background: var(--nd-brand-light); color: var(--nd-brand);
  display: grid; place-items: center;
}
.nd-svc-cat__icon svg { width: 1.5rem; height: 1.5rem; }
.nd-svc-cat__head h2 { font-family: 'Fraunces', serif; font-size: clamp(1.4rem, 2.4vw, 1.75rem); margin: 0; color: var(--nd-foreground); }
.nd-svc-cat__head p { margin: .2rem 0 0; font-size: .9rem; color: var(--nd-muted); }
/* Render the heading "&" in a clean sans glyph (Fraunces' ampersand is ornate). */
.nd-svc-cat__head h2 .nd-amp { font-family: 'Plus Jakarta Sans', system-ui, sans-serif; font-weight: 600; font-style: normal; }

/* Service-detail link cards within a category. */
.nd-svc-grid { display: grid; gap: 1rem; margin-top: 1.75rem; }
@media (min-width: 640px) { .nd-svc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 980px) { .nd-svc-grid { grid-template-columns: repeat(3, 1fr); } }
.nd-svc-link { display: flex; flex-direction: column; text-decoration: none; }
.nd-svc-link h3 { transition: color .2s ease; }
.nd-svc-link:hover h3 { color: var(--nd-brand); }
.nd-svc-link p { flex: 1; margin-top: .5rem; }
.nd-svc-link .nd-card-more { margin-top: 1.1rem; }
.nd-svc-link .nd-card-more svg { width: 1rem; height: 1rem; transition: transform .2s ease; }
.nd-svc-link:hover .nd-card-more svg { transform: translateX(3px); }

/* ============================================================== *
 *  CONTACT (build-contact.php)                                   *
 * ============================================================== */
.nd-info-list { margin-top: 1.75rem; }
.nd-contact-grid > div > h2 { font-family: 'Fraunces', serif; color: var(--nd-foreground); margin: 0 0 .5rem; }
.nd-contact-cta { align-self: start; }
.nd-contact-cta h2 { font-family: 'Fraunces', serif; margin: 0 0 .5rem; color: var(--nd-foreground); }
.nd-contact-cta .nd-actions { margin-top: 1.5rem; }
.nd-info-row .det a { color: rgba(31,41,55,.82); }
.nd-info-row .nd-hours { margin-top: .25rem; }

/* ============================================================== *
 *  DESIGNED PAGES (build-designed-pages.php)                     *
 * ============================================================== */
.nd-hero--split .nd-hero-grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 980px) { .nd-hero--split .nd-hero-grid { grid-template-columns: 1fr 1fr; } }
.nd-hero-media { border-radius: var(--nd-radius-lg); overflow: hidden; box-shadow: 0 24px 48px -20px rgba(0,0,0,.35); }
.nd-hero-media img { width: 100%; height: 100%; object-fit: cover; min-height: 16rem; }
.nd-offers-grid { display: grid; gap: 1.5rem; margin-top: 2rem; }
@media (min-width: 640px) { .nd-offers-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nd-offers-grid { grid-template-columns: repeat(3, 1fr); } }
.nd-disclaimer { margin-top: 2rem; text-align: center; font-size: .78rem; color: var(--nd-muted); max-width: 48rem; margin-inline: auto; }
.nd-info-grid { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .nd-info-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nd-info-grid { grid-template-columns: repeat(3, 1fr); } }
.nd-info-card h3 { font-family: 'Fraunces', serif; font-size: 1.05rem; margin: 0 0 .5rem; }
.nd-info-card p { margin: 0; font-size: .92rem; color: var(--nd-muted); line-height: 1.6; }
.nd-check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.nd-check-list li { display: flex; gap: .65rem; align-items: flex-start; padding: 1rem 1.1rem; border-radius: var(--nd-radius); border: 1px solid var(--nd-border); background: #fff; font-size: .92rem; }
.nd-check-list li::before { content: ""; flex: none; width: .5rem; height: .5rem; margin-top: .45rem; border-radius: 50%; background: var(--nd-accent); }
.nd-callout { margin-top: 1.5rem; padding: 1.25rem 1.5rem; border-radius: var(--nd-radius); background: var(--nd-brand-light); }
.nd-container--narrow { max-width: 42rem; }
.nd-reviews-card { padding: 2.5rem 2rem; text-align: center; }
.nd-stars { display: flex; justify-content: center; gap: .35rem; color: var(--nd-accent); margin-bottom: 1rem; }
.nd-stars svg { width: 1.75rem; height: 1.75rem; fill: currentColor; stroke: none; }
.nd-actions--center { justify-content: center; }
