:root {
  /* ——— Palette: Warm Tan / Green Kelp / Flax Smoke / Espresso Brown ——— */
  --cream: #EDE5D6;      /* warm tan — page background */
  --cream-2: #E3D9C4;    /* deeper tan */
  --cream-3: #D6C9B0;    /* deepest tan */
  --sage: #7E8065;       /* Flax Smoke — primary sage/accent */
  --sage-deep: #5D6049;  /* deepened Flax Smoke for hover */
  --sage-soft: #A0A28C;  /* lifted Flax Smoke */
  --sage-whisper: #D6D0B8;/* warm whisper tint that reads on tan */
  --ink: #25311D;        /* Green Kelp — deep ink / dark sections */
  --ink-soft: #5C4A3A;   /* espresso brown — body copy */
  --ink-mute: #8F7A66;   /* softer brown for labels */
  --brown: #5C4A3A;      /* espresso brown accent */
  --brown-deep: #3D3025; /* deepened brown */
  --line: rgba(61, 48, 37, 0.16);
  --accent: #7E8065;     /* Flax Smoke */
  --serif: 'Cormorant Garamond', 'Cormorant', Georgia, serif;
  --sans: 'Inter', system-ui, -apple-system, sans-serif;
  --section-title: clamp(40px, 4.8vw, 72px);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: auto; }

/* Lenis smooth scroll */
html.lenis, html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }

body {
  font-family: var(--sans);
  font-weight: 300;
  color: var(--ink);
  background: var(--cream);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  font-size: 16px;
  overflow-x: hidden;
}

body[data-typography="sans"] .serif,
body[data-typography="sans"] h1,
body[data-typography="sans"] h2,
body[data-typography="sans"] h3 {
  font-family: var(--sans) !important;
  font-weight: 400 !important;
  letter-spacing: -0.02em !important;
}
body[data-typography="sans"] h1 { font-weight: 300 !important; }

body[data-italic="off"] em { font-style: normal !important; }

.serif { font-family: var(--serif); font-weight: 400; letter-spacing: -0.01em; }

h1, h2, h3 { font-family: var(--serif); font-weight: 400; letter-spacing: -0.015em; line-height: 1.05; }
h1 em, h2 em, h3 em { font-style: italic; font-weight: 300; color: var(--accent); }

a { color: inherit; text-decoration: none; }

.container { max-width: 1360px; margin: 0 auto; padding: 0 40px; }
@media (max-width: 720px) { .container { padding: 0 24px; } }

/* ——— NAV ——— */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  padding: 20px 40px;
  display: flex; align-items: center; justify-content: space-between;
  transition:
    background 0.4s ease,
    border-color 0.4s ease,
    padding 0.3s ease,
    transform 0.45s cubic-bezier(0.2, 0.7, 0.2, 1);
  border-bottom: 1px solid transparent;
  will-change: transform;
}
.nav.hidden {
  transform: translateY(-100%);
}
.nav.scrolled {
  background: rgba(237, 229, 214, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom-color: var(--line);
  padding: 14px 40px;
}
.nav.mega-open:not(.scrolled) {
  background: rgba(237, 229, 214, 0.96);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom-color: var(--line);
}
.nav__logo {
  font-family: var(--serif);
  font-size: 26px;
  font-weight: 500;
  letter-spacing: 0.01em;
  display: flex; align-items: baseline; gap: 8px;
}
.nav__logo em { font-style: italic; color: var(--accent); font-weight: 400; }
.nav__logo--img {
  display: inline-flex; align-items: center;
  position: relative;
  height: 54px; width: 278px;
  transition: height 0.35s ease, width 0.35s ease;
}
.nav.scrolled .nav__logo--img { height: 42px; width: 238px; }
.nav__logo--img img {
  width: 100%; height: auto; display: block;
  position: absolute; top: 50%; left: 0; transform: translateY(-50%);
  transition: opacity 0.4s ease;
}
.nav__logo--img .logo-white { opacity: 1; }
.nav__logo--img .logo-color { opacity: 0; }
.nav.scrolled .nav__logo--img .logo-white { opacity: 0; }
.nav.scrolled .nav__logo--img .logo-color { opacity: 1; }
.nav.mega-open .nav__logo--img .logo-white { opacity: 0; }
.nav.mega-open .nav__logo--img .logo-color { opacity: 1; }
/* Centered / split heroes have cream bg — show the color logo there too */
body[data-hero="centered"] .nav:not(.scrolled) .nav__logo--img .logo-white,
body[data-hero="split"] .nav:not(.scrolled) .nav__logo--img .logo-white { opacity: 0; }
body[data-hero="centered"] .nav:not(.scrolled) .nav__logo--img .logo-color,
body[data-hero="split"] .nav:not(.scrolled) .nav__logo--img .logo-color { opacity: 1; }
.nav__links { display: flex; gap: 36px; list-style: none; }
.nav__links a {
  font-size: 13px; font-weight: 500; letter-spacing: 0.06em;
  color: var(--ink); position: relative; padding: 4px 0;
  text-transform: uppercase;
}
.nav__links a::after {
  content: ''; position: absolute; left: 0; bottom: 0;
  width: 0; height: 1px; background: var(--ink);
  transition: width 0.3s ease;
}
.nav__links a:hover::after { width: 100%; }
.nav__links a:hover { color: var(--ink); }

.nav__cta {
  display: flex; align-items: center; gap: 18px;
}
.nav__phone {
  font-size: 13px; font-weight: 400; letter-spacing: 0.04em; color: var(--ink-soft);
}
.nav__cta .btn {
  height: 40px;
  padding: 0 22px;
  font-size: 11px;
}

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 0 28px; height: 48px; border-radius: 999px;
  border: 1px solid transparent; box-sizing: border-box;
  font-family: var(--sans);
  font-size: 12px; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
  white-space: nowrap;
  line-height: 1;
  transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease, transform 0.3s ease, gap 0.3s ease;
}
.btn:hover { gap: 14px; }
.btn--primary {
  background: var(--accent); color: var(--cream); border-color: var(--accent);
}
.btn--primary:hover { background: var(--sage-deep); border-color: var(--sage-deep); transform: translateY(-1px); }
.btn--ghost {
  background: transparent; border: 1px solid var(--ink); color: var(--ink);
}
.btn--ghost:hover { background: var(--ink); color: var(--cream); }
.btn--outline-light {
  background: transparent; border: 1px solid rgba(237, 229, 214, 0.7); color: var(--cream);
}
.btn--outline-light:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }

.menu-toggle { display: none; background: none; border: none; cursor: pointer; padding: 8px; }
.menu-toggle span { display: block; width: 22px; height: 1px; background: var(--ink); margin: 5px 0; transition: all 0.3s; }

@media (max-width: 960px) {
  .nav__links, .nav__phone { display: none; }
  .menu-toggle { display: block; }
  .nav, .nav.scrolled { padding: 16px 24px; }
}

/* mobile menu overlay */
.mobile-menu {
  position: fixed; inset: 0; z-index: 100;
  background: var(--cream);
  transform: translateX(100%);
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  padding: 30px 32px;
  display: flex; flex-direction: column;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.mobile-menu.open { transform: translateX(0); }
.mobile-menu__top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 60px; flex-shrink: 0; }
/* Drawer logo: new mark is wider, so size it to the drawer instead of the nav's fixed box */
.mobile-menu__top .nav__logo--img { width: min(224px, 56vw); height: auto; aspect-ratio: 1787 / 430; transition: none; }
.mobile-menu__top .nav__logo--img img { position: static; transform: none; }
.mobile-menu__links { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.mobile-menu__links a {
  font-family: var(--serif); font-size: 40px; font-weight: 400;
  letter-spacing: -0.01em; display: block; padding: 8px 0;
  transition: color 0.3s;
}
.mobile-menu__links a:hover { color: var(--accent); }
.mobile-menu__footer { margin-top: auto; padding-top: 40px; font-size: 13px; color: var(--ink-soft); flex-shrink: 0; }
.menu-close { background: none; border: none; font-size: 26px; cursor: pointer; color: var(--ink); }

/* ——— HERO ——— */
.hero {
  padding: 160px 40px 100px;
  min-height: 115vh;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  position: relative;
  text-align: center;
}
.hero__eyebrow {
  font-size: 12px; letter-spacing: 0.26em; text-transform: uppercase;
  color: var(--ink-mute); margin-bottom: 28px;
}
.hero__title {
  font-size: clamp(48px, 8.6vw, 130px);
  line-height: 0.88;
  max-width: 22ch;
  margin: 0 auto 42px;
  font-weight: 300;
  letter-spacing: -0.012em;
}
.hero__title em {
  font-style: italic;
}
/* Tighten the gap between word-reveal lines so line 2 sits close under line 1 */
.hero__title.reveal-words .reveal-words__line { display: block; line-height: 0.88; padding: 0; }
.hero__title.reveal-words .reveal-words__line + .reveal-words__line { margin-top: -0.06em; }
/* Keep enough vertical space so descenders (y, g) aren't clipped by overflow */
.hero__title.reveal-words .reveal-words__word { overflow: visible; }
.hero__sub {
  font-size: 17px; max-width: 52ch; margin: 0 auto 48px;
  color: var(--ink-soft); line-height: 1.6;
}
.hero__ctas { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

.hero__image-wrap {
  width: 100%; max-width: 1100px;
  margin: 80px auto 0;
  position: relative;
}
.hero__image {
  aspect-ratio: 16/10;
  width: 100%;
  border-radius: 4px;
  overflow: hidden;
}

/* Split hero variant */
body[data-hero="split"] .hero { text-align: left; min-height: 110vh; padding-top: 180px; }
body[data-hero="split"] .hero__inner {
  display: grid; grid-template-columns: 1.1fr 1fr; gap: 80px; align-items: center;
  width: 100%; max-width: 1360px;
}
body[data-hero="split"] .hero__title { margin: 0 0 30px; max-width: 14ch; font-size: clamp(48px, 5.8vw, 92px); }
body[data-hero="split"] .hero__sub { margin: 0 0 42px; }
body[data-hero="split"] .hero__ctas { justify-content: flex-start; }
body[data-hero="split"] .hero__image-wrap { margin: 0; max-width: none; }
body[data-hero="split"] .hero__image { aspect-ratio: 4/5; }
body[data-hero="split"] .hero__eyebrow { text-align: left; }
body[data-hero="split"] .hero__centered { display: none; }
body:not([data-hero="split"]) .hero__split { display: none; }

/* Full-bleed hero — Core Atelier style: photo IS the hero, text bottom-left, minimal chrome */
body[data-hero="full"] .hero { padding: 0; min-height: 100vh; height: 100vh; text-align: left; display: block; position: relative; }
body[data-hero="full"] .hero__image-wrap {
  position: absolute; inset: 0; max-width: none; margin: 0;
  z-index: 0;
}
body[data-hero="full"] .hero__image {
  aspect-ratio: auto; height: 100%; width: 100%; border-radius: 0;
}
body[data-hero="full"] .hero__image > div:first-child {
  /* the placeholder--photo div */
  height: 100%;
}
body[data-hero="full"] .hero__image::after {
  content: none;
}
body[data-hero="full"] .hero__inner {
  position: absolute; z-index: 1; color: var(--cream);
  left: 0; right: 0; bottom: 0; top: 0;
  padding: 130px 40px 60px;
  display: flex; flex-direction: column; justify-content: flex-end;
  max-width: none; margin: 0;
  pointer-events: none;
}
body[data-hero="full"] .hero__inner > * { pointer-events: auto; }
body[data-hero="full"] .hero__eyebrow {
  display: none;
}
.hero__kicker { display: none; }
body[data-hero="full"] .hero__kicker {
  display: block;
  font-family: var(--sans);
  font-size: 12px; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
  line-height: 1; color: #fff; margin-bottom: 18px;
}
body[data-hero="full"] .hero__title {
  color: var(--cream);
  font-size: clamp(44px, 7.6vw, 116px);
  max-width: 22ch;
  margin: 0 0 44px;
  font-weight: 300;
  line-height: 0.98;
  letter-spacing: -0.02em;
}
body[data-hero="full"] .hero__title em {
  color: var(--cream); opacity: 1;
  font-style: italic; font-weight: 300;
}
body[data-hero="full"] .hero__sub { display: none; }
body[data-hero="full"] .hero__ctas { justify-content: flex-start; }
body[data-hero="full"] .hero__ctas .btn {
  background: var(--cream); color: var(--ink); border-color: var(--cream);
}
body[data-hero="full"] .hero__ctas .btn:hover { background: var(--accent); border-color: var(--accent); color: var(--cream); }
body[data-hero="full"] .hero__ctas .btn--ghost { display: none; }
body[data-hero="full"] .hero__ctas .btn--hero-phone {
  background: var(--accent); color: var(--cream); border-color: var(--accent);
}
body[data-hero="full"] .hero__ctas .btn--hero-phone:hover {
  background: var(--sage-deep); border-color: var(--sage-deep); color: var(--cream);
}
@media (min-width: 721px) {
  body[data-hero="full"] .hero__ctas .btn { height: 50px; padding: 0 38px; font-size: 13px; }
  body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .btn--primary { height: 46px; padding: 0 34px; font-size: 13px; }
}

/* Featured-in bottom right on full-bleed hero */
body[data-hero="full"] .hero__featured {
  position: absolute; right: max(60px, calc((100vw - 1400px) / 2 + 60px)); bottom: 60px; z-index: 2;
  display: flex; align-items: center; gap: 18px;
  color: rgba(237, 229, 214, 0.8);
  font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase;
  font-style: italic;
  pointer-events: none;
}
body[data-hero="full"] .hero__featured span.press-name {
  font-family: var(--serif); font-style: italic;
  font-size: 22px; letter-spacing: 0.05em;
  font-weight: 600;
  color: var(--cream);
  text-transform: none;
}

/* Rotating service names — each slides upward, next enters from below */
.services-rotator {
  position: relative;
  display: inline-block;
  min-width: 280px;
  height: 1.3em;
  overflow: hidden;
  vertical-align: baseline;
}
.services-rotator__item {
  position: absolute;
  left: 0; top: 0;
  white-space: nowrap;
  transition:
    transform 0.9s cubic-bezier(0.65, 0, 0.35, 1),
    opacity 0.6s ease;
  will-change: transform, opacity;
}
.services-rotator__item.is-current {
  transform: translateY(0);
  opacity: 1;
}
.services-rotator__item.is-prev {
  transform: translateY(-110%);
  opacity: 0;
}
.services-rotator__item.is-next {
  transform: translateY(110%);
  opacity: 0;
  transition: none; /* snap below without animating from above */
}
@media (max-width: 720px) {
  .services-rotator { min-width: 200px; font-size: 18px; }
}
body[data-hero="full"] .hero__centered-bottom-image,
body[data-hero="full"] .hero__split,
body:not([data-hero="full"]) .hero__featured { display: none; }

/* Nav on full-bleed hero: transparent, white text/logo */
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) {
  background: transparent; border-color: transparent;
}
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .nav__links a,
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .nav__phone {
  color: rgba(237, 229, 214, 0.92);
}
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .nav__links a::after { background: var(--cream); }
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .btn--primary {
  background: var(--cream); color: var(--ink); border-color: var(--cream);
}
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .btn--primary:hover { background: var(--accent); border-color: var(--accent); color: var(--cream); }
body[data-hero="full"] .nav:not(.scrolled):not(.mega-open) .menu-toggle span { background: var(--cream); }

@media (max-width: 720px) {
  body[data-hero="full"] .hero__inner { padding: 130px 24px 40px; }
  body[data-hero="full"] .hero__featured { right: 24px; bottom: 24px; }
  body[data-hero="full"] .hero__ctas { flex-wrap: nowrap; gap: 10px; }
  body[data-hero="full"] .hero__ctas .btn { padding-left: 20px; padding-right: 20px; white-space: nowrap; flex: 0 1 auto; }
}

@media (max-width: 900px) {
  body[data-hero="split"] .hero__inner { grid-template-columns: 1fr; gap: 50px; }
  .hero { padding: 120px 24px 60px; }
}

/* ——— Press strip ——— */
.press {
  padding: 56px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--cream-2);
}
.press__label {
  text-align: center; font-size: 11px;
  letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--ink-mute); margin-bottom: 28px;
}
.press__logos {
  display: flex; align-items: center; justify-content: center;
  gap: 70px; flex-wrap: wrap;
  font-family: var(--serif); font-size: 22px;
  color: var(--ink-soft);
}
.press__logos span { opacity: 0.55; transition: opacity 0.3s; font-style: italic; letter-spacing: 0.02em; }
.press__logos span:hover { opacity: 1; }
@media (max-width: 720px) { .press__logos { gap: 34px; font-size: 18px; } }

/* ——— CORE MESSAGE ——— */
.core-msg {
  position: relative;
  overflow-x: clip;
  /* Scroll-shrink section: tall outer so we get scroll distance,
     inner is sticky so the content stays pinned while the headline shrinks. */
  padding: 0 0 40px;
  min-height: 185vh;
}
.core-msg__sticky {
  position: sticky;
  top: 90px; /* clear the fixed nav */
  min-height: calc(100vh - 90px);
  display: flex;
  align-items: center;
  padding: 40px 0 60px;
}
.core-msg__grid {
  display: grid; grid-template-columns: 1.35fr 1fr; gap: 80px;
  align-items: center;
  width: 100%;
}
.core-msg__headline {
  margin: 0 0 32px;
  letter-spacing: -0.01em;
  color: var(--ink);
  font-weight: 400;
  white-space: nowrap;
  transform-origin: left center;
}
.core-msg__headline em {
  font-style: italic;
  color: var(--accent);
  font-weight: 400;
}
.core-msg__body {
  transition: opacity 0.3s ease;
  max-width: 52ch;
}
.core-msg__body p {
  font-size: 17px; color: var(--ink-soft);
  margin-bottom: 20px; line-height: 1.7;
}
.core-msg__image {
  aspect-ratio: 4/5; border-radius: 4px; overflow: hidden;
  transform-origin: right center;
  will-change: transform, opacity;
}
@media (max-width: 900px) {
  .core-msg { min-height: auto; padding: 80px 0 48px; }
  .core-msg__sticky { position: static; min-height: 0; padding: 0; }
  .core-msg__grid { grid-template-columns: 1fr; gap: 40px; }
  .core-msg__headline { white-space: normal; }
}

/* ——— SERVICES (sticky-scroll storytelling) ——— */
.services-sticky {
  position: relative;
  background: var(--ink); /* Green Kelp */
  color: var(--cream);
  /* Total scroll zone = (count) * 100vh so each service gets one viewport */
  min-height: calc(var(--svc-count, 4) * 100vh);
}
.services-sticky__inner {
  position: sticky;
  top: 0;
  height: 100vh;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 0;
  overflow: hidden;
}
.services-sticky__left {
  padding: 56px 5vw 64px 6vw;
  display: flex;
  flex-direction: column;
  justify-content: center;
  max-width: 720px;
  height: 100vh;
  gap: 8px;
  box-sizing: border-box;
}
.services-sticky__title {
  font-family: var(--serif);
  font-size: var(--section-title);
  line-height: 1.04;
  font-weight: 400;
  letter-spacing: -0.01em;
  margin: 0 0 14px;
  color: var(--cream);
}
.services-sticky__title em {
  font-style: italic;
  color: var(--cream);
}
.services-sticky__intro {
  font-size: 16px;
  line-height: 1.6;
  color: rgba(222, 222, 218, 0.72);
  max-width: 46ch;
  margin: 0 0 20px;
}
.services-sticky__list {
  list-style: none;
  margin: 0; padding: 0;
}
.services-sticky__item {
  border-top: 1px solid rgba(237, 229, 214, 0.18);
  padding: 0;
  transition: border-color 0.4s ease;
}
.services-sticky__item:last-child {
  border-bottom: 1px solid rgba(237, 229, 214, 0.18);
}
.services-sticky__item.is-active {
  border-top-color: rgba(237, 229, 214, 0.75);
}
.services-sticky__item.is-active + .services-sticky__item {
  border-top-color: rgba(237, 229, 214, 0.75);
}
.services-sticky__name {
  width: 100%;
  text-align: left;
  background: none; border: none; padding: 10px 0 10px;
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(222, 222, 218, 0.55);
  cursor: pointer;
  transition: color 0.4s ease, padding 0.4s ease;
}
.services-sticky__name:hover { color: rgba(237, 229, 214, 0.85); }
.services-sticky__item.is-active .services-sticky__name {
  color: var(--cream);
  padding-left: 14px;
}
.services-sticky__desc {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition: max-height 0.6s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.4s ease 0.1s;
}
.services-sticky__item.is-active .services-sticky__desc {
  max-height: 240px;
  opacity: 1;
}
.services-sticky__desc p {
  padding: 0 14px 10px;
  font-size: 16px;
  line-height: 1.6;
  color: rgba(222, 222, 218, 0.82);
  margin: 0;
  max-width: 46ch;
}
.services-sticky__desc {
  display: flex;
  flex-direction: column;
}
.services-sticky__more {
  align-self: flex-end;
  margin-right: 0;
  padding: 8px 0 20px 14px;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(237, 229, 214, 0.82);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  transition: color 0.3s ease, gap 0.3s ease;
}
.services-sticky__more:hover {
  color: var(--cream);
  gap: 14px;
}
.services-sticky__more-arrow {
  display: inline-block;
  transition: transform 0.3s ease;
}
.services-sticky__more:hover .services-sticky__more-arrow {
  transform: translateX(4px);
}
.services-sticky__cta {
  align-self: flex-start;
  margin-top: 32px;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 14px 26px;
  border: 1px solid rgba(237, 229, 214, 0.4);
  border-radius: 999px;
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--cream);
  text-decoration: none;
  background: transparent;
  transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease, gap 0.3s ease;
}
.services-sticky__cta:hover {
  background: var(--cream);
  border-color: var(--cream);
  color: var(--ink);
  gap: 18px;
}
.services-sticky__cta-arrow {
  display: inline-block;
  transition: transform 0.3s ease;
  font-size: 14px;
}
.services-sticky__cta:hover .services-sticky__cta-arrow {
  transform: translateX(4px);
}
.services-sticky__right {
  position: relative;
  height: 100vh;
  padding: 80px 48px 80px 0;
  overflow: hidden;
}
.services-sticky__stack {
  position: relative;
  width: 100%;
  height: 100%;
  /* Taller than container so next photo peeks below */
  display: flex;
  flex-direction: column;
  gap: 24px;
  transition: transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
  will-change: transform;
}
.services-sticky__photo {
  flex: 0 0 auto;
  width: 100%;
  /* Each card ~85% of the visible right column so the next one peeks */
  height: 85%;
  background-size: cover;
  background-position: center;
  border-radius: 6px;
  transition: opacity 0.6s ease, transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
  opacity: 0.45;
}
.services-sticky__photo.is-active {
  opacity: 1;
}
.services-sticky__photo.is-peek {
  opacity: 0.55;
}
@media (max-width: 960px) {
  .services-sticky { min-height: auto; }
  .services-sticky__inner {
    position: relative;
    height: auto;
    grid-template-columns: 1fr;
  }
  .services-sticky__left { padding: 80px 24px 40px; height: auto; justify-content: flex-start; }
  .services-sticky__right { display: none; }
  .services-sticky__item .services-sticky__desc { max-height: none; opacity: 1; }
  .services-sticky__item .services-sticky__desc p { padding: 0 0 22px; }
}

.doctors__ctas { margin-top: 44px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.doctors__cta { white-space: nowrap; }
.doctors__cta {
  display: inline-flex; align-items: center; gap: 14px;
  padding: 14px 26px; border: 1px solid rgba(43,42,38,0.28); border-radius: 999px;
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--ink); text-decoration: none; background: transparent;
  transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease, gap 0.3s ease;
}
.doctors__cta:hover { background: var(--ink); border-color: var(--ink); color: var(--cream); gap: 18px; }
.doctors__cta-arrow { display: inline-block; font-size: 14px; transition: transform 0.3s ease; }
.doctors__cta:hover .doctors__cta-arrow { transform: translateX(4px); }
/* Primary: filled sage so the dentists link leads and the phone reads as secondary */
.doctors__cta--primary { background: var(--sage); border-color: var(--sage); color: #fff; }
.doctors__cta--primary:hover { background: var(--sage-deep); border-color: var(--sage-deep); color: #fff; }

/* ——— DOCTORS — photo left, content right ——— */
.doctors {
  padding: 160px 0 160px;
  background: var(--cream);
  position: relative;
}
.doctors__wrap {
  max-width: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: stretch;
}
.doctors__photo {
  position: relative;
  align-self: stretch;
  display: flex;
  flex-direction: column;
}
.doctors__photo img {
  width: 100%;
  flex: 1;
  min-height: 0;
  display: block;
  object-fit: cover;
  filter: contrast(1.02) saturate(0.95);
}
.doctors__photo-caption {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 18px;
  padding-left: 40px;
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.doctors__photo-caption-line {
  display: inline-block;
  width: 36px;
  height: 1px;
  background: var(--ink-mute);
}
.doctors__content {
  padding: 20px clamp(24px, 6vw, 56px) 0 clamp(40px, 4.4vw, 64px);
  max-width: 700px;
}
.doctors__eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--sage);
  margin-bottom: 32px;
  font-weight: 500;
}
.doctors__eyebrow-mark {
  display: inline-block;
  width: 28px;
  height: 1px;
  background: var(--sage);
}
.doctors__title {
  font-family: var(--serif);
  font-size: var(--section-title);
  line-height: 1.02;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 32px;
}
.doctors__title em {
  font-style: italic;
  color: var(--sage);
}
.doctors__intro {
  font-size: 16px;
  line-height: 1.7;
  color: var(--ink-soft);
  max-width: 48ch;
  margin: 0 0 56px;
}
.doctors__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.doctor-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  padding: 28px 0;
  border-top: 1px solid var(--line);
}
.doctor-row:last-child { border-bottom: 1px solid var(--line); }
.doctor-row__num {
  display: none;
  font-family: var(--serif);
  font-style: italic;
  font-size: 18px;
  color: var(--sage);
  padding-top: 6px;
}
.doctor-row__name {
  font-family: var(--serif);
  font-size: 26px;
  line-height: 1.15;
  font-weight: 400;
  color: var(--ink);
  margin: 0 0 2px;
}
.doctor-row__name em {
  font-style: italic;
}
.doctor-row__role {
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 12px;
}
.doctor-row__bio {
  font-size: 14.5px;
  line-height: 1.65;
  color: var(--ink-soft);
  max-width: 50ch;
}
@media (max-width: 960px) {
  .doctors { padding: 100px 0; }
  .doctors__wrap { grid-template-columns: 1fr; gap: 50px; padding: 0 24px; }
  .doctors__photo { margin-left: 0; }
  .doctors__photo-caption { padding-left: 0; }
  .doctors__content { padding: 0; }
  .doctors__title { font-size: clamp(36px, 9vw, 52px); }
  .doctor-row { grid-template-columns: 1fr; gap: 16px; }
}

/* ——— SMILE GALLERY — before / after grid ——— */
.ba {
  background: var(--cream-2);
  padding: 140px 0;
}
.ba__head {
  width: 100%;
  margin: 0 auto 68px;
  padding: 0 calc(40px + 60px + 28px);
  display: grid;
  grid-template-columns: 1.4fr 0.9fr;
  gap: 48px;
  align-items: end;
}
.ba__head-left { text-align: left; justify-self: start; }
.ba__eyebrow {
  display: flex; align-items: center; gap: 12px;
  justify-content: flex-start;
  font-family: var(--sans);
  font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase;
  color: var(--sage); margin-bottom: 24px; font-weight: 500;
}
.ba__eyebrow-mark { width: 28px; height: 1px; background: var(--sage); display: inline-block; }
.ba__title {
  text-align: left;
  font-family: var(--serif);
  font-size: var(--section-title);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}
.ba__title em { font-style: italic; color: var(--sage); }
.ba__note {
  font-size: 16px; line-height: 1.7; color: var(--ink-soft);
  max-width: 42ch; margin: 0 0 6px;
  justify-self: end;
  text-align: right;
}
.ba__grid {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 6vw;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* Carousel stage */
.ba__stage {
  position: relative;
  width: 100%;
  margin: 0 auto;
  padding: 0 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
}
.ba__viewport {
  flex: 1;
  min-width: 0;
  overflow: hidden;
}
.ba__track {
  display: flex;
  gap: 24px;
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.15, 1);
}
.ba__track > .ba-card {
  flex: 0 0 calc((100% - 48px) / 3);
}
.ba__nav {
  flex-shrink: 0;
  width: 60px; height: 60px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: var(--cream);
  color: var(--ink);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease;
  box-shadow: 0 12px 30px -18px rgba(37, 49, 29, 0.5);
}
.ba__nav:hover { background: var(--ink); color: var(--cream); transform: scale(1.05); }
.ba__footer {
  width: 100%;
  margin: 40px auto 0;
  padding: 0 calc(40px + 60px + 28px);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 32px;
}
.ba__count {
  font-family: var(--serif);
  font-size: 22px;
  color: var(--ink);
  letter-spacing: 0.04em;
}
.ba__count-cur { color: var(--sage); }
.ba__count-sep, .ba__count-total { color: var(--ink-mute); }
.ba__dots { display: flex; gap: 10px; }
.ba__dot {
  width: 8px; height: 8px; border-radius: 50%;
  border: none; padding: 0; cursor: pointer;
  background: var(--cream-3);
  transition: background 0.25s ease, transform 0.25s ease;
}
.ba__dot:hover { background: var(--sage-soft); }
.ba__dot.is-active { background: var(--sage); transform: scale(1.3); }

/* Card */
.ba-card {
  position: relative;
  aspect-ratio: 4 / 5;
  width: 100%;
  overflow: hidden;
  border-radius: 5px;
  cursor: ew-resize;
  user-select: none;
  background: var(--cream-3);
  box-shadow: 0 26px 55px -38px rgba(37, 49, 29, 0.5);
}
.ba-card__img {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
}
.ba-card__img--before { will-change: clip-path; }
.ba-card__tag {
  position: absolute; top: 16px; z-index: 3;
  font-family: var(--sans);
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--cream);
  background: rgba(37, 49, 29, 0.82);
  padding: 6px 12px; border-radius: 2px;
  pointer-events: none;
  backdrop-filter: blur(2px);
}
.ba-card__tag--before { left: 16px; }
.ba-card__tag--after { right: 16px; }
.ba-card__divider {
  position: absolute; top: 0; bottom: 0; z-index: 4;
  width: 2px; background: var(--cream);
  transform: translateX(-1px);
  pointer-events: none;
  box-shadow: 0 0 0 0.5px rgba(37,49,29,0.15);
}
.ba-card__handle {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--cream);
  color: var(--ink);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 18px -6px rgba(37,49,29,0.5);
}
.ba-card__caption {
  position: absolute; left: 20px; bottom: 18px; z-index: 3;
  font-family: var(--sans);
  font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--cream);
  text-shadow: 0 1px 8px rgba(37,49,29,0.7);
  pointer-events: none;
  max-width: calc(100% - 40px);
}
/* Hidden range input for keyboard / accessibility */
.ba-card__range {
  position: absolute; inset: 0; z-index: 5;
  width: 100%; height: 100%;
  opacity: 0; cursor: ew-resize; margin: 0;
}
.ba-card__range:focus-visible + .ba-card__handle { outline: 2px solid var(--sage); }

@media (max-width: 960px) {
  .ba { padding: 90px 0; }
  .ba__head { grid-template-columns: 1fr; gap: 24px; margin-bottom: 44px; }
  .ba__stage {
    gap: 12px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "view view" "prev next";
    justify-items: center;
    row-gap: 26px;
  }
  .ba__viewport { overflow: hidden; grid-area: view; width: 100%; }
  .ba__nav--prev { grid-area: prev; justify-self: end; }
  .ba__nav--next { grid-area: next; justify-self: start; }
  .ba__nav { width: 46px; height: 46px; }
  .ba__track > .ba-card { flex: 0 0 calc((100% - 16px) / 2); }
  .ba__track { gap: 16px; }
  /* Arrows now sit below the cards, so the old side-offset for them is obsolete.
     Match .container's gutters so the gallery lines up with every other section. */
  .ba__head, .ba__footer, .ba__stage { padding: 0 40px; }
}
@media (max-width: 720px) {
  .ba__head, .ba__footer, .ba__stage { padding: 0 24px; }
}
@media (max-width: 620px) {
  .ba__track > .ba-card { flex: 0 0 100%; }
}

/* ——— REVIEWS ——— */
.reviews {
  padding: 140px 0;
  background: var(--cream);
  overflow: hidden;
}
.reviews__head { text-align: center; margin-bottom: 60px; }
.reviews__eyebrow {
  font-size: 11px; letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--ink-mute); margin-bottom: 14px;
}
.reviews__title { font-size: var(--section-title); }

.reviews__stage {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
}
.reviews__track {
  position: relative;
  flex: 1;
  min-height: 260px;
}
.review {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 0 20px;
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
  pointer-events: none;
}
.review.active { opacity: 1; transform: translateY(0); pointer-events: auto; }
.review__quote {
  font-family: var(--serif); font-size: clamp(24px, 2.8vw, 40px);
  font-weight: 400; line-height: 1.3; max-width: 60ch;
  margin-bottom: 30px; color: var(--ink);
}
.review__author {
  font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-mute);
}

.reviews__arrow {
  flex-shrink: 0;
  width: 56px; height: 56px; border-radius: 50%;
  border: 1px solid var(--ink); background: transparent;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background 0.3s, color 0.3s;
  color: var(--ink);
  font-family: var(--serif); font-size: 20px;
}
.reviews__arrow:hover { background: var(--ink); color: var(--cream); }

/* ——— OFFICE INFO ——— */
.office {
  padding: 140px 0;
}
.office__grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 100px;
  align-items: center;
}
.office__image { aspect-ratio: 5/6; border-radius: 4px; overflow: hidden; }
.office__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.office__title { font-size: var(--section-title); margin-bottom: 32px; }
.office__desc { font-size: 16px; color: var(--ink-soft); margin-bottom: 40px; max-width: 46ch; line-height: 1.7; }
.office__info { display: grid; grid-template-columns: 1fr 1fr; gap: 30px 40px; margin-bottom: 40px; }
.info-block__label {
  font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--ink-mute); margin-bottom: 10px;
}
.info-block__content { font-family: var(--serif); font-size: 17px; line-height: 1.5; color: var(--ink); }
.info-block__content--mono { font-family: var(--sans); font-size: 14px; line-height: 1.7; color: var(--ink-soft); }
/* Body hours render from platform data; keep the old <br>-separated rhythm */
.info-hours { list-style: none; margin: 0; padding: 0; }
.info-hours li { display: block; }
.info-hours li span + span { margin-left: 10px; }

@media (max-width: 900px) { .office__grid { grid-template-columns: 1fr; gap: 50px; } .office { padding: 90px 24px; } }

/* ——— CTA merged with footer ——— */
.cta-merge {
  background: var(--ink); /* same green kelp as footer */
  padding: 0 6vw;
  position: relative;
  /* Negative margin-bottom pulls footer's top padding up and the card overlaps slightly */
  margin-top: 100px;
}
.cta-merge__card {
  max-width: 1360px;
  margin: 0 auto;
  background: var(--cream);
  border-radius: 4px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  overflow: hidden;
  /* Translate up so card "sits on" the boundary between the prior section (cream page) and dark footer area */
  transform: translateY(-80px);
  margin-bottom: -80px; /* collapse the space from translate so layout flows correctly */
  box-shadow: 0 40px 80px -40px rgba(37, 49, 29, 0.35);
}
.cta-merge__photo {
  position: relative;
  min-height: 380px;
  overflow: hidden;
}
.cta-merge__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.cta-merge__photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(37, 49, 29, 0.28);
  pointer-events: none;
}
.cta-merge__content {
  padding: 80px 72px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--cream);
}
.cta-merge__title {
  font-family: var(--serif);
  font-size: var(--section-title);
  line-height: 1.04;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 32px;
}
.cta-merge__title em {
  font-style: italic;
  color: var(--sage);
}
.cta-merge__sub {
  font-size: 15px;
  line-height: 1.65;
  color: var(--ink-soft);
  max-width: 44ch;
  margin: 0 0 32px;
}
.cta-merge__actions { display: flex; gap: 12px; flex-wrap: wrap; }
@media (max-width: 900px) {
  .cta-merge { padding: 0 24px; margin-top: 60px; }
  .cta-merge__card {
    grid-template-columns: 1fr;
    transform: translateY(-48px);
    margin-bottom: -48px;
  }
  .cta-merge__photo { min-height: 260px; }
  .cta-merge__content { padding: 48px 32px; }
}

/* ——— INSURANCE V2 — editorial + steps + panels ——— */
.ins-v2 {
  padding: 140px 6vw 160px;
  background: var(--cream-2);
}
.ins-v2__inner {
  max-width: 1360px;
  margin: 0 auto;
}

/* Header */
.ins-v2__head {
  max-width: 820px;
  margin: 0 0 96px;
}
.ins-v2__eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 28px;
  font-weight: 500;
}
.ins-v2__eyebrow-mark {
  width: 28px;
  height: 1px;
  background: var(--sage);
}
.ins-v2__title {
  font-family: var(--serif);
  font-size: var(--section-title);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 0 0 32px;
}
.ins-v2__title em {
  font-style: italic;
  color: var(--sage);
}
.ins-v2__intro {
  font-size: 16.5px;
  line-height: 1.7;
  color: var(--ink-soft);
  max-width: 56ch;
  margin: 0;
}

/* Steps (3-col) */
.ins-v2__steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px;
  margin: 0 0 96px;
  position: relative;
}
.ins-v2__steps::before {
  content: '';
  position: absolute;
  top: 42px;
  left: 4%; right: 4%;
  height: 1px;
  background: linear-gradient(to right, transparent, rgba(37,49,29,0.18) 10%, rgba(37,49,29,0.18) 90%, transparent);
  z-index: 0;
}
.ins-v2__step {
  position: relative;
  padding-top: 0;
  z-index: 1;
}
.ins-v2__step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: var(--cream);
  border: 1px solid rgba(37, 49, 29, 0.14);
  font-family: var(--serif);
  font-style: italic;
  font-size: 24px;
  color: var(--sage);
  margin-bottom: 28px;
}
.ins-v2__step-title {
  font-family: var(--serif);
  font-size: 28px;
  line-height: 1.15;
  color: var(--ink);
  margin: 0 0 12px;
  letter-spacing: -0.01em;
}
.ins-v2__step-desc {
  font-size: 14.5px;
  line-height: 1.65;
  color: var(--ink-soft);
  max-width: 38ch;
  margin: 0;
}

/* Divider */
.ins-v2__rule {
  height: 1px;
  background: rgba(37, 49, 29, 0.12);
  margin: 0 0 72px;
}

/* Carrier logos inside the insurance panel.
   Same two-axis capping as .ins-tile__logo so wide wordmarks bind on width and
   stacked lockups bind on height, keeping them optically comparable. */
.ins-v2__logos {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 14px 28px; margin: 24px 0 4px;
  padding-top: 22px; border-top: 1px solid var(--line);
}
.ins-v2__logo {
  max-width: min(120px, 100%); max-height: 58px;
  width: auto; height: auto; object-fit: contain; display: block;
}
@media (max-width: 480px) {
  .ins-v2__logos { gap: 12px 20px; }
  .ins-v2__logo { max-width: min(96px, 100%); max-height: 48px; }
}

/* Panels (2-col asymmetric) */
.ins-v2__panels {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 24px;
  align-items: stretch;
}
.ins-v2__panel {
  background: var(--cream);
  border: 1px solid rgba(37, 49, 29, 0.08);
  border-radius: 4px;
  padding: 48px 48px;
  display: flex;
  flex-direction: column;
}
.ins-v2__panel--dark {
  background: var(--ink);
  border-color: transparent;
  color: var(--cream);
}

.ins-v2__panel-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding-bottom: 20px;
  margin-bottom: 28px;
  border-bottom: 1px solid rgba(37, 49, 29, 0.12);
}
.ins-v2__panel-label--light {
  border-bottom-color: rgba(237, 229, 214, 0.18);
}
.ins-v2__panel-kicker {
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--ink-mute);
}
.ins-v2__panel--dark .ins-v2__panel-kicker {
  color: rgba(237, 229, 214, 0.62);
}
.ins-v2__panel-count {
  font-family: var(--serif);
  font-style: italic;
  font-size: 22px;
  color: var(--sage);
}

/* Plans grid (2-column list) */
.ins-v2__plans {
  list-style: none;
  margin: 0 0 28px;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
}
.ins-v2__plan {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--ink);
  letter-spacing: 0.005em;
}
.ins-v2__plan-check {
  color: var(--sage);
  flex-shrink: 0;
}
.ins-v2__panel-note {
  margin-top: auto;
  padding-top: 24px;
  border-top: 1px solid rgba(37, 49, 29, 0.1);
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--ink-mute);
}
.ins-v2__panel-link {
  color: var(--sage);
  font-weight: 500;
  text-decoration: none;
  border-bottom: 1px solid rgba(126, 128, 101, 0.4);
  transition: color 0.3s ease, border-color 0.3s ease;
}
.ins-v2__panel-link:hover {
  color: var(--sage-deep);
  border-color: var(--sage-deep);
}

/* Finance chips */
.ins-v2__finance {
  list-style: none;
  margin: 0 0 32px;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.ins-v2__finance-chip {
  display: inline-flex;
  align-items: center;
  padding: 10px 16px;
  border-radius: 999px;
  border: 1px solid rgba(237, 229, 214, 0.28);
  font-family: var(--sans);
  font-size: 12.5px;
  letter-spacing: 0.04em;
  color: rgba(237, 229, 214, 0.92);
}

/* CTA inside dark panel */
.ins-v2__panel-cta {
  margin-top: auto;
  padding-top: 28px;
  border-top: 1px solid rgba(237, 229, 214, 0.18);
}
.ins-v2__panel-cta-title {
  font-family: var(--serif);
  font-size: 24px;
  line-height: 1.2;
  color: var(--cream);
  margin: 0 0 10px;
  letter-spacing: -0.005em;
}
.ins-v2__panel-cta-text {
  font-size: 14px;
  line-height: 1.6;
  color: rgba(237, 229, 214, 0.75);
  margin: 0 0 20px;
  max-width: 40ch;
}

@media (max-width: 960px) {
  .ins-v2 { padding: 90px 24px 100px; }
  .ins-v2__steps {
    grid-template-columns: 1fr;
    gap: 40px;
    margin-bottom: 64px;
  }
  .ins-v2__steps::before { display: none; }
  .ins-v2__panels { grid-template-columns: 1fr; }
  .ins-v2__panel { padding: 32px 28px; }
  .ins-v2__plans { grid-template-columns: 1fr; }
}

/* ——— FOOTER ——— */
.footer {
  background: var(--ink); /* Green Kelp — continues from CTA */
  color: var(--cream);
  padding: 40px 0 0; /* small top padding since CTA card sits above it */
  overflow: hidden;
  position: relative;
}
.footer__inner { position: relative; z-index: 2; }
.footer__top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: start;
  padding-bottom: 80px;
  margin-bottom: 0;
}
.footer__tagline h3 {
  font-size: var(--section-title);
  font-weight: 400;
  line-height: 1.08;
  margin: 0;
  letter-spacing: -0.01em;
  color: var(--cream);
}
.footer__tagline h3 em {
  font-style: italic;
  color: var(--cream);
  opacity: 0.95;
}
.footer__nav {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  justify-self: end;
  max-width: 520px;
  width: 100%;
}
.footer__nav ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 0;
  margin: 0;
}
.footer__nav a {
  font-family: var(--sans);
  font-size: 14px;
  color: var(--cream);
  opacity: 0.88;
  transition: opacity 0.3s ease, padding-left 0.3s ease;
}
.footer__nav a:hover { opacity: 1; padding-left: 3px; }
.footer__socials-item { margin-top: 6px; }
.footer__socials { display: flex; gap: 12px; }
.footer__socials a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid rgba(237, 229, 214, 0.28); color: var(--cream);
  opacity: 0.88; padding-left: 0;
  transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease, opacity 0.3s ease;
}
.footer__socials a:hover {
  opacity: 1; padding-left: 0;
  background: var(--sage); border-color: var(--sage); color: #fff;
}
.footer__bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 28px 0 40px;
  border-top: 1px solid rgba(237, 229, 214, 0.14);
  font-size: 12px;
  color: rgba(237, 229, 214, 0.6);
  letter-spacing: 0.02em;
  flex-wrap: wrap;
  gap: 20px;
}
.footer__bottom-links { display: flex; gap: 28px; }
.footer__bottom-links a {
  color: rgba(237, 229, 214, 0.6);
  transition: color 0.3s ease;
}
.footer__bottom-links a:hover { color: var(--cream); }

/* Huge wordmark anchoring the bottom edge */
.footer__wordmark {
  font-family: var(--serif);
  font-weight: 400;
  color: var(--cream);
  font-size: clamp(80px, 19vw, 320px);
  line-height: 0.82;
  letter-spacing: -0.02em;
  text-align: center;
  white-space: nowrap;
  padding: 0 20px;
  margin-top: 20px;
  margin-bottom: -0.06em; /* clip descenders against bottom edge */
  user-select: none;
}

@media (max-width: 900px) {
  .footer { padding-top: 70px; }
  .footer__top { grid-template-columns: 1fr; gap: 48px; padding-bottom: 56px; }
  .footer__nav { justify-self: start; max-width: none; grid-template-columns: repeat(3, 1fr); gap: 24px; }
  .footer__bottom { flex-direction: column; align-items: flex-start; gap: 16px; padding: 24px 0 30px; }
  .footer__wordmark { display: none; }
}
@media (max-width: 560px) {
  .footer__nav { grid-template-columns: 1fr 1fr; }
}

/* ——— REVEAL ANIMATION ——— */
.reveal {
  opacity: 0; transform: translateY(40px);
  transition: opacity 0.9s cubic-bezier(0.2, 0.7, 0.2, 1),
              transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
  transition-delay: var(--reveal-delay, 0s);
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* For line-by-line title reveals — no clipping (italic glyphs overflow line-height box) */
.reveal-lines { display: block; }
.reveal-line {
  display: block;
  padding: 0.05em 0; /* breathing room for italic ascenders/descenders */
}
.reveal-line > span {
  display: inline-block;
  transform: translateY(40px);
  opacity: 0;
  transition: transform 1s cubic-bezier(0.2, 0.7, 0.2, 1),
              opacity 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
  transition-delay: var(--line-delay, 0s);
  will-change: transform, opacity;
}
.reveal-lines.visible .reveal-line > span {
  transform: translateY(0);
  opacity: 1;
}

/* Word-by-word reveal with slow motion + center-out stagger */
.reveal-words {
  display: block;
  line-height: inherit;
}
.reveal-words__line {
  display: block;
  padding: 0.05em 0;
}
.reveal-words__word {
  display: inline-block;
  vertical-align: baseline;
  line-height: inherit;
}
.reveal-words__inner {
  display: inline-block;
  transform: translateY(60%);
  opacity: 0;
  transition:
    transform var(--rw-duration, 1.6s) cubic-bezier(0.19, 1, 0.22, 1),
    opacity calc(var(--rw-duration, 1.6s) * 0.85) cubic-bezier(0.19, 1, 0.22, 1);
  will-change: transform, opacity;
}
.reveal-words.visible .reveal-words__inner {
  transform: translateY(0);
  opacity: 1;
}

/* ——— Placeholder image ——— */
.placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, #C9CBBC 0%, #A0A28C 100%);
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.placeholder::before {
  content: ''; position: absolute; inset: 0;
  background-image:
    repeating-linear-gradient(45deg, transparent 0, transparent 14px, rgba(122, 139, 111, 0.08) 14px, rgba(122, 139, 111, 0.08) 15px);
}
.placeholder--photo::before { display: none; }
.placeholder--warm { background: linear-gradient(135deg, #D6C9B0 0%, #A69A82 60%, #5C4A3A 100%); }
.placeholder--sage { background: linear-gradient(135deg, #D6D0B8 0%, #7E8065 100%); }
.placeholder--dark { background: linear-gradient(135deg, #3A4A2C 0%, #25311D 100%); }
.placeholder--portrait { background: linear-gradient(160deg, #A69A8A 0%, #8A7A68 50%, #5C4F42 100%); }
.placeholder--smile { background: radial-gradient(circle at 50% 60%, #EDE5D6 0%, #7E8065 80%); }

body[data-img="cool"] .placeholder { filter: hue-rotate(30deg) saturate(0.7); }
body[data-img="bw"] .placeholder { filter: grayscale(1); }

.placeholder__label {
  position: relative;
  font-family: 'Courier New', monospace;
  font-size: 11px; letter-spacing: 0.1em;
  color: rgba(43, 42, 38, 0.55);
  padding: 6px 12px;
  background: rgba(237, 229, 214, 0.6);
  border-radius: 2px;
  text-transform: uppercase;
}

/* ——— TWEAKS PANEL ——— */
.tweaks {
  position: fixed; bottom: 24px; right: 24px;
  background: var(--cream);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 22px 22px 20px;
  width: 280px;
  z-index: 200;
  box-shadow: 0 16px 48px -20px rgba(0,0,0,0.2);
  font-family: var(--sans);
  max-height: calc(100vh - 48px);
  overflow-y: auto;
}
.tweaks h4 {
  font-family: var(--serif); font-size: 22px; font-weight: 500;
  margin-bottom: 4px;
}
.tweaks h4 em { color: var(--accent); }
.tweaks__sub { font-size: 12px; color: var(--ink-mute); margin-bottom: 18px; }
.tweak { margin-bottom: 16px; }
.tweak label {
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--ink-mute); display: block; margin-bottom: 8px;
}
.tweak__options { display: flex; gap: 6px; flex-wrap: wrap; }
.tweak__opt {
  padding: 6px 10px; font-size: 11px;
  border: 1px solid var(--line); background: transparent;
  border-radius: 999px; cursor: pointer;
  transition: all 0.2s;
  color: var(--ink-soft);
  font-family: inherit;
}
.tweak__opt:hover { border-color: var(--ink); color: var(--ink); }
.tweak__opt.active { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.tweak__swatches { display: flex; gap: 8px; }
.tweak__swatch {
  width: 28px; height: 28px; border-radius: 50%;
  border: 2px solid transparent; cursor: pointer;
  transition: all 0.2s;
}
.tweak__swatch.active { border-color: var(--ink); box-shadow: 0 0 0 2px var(--cream) inset; }
.tweak__toggle {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 12px;
}
.switch { position: relative; width: 36px; height: 20px; background: var(--line); border-radius: 999px; cursor: pointer; transition: background 0.2s; }
.switch::after {
  content: ''; position: absolute; top: 2px; left: 2px;
  width: 16px; height: 16px; background: var(--cream); border-radius: 50%;
  transition: transform 0.2s;
}
.switch.on { background: var(--accent); }
.switch.on::after { transform: translateX(16px); }

/* ——— DOCTOR QUOTES ——— */
.quotes {
  background: var(--ink) url(assets/photos/hallway.webp) center/cover no-repeat;
  color: var(--cream);
  padding: 150px 0 130px;
  position: relative;
  overflow: hidden;
}
.quotes::before { content: ''; position: absolute; inset: 0; background: rgba(24, 33, 18, 0.9); pointer-events: none; }
.quotes__inner { position: relative; z-index: 1; }
.quotes__inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 6vw;
  text-align: center;
  position: relative;
}
.quotes__mark {
  font-family: var(--serif);
  font-style: italic;
  font-size: 120px;
  line-height: 0.6;
  color: rgba(237, 229, 214, 0.16);
  margin-bottom: 8px;
  user-select: none;
}
.quotes__stage {
  position: relative;
  min-height: 320px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.quotes__item {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.6s ease, transform 0.6s ease;
  pointer-events: none;
}
.quotes__item.is-active {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.quotes__quote {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(28px, 3.6vw, 52px);
  line-height: 1.24;
  letter-spacing: -0.01em;
  max-width: 30ch;
  margin: 0 auto 44px;
  color: var(--cream);
  text-wrap: balance;
}
.quotes__name {
  font-family: 'Sacramento', cursive;
  font-size: clamp(34px, 3.4vw, 48px);
  line-height: 1;
  color: rgba(237, 229, 214, 0.9);
}
.quotes__role {
  margin-top: 14px;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(237, 229, 214, 0.5);
}
.quotes__nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  margin-top: 64px;
}
.quotes__arrow {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  border: 1px solid rgba(237, 229, 214, 0.35);
  background: transparent;
  color: rgba(237, 229, 214, 0.85);
  font-size: 18px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
.quotes__arrow:hover {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}
.quotes__dots {
  display: flex;
  gap: 10px;
  align-items: center;
  margin: 0 10px;
}
.quotes__dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: rgba(237, 229, 214, 0.28);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.3s ease, transform 0.3s ease;
}
.quotes__dot.is-active {
  background: var(--cream);
  transform: scale(1.25);
}
@media (max-width: 720px) {
  .quotes { padding: 100px 0 90px; }
  .quotes__stage { min-height: 360px; }
  .quotes__quote { font-size: clamp(26px, 7vw, 34px); max-width: 24ch; }
}

/* ——— VIDEO PARALLAX BAND ——— */
.video-band {
  position: relative;
  height: 100vh;
  min-height: 640px;
  overflow: hidden;
  background: var(--ink);
}
.video-band__media {
  position: absolute;
  left: 0;
  top: -12%;
  width: 100%;
  height: 124%;
  will-change: transform;
  background-color: var(--ink);
  background-size: cover;
  background-position: center;
}
.video-band__media iframe {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100vw;
  height: 56.25vw;         /* 16:9 based on width */
  min-height: 100%;
  min-width: 177.78vh;     /* 16:9 based on height */
  border: 0;
  pointer-events: none;
}
.video-band__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(37,49,29,0.55) 0%, rgba(37,49,29,0.28) 40%, rgba(37,49,29,0.60) 100%);
  z-index: 1;
}
.video-band__content {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 6vw;
}
.video-band__eyebrow {
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(237, 229, 214, 0.78);
  margin-bottom: 22px;
}
.video-band__title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(36px, 5vw, 68px);
  line-height: 1.05;
  letter-spacing: -0.015em;
  color: var(--cream);
  margin: 0 0 40px;
  max-width: 18ch;
  text-wrap: balance;
}
.video-band__title em { font-style: italic; color: var(--cream); }
.video-band__play {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--cream);
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.video-band__play-icon {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  border: 1px solid rgba(237, 229, 214, 0.6);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
}
.video-band__play-icon svg { margin-left: 4px; }
.video-band__play:hover .video-band__play-icon {
  background: var(--cream);
  border-color: var(--cream);
  transform: scale(1.05);
}
.video-band__play:hover .video-band__play-icon svg path { fill: var(--ink); }

/* Lightbox */
.video-modal {
  position: fixed;
  inset: 0;
  z-index: 500;
  background: rgba(20, 26, 16, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5vw;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.35s ease, visibility 0.35s ease;
}
.video-modal.is-open { opacity: 1; visibility: visible; }
.video-modal__frame {
  position: relative;
  width: min(1100px, 100%);
  aspect-ratio: 16 / 9;
  background: #000;
  box-shadow: 0 40px 120px -30px rgba(0,0,0,0.7);
}
.video-modal__frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-modal__close {
  position: absolute;
  top: -52px;
  right: 0;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid rgba(237, 229, 214, 0.5);
  background: transparent;
  color: var(--cream);
  font-size: 20px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.3s ease, color 0.3s ease;
}
.video-modal__close:hover { background: var(--cream); color: var(--ink); }
@media (max-width: 720px) {
  .video-band { height: 70vh; min-height: 460px; }
}

/* ——— SERVICES MEGA MENU ——— */
.nav__item--services { position: static; }
.nav__item--drop { position: relative; }
.nav__services-trigger { display: inline-flex; align-items: center; gap: 7px; }
.nav__caret { transition: transform 0.3s ease; }
.nav__services-trigger[aria-expanded="true"] .nav__caret,
.nav__item--services:hover .nav__caret,
.nav__item--drop:hover .nav__caret { transform: rotate(180deg); }
.nav__mega {
  position: absolute;
  top: 100%;
  left: 40px;
  right: 40px;
  padding-top: 18px;      /* hover bridge */
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.28s ease, transform 0.28s ease, visibility 0.28s;
  pointer-events: none;
}
.nav__mega.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}
.nav__mega-card {
  background: var(--cream);
  border: 1px solid var(--line);
  border-radius: 10px;
  box-shadow: 0 30px 70px -30px rgba(37, 49, 29, 0.35);
  padding: 40px 44px;
  display: grid;
  grid-template-columns: repeat(3, 1fr) 300px;
  grid-auto-rows: min-content;
  gap: 30px 44px;
  max-width: 1180px;
  margin: 0 auto;
}
.nav__mega-col--cta { grid-column: 4; grid-row: 1 / span 2; }

/* Compact dropdowns (About / For Patients) — anchored under their trigger */
.nav__mega--compact { left: 0; right: auto; padding-top: 57px; }
.nav__mega--compact .nav__mega-card { margin: 0; }
.nav__mega--about .nav__mega-card {
  grid-template-columns: repeat(2, minmax(170px, 1fr));
  max-width: 500px;
}
.nav__mega--patients .nav__mega-card {
  grid-template-columns: repeat(2, minmax(170px, 1fr));
  max-width: 500px;
}
.nav__mega-title {
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sage);
  margin: 0 0 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.nav__mega-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.nav__mega-col ul a {
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink-soft);
  padding: 0;
  display: block;
  width: fit-content;
  max-width: 100%;
  transition: color 0.25s ease, padding-left 0.25s ease;
}
.nav__mega-col ul a::after { display: none; }
.nav__mega-col ul a:hover { color: var(--ink); padding-left: 6px; }
.nav__mega-col--cta { align-self: stretch; }
.nav__mega-cta {
  background: var(--ink);
  border-radius: 8px;
  padding: 26px 26px 28px;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.nav__mega-cta-title {
  font-size: 24px;
  line-height: 1.1;
  color: var(--cream);
  margin: 0 0 10px;
}
.nav__mega-cta-sub {
  font-family: var(--sans);
  font-size: 13px;
  line-height: 1.55;
  color: rgba(237, 229, 214, 0.7);
  margin: 0 0 20px;
  text-transform: none;
  letter-spacing: 0;
}
.nav__mega-cta .btn--primary { margin-top: auto; width: 100%; color: #fff; }

/* Mobile services accordion */
.mobile-menu__svc-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: none;
  border: none;
  cursor: pointer;
  font-family: var(--serif);
  font-size: 40px;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--ink);
  padding: 8px 0;
  text-align: left;
}
.mobile-menu__svc-toggle svg { transition: transform 0.3s ease; color: var(--sage); flex-shrink: 0; }
.mobile-menu__svc-toggle.is-open svg { transform: rotate(180deg); }
.mobile-menu__svc-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}
.mobile-menu__svc-panel.is-open { max-height: 2400px; }
.mobile-menu__svc-group { padding: 12px 0 4px; }
.mobile-menu__svc-group-title {
  display: block;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--sage);
  margin-bottom: 8px;
}
.mobile-menu__svc-group ul { list-style: none; margin: 0 0 6px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.mobile-menu__svc-group ul a {
  font-family: var(--serif);
  font-size: 20px;
  color: var(--ink-soft);
  display: flex;
  align-items: center;
  min-height: 44px;
}
.mobile-menu__svc-group ul a:hover { color: var(--accent); }
@media (max-width: 1100px) {
  .nav__mega-card { grid-template-columns: repeat(2, 1fr); }
  .nav__mega-col--cta { grid-column: 1 / -1; }
  .nav__mega-cta { flex-direction: row; align-items: center; gap: 24px; }
  .nav__mega-cta-title { margin-bottom: 0; }
  .nav__mega-cta-sub { margin-bottom: 0; flex: 1; }
  .nav__mega-cta .btn--primary { margin-top: 0; }
}

/* ═══════════════ SERVICE PAGE ═══════════════ */

/* Hero */
.svc-hero {
  position: relative;
  min-height: 100vh;
  height: auto;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--ink);
}
.svc-hero__bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  background-attachment: fixed;
}
@media (max-width: 900px), (hover: none) { .svc-hero__bg { background-attachment: scroll; } }
.svc-hero__bg--deep::after { background: linear-gradient(180deg, rgba(26,36,20,0.78) 0%, rgba(26,36,20,0.58) 45%, rgba(26,36,20,0.88) 100%) !important; }
.svc-hero__bg::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(37,49,29,0.62) 0%, rgba(37,49,29,0.32) 45%, rgba(37,49,29,0.78) 100%);
}
.svc-hero__inner {
  position: relative; z-index: 1;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 96px 40px 90px;
  color: var(--cream);
}
.svc-hero__eyebrow {
  font-family: var(--sans);
  font-size: 12px; letter-spacing: 0.26em; text-transform: uppercase;
  color: rgba(237, 229, 214, 0.82);
  margin-bottom: 24px;
}
.svc-hero__title {
  font-family: var(--serif);
  font-weight: 300;
  font-size: clamp(34px, 8.5vw, 112px);
  line-height: 0.94;
  letter-spacing: -0.02em;
  margin: 0 0 28px;
  color: var(--cream);
  white-space: nowrap;
}
.svc-hero__title em { font-style: italic; color: var(--cream); }
.svc-hero__sub {
  font-size: 18px; line-height: 1.6;
  color: rgba(237, 229, 214, 0.9);
  max-width: 46ch; margin: 0 0 40px;
}
.svc-hero__ctas { display: flex; gap: 14px; flex-wrap: wrap; }
.svc-hero__ctas .btn--primary { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.svc-hero__ctas .btn--primary:hover { background: var(--cream-2); border-color: var(--cream-2); }

/* Section shell */
.svc-section { padding: 130px 0; background: var(--cream); }
.svc-container { max-width: 1180px; margin: 0 auto; padding: 0 40px; }
.svc-eyebrow {
  display: flex; align-items: center; gap: 12px;
  font-family: var(--sans);
  font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase;
  color: var(--sage); margin-bottom: 26px; font-weight: 500;
}
.svc-eyebrow::before { content: ''; width: 28px; height: 1px; background: var(--sage); display: inline-block; }
.svc-title {
  font-family: var(--serif);
  font-size: var(--section-title);
  line-height: 1.04; font-weight: 400; letter-spacing: -0.01em;
  color: var(--ink); margin: 0 0 32px; max-width: 18ch;
}
.svc-title em { font-style: italic; color: var(--sage); }
.svc-intro {
  font-size: 18px; line-height: 1.7; color: var(--ink-soft);
  max-width: 60ch; margin: 0;
}

/* Explained — image + text */
.svc-explain__grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 72px;
  align-items: start; margin-top: 8px;
}
.svc-explain__intro { font-size: 18px; line-height: 1.7; color: var(--ink); margin: 0 0 20px; }
.svc-explain__media { position: relative; }
.svc-explain__media img {
  width: 100%; height: auto; aspect-ratio: 4/5; object-fit: cover; display: block; border-radius: 4px;
  filter: contrast(1.02) saturate(0.96);
}
.svc-badge {
  position: absolute; left: -24px; bottom: 40px;
  background: var(--ink); color: var(--cream);
  padding: 22px 28px; max-width: 240px; border-radius: 4px;
  box-shadow: 0 30px 60px -30px rgba(37,49,29,0.5);
}
.svc-badge__big { font-family: var(--serif); font-size: 30px; line-height: 1; margin-bottom: 8px; }
.svc-badge__sub { font-family: var(--sans); font-size: 13px; line-height: 1.5; color: rgba(237,229,214,0.72); }
.svc-explain__body p { font-size: 16px; line-height: 1.75; color: var(--ink-soft); margin: 0 0 20px; }
.svc-explain__body .btn { margin-top: 16px; }

/* Approach — dark band */
.svc-approach { background: var(--ink); color: var(--cream); padding: 120px 0; }
.svc-approach__grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 64px; align-items: center; }
.svc-approach .svc-title { color: var(--cream); max-width: none; white-space: nowrap; font-size: clamp(32px, 3.6vw, 52px); }
.svc-approach .svc-title em { color: var(--cream); }
.svc-approach .svc-eyebrow { color: rgba(237,229,214,0.8); }
.svc-approach .svc-eyebrow::before { background: rgba(237,229,214,0.8); }
.svc-approach__body p { font-size: 16px; line-height: 1.75; color: rgba(222,222,218,0.82); margin: 0 0 20px; }
.svc-approach__points { list-style: none; margin: 8px 0 28px; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.svc-approach__points li { display: flex; gap: 14px; align-items: flex-start; }
.svc-approach__points strong { color: var(--cream); font-weight: 500; }
.svc-approach__points span { color: rgba(222,222,218,0.78); font-size: 15px; line-height: 1.6; }
.svc-approach__points .num { font-family: var(--serif); font-style: italic; color: var(--sage-soft); font-size: 18px; flex-shrink: 0; }
.svc-approach__media img { width: 100%; height: auto; aspect-ratio: 5/6; object-fit: cover; display: block; border-radius: 4px; }
.svc-approach .btn--primary { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.svc-approach .btn--primary:hover { background: var(--cream-2); border-color: var(--cream-2); }

/* Service template: sticky media columns + reading measure (content-length proof) */
.svc-media--sticky { position: sticky; top: 104px; align-self: start; }
.svc-approach__grid--sticky { align-items: start; }
.svc-measure { max-width: 68ch; }
.svc-approach__grid--sticky .svc-approach__points { max-width: 68ch; }
@media (max-width: 900px) { .svc-media--sticky { position: static; top: auto; } }

/* How it works — image band with steps */
.svc-steps {
  position: relative; padding: 130px 0; overflow: hidden;
  background: var(--ink);
}
.svc-steps__bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.svc-steps__bg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(37,49,29,0.82), rgba(37,49,29,0.9)); }
.svc-steps__inner { position: relative; z-index: 1; max-width: 1180px; margin: 0 auto; padding: 0 40px; color: var(--cream); }
.svc-steps__title { font-family: var(--serif); font-size: var(--section-title); font-weight: 400; line-height: 1.02; letter-spacing: -0.01em; margin: 0 0 60px; max-width: 14ch; }
.svc-steps__title em { font-style: italic; }
.svc-steps__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.svc-step { padding: 30px 28px 34px; border-left: 1px solid rgba(237,229,214,0.2); }
.svc-step:first-child { border-left: none; padding-left: 0; }
.svc-step__num { font-family: var(--serif); font-style: italic; font-size: 20px; color: var(--sage-soft); margin-bottom: 18px; }
.svc-step__title { font-family: var(--sans); font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--cream); margin-bottom: 14px; font-weight: 500; }
.svc-step__desc { font-size: 14.5px; line-height: 1.6; color: rgba(222,222,218,0.75); }

/* FAQ */
.svc-faq { background: var(--cream); padding: 130px 0; }
.svc-faq__grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 72px; align-items: start; }
.svc-faq__intro { font-size: 16px; line-height: 1.7; color: var(--ink-soft); margin: 0 0 32px; max-width: 40ch; }
.svc-faq__ctas { display: flex; gap: 12px; flex-wrap: wrap; }
.svc-faq__list { border-top: 1px solid var(--line); }
.svc-faq__item { border-bottom: 1px solid var(--line); }
.svc-faq__q {
  width: 100%; text-align: left; background: none; border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 26px 4px; font-family: var(--serif); font-size: 22px; color: var(--ink);
  transition: color 0.25s ease;
}
.svc-faq__q:hover { color: var(--sage); }
.svc-faq__icon { position: relative; width: 16px; height: 16px; flex-shrink: 0; }
.svc-faq__icon::before, .svc-faq__icon::after {
  content: ''; position: absolute; background: var(--sage); transition: transform 0.3s ease;
}
.svc-faq__icon::before { top: 50%; left: 0; right: 0; height: 1.5px; transform: translateY(-50%); }
.svc-faq__icon::after { left: 50%; top: 0; bottom: 0; width: 1.5px; transform: translateX(-50%); }
.svc-faq__item.is-open .svc-faq__icon::after { transform: translateX(-50%) scaleY(0); }
.svc-faq__a { max-height: 0; overflow: hidden; transition: max-height 0.4s ease; }
.svc-faq__item.is-open .svc-faq__a { max-height: 320px; }
.svc-faq__a p { font-size: 15.5px; line-height: 1.7; color: var(--ink-soft); margin: 0; padding: 0 4px 28px; max-width: 60ch; }

/* Final CTA band */
.svc-final { position: relative; overflow: hidden; background: var(--ink); }
.svc-final__bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.svc-final__bg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(37,49,29,0.72), rgba(37,49,29,0.85)); }
.svc-final__inner { position: relative; z-index: 1; text-align: center; padding: 130px 40px; color: var(--cream); max-width: 900px; margin: 0 auto; }
.svc-final__title { font-family: var(--serif); font-weight: 300; font-size: clamp(40px, 5.5vw, 78px); line-height: 1.02; letter-spacing: -0.015em; margin: 0 0 24px; }
.svc-final__title em { font-style: italic; color: var(--cream); }
.svc-final__sub { font-size: 17px; line-height: 1.65; color: rgba(237,229,214,0.85); max-width: 48ch; margin: 0 auto 40px; }
.svc-final__ctas { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.svc-final__ctas .btn--primary { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.svc-final__ctas .btn--primary:hover { background: var(--cream-2); border-color: var(--cream-2); }

@media (max-width: 900px) {
  .svc-section, .svc-approach, .svc-steps, .svc-faq { padding: 80px 0; }
  .svc-hero__inner { padding: 88px 24px 60px; }
  .svc-container, .svc-steps__inner, .svc-final__inner { padding-left: 24px; padding-right: 24px; }
  .svc-explain__grid, .svc-approach__grid, .svc-faq__grid { grid-template-columns: 1fr; gap: 44px; }
  .svc-badge { left: 16px; bottom: 16px; }
  .svc-steps__grid { grid-template-columns: 1fr 1fr; }
  .svc-step { border-left: none; padding-left: 0; padding-right: 0; border-top: 1px solid rgba(237,229,214,0.2); }
  .svc-steps__grid .svc-step:first-child { border-top: none; }
}
@media (max-width: 560px) {
  .svc-steps__grid { grid-template-columns: 1fr; }
}

/* Why Choose Us — quote band */
.wcu-quote { max-width: 900px; text-align: center; margin: 0 auto; }
.wcu-quote__mark { font-size: 120px; line-height: 0.5; color: var(--sage-soft); margin: 0 0 8px; height: 60px; }
.wcu-quote__text {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(28px, 3.6vw, 52px); line-height: 1.24;
  letter-spacing: -0.01em; color: var(--cream); margin: 0 0 30px;
  border: none; padding: 0;
}
.wcu-quote__cite {
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.24em;
  text-transform: uppercase; color: rgba(237, 229, 214, 0.75);
}

/* Why Choose Us — stats */
.wcu-stats-section { background: var(--cream-2); }
.wcu-stats {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 0; margin-top: 48px;
}
.wcu-stat { padding: 20px 40px; border-left: 1px solid var(--line); }
.wcu-stat:first-child { border-left: none; padding-left: 0; }
.wcu-stat__big {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(38px, 4.4vw, 62px); line-height: 1;
  color: var(--ink); margin-bottom: 14px; letter-spacing: -0.01em;
}
.wcu-stat__sub { font-size: 15px; line-height: 1.55; color: var(--ink-soft); max-width: 24ch; }
@media (max-width: 760px) {
  .wcu-stats { grid-template-columns: 1fr; gap: 28px; }
  .wcu-stat { border-left: none; padding: 0 0 24px; border-bottom: 1px solid var(--line); }
  .wcu-stat:last-child { border-bottom: none; }
}

/* Advanced Technology — tech grid on dark band */
.at-tech__head { margin-bottom: 56px; max-width: 720px; }
.at-tech__grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 1px; background: rgba(237, 229, 214, 0.16);
  border: 1px solid rgba(237, 229, 214, 0.16);
}
.at-tech__card {
  background: var(--ink);
  padding: 38px 34px 42px;
}
.at-tech__num { font-family: var(--serif); font-style: italic; font-size: 22px; color: var(--sage-soft); margin-bottom: 20px; }
.at-tech__title {
  font-family: var(--sans); font-size: 13px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--cream); margin: 0 0 14px; font-weight: 500;
}
.at-tech__desc { font-size: 15px; line-height: 1.65; color: rgba(222, 222, 218, 0.78); margin: 0; }
@media (max-width: 900px) {
  .at-tech__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .at-tech__grid { grid-template-columns: 1fr; }
}

/* Affordability — centered statement */
.aff-statement { background: var(--cream); }
.aff-statement__inner { max-width: 860px; text-align: center; }
.aff-statement__eyebrow { justify-content: center; }
.aff-statement__eyebrow::before { display: none; }
.aff-statement__title {
  font-family: var(--serif); font-weight: 400;
  font-size: var(--section-title); line-height: 1.04; letter-spacing: -0.01em;
  color: var(--ink); margin: 0 auto 32px; max-width: 16ch;
}
.aff-statement__title em { font-style: italic; color: var(--sage); }
.aff-statement__body {
  font-size: 18px; line-height: 1.7; color: var(--ink-soft);
  max-width: 60ch; margin: 0 auto;
}

/* Affordability — option cards */
.aff-options { background: var(--cream-2); padding: 130px 0; }
.aff-options__head { margin-bottom: 56px; max-width: 640px; }
.aff-options__title { white-space: nowrap; max-width: none; }
.aff-options__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.aff-card {
  background: var(--cream);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 34px 32px 38px;
  display: flex; flex-direction: column;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.aff-card:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -40px rgba(37, 49, 29, 0.45); }
.aff-card__top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 22px; }
.aff-card__num { font-family: var(--serif); font-style: italic; font-size: 30px; color: var(--sage); }
.aff-card__tag {
  font-family: var(--sans); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-mute);
  border: 1px solid var(--line); border-radius: 40px; padding: 5px 12px;
}
.aff-card__title { font-size: 26px; font-weight: 500; color: var(--ink); margin: 0 0 14px; }
.aff-card__desc { font-size: 15px; line-height: 1.65; color: var(--ink-soft); margin: 0; }

/* Affordability — new patient callout */
.aff-callout { background: var(--cream); padding: 130px 0; }
.aff-callout__inner {
  background: var(--sage-whisper);
  border-radius: 8px;
  padding: 56px 60px;
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 28px;
}
.aff-callout__title { font-size: clamp(28px, 3vw, 40px); font-weight: 400; color: var(--ink); margin: 6px 0 14px; }
.aff-callout__text p { font-size: 16px; line-height: 1.65; color: var(--ink-soft); margin: 0 auto; max-width: 46ch; }
.aff-callout__text .svc-eyebrow { justify-content: center; }
.aff-callout__text .svc-eyebrow::before { display: none; }
.aff-callout__cta { display: flex; gap: 12px; flex-shrink: 0; flex-wrap: wrap; justify-content: center; }
@media (max-width: 860px) {
  .aff-options { padding: 80px 0; }
  .aff-options__grid { grid-template-columns: 1fr; }
  .aff-callout { padding-bottom: 80px; padding-top: 80px; }
  .aff-callout__inner { padding: 40px 28px; }
}

/* Smiles From The Heart — service chips */
.sfth-chips { display: flex; flex-wrap: wrap; gap: 12px; margin: 4px 0 30px; }
.sfth-chip {
  font-family: var(--sans); font-size: 13px; letter-spacing: 0.08em;
  color: var(--cream);
  border: 1px solid rgba(237, 229, 214, 0.32);
  border-radius: 40px; padding: 9px 20px;
}

/* Patient Center — resource cards */
.pc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.pc-grid--3 { grid-template-columns: repeat(3, 1fr); }
.pc-card {
  background: var(--cream); border: 1px solid var(--line); border-radius: 8px;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.pc-card:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -40px rgba(37, 49, 29, 0.45); }
.pc-card__link { display: flex; flex-direction: column; height: 100%; padding: 32px 28px 30px; color: inherit; }
.pc-card__num { font-family: var(--serif); font-style: italic; font-size: 28px; color: var(--sage); margin-bottom: 20px; }
.pc-card__title { font-family: var(--serif); font-size: 24px; font-weight: 500; color: var(--ink); line-height: 1.1; margin: 0 0 14px; }
.pc-card__desc { font-size: 14.5px; line-height: 1.6; color: var(--ink-soft); margin: 0 0 22px; flex: 1; }
.pc-card__cta {
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--sage); font-weight: 500; display: inline-flex; align-items: center; gap: 7px;
}
.pc-card__cta::after { content: '→'; transition: transform 0.3s ease; }
.pc-card__link:hover .pc-card__cta::after { transform: translateX(4px); }
@media (max-width: 900px) {
  .pc-grid { grid-template-columns: 1fr 1fr; }
}
/* Patient Center — welcome split (distinct bg from FAQ) */
.pc-welcome { background: var(--cream-2); }
.pc-welcome .svc-explain__grid { margin-top: 0; }

@media (max-width: 520px) {
  .pc-grid { grid-template-columns: 1fr; }
}

/* Smile Gallery page — captioned grid */
.sg-section { background: var(--cream); }
.sg-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 8px; }
.sg-item__caption { margin-top: 18px; }
.sg-item__tag {
  font-family: var(--sans); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--sage); font-weight: 500;
}
.sg-item__title { font-family: var(--serif); font-size: 22px; font-weight: 400; color: var(--ink); margin: 6px 0 0; line-height: 1.1; }
.sg-note { margin-top: 44px; font-size: 14px; font-style: italic; color: var(--ink-mute); text-align: center; }
@media (max-width: 900px) {
  .sg-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .sg-grid { grid-template-columns: 1fr; }
}

/* Patient Testimonials */
.rev-stars { display: inline-flex; gap: 3px; color: var(--sage); }
.rev-stars--lg { color: #E0A83C; }
.rev-rating { background: var(--cream-2); padding: 64px 0; }
.rev-rating__inner { display: flex; align-items: center; justify-content: space-between; gap: 36px; flex-wrap: wrap; }
.rev-rating__score { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.rev-rating__num { font-family: var(--serif); font-size: 64px; line-height: 1; color: var(--ink); }
.rev-rating__label { font-size: 15px; color: var(--ink-soft); max-width: 22ch; }
.rev-google-btn { display: inline-flex; align-items: center; gap: 10px; color: #fff; }
.rev-google-icon { background: #fff; border-radius: 3px; padding: 2px; box-sizing: content-box; }

.rev-section { background: var(--cream); }
.rev-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 8px; }
.rev-card {
  background: var(--cream); border: 1px solid var(--line); border-radius: 8px;
  padding: 32px 30px 30px; display: flex; flex-direction: column;
}
.rev-card__quote {
  font-family: var(--serif); font-size: 20px; line-height: 1.45; font-style: italic;
  color: var(--ink); margin: 18px 0 0; flex: 1;
}
.rev-card__who {
  margin-top: 22px; font-family: var(--sans); font-size: 12px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--sage); font-weight: 500;
}
@media (max-width: 900px) {
  .rev-rating__inner { flex-direction: column; align-items: flex-start; }
  .rev-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .rev-grid { grid-template-columns: 1fr; }
}

/* Patient Testimonials — why patients stay */
.rev-why { background: var(--cream); }
.rev-why__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 8px; }
.rev-why__col { border-top: 2px solid var(--sage); padding-top: 24px; }
.rev-why__title { font-family: var(--serif); font-size: 26px; font-weight: 400; color: var(--ink); margin: 0 0 14px; line-height: 1.1; }
.rev-why__desc { font-size: 15.5px; line-height: 1.65; color: var(--ink-soft); margin: 0; }
@media (max-width: 800px) {
  .rev-why__grid { grid-template-columns: 1fr; gap: 28px; }
}

/* Contact page */
.ct-head { background: var(--ink); color: var(--cream); padding: 150px 0 56px; }
.ct-head__inner { max-width: 1180px; }
.ct-head__title { font-family: var(--serif); font-weight: 300; font-size: clamp(34px, 4.4vw, 58px); line-height: 1.05; letter-spacing: -0.015em; margin: 0; color: var(--cream); }
.ct-head__title em { font-style: italic; }
.ct-head__sub { font-size: 16px; line-height: 1.7; color: rgba(237, 229, 214, 0.76); max-width: 62ch; margin: 18px 0 0; }
.ct-section { padding-top: 74px; }
.ct-form-req { font-family: var(--sans); font-size: 13px; color: var(--ink-mute); margin: 0 0 22px; }
.ct-field__group-label, .ct-field label { font-family: var(--sans); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); }
.ct-field__group-label b, .ct-field label b { color: var(--accent); font-weight: 500; }
.ct-row--3 { grid-template-columns: repeat(3, 1fr); }
.ct-sub { display: flex; flex-direction: column; gap: 6px; }
.ct-sub input { font-family: var(--sans); font-size: 15px; color: var(--ink); background: var(--cream); border: 1px solid var(--line); border-radius: 6px; padding: 13px 14px; transition: border-color 0.25s ease; }
.ct-sub input:focus { outline: none; border-color: var(--sage); }
.ct-sub label { font-family: var(--sans); font-size: 12px; letter-spacing: 0; text-transform: none; color: var(--ink-mute); }
.form-disclaimer { font-size: 13.5px; line-height: 1.6; font-style: italic; color: var(--ink-soft); margin: 4px 0 8px; }
@media (max-width: 720px) { .ct-head { padding: 120px 0 44px; } }
.ct-section { background: var(--cream); }
.ct-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 72px; align-items: start; }
.ct-block { padding: 22px 0; border-bottom: 1px solid var(--line); }
.ct-block:first-of-type { border-top: 1px solid var(--line); }
.ct-block__label, .ct-hours .ct-block__label {
  font-family: var(--sans); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--sage); font-weight: 500; margin-bottom: 10px;
}
.ct-block__body { font-size: 17px; line-height: 1.5; color: var(--ink); }
.ct-block__link { display: inline-block; margin-top: 10px; font-size: 14px; color: var(--sage); }
.ct-hours { margin-top: 30px; }
.ct-hours__list { list-style: none; margin: 4px 0 0; padding: 0; }
.ct-hours__list li {
  display: flex; justify-content: space-between; gap: 20px;
  padding: 10px 0; border-bottom: 1px solid var(--line);
  font-size: 15px; color: var(--ink-soft);
}
.ct-hours__list li span:first-child { color: var(--ink); }
/* Closed-day times are muted. The platform clones the FIRST hours row per group
   and drops the others, so .is-closed cannot survive deploy — :last-child carries
   the treatment onto the collapsed "Sat – Sun · Closed" row. Both are kept: the
   class styles Sat AND Sun in the design, :last-child styles the row after deploy. */
.ct-hours__list li.is-closed span:last-child,
.ct-hours__list li:last-child span:last-child { color: var(--ink-mute); }

.ct-form-wrap { background: var(--cream-2); border: 1px solid var(--line); border-radius: 10px; padding: 40px 40px 44px; }
.ct-form-title { font-family: var(--serif); font-size: 30px; font-weight: 400; color: var(--ink); margin: 0 0 10px; }
.ct-form-note { font-size: 14.5px; line-height: 1.6; color: var(--ink-soft); margin: 0 0 28px; }
.ct-form { display: flex; flex-direction: column; gap: 18px; }
.ct-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.ct-field { display: flex; flex-direction: column; gap: 7px; }
.ct-field label { font-family: var(--sans); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); }
.ct-field input, .ct-field textarea {
  font-family: var(--sans); font-size: 15px; color: var(--ink);
  background: var(--cream); border: 1px solid var(--line); border-radius: 6px;
  padding: 12px 14px; width: 100%; box-sizing: border-box; resize: vertical;
  transition: border-color 0.25s ease;
}
.ct-field input:focus, .ct-field textarea:focus { outline: none; border-color: var(--sage); }
.ct-field select {
  font-family: var(--sans); font-size: 15px; color: var(--ink);
  background: var(--cream); border: 1px solid var(--line); border-radius: 6px;
  padding: 12px 40px 12px 14px; width: 100%; box-sizing: border-box;
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%237E8065' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center;
}
.ct-field select:focus { outline: none; border-color: var(--sage); }
.ct-field select:invalid { color: var(--ink-mute); }
.ct-consent { display: flex; align-items: flex-start; gap: 12px; margin-top: 4px; }
.ct-consent input { width: 18px; height: 18px; margin-top: 2px; flex: 0 0 auto; accent-color: var(--sage); }
.ct-consent label { font-family: var(--sans); font-size: 14.5px; line-height: 1.55; color: var(--ink-soft); }
.ct-consent a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
/* Icons sit inline with the 11px uppercase label */
.ct-block__label { display: flex; align-items: center; gap: 9px; }
.ct-block__label svg { width: 14px; height: 14px; flex: 0 0 auto; }
.ct-field input::placeholder, .ct-field textarea::placeholder { color: var(--ink-mute); }
.ct-submit { color: #fff; align-self: flex-start; margin-top: 4px; cursor: pointer; }
.ct-sent { font-size: 14px; color: var(--sage-deep); margin: 4px 0 0; }

.ct-map { line-height: 0; }
.ct-map iframe { width: 100%; height: 460px; border: 0; display: block; filter: grayscale(0.2) contrast(1.02); }

@media (max-width: 860px) {
  .ct-grid { grid-template-columns: 1fr; gap: 40px; }
  .ct-grid > .ct-form-wrap { order: -1; }
  .ct-form-wrap { padding: 32px 24px 36px; }
  .ct-map iframe { height: 360px; }
}
.ct-row--3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 720px) { .ct-row--3 { grid-template-columns: 1fr; } }
@media (max-width: 520px) {
  .ct-row { grid-template-columns: 1fr; }
}
/* Meet the Dentists — profile rows */
.team-profiles { background: var(--cream); padding: 40px 0 130px; }
.team-row {
  display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 64px;
  align-items: center;
  padding: 60px 0;
  border-top: 1px solid var(--line);
}
.team-row:first-child { border-top: none; }
.team-row--rev .team-row__portrait { order: 2; }
/* Reversed rows move the portrait into the second track, so mirror the ratio to
   keep the portrait in the narrow track and every doctor's frame the same width. */
.team-row--rev { grid-template-columns: 1.15fr 0.85fr; }
.team-portrait {
  aspect-ratio: 3 / 4;
  border-radius: 6px;
  background: linear-gradient(150deg, var(--sage-soft) 0%, var(--sage) 55%, var(--sage-deep) 100%);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 30px 60px -40px rgba(37, 49, 29, 0.5);
}
.team-portrait__initials {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(64px, 8vw, 108px); color: var(--cream);
  letter-spacing: 0.02em;
}
.team-portrait__img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; display: block; }
.team-row__role {
  font-family: var(--sans); font-size: 11px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--sage); margin-bottom: 14px; font-weight: 500;
}
.team-row__name {
  font-family: var(--serif); font-weight: 400;
  font-size: clamp(34px, 4vw, 54px); line-height: 1.02; letter-spacing: -0.01em;
  color: var(--ink); margin: 0 0 22px;
}
.team-row__bio { font-size: 16px; line-height: 1.72; color: var(--ink-soft); margin: 0 0 18px; max-width: 60ch; }
.team-row__quote {
  font-family: var(--serif); font-style: italic;
  font-size: 22px; line-height: 1.4; color: var(--ink);
  border-left: 2px solid var(--sage); padding-left: 22px; margin: 22px 0;
  max-width: 52ch;
}
.team-row__tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.team-row__link { margin-top: 26px; }
.team-tag {
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.06em;
  color: var(--ink-soft);
  border: 1px solid var(--line); border-radius: 40px; padding: 7px 16px;
}
@media (max-width: 860px) {
  .team-profiles { padding-bottom: 80px; }
  .team-row { grid-template-columns: 1fr; gap: 32px; padding: 48px 0; }
  .team-row--rev .team-row__portrait { order: 0; }
  .team-portrait { aspect-ratio: 16 / 10; }
}

/* Doctor profile pages */
.doc-hero { background: var(--ink); color: var(--cream); padding: 132px 0 0; }
.doc-hero__inner {
  max-width: 1180px; margin: 0 auto; padding: 0 40px;
  display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 64px; align-items: end;
}
.doc-hero__photo { align-self: end; }
.doc-hero__photo img {
  width: 100%; max-height: 620px; object-fit: cover; object-position: center top;
  display: block; border-radius: 6px 6px 0 0;
}
.doc-hero__text { padding-bottom: 90px; }
.doc-hero__eyebrow {
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--sage-soft); margin-bottom: 20px;
}
.doc-hero__name {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(40px, 5.4vw, 78px); line-height: 1.0; letter-spacing: -0.02em;
  color: var(--cream); margin: 0 0 24px;
}
.doc-hero__lead {
  font-size: 19px; line-height: 1.6; color: rgba(237, 229, 214, 0.86);
  max-width: 42ch; margin: 0 0 34px;
}
.doc-hero__ctas { display: flex; gap: 14px; flex-wrap: wrap; }
.doc-hero__ctas .btn--primary { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.doc-hero__ctas .btn--primary:hover { background: var(--cream-2); border-color: var(--cream-2); }

.doc-bio { background: var(--cream); }
.doc-bio__grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 64px; align-items: start; }
.doc-bio__p { font-size: 16px; line-height: 1.75; color: var(--ink-soft); margin: 0 0 20px; max-width: 62ch; }
.doc-bio__quote {
  font-family: var(--serif); font-style: italic; font-size: 24px; line-height: 1.4;
  color: var(--ink); border-left: 2px solid var(--sage); padding-left: 24px; margin: 30px 0 0; max-width: 52ch;
}
.doc-bio__aside {
  background: var(--cream-2); border: 1px solid var(--line); border-radius: 6px;
  padding: 34px 30px; position: sticky; top: 110px;
}
.doc-aside__label {
  font-family: var(--sans); font-size: 11px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--sage); margin-bottom: 18px; font-weight: 500;
}
.doc-aside__tags { display: flex; flex-wrap: wrap; gap: 10px; }

.doc-details { background: var(--ink); color: var(--cream); padding: 110px 0 150px; }
.doc-details__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 48px; }
.doc-detail__h { font-family: var(--serif); font-weight: 400; font-size: 26px; color: var(--cream); margin: 0 0 20px; }
.doc-detail__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.doc-detail__list li {
  font-size: 15px; line-height: 1.55; color: rgba(222, 222, 218, 0.82);
  padding-left: 18px; position: relative;
}
.doc-detail__list li::before { content: ''; position: absolute; left: 0; top: 9px; width: 6px; height: 6px; border-radius: 50%; background: var(--sage-soft); }
.doc-detail__p { font-size: 15px; line-height: 1.7; color: rgba(222, 222, 218, 0.82); margin: 0; }
/* Bridge the dark details band straight into the final CTA (no tan gap) */
.doc-details + .cta-merge { margin-top: 0; }

@media (max-width: 860px) {
  .doc-hero { padding-top: 110px; }
  .doc-hero__inner { grid-template-columns: 1fr; gap: 0; }
  .doc-hero__photo img { max-height: 440px; border-radius: 6px; }
  .doc-hero__text { padding: 40px 0 60px; }
  .doc-bio__grid { grid-template-columns: 1fr; gap: 40px; }
  .doc-bio__aside { position: static; }
  .doc-details { padding: 70px 0; }
}

/* Meet the Team — dentist mini grid */.team-grid-section { background: var(--cream); padding: 130px 0; }
.team-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.team-mini__link { display: block; color: inherit; }
.team-mini__photo {
  aspect-ratio: 4 / 5; border-radius: 6px; overflow: hidden; margin-bottom: 20px;
  background: var(--cream-3);
}
.team-mini__photo img {
  width: 100%; height: 100%; object-fit: cover; object-position: center top;
  display: block; transition: transform 0.5s ease;
}
.team-mini__link:hover .team-mini__photo img { transform: scale(1.04); }
.team-mini__role {
  font-family: var(--sans); font-size: 11px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--sage); margin-bottom: 8px; font-weight: 500;
}
.team-mini__name { font-family: var(--serif); font-weight: 400; font-size: 26px; color: var(--ink); margin: 0 0 12px; line-height: 1.05; }
.team-mini__note { font-size: 14.5px; line-height: 1.6; color: var(--ink-soft); margin: 0 0 16px; }
.team-mini__cta {
  font-family: var(--sans); font-size: 12px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--sage); font-weight: 500;
  display: inline-flex; align-items: center; gap: 7px;
}
.team-mini__cta::after { content: '→'; transition: transform 0.3s ease; }
.team-mini__link:hover .team-mini__cta::after { transform: translateX(4px); }

/* Meet the Team — wider team on dark band */
/* Meet the Team — wider team on dark band */
.team-wider { background: #25311D; padding-bottom: 150px; }
.team-wider__card { background: #25311D; }
/* Bridge the green band straight into the final CTA (no tan gap) */
.team-wider + .cta-merge { margin-top: 0; background: #25311D; }
.team-wider__head { margin-bottom: 52px; max-width: 640px; }
.team-wider .svc-title { color: var(--cream); }
.team-wider .svc-title em { color: var(--cream); }
.team-wider .svc-eyebrow { color: rgba(237, 229, 214, 0.8); }
.team-wider .svc-eyebrow::before { background: rgba(237, 229, 214, 0.8); }
.team-wider__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: rgba(237, 229, 214, 0.16); border: 1px solid rgba(237, 229, 214, 0.16); }
.team-wider__card { background: var(--ink); padding: 40px 38px 44px; }
.team-wider__title { font-family: var(--serif); font-weight: 400; font-size: 26px; color: var(--cream); margin: 0 0 14px; }
.team-wider__desc { font-size: 15px; line-height: 1.65; color: rgba(222, 222, 218, 0.8); margin: 0; }

@media (max-width: 900px) {
  .team-grid-section { padding: 80px 0; }
  .team-grid { grid-template-columns: 1fr 1fr; gap: 24px; }
  .team-wider__grid { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .team-grid { grid-template-columns: 1fr; }
}

/* ═══════════════ DENVANTAGE PAGE ═══════════════ */

/* Included list */
.dv-included { list-style: none; margin: 8px 0 30px; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.dv-included li { display: flex; align-items: flex-start; gap: 14px; font-size: 16px; line-height: 1.55; color: var(--ink-soft); }
.dv-check { position: relative; flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%; background: var(--sage-whisper); margin-top: 1px; }
.dv-check::after {
  content: ''; position: absolute; left: 7px; top: 4px; width: 5px; height: 9px;
  border: solid var(--sage); border-width: 0 2px 2px 0; transform: rotate(45deg);
}

/* Plans / pricing */
.dv-plans { background: var(--cream-2); padding: 130px 0; }
.dv-plan-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; align-items: stretch; }
.dv-plan {
  background: var(--cream); border: 1px solid var(--line); border-radius: 8px;
  padding: 32px 24px 30px; display: flex; flex-direction: column; position: relative;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.dv-plan:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -40px rgba(37, 49, 29, 0.45); }
.dv-plan--featured { background: var(--ink); border-color: var(--ink); }
.dv-plan__flag {
  position: absolute; top: -11px; left: 50%; transform: translateX(-50%);
  font-family: var(--sans); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--cream); background: var(--sage); padding: 5px 14px; border-radius: 40px; white-space: nowrap;
}
.dv-plan__name {
  font-family: var(--serif); font-size: 22px; font-weight: 400; color: var(--ink);
  line-height: 1.15; margin-bottom: 18px; display: flex; flex-direction: column; gap: 3px;
}
.dv-plan__sub { font-family: var(--sans); font-size: 12px; letter-spacing: 0.02em; color: var(--ink-mute); text-transform: none; }
.dv-plan__price { display: flex; align-items: baseline; gap: 6px; margin-bottom: 16px; }
.dv-plan__amt { font-family: var(--serif); font-size: 46px; font-weight: 400; color: var(--ink); line-height: 1; }
.dv-plan__per { font-family: var(--sans); font-size: 13px; color: var(--ink-mute); }
.dv-plan__note { font-size: 14px; line-height: 1.55; color: var(--ink-soft); margin: 0 0 26px; flex: 1; }
.dv-plan__cta { width: 100%; color: #fff; }
.dv-plan--featured .dv-plan__name,
.dv-plan--featured .dv-plan__amt { color: var(--cream); }
.dv-plan--featured .dv-plan__sub { color: rgba(237, 229, 214, 0.7); }
.dv-plan--featured .dv-plan__per { color: rgba(237, 229, 214, 0.7); }
.dv-plan--featured .dv-plan__note { color: rgba(222, 222, 218, 0.82); }
.dv-plan--featured .dv-plan__cta { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.dv-plan--featured .dv-plan__cta:hover { background: var(--cream-2); border-color: var(--cream-2); }
.dv-plans__foot { margin-top: 34px; font-size: 14px; color: var(--ink-mute); font-style: italic; text-align: center; }

/* Member savings table on dark band */
.dv-savings { background: var(--ink); color: var(--cream); padding: 120px 0; }
.dv-savings__head { max-width: 640px; margin-bottom: 48px; }
.dv-savings .svc-title { color: var(--cream); }
.dv-savings .svc-title em { color: var(--cream); }
.dv-savings .svc-eyebrow { color: rgba(237, 229, 214, 0.8); }
.dv-savings .svc-eyebrow::before { background: rgba(237, 229, 214, 0.8); }
.dv-savings__intro { font-size: 16px; line-height: 1.7; color: rgba(222, 222, 218, 0.82); margin: 24px 0 0; }
.dv-table {  columns: 2; column-gap: 64px;
  border-top: 1px solid rgba(237, 229, 214, 0.2);
}
.dv-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 20px;
  padding: 17px 0; border-bottom: 1px solid rgba(237, 229, 214, 0.16);
  break-inside: avoid;
}
.dv-row__proc { font-size: 15px; color: rgba(237, 229, 214, 0.9); }
.dv-row__amt { font-family: var(--serif); font-style: italic; font-size: 18px; color: var(--sage-soft); white-space: nowrap; }
.dv-row--head .dv-row__proc, .dv-row--head .dv-row__amt { font-family: var(--sans); font-style: normal; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(237, 229, 214, 0.6); }

@media (max-width: 1040px) {
  .dv-plan-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 860px) {
  .dv-plans { padding: 80px 0; }
  .dv-savings { padding: 80px 0; }
  .dv-table { columns: 1; }
}
@media (max-width: 620px) {
  .dv-plan-grid { grid-template-columns: 1fr; }
  .dv-plan__flag { left: 20px; transform: none; }
}

/* ═══════════════ MOBILE POLISH (phones only — desktop untouched) ═══════════════ */
@media (max-width: 700px) {
  /* Titles forced to one line on desktop should wrap on phones so they never clip/overflow */
  .svc-hero__title,
  .svc-approach .svc-title,
  .aff-options__title { white-space: normal; }
  .svc-hero__title { font-size: clamp(40px, 12vw, 58px); }
  .svc-approach .svc-title { font-size: clamp(30px, 8.5vw, 44px); }

  /* Reviews carousel: side arrows were squeezing the quote into a sliver.
     Put the quote full width, drop the two arrows into a centered row below. */
  .reviews { padding: 90px 0; }
  .reviews__head { margin-bottom: 36px; }
  .reviews__title { font-size: clamp(36px, 9vw, 52px); }
  .reviews__stage {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "track track" "prev next";
    justify-content: center;
    align-items: center;
    gap: 30px 18px;
  }
  .reviews__track { grid-area: track; width: 100%; min-height: 300px; }
  .reviews__arrow--prev { grid-area: prev; justify-self: end; }
  .reviews__arrow--next { grid-area: next; justify-self: start; }
  .review { padding: 0; }
  .review__quote { font-size: 22px; line-height: 1.35; max-width: 34ch; }

  /* Doctor quotes carousel: same balance on phones */
  .quotes__quote { max-width: 26ch; }

  /* Services list: the left column was centered inside a 100vh box, leaving a
     large empty gap above the intro on phones. Let it flow naturally. */
  .services-sticky__left { height: auto; justify-content: flex-start; padding: 72px 24px 40px; }

  /* Gallery (Smile Gallery page) head + sub-headline: left-aligned, flush with heading — mobile only */
  .sg-section .svc-container .aff-options__head,
  .sg-section .svc-container .aff-options__head .svc-eyebrow,
  .sg-section .svc-container .aff-options__head .svc-title,
  .sg-section .svc-container .aff-options__head .svc-intro { text-align: left !important; }
  .sg-section .svc-container .aff-options__head .svc-intro { max-width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; }

  /* Meet the Dentists hero — full team portrait shot on phones only */
  .mtd-hero-bg { background-image: url(assets/team/team-group-portrait.webp) !important; background-position: center top; }

  /* Doctor page heroes — dedicated portrait shots on phones only */
  .doc-hero--bg[data-doc="hall"] .svc-hero__bg { background-image: url(assets/team/hall-mobile-hero.webp) !important; background-position: center top !important; }
  .doc-hero--bg[data-doc="fleming"] .svc-hero__bg { background-image: url(assets/team/fleming-mobile-hero.webp) !important; background-position: center top !important; }
  .doc-hero--bg[data-doc="delpont"] .svc-hero__bg { background-image: url(assets/team/delpont-mobile-hero.webp) !important; background-position: center top !important; }

  /* Homepage gallery sub-headline: left-aligned, flush with heading — mobile only */
  .ba__note { justify-self: start !important; text-align: left !important; }
}
@media (max-width: 600px) {
  /* Hamburger already covers this; the full CTA button crowds the small nav bar */
  .nav__cta .btn--primary { display: none; }
  /* Tighten oversized display type on the narrowest screens */
  .footer__tagline h3 { font-size: 34px; }
  .aff-statement__title,
  .svc-final__title { font-size: clamp(30px, 9vw, 44px); }
  /* Floating services rotator: place it under the CTA in the hero on phones */
  body[data-hero="full"] .hero__inner { padding-bottom: 96px; }
  body[data-hero="full"] .hero__featured {
    display: flex;
    left: 24px; right: auto; bottom: 34px;
    flex-direction: row; align-items: center; gap: 12px;
  }
}



/* ——— Footer: RDP three-column contract ——— */
.footer__cols{display:grid;grid-template-columns:repeat(3,1fr);gap:48px;padding-bottom:44px;align-items:start}
.footer__col-title{font-family:var(--serif);font-size:20px;font-weight:400;color:var(--cream);margin:0 0 16px;letter-spacing:.01em}
.footer__col-body{font-family:var(--sans);font-size:14px;line-height:1.7;color:rgba(237,229,214,.82);font-style:normal;margin:0 0 12px}
.footer__col-body a{color:rgba(237,229,214,.82);transition:color .3s ease}
.footer__col-body a:hover{color:var(--cream)}
.footer__col-link{display:inline-block;font-family:var(--sans);font-size:13px;color:var(--cream);opacity:.9;border-bottom:1px solid rgba(237,229,214,.3);padding-bottom:2px;transition:opacity .3s ease}
.footer__col-link:hover{opacity:1}
.footer__hours{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.footer__hours li{display:flex;justify-content:space-between;gap:16px;font-family:var(--sans);font-size:13px;color:rgba(237,229,214,.82)}
.footer__hours li span:last-child{color:var(--cream);white-space:nowrap}
.footer__divider{height:1px;background:rgba(237,229,214,.14);margin:0 0 4px}
.footer__col .footer__socials{margin-top:14px}
/* Column links stack on their own lines; gap survives edits, source whitespace does not */
.footer__col-link{display:block;width:fit-content}
.footer__col-link+.footer__col-link{margin-top:6px}
.footer__socials+.footer__col-link{margin-top:14px}
.footer__copyright{font-size:12px;color:rgba(237,229,214,.6);letter-spacing:.02em}
.footer__copyright a{color:rgba(237,229,214,.6);transition:color .3s ease}
.footer__copyright a:hover{color:var(--cream)}
.footer__legal{display:flex;gap:28px;list-style:none;margin:0;padding:0}
.footer__legal a{color:rgba(237,229,214,.6);font-size:12px;transition:color .3s ease}
.footer__legal a:hover{color:var(--cream)}
@media (max-width:900px){.footer__cols{grid-template-columns:1fr;gap:36px}.footer__legal{flex-wrap:wrap;gap:18px}}

/* ——— Services directory ——— */
.dir-groups{display:flex;flex-direction:column;gap:64px;margin-top:24px}
.dir-group__label{font-size:28px;font-weight:400;color:var(--ink);margin:0 0 24px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.dir-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.dir-card{position:relative;display:block;padding:28px 30px;background:var(--cream);border:1px solid var(--line);border-radius:8px;text-decoration:none;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease}
.dir-card:hover{transform:translateY(-3px);box-shadow:0 24px 50px -28px rgba(37,49,29,.4);border-color:var(--sage)}
.dir-card__title{font-size:22px;font-weight:500;color:var(--ink);margin:0 0 10px}
.dir-card__desc{font-family:var(--sans);font-size:14px;line-height:1.6;color:rgba(43,42,38,.62);margin:0}
.dir-card__arrow{position:absolute;top:26px;right:26px;color:var(--sage);opacity:0;transform:translateX(-4px);transition:opacity .3s ease,transform .3s ease}
.dir-card:hover .dir-card__arrow{opacity:1;transform:translateX(0)}
@media (max-width:900px){.dir-grid{grid-template-columns:1fr}.dir-groups{gap:48px}}

/* ——— Service template hero image marker ——— */
.svc-hero__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.svc-hero__title--wrap{white-space:normal;max-width:16ch}


/* Section eyebrows removed site-wide; heroes keep theirs */
.svc-eyebrow,
.doctors__eyebrow,
.ba__eyebrow,
.reviews__eyebrow,
.ins-v2__eyebrow,
.video-band__eyebrow,
.pr-hero__eyebrow ~ .pr-eyebrow,
.pr-eyebrow { display: none !important; }

/* ——— ARTICLES / PATIENT RESOURCES ——— */
.art-hero{background:var(--ink);color:var(--cream);padding:190px 0 92px}
.art-hero__inner{max-width:1180px;margin:0 auto;padding:0 40px}
.art-crumbs{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:rgba(237,229,214,.55);margin-bottom:30px}
.art-crumbs a{color:rgba(237,229,214,.78);transition:color .3s ease}
.art-crumbs a:hover{color:var(--cream)}
.art-hero__title{font-family:var(--serif);font-weight:300;font-size:clamp(34px,4.4vw,62px);line-height:1.06;letter-spacing:-.015em;color:var(--cream);max-width:24ch;margin:0;text-wrap:pretty}
.art-hero__meta{margin-top:26px;font-family:var(--sans);font-size:13.5px;letter-spacing:.04em;color:rgba(237,229,214,.6);max-width:50ch}
.article{background:var(--cream);padding:100px 0 56px}
.article__wrap{max-width:1180px;margin:0 auto;padding:0 40px}
.article__body{max-width:70ch;margin:0 auto;font-size:17.5px;line-height:1.78;color:var(--ink-soft);text-wrap:pretty}
.article__body>p{margin:0 0 26px}
.article__body h2{font-family:var(--serif);font-weight:400;font-size:clamp(27px,3vw,38px);line-height:1.14;letter-spacing:-.01em;color:var(--ink);margin:66px 0 22px}
.article__body>h2:first-child{margin-top:0}
.article__body h3{font-family:var(--serif);font-weight:500;font-size:clamp(20px,2.1vw,25px);line-height:1.2;color:var(--ink);margin:42px 0 14px}
.article__body ul{margin:0 0 28px;padding:0;list-style:none;display:flex;flex-direction:column;gap:13px}
.article__body ul li{position:relative;padding-left:24px}
.article__body ul li::before{content:'';position:absolute;left:0;top:13px;width:10px;height:1px;background:var(--sage)}
.article__body strong{font-weight:600;color:var(--ink)}
.article__body a{color:var(--sage-deep);border-bottom:1px solid rgba(126,128,101,.45);transition:color .3s ease,border-color .3s ease}
.article__body a:hover{color:var(--ink);border-color:var(--ink)}
.article__lede{font-family:var(--serif);font-size:clamp(21px,2.3vw,27px);line-height:1.5;color:var(--ink);margin:0 0 42px}
.article__lede strong{font-weight:500}
.article__table{width:100%;border-collapse:collapse;margin:0 0 30px;font-size:15px}
.article__table th{text-align:left;font-family:var(--sans);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--sage);font-weight:500;padding:0 18px 12px 0;border-bottom:1px solid var(--line)}
.article__table td{padding:16px 18px 16px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink-soft);line-height:1.55}
.article__service{max-width:70ch;margin:64px auto 0;padding:26px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap}
.article__service-label{font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-mute)}
.article__service-link{font-family:var(--serif);font-size:24px;color:var(--ink);transition:color .3s ease}
.article__service-link:hover{color:var(--sage)}
.art-cta{background:var(--cream-2);padding:120px 0}
.art-cta__inner{max-width:760px;margin:0 auto;padding:0 40px;text-align:center}
.art-cta__title{font-family:var(--serif);font-weight:300;font-size:clamp(32px,4vw,54px);line-height:1.05;color:var(--ink);margin:0 0 18px}
.art-cta__title em{font-style:italic;color:var(--sage)}
.art-cta__sub{font-size:16.5px;line-height:1.7;color:var(--ink-soft);max-width:52ch;margin:0 auto 34px}
.art-cta__actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.pr-main{background:var(--cream);padding:100px 0 110px}
.pr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.pr-card{background:var(--cream);border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:44px 38px 46px;display:flex;flex-direction:column;gap:14px;transition:background .4s ease}
.pr-card:hover{background:var(--cream-2)}
.pr-card__kicker{font-family:var(--sans);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--sage)}
.pr-card__title{font-family:var(--serif);font-weight:400;font-size:25px;line-height:1.18;letter-spacing:-.01em;color:var(--ink);margin:0;text-wrap:pretty}
.pr-card__teaser{font-size:14.5px;line-height:1.65;color:var(--ink-soft);margin:0}
.pr-card__more{margin-top:auto;padding-top:22px;font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink)}
.pr-inline{background:var(--cream);padding:0 0 110px}
.pr-inline__band{max-width:1180px;margin:0 auto;padding:34px 40px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.pr-inline__text{font-family:var(--serif);font-size:24px;color:var(--ink)}
.pr-inline__text em{font-style:italic;color:var(--sage)}
@media (max-width:720px){
.art-hero{padding:140px 0 66px}
.art-hero__inner,.article__wrap,.art-cta__inner{padding:0 22px}
.article{padding:64px 0 34px}
.article__body{font-size:16.5px}
.article__body h2{margin:48px 0 18px}
.article__table{font-size:16px}
.article__table th,.article__table td{padding-right:12px}
.pr-main{padding:64px 0 76px}
.pr-card{padding:34px 26px 36px}
.art-cta{padding:80px 0}
.pr-inline__band{padding:28px 22px}
}

/* Article/resource pages: dark hero, no .hero element — keep hero-scoped rules inert */
body[data-hero="full"] .art-hero{margin-top:0}


/* ——— MOBILE LCP: hero paints instantly (no entrance choreography on phones) ——— */
@media (max-width: 900px) {
  .hero .reveal, .svc-hero .reveal,
  .hero .reveal-lines, .svc-hero .reveal-lines,
  .hero .reveal-words, .svc-hero .reveal-words,
  .hero .reveal-line > span, .svc-hero .reveal-line > span,
  .hero .reveal-words__inner, .svc-hero .reveal-words__inner {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
    transition-delay: 0s !important;
    animation-delay: 0s !important;
    will-change: auto;
  }
}

/* ═══════════════ PEDIATRIC AIRWAY DEVELOPMENT PAGE ═══════════════ *//* ——— PEDIATRIC AIRWAY: signs & symptoms ——— */
.pax-signs { padding: 120px 0; background: var(--cream); }
.pax-signs__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; }
.pax-signs__body p { font-size: 17px; line-height: 1.7; color: var(--ink-soft); margin-top: 20px; }
.pax-signs__lists { display: grid; gap: 24px; }
.pax-signs__card { background: var(--ink); border-radius: 10px; padding: 34px 32px 36px; }
.pax-signs__label { font-family: var(--sans); font-size: 11px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sage-soft); padding-bottom: 14px; border-bottom: 1px solid rgba(237,229,214,0.2); margin-bottom: 22px; display: block; }
.pax-signs__list { list-style: none; display: grid; gap: 14px; margin: 0; padding: 0; }
.pax-signs__list li { display: flex; gap: 14px; align-items: flex-start; font-family: var(--sans); font-size: 16px; color: rgba(222,222,218,0.86); line-height: 1.5; }
.pax-signs__list li::before { content: ""; flex: 0 0 auto; width: 16px; height: 16px; margin-top: 4px; border-radius: 50%; background: rgba(237,229,214,0.12); box-shadow: inset 0 0 0 1px var(--sage-soft); }
/* ——— PEDIATRIC AIRWAY: video chapters ——— */
.pax-videos { padding: 120px 0; background: var(--cream-2); }
.pax-videos__head { max-width: 720px; margin-bottom: 72px; }
.pax-chapter { display: grid; grid-template-columns: 1.05fr 1fr; gap: 64px; align-items: center; padding: 56px 0; border-top: 1px solid var(--line); }
.pax-chapter:first-of-type { border-top: 0; padding-top: 0; }
.pax-chapter--rev .pax-chapter__media { order: 2; }
.pax-chapter__num { font-family: var(--serif); font-size: 44px; line-height: 1; color: var(--sage); opacity: 0.55; margin-bottom: 14px; }
.pax-chapter__title { font-family: var(--serif); font-weight: 400; line-height: 1.05; color: var(--ink); font-size: clamp(28px, 3vw, 40px); margin: 0 0 16px; }
.pax-chapter__title em { font-style: italic; color: var(--sage); }
.pax-chapter__desc { font-family: var(--sans); font-size: 16px; line-height: 1.7; color: var(--ink-soft); margin: 0; }
.pax-video { position: relative; aspect-ratio: 16 / 9; border-radius: 6px; overflow: hidden; background: var(--ink); cursor: pointer; }
.pax-video__poster { width: 100%; height: 100%; object-fit: cover; display: block; }
.pax-video__play { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(37, 49, 29, 0.28); border: 0; cursor: pointer; transition: background 0.35s ease; }
.pax-video__play:hover { background: rgba(37, 49, 29, 0.44); }
.pax-video__play-icon { width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; background: var(--cream); color: var(--sage); transition: transform 0.35s cubic-bezier(0.2, 0.7, 0.2, 1); }
.pax-video__play-icon svg { margin-left: 4px; }
.pax-video__play:hover .pax-video__play-icon { transform: scale(1.08); }
.pax-video.is-playing .pax-video__poster,
.pax-video.is-playing .pax-video__play { display: none; }
.pax-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; z-index: 2; }
@media (max-width: 980px) {
  .pax-signs { padding: 80px 0; }
  .pax-signs__grid { grid-template-columns: 1fr; gap: 48px; }
  .pax-signs__card { padding: 28px 24px 30px; }
  .pax-videos { padding: 80px 0; }
  .pax-videos__head { margin-bottom: 48px; }
  .pax-chapter { grid-template-columns: 1fr; gap: 32px; padding: 40px 0; }
  .pax-chapter--rev .pax-chapter__media { order: 0; }
  .pax-video__play-icon { width: 60px; height: 60px; }
}
/* Intro statement shares the deeper tan of the video section */
.pax-page .aff-statement { background: var(--cream-2); }
/* ——— PEDIATRIC AIRWAY: cross-link card ——— */
.pax-cross { background: var(--cream); padding: 110px 0; }
.pax-cross__card { background: var(--sage-whisper); border-radius: 10px; padding: 54px 60px; display: flex; align-items: center; justify-content: space-between; gap: 40px; }
.pax-cross__eyebrow { font-family: var(--sans); font-size: 11px; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; color: var(--sage-deep); margin-bottom: 12px; }
.pax-cross__title { font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3.2vw, 40px); line-height: 1.08; color: var(--ink); margin: 0 0 12px; }
.pax-cross__title em { font-style: italic; color: var(--sage); }
.pax-cross__desc { font-family: var(--sans); font-size: 15.5px; line-height: 1.65; color: var(--ink-soft); margin: 0; max-width: 48ch; }
.pax-cross__cta { flex-shrink: 0; }
@media (max-width: 860px) {
  .pax-cross { padding: 80px 0; }
  .pax-cross__card { flex-direction: column; align-items: flex-start; padding: 36px 26px 40px; gap: 26px; }
}
/* ——— PEDIATRIC AIRWAY: why it matters ——— */
.pax-why { background: var(--cream); padding: 120px 0; }
.pax-why__head { max-width: 640px; margin-bottom: 60px; }
.pax-why__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px; }
.pax-why__col { border-top: 2px solid var(--sage); padding-top: 26px; }
.pax-why__num { font-family: var(--serif); font-style: italic; font-size: 20px; color: var(--sage); margin-bottom: 16px; }
.pax-why__title { font-family: var(--serif); font-weight: 400; font-size: 27px; line-height: 1.12; color: var(--ink); margin: 0 0 14px; }
.pax-why__desc { font-family: var(--sans); font-size: 15.5px; line-height: 1.7; color: var(--ink-soft); margin: 0; }
@media (max-width: 860px) {
  .pax-why { padding: 80px 0; }
  .pax-why__head { margin-bottom: 40px; }
  .pax-why__grid { grid-template-columns: 1fr; gap: 32px; }
}

/* ═══════════════ MOBILE TAP TARGETS (≥44×44 hit area, zero visual change) ═══════════════ */
/* Hit area is extended with a centered overlay pseudo-element so the element's
   own box, size, and position are untouched — nothing shifts, nothing resizes. */
@media (max-width: 960px) {
  .menu-toggle, .ba__dot, .quotes__dot, .services-sticky__name, .ba__arrow, .reviews__arrow { position: relative; }
  .menu-toggle::after, .ba__arrow::after, .reviews__arrow::after {
    content: ""; position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 44px; height: 44px; border-radius: 50%;
  }
  /* Carousel dots sit only ~10px apart, so a flat 44px overlay would overlap the
     neighbouring dot and steal its taps. Expand vertically to 44px, but horizontally
     only to the dot + its gap, so the hit areas tile edge-to-edge without colliding. */
  .ba__dot::after, .quotes__dot::after {
    content: ""; position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: calc(100% + 10px); height: 44px;
  }
  .services-sticky__name::after {
    content: ""; position: absolute; top: 50%; left: 0;
    transform: translateY(-50%);
    width: 100%; height: 44px;
  }
}

/* Group photo caption: 14px desktop; the mobile floor below raises it to 16px */
.team-group__cap { font-size: 14px; }

/* ═══════════════ MOBILE BODY-COPY MINIMUM (spec: ≥16px at mobile widths) ═══════════════ */
/* Mobile only — desktop type scale is unchanged. 16px on inputs also stops
   iOS from auto-zooming the page when a field is focused. */
@media (max-width: 900px) {
  .doctor-row__bio,
  .info-block__content--mono,
  .cta-merge__sub,
  .ins-v2__step-desc,
  .ins-v2__panel-note,
  .ins-v2__panel-cta-text,
  .svc-step__desc,
  .svc-faq__a p,
  .wcu-stat__sub,
  .at-tech__desc,
  .aff-card__desc,
  .pc-card__desc,
  .sg-note,
  .rev-why__desc,
  .ct-sub input,
  .form-disclaimer,
  .ct-form-note,
  .ct-field input,
  .ct-field select,
  .ct-field textarea,
  .ct-sent,
  .doc-detail__p,
  .team-mini__note,
  .team-group__cap,
  .team-wider__desc,
  .dv-plan__note,
  .dir-card__desc,
  .pr-card__teaser,
  .pax-cross__desc,
  .pax-why__desc,
  .pax-chapter__desc,
  .pax-signs__list li,
  .svc-intro,
  .svc-faq__intro { font-size: 16px; }
}

/* ═══════════════ NAV FALLBACK FOR PAGES WITHOUT A DARK HERO ═══════════════ */
/* Platform-generated utility pages (/privacy, /terms, /accessibility) reuse this
   nav but have no dark hero behind it. The transparent "over hero" treatment
   would render the white logo and white links on a cream page, i.e. invisible.

   Every dark hero in this site carries [data-dark-hero] (.hero, .svc-hero,
   .art-hero, .ct-head), so this is ONE condition that cannot drift out of sync
   as heroes are added. Any new dark hero MUST carry that attribute.

   Selectors below mirror the .nav:not(.scrolled):not(.mega-open) shape used by
   the hero-state rules so they match on specificity and win on source order. */
body:not(:has([data-dark-hero])) .nav,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) {
  background: rgba(237, 229, 214, 0.96);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom-color: var(--line);
}
/* Sticky (not fixed) so the bar occupies layout space and pushes content down on
   its own — no dependency on the platform wrapping its content in <main>. */
body:not(:has([data-dark-hero])) .nav { position: sticky; }
body:not(:has([data-dark-hero])) .nav.hidden { transform: none; }

body:not(:has([data-dark-hero])) .nav .nav__links a,
body:not(:has([data-dark-hero])) .nav .nav__phone,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .nav__links a,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .nav__phone { color: var(--ink); }

body:not(:has([data-dark-hero])) .nav .nav__links a::after,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .nav__links a::after { background: var(--accent); }

body:not(:has([data-dark-hero])) .nav .btn--primary,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .btn--primary {
  background: var(--accent); color: #fff; border-color: var(--accent);
}
body:not(:has([data-dark-hero])) .nav .btn--primary:hover,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .btn--primary:hover {
  background: var(--sage-deep); border-color: var(--sage-deep); color: #fff;
}

body:not(:has([data-dark-hero])) .nav .menu-toggle span,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .menu-toggle span { background: var(--ink); }

body:not(:has([data-dark-hero])) .nav .nav__logo--img .logo-white,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .nav__logo--img .logo-white { opacity: 0; }
body:not(:has([data-dark-hero])) .nav .nav__logo--img .logo-color,
body:not(:has([data-dark-hero])) .nav:not(.scrolled):not(.mega-open) .nav__logo--img .logo-color { opacity: 1; }

/* At a glance: text elements carry the same styling as the divs they replaced */
p.svc-eyebrow,h3.wcu-stat__big,p.wcu-stat__sub{margin-top:0}
p.wcu-stat__sub{margin-bottom:0}

/* ═══════════════ OUR TEAM PAGE ═══════════════ */
.staff-directory { padding: 130px 0; background: var(--cream); }
.staff-directory__head { max-width: 720px; margin-bottom: 64px; }
/* "familiar faces, every visit." wraps at .svc-title's 18ch cap — widen it so the
   heading holds one line, and let it fall back to wrapping on small screens. */
.staff-directory__head .svc-title { max-width: none; white-space: nowrap; }
@media (max-width: 560px) {
  .staff-directory__head .svc-title { white-space: normal; }
}

.staff-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px 28px; }
/* content-visibility was dropped per spec B3: it suppressed offscreen rendering
   before the reveal observer fired, leaving all 21 cards permanently invisible.
   B1 (900px files) and B2 (intrinsic dims + async decode) carry the win. */
.staff-card { margin: 0; min-width: 0; }
.staff-card__frame {
  aspect-ratio: 3 / 4; border-radius: 6px; overflow: hidden; margin-bottom: 20px;
  background: linear-gradient(150deg, var(--sage-soft) 0%, var(--sage) 55%, var(--sage-deep) 100%);
  box-shadow: 0 22px 44px -34px rgba(37, 49, 29, 0.45);
}
.staff-card__img {
  width: 100%; height: 100%; object-fit: cover;
  object-position: center 20%; display: block;
  will-change: auto;
  transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.staff-card:hover .staff-card__img { transform: scale(1.03); }
.staff-card__name {
  font-family: var(--serif); font-weight: 400; font-size: 26px;
  line-height: 1.1; letter-spacing: -0.01em; color: var(--ink); margin: 0 0 8px;
}
.staff-card__role {
  font-family: var(--sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--sage); line-height: 1.5; margin: 0;
}

/* ——— OUR TEAM: group photo ——— */
/* Full-bleed with a fixed-parallax frame. The photo stays a real <img> with alt
   text (Rule 13) rather than becoming a CSS background: clip-path on the frame
   makes it the containing block for the position:fixed image, which produces the
   parallax without background-attachment. No transform/reveal on the frame — a
   transformed ancestor would also capture the fixed child and kill the effect. */
.staff-group { padding: 0 0 130px; background: var(--cream); }
.staff-group__inner {
  position: relative; width: 100%; height: 78vh; min-height: 440px;
  margin: 0; padding: 0; overflow: hidden; clip-path: inset(0);
}
.staff-group__img {
  position: fixed; top: 0; left: 0;
  width: 100vw; height: 100vh;
  object-fit: cover; object-position: center 28%;
  display: block; border-radius: 0; box-shadow: none;
}
.staff-group__capwrap { max-width: 1180px; margin: 0 auto; padding: 0 40px; }
.staff-group__cap {
  font-family: var(--sans); font-size: 14px; color: var(--ink-mute);
  text-align: center; margin-top: 16px;
}
/* Touch and small screens: iOS cannot composite a fixed child smoothly, so the
   photo falls back to a normal in-flow image (same Rule 4 degrade as the heroes). */
@media (max-width: 900px), (hover: none) {
  .staff-group__inner { height: auto; min-height: 0; clip-path: none; }
  .staff-group__img { position: static; width: 100%; height: auto; }
}

@media (max-width: 980px) {
  .staff-directory { padding: 80px 0; }
  .staff-directory__head { margin-bottom: 44px; }
  .staff-grid { grid-template-columns: repeat(2, 1fr); gap: 32px 24px; }
  .staff-group { padding-bottom: 80px; }
}
@media (max-width: 560px) {
  .staff-grid { gap: 28px 18px; }
  .staff-card__name { font-size: 22px; }
  .staff-card__role { font-size: 10px; letter-spacing: 0.14em; }
}

/* ——— OUR TEAM: role groups ——— */
.staff-group-block + .staff-group-block { margin-top: 84px; }
.staff-group-block__title {
  font-family: var(--serif); font-weight: 400;
  font-size: clamp(26px, 2.6vw, 34px); line-height: 1.1;
  letter-spacing: -0.01em; color: var(--ink);
  margin: 0 0 32px; padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
}
@media (max-width: 980px) {
  .staff-group-block + .staff-group-block { margin-top: 56px; }
  .staff-group-block__title { margin-bottom: 24px; }
}

/* ═══════════════ REVIEWS PAGE ═══════════════ */
.rv-summary { background: var(--cream-2); padding: 64px 0; border-bottom: 1px solid var(--line); }
.rv-summary__inner {
  max-width: 1180px; margin: 0 auto; padding: 0 40px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 32px; flex-wrap: wrap;
}
.rv-summary__score { display: flex; align-items: baseline; gap: 16px; }
.rv-summary__num {
  font-family: var(--serif); font-weight: 400; font-size: clamp(52px, 6vw, 76px);
  line-height: 1; letter-spacing: -0.02em; color: var(--ink);
}
.rv-summary__stars { display: flex; gap: 4px; color: var(--sage); }
.rv-summary__meta { font-family: var(--sans); font-size: 15px; color: var(--ink-soft); line-height: 1.6; }
.rv-summary__meta strong { font-weight: 500; color: var(--ink); }

.rv-feed { background: var(--cream); padding: 120px 0; }
.rv-feed__fallback { font-family: var(--sans); font-size: 16px; color: var(--ink-soft); text-align: center; }

@media (max-width: 860px) {
  .rv-summary { padding: 44px 0; }
  .rv-summary__inner { flex-direction: column; align-items: flex-start; gap: 20px; }
  .rv-feed { padding: 80px 0; }
}
@media (max-width: 720px) {
  .rv-summary__inner { padding: 0 24px; }
}

/* ——— REVIEWS PAGE: testimonial card grid ——— */
.rv-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 24px; align-items: stretch;
  margin: 48px 0 44px;
}
.rv-card {
  background: var(--cream-2);
  border: 1px solid var(--line); border-radius: 8px;
  padding: 30px 28px 26px;
  display: flex; flex-direction: column; height: 100%;
}
.rv-card__stars { display: flex; gap: 3px; color: var(--sage); margin-bottom: 18px; }
.rv-card__sr {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.rv-card__quote { margin: 0 0 22px; flex: 1; }
.rv-card__quote p {
  font-family: var(--sans); font-size: 15px; line-height: 1.68;
  color: var(--ink-soft); margin: 0;
}
.rv-card__meta {
  display: flex; align-items: baseline; gap: 10px;
  padding-top: 18px; border-top: 1px solid var(--line);
}
.rv-card__author { font-family: var(--serif); font-size: 19px; color: var(--ink); }
.rv-card__source {
  font-family: var(--sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-mute);
}
/* Placeholder slot styling — remove with the placeholders once real reviews land */
.rv-card--empty { border-style: dashed; background: transparent; }
.rv-card--empty .rv-card__quote p { font-style: italic; color: var(--ink-mute); }

/* "what patients bring up most." is too long for the shared nowrap rule */
.rv-page .aff-options__title { white-space: normal; }
@media (max-width: 900px) { .aff-options__title { white-space: normal; } }


@media (max-width: 980px) { .rv-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; } }
@media (max-width: 620px) { .rv-grid { grid-template-columns: 1fr; } }

/* ——— REVIEWS: dark band with photo ——— */
.rv-band { position: relative; overflow: hidden; background: var(--ink); }
.rv-band__bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.rv-band__bg::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(37,49,29,0.88), rgba(37,49,29,0.94));
}
.rv-band > .svc-container { position: relative; z-index: 1; }

.rv-band .svc-eyebrow { color: rgba(237,229,214,0.82); }
.rv-band .svc-eyebrow::before { background: rgba(237,229,214,0.82); }
.rv-band .aff-options__title { color: var(--cream); }
.rv-band .aff-options__title em { color: var(--sage-soft); }

.rv-band .pc-card {
  background: rgba(237,229,214,0.07);
  border-color: rgba(237,229,214,0.22);
  backdrop-filter: blur(2px);
}
.rv-band .pc-card:hover {
  background: rgba(237,229,214,0.12);
  box-shadow: 0 30px 60px -40px rgba(0,0,0,0.6);
}
.rv-band .pc-card__num { color: var(--sage-soft); }
.rv-band .pc-card__title { color: var(--cream); }
.rv-band .pc-card__desc { color: rgba(222,222,218,0.8); }
.rv-band .pc-card__cta { color: var(--sage-soft); }

/* ——— REVIEWS: service areas band ——— */
.rv-page .rv-areas { background: var(--cream-2); }

/* Card body copy meets the 16px mobile minimum. Declared last so it wins over
   the .rv-card__quote p desktop size above. */
@media (max-width: 900px) {
  .rv-card__quote p { font-size: 16px; }
}

/* ═══════════════ DENTIST NEAR ME PAGE ═══════════════ */

/* ——— rating badge in hero ——— */
.dnm-badge {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 9px 18px; margin-bottom: 22px;
  border: 1px solid rgba(237,229,214,0.3); border-radius: 100px;
  background: rgba(237,229,214,0.09); backdrop-filter: blur(3px);
  text-decoration: none; transition: background 0.35s ease;
}
.dnm-badge:hover { background: rgba(237,229,214,0.16); }
.dnm-badge__stars { display: flex; gap: 3px; color: var(--sage-soft); }
.dnm-badge__text {
  font-family: var(--sans); font-size: 12px; font-weight: 500;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--cream);
}

/* Only the authored <br> breaks this heading. The 1fr column is ~530px, too narrow
   for "a practice that's been" at the full section-title size, so scale it to fit. */
.dnm-page [data-rdp-section="practice-intro"] .svc-title {
  max-width: none; white-space: nowrap; font-size: clamp(30px, 3.4vw, 46px);
}
@media (max-width: 900px) {
  .dnm-page [data-rdp-section="practice-intro"] .svc-title { white-space: normal; }
}

/* ——— intro photo is landscape, not the component's native 4:5 ——— */
.dnm-page [data-rdp-section="practice-intro"] .svc-explain__media img { aspect-ratio: 4 / 3; }

/* ——— heading row with a trailing CTA aligned to the grid's right edge ——— */
.dnm-head {
  max-width: none;
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 32px; flex-wrap: nowrap;
}
.dnm-head > div { min-width: 0; }
.dnm-head__cta { flex-shrink: 0; }
@media (max-width: 720px) {
  .dnm-head { flex-wrap: wrap; align-items: flex-start; gap: 22px; }
}

/* ——— shared trailing button row ——— */
.dnm-more { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 48px; }
/* The testimonials section is centre-aligned, so its trailing button follows suit */
.reviews .dnm-more,
.dnm-docs .dnm-more { justify-content: center; }

/* ——— membership / insurance cards ——— */
.dnm-plans { background: var(--cream); padding: 130px 0; }
.dnm-plans__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.dnm-plan {
  background: var(--cream-2); border: 1px solid var(--line); border-radius: 8px;
  padding: 40px 38px 42px; display: flex; flex-direction: column; align-items: flex-start;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.dnm-plan:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -40px rgba(37,49,29,0.45); }
.dnm-plan__tag {
  font-family: var(--sans); font-size: 10px; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase; color: var(--sage);
  border: 1px solid var(--line); border-radius: 40px; padding: 6px 14px; margin-bottom: 22px;
}
.dnm-plan__title {
  font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3vw, 36px);
  line-height: 1.1; color: var(--ink); margin: 0 0 14px;
}
.dnm-plan__desc {
  font-family: var(--sans); font-size: 16px; line-height: 1.7;
  color: var(--ink-soft); margin: 0 0 30px; flex: 1;
}
@media (max-width: 860px) {
  .dnm-plans__grid { grid-template-columns: 1fr; }
  .dnm-plan { padding: 32px 26px 34px; }
}

/* ——— doctor cards ——— */
/* "three dentists, one building." wraps at .svc-title's 18ch cap */
.dnm-docs .svc-title { max-width: none; white-space: nowrap; }
@media (max-width: 560px) {
  .dnm-docs .svc-title { white-space: normal; }
}
.dnm-docs { background: var(--cream-2); padding: 130px 0; }
.dnm-docs__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-top: 56px; }
.dnm-doc { min-width: 0; }
.dnm-doc__frame {
  aspect-ratio: 3 / 4; border-radius: 8px; overflow: hidden; margin-bottom: 22px;
  background: linear-gradient(150deg, var(--sage-soft), var(--sage-deep));
  box-shadow: 0 24px 48px -34px rgba(37,49,29,0.42);
}
.dnm-doc__frame img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; display: block; }
.dnm-doc__name { font-family: var(--serif); font-weight: 400; font-size: 27px; line-height: 1.15; color: var(--ink); margin: 0 0 8px; }
.dnm-doc__line { font-family: var(--sans); font-size: 15px; line-height: 1.6; color: var(--ink-soft); margin: 0; }

/* ——— office photo strip ——— */
.dnm-strip { background: var(--cream); padding: 0 0 130px; }
.dnm-strip__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.dnm-strip__grid img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; display: block; }

/* ——— visit us ——— */
.dnm-visit { background: var(--cream); }
.dnm-visit__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; }
.dnm-visit__block { padding: 20px 0; border-bottom: 1px solid var(--line); }
.dnm-visit__block:first-of-type { border-top: 1px solid var(--line); }
.dnm-visit__label {
  font-family: var(--sans); font-size: 11px; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase; color: var(--sage); margin-bottom: 10px;
}
.dnm-visit__value { font-family: var(--sans); font-size: 17px; line-height: 1.5; color: var(--ink); }
.dnm-visit__block .footer__hours li { color: var(--ink-soft); }
.dnm-visit__block .footer__hours li span:first-child { color: var(--ink); }
/* The hours block is copied verbatim from the footer (Rule 6), where it sits on
   dark --ink. Its own span:last-child rule paints the times cream, which is
   invisible on this light section — override it here rather than edit the markup. */
.dnm-visit__block .footer__hours li span:last-child { color: var(--ink-soft); }
.dnm-visit__note { font-family: var(--sans); font-size: 16px; line-height: 1.7; color: var(--ink-soft); margin: 26px 0 30px; }
.dnm-visit__photo { width: 100%; height: auto; display: block; border-radius: 10px; }

/* ——— map ——— */
.dnm-map__frame {
  width: 100%; aspect-ratio: 3 / 4; border: 0;
  border-radius: 10px; display: block;
  box-shadow: 0 30px 60px -44px rgba(37,49,29,0.45);
}
.dnm-visit__map { position: sticky; top: 120px; }

@media (max-width: 980px) {
  .dnm-docs { padding: 80px 0; }
  .dnm-plans { padding: 80px 0; }
  .dnm-docs__grid { grid-template-columns: 1fr; gap: 40px; max-width: 420px; }
  .dnm-strip { padding-bottom: 80px; }
  .dnm-strip__grid { grid-template-columns: 1fr; gap: 14px; }
  .dnm-visit__grid { grid-template-columns: 1fr; gap: 44px; }
  .dnm-map__frame { aspect-ratio: 4 / 3; }
  .dnm-visit__map { position: static; }
  .dnm-more { margin-top: 36px; }
}
@media (max-width: 560px) {
  .dnm-badge { padding: 8px 14px; gap: 9px; }
  .dnm-badge__text { font-size: 10px; letter-spacing: 0.08em; }
}

/* Core message: primary + phone button row (replaces the old inline margin-top) */
.core-msg__actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 24px; }

/* ═══════════════ INSURANCE PAGE ═══════════════ */
.ins-plans { padding: 130px 0; background: var(--cream); }
.ins-plans--alt { background: var(--cream-2); }
.ins-plans__head { max-width: 720px; margin-bottom: 56px; }

/* Centred flex row, not grid. A fixed column count orphans the remainder, and
   auto-fit packs by available width without regard to item count — both strand
   the last logo. Flex centres any leftovers under the row, so the strip stays
   balanced at whatever carrier count Kerry confirms (3-6). */
.ins-grid {
  display: flex; flex-wrap: wrap;
  justify-content: center; align-items: stretch;
  gap: 18px;
}
.ins-tile {
  flex: 1 1 0; min-width: 0;
  display: flex; align-items: center; justify-content: center;
  min-height: 110px; padding: 12px; text-align: center;
  background: none; border: 0;
  transition: transform 0.35s cubic-bezier(0.2,0.7,0.2,1);
}
.ins-tile:hover { transform: translateY(-2px); }
.ins-tile__name {
  font-family: var(--sans); font-size: 15px; font-weight: 500;
  line-height: 1.4; color: var(--ink);
}
.ins-tile__logo {
  max-width: min(190px, 100%); max-height: 58px; width: auto; height: auto;
  object-fit: contain; display: block;
}
/* No desaturation: each carrier shows as its real brand mark. A resting
   grayscale left HRI's yellow sunburst at ~1.15:1 on the cream tile, and hover
   (which used to restore colour) never fires on touch. Normalising the group at
   full colour keeps the row consistent and every logo legible without hover.
   Sizing is handled on both axes above so wide wordmarks and stacked lockups
   land at a similar optical size. */
.ins-note {
  font-family: var(--sans); font-size: 15px; line-height: 1.7;
  color: var(--ink-soft); margin-top: 32px;
}
.ins-note a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }

/* no-insurance photo is landscape, not the component's native 4:5 */
.ins-page [data-rdp-section="no-insurance"] .svc-explain__media img { aspect-ratio: 4 / 3; }

@media (max-width: 980px) {
  .ins-plans { padding: 80px 0; }
  .ins-plans__head { margin-bottom: 40px; }
  .ins-grid { gap: 14px; }
  .ins-tile { flex-basis: 0; }
}
@media (max-width: 900px) {
  /* Card body copy meets the 16px mobile minimum */
  .ins-tile__name, .ins-note { font-size: 16px; }
}
@media (max-width: 620px) {
  .ins-tile { flex: 0 1 150px; min-height: 92px; padding: 10px; }
  .ins-tile__name { font-size: 15px; }
}

/* Doctor credential line meets the 16px mobile minimum */
@media (max-width: 900px) {
  .dnm-doc__line { font-size: 16px; }
}

/* The practice email has no space or hyphen to break on, so it clips at 320px
   (body has overflow-x:hidden). "anywhere" is required — break-word won't
   split an unbroken string. Affects the Contact block and every footer. */
.ct-block__body, .footer__col-body { overflow-wrap: anywhere; }

/* ═══════════ 320px SAFETY (Galaxy Fold outer / iPhone SE 1st gen) ═══════════ */
/* Below 360px the 272px of available width is narrower than several grid items'
   min-content, so 1fr tracks refuse to shrink and the page scrolls sideways.
   min-width:0 lets them shrink; nowrap buttons get to wrap. No existing
   breakpoint or grid-collapse rule is altered — this only adds a floor. */
@media (max-width: 360px) {
  .ct-grid > *, .ct-info,
  .svc-approach__grid > *, .svc-approach__body,
  .svc-explain__grid > *, .svc-explain__body,
  .pr-grid > *, .pr-card,
  .dnm-plans__grid > *, .dnm-plan,
  .dnm-visit__grid > *,
  .svc-faq__grid > * { min-width: 0; }

  /* Long single-line labels can't fit 272px at 48px tall */
  .btn { white-space: normal; max-width: 100%; }
  .svc-hero__ctas .btn, .hero__ctas .btn, .dnm-more .btn { width: 100%; }

  /* .pr-grid's minmax(330px,1fr) floor is wider than the 276px available here,
     so the track itself overflows regardless of the card's min-width. */
  .pr-grid { grid-template-columns: 1fr; }

  /* Two 48px buttons side by side exceed the 272px hero column. The <=720px rule
     sets nowrap via body[data-hero="full"], so match that specificity to win. */
  body[data-hero="full"] .hero__ctas { flex-wrap: wrap; }
  body[data-hero="full"] .hero__ctas .btn { flex: 1 1 100%; width: 100%; }
}

/* ——— ARTICLE BODY IMAGES ——— */
.article__fig { margin: 40px 0 34px; }
.article__fig img {
  width: 100%; height: auto; display: block;
  aspect-ratio: 16 / 9; object-fit: cover;
  border-radius: 8px;
  box-shadow: 0 24px 48px -38px rgba(37, 49, 29, 0.4);
}
.article__fig figcaption {
  font-family: var(--sans); font-size: 13.5px; line-height: 1.55;
  color: var(--ink-mute); margin-top: 12px;
}
@media (max-width: 720px) {
  .article__fig { margin: 30px 0 26px; }
}

/* ——— NAV GLASS SCRIM (top-of-page state only) ———
   Over a dark hero the nav is transparent, so the links compete with whatever
   is in the photo behind them. This lays a soft blurred gradient behind the nav
   content — dark at the top edge, fading to nothing at the bottom — so the bar
   still reads as transparent but the links sit on a consistent ground.
   It only exists in the un-scrolled state; once .scrolled adds the cream glass
   panel the scrim fades out and nothing overlaps. */
.nav::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  pointer-events: none; opacity: 0;
  transition: opacity 0.4s ease;
  background: linear-gradient(to bottom, rgba(20, 28, 15, 0.46), rgba(20, 28, 15, 0.2) 58%, rgba(20, 28, 15, 0));
  backdrop-filter: blur(5px) saturate(120%);
  -webkit-backdrop-filter: blur(5px) saturate(120%);
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 52%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 52%, transparent 100%);
}
body:has([data-dark-hero]) .nav:not(.scrolled):not(.mega-open)::before { opacity: 1; }

/* ═══════════════ HOMEPAGE SERVICES TILES ═══════════════ */
.svc-tiles { background: var(--cream); padding: 0 0 72px; }
.svc-tiles__inner { max-width: none; margin: 0; padding: 0 20px; }
.svc-tiles__head { padding: 0 20px; }
.svc-tiles__head { max-width: 1000px; margin: 0 auto 56px; text-align: center; }
.svc-tiles__title {
  font-family: var(--serif); font-weight: 400;
  font-size: var(--section-title); line-height: 1.06; white-space: nowrap;
  letter-spacing: -0.015em; color: var(--ink); margin: 0 0 32px;
}
.svc-tiles__title em { font-style: italic; color: var(--sage); }
.svc-tiles__intro {
  font-family: var(--sans); font-size: 17px; line-height: 1.7;
  color: var(--ink-soft); margin: 0 auto; max-width: 760px; text-align: center;
}

.svc-tiles__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

/* Each tile is one link: photo, scrim, arrow badge top-right, copy bottom-left. */
.svc-tile {
  position: relative; overflow: hidden; border-radius: 8px;
  min-height: 400px; display: flex; align-items: flex-end;
  text-decoration: none; isolation: isolate;
}
.svc-tile__bg {
  position: absolute; inset: 0; z-index: -2;
  background-size: cover; background-position: center;
  transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
}
/* Scrim is heavy enough for body copy over a photo, not just display type. */
.svc-tile::after {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(37,49,29,0.34) 0%, rgba(37,49,29,0.58) 46%, rgba(37,49,29,0.86) 100%);
  transition: background 0.45s ease;
}
.svc-tile:hover .svc-tile__bg { transform: scale(1.045); }
.svc-tile:hover::after { background: linear-gradient(180deg, rgba(37,49,29,0.42) 0%, rgba(37,49,29,0.64) 46%, rgba(37,49,29,0.9) 100%); }

.svc-tile__arrow {
  position: absolute; top: 24px; right: 24px;
  width: 46px; height: 46px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--cream); color: var(--sage);
  transition: transform 0.4s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.svc-tile:hover .svc-tile__arrow { transform: translate(3px, -3px); }

.svc-tile__body { padding: 34px 34px 32px; max-width: 44ch; }
.svc-tile__title {
  font-family: var(--serif); font-weight: 400; font-size: 34px;
  line-height: 1.1; color: var(--cream); margin: 0 0 12px;
}
.svc-tile__desc {
  font-family: var(--sans); font-size: 16px; line-height: 1.65;
  color: rgba(237, 229, 214, 0.92); margin: 0;
}

.svc-tiles__foot { margin-top: 44px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.svc-tiles__foot > :first-child { justify-self: end; }
.svc-tiles__foot > :last-child { justify-self: start; }

@media (max-width: 900px) {
  .svc-tiles { padding: 0 0 48px; }
  .svc-tiles__inner { padding: 0 16px; }
  .svc-tiles__head { padding: 0 8px; }
  .svc-tiles__head { margin-bottom: 40px; }
  .svc-tiles__title { white-space: normal; }
  .svc-tiles__grid { grid-template-columns: 1fr; gap: 16px; }
  .svc-tile { min-height: 330px; }
  .svc-tile__body { padding: 26px 24px 26px; max-width: none; }
  .svc-tile__title { font-size: 28px; }
  .svc-tile__arrow { top: 18px; right: 18px; width: 42px; height: 42px; }
  .svc-tiles__foot { margin-top: 32px; display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }
  .svc-tiles__foot > :first-child, .svc-tiles__foot > :last-child { justify-self: auto; }
}

/* Nav logo: smaller on phones so it clears the hamburger comfortably.
   Ratio matches the desktop lockup (278x54) so the artwork can't distort. */
@media (max-width: 720px) {
  .nav__logo--img { height: 40px; width: 206px; }
  .nav.scrolled .nav__logo--img { height: 34px; width: 175px; }
}
@media (max-width: 400px) {
  .nav__logo--img { height: 34px; width: 175px; }
  .nav.scrolled .nav__logo--img { height: 30px; width: 154px; }
}

/* Gallery CTAs, centered under the before/after carousel */
.ba__ctas { margin-top: 40px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
@media (max-width: 720px) { .ba__ctas { margin-top: 30px; } }

/* Insurance section CTAs, under the intro copy */
.ins-v2__ctas { margin-top: 28px; display: flex; gap: 12px; flex-wrap: wrap; }

/* ═══════════════ SQUARE CARD CORNERS ═══════════════ */
/* Cards and card-like media panels are square-cornered. Declared last so it
   wins over each component's own radius. Pills, circles (arrows, dots, avatars,
   social icons), form fields, and small badges keep their shapes. */
.svc-tile,
.pc-card,
.aff-card,
.aff-callout__inner,
.rev-card,
.rv-card,
.dv-plan,
.dir-card,
.pr-card,
.dnm-plan,
.dnm-doc__frame,
.pax-signs__card,
.pax-cross__card,
.pax-video,
.ba-card,
.cta-merge__card,
.doc-bio__aside,
.ins-v2__panel,
.ct-form-wrap,
.team-mini__photo,
.team-portrait,
.staff-card__frame,
.doctors__photo,
.core-msg__image,
.office__image,
.hero__image,
.svc-explain__media img,
.svc-approach__media img,
.svc-badge,
.dnm-strip__grid img,
.dnm-visit__photo,
.dnm-map__frame,
.staff-group__img,
.article__fig img {
  border-radius: 0;
}
/* Doctor hero photo used a top-only radius */
.doc-hero__photo img { border-radius: 0; }
@media (max-width: 900px) {
  .doc-hero__photo img { border-radius: 0; }
}

/* Doctors CTAs: between the mobile stack and full desktop the column is
   narrowest, so ease the pill padding to keep the pair on one line. */
@media (min-width: 901px) and (max-width: 1120px) {
  .doctors__cta { padding: 13px 20px; letter-spacing: 0.16em; }
  .doctors__ctas { gap: 10px; }
}

/* Hero headline on phones: size line 1 ("comforting dental care") so it fits the
   column, keeping the headline to the two authored lines instead of orphaning
   "care" on a third. String measures ~8.4em wide; column is 100vw - 48px. */
@media (max-width: 720px) {
  body[data-hero="full"] .hero__title { font-size: clamp(28px, calc(11.6vw - 5.6px), 56px); }
}

/* Smiles From The Heart "What We Offer": the shared 5/6 portrait frame runs
   taller than the copy beside it, so use a shallower ratio for this section. */
.sfth-offer .svc-approach__media img { aspect-ratio: 1 / 1; }
@media (max-width: 900px) {
  .sfth-offer .svc-approach__media img { aspect-ratio: 4 / 3; }
}
