/*
 * Site chrome and shared components (BUILD-BRIEF section 4, Lane F):
 * C1 header, C2 photo hero, C3 title band, C4 curve, C6 section heading,
 * C10 CTA panels, C14 footer, C15 accordion, C16 content kit basics,
 * C17 reveal + counters, plus the Fullscript bar, mobile booking bar,
 * breadcrumbs, social links and star rating. All classes ve-*; tokens only.
 * Page lanes build on these in home.css / pages.css / conditions.css /
 * blog.css / misc.css (loaded after this file).
 */

/* =========================================================== C1 header */
.ve-header {
  position: sticky;
  top: 0;
  z-index: 1800;
  background: var(--c-white);
  transition: box-shadow var(--dur-base) var(--ease-std), background-color var(--dur-base) var(--ease-std);
}
.ve-header.is-stuck { box-shadow: var(--header-line), var(--shadow-card); }

/* Frosted over photo heroes (desktop only; the hero runs under the header). */
@media (min-width: 1024px) {
  body.ve-has-photo-hero .ve-header:not(.is-stuck):not(.is-open) {
    background: rgb(255 255 255 / 0.88);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
  }
}

/* utility row */
.ve-utility {
  height: var(--utility-h);
  font-size: var(--fs-nav);
  color: var(--c-text);
  transition: height var(--dur-base) var(--ease-std), opacity var(--dur-base) var(--ease-std);
  overflow: hidden;
}
.ve-utility-inner {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  height: var(--utility-h);
}
.ve-utility ul { display: flex; align-items: center; gap: 0; list-style: none; margin: 0; padding: 0; }
.ve-utility li { margin: 0; display: flex; align-items: center; }
.ve-utility li + li::before { content: ''; width: 1px; height: 14px; margin: 0 12px; background: var(--c-line-strong); }
.ve-utility a { color: var(--c-text); text-decoration: none; padding: 6px 0; }
.ve-utility a:hover { color: var(--c-pink); }
.ve-header.is-stuck .ve-utility { height: 0; opacity: 0; }

/* nav row */
.ve-navbar-inner {
  display: flex;
  align-items: center;
  gap: 16px;
  height: calc(var(--header-h) - var(--utility-h));
  transition: height var(--dur-base) var(--ease-std);
}
.ve-header.is-stuck .ve-navbar-inner { height: var(--header-h-stuck); }
.ve-logo { display: inline-flex; align-items: center; flex: 0 0 auto; margin-right: auto; }
.ve-logo img { display: block; width: 170px; height: auto; transition: width var(--dur-base) var(--ease-std); }
.ve-header.is-stuck .ve-logo img { width: 136px; }

.ve-nav { display: block; }
.ve-menu { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.ve-menu > li { position: relative; margin: 0; }
.ve-menu-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 10px 10px;
  color: var(--c-ink);
  font-size: var(--fs-nav);
  font-weight: 500;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  border-radius: 4px;
  transition: color var(--dur-fast) var(--ease-std);
}
.ve-menu-link svg { width: 14px; height: 14px; opacity: 0.6; transition: transform var(--dur-fast) var(--ease-std); }
/* Deep pink, not --c-pink: the header is 88% white, so over a navy photo hero
   the effective ground is ~#e1e8ed where --c-pink is only 4.0:1; pink-deep
   stays above 6:1 on it (WCAG 1.4.3). */
.ve-menu-link:hover, .ve-menu > li.is-active > .ve-menu-link, .ve-menu > li.is-open > .ve-menu-link { color: var(--c-pink-deep); text-decoration: none; }
.ve-menu > li.is-open > .ve-menu-link svg { transform: rotate(180deg); }

.ve-submenu {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 250px;
  list-style: none;
  margin: 0;
  padding: 10px;
  background: var(--c-white);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card), 0 12px 32px rgb(0 0 0 / 0.08);
  z-index: 1900;
}
.ve-menu > li.is-open > .ve-submenu { display: block; }
/* keep the hover bridge between link and panel */
.ve-menu > li.is-open::after { content: ''; position: absolute; left: 0; right: 0; top: 100%; height: 8px; }
.ve-submenu li { margin: 0; }
.ve-submenu a {
  display: block;
  padding: 8px 12px;
  border-radius: 6px;
  color: var(--c-ink);
  font-size: var(--fs-small);
  font-weight: 400;
  text-decoration: none;
  transition: background-color var(--dur-fast) var(--ease-std), color var(--dur-fast) var(--ease-std);
}
.ve-submenu a:hover, .ve-submenu li.is-active > a { background: var(--c-pink-tint); color: var(--c-pink-deep); text-decoration: none; }

/* conditions mega panel */
.ve-submenu--mega {
  left: auto;
  right: -160px;
  width: min(880px, calc(100vw - 2 * var(--gutter)));
  max-height: min(70vh, 640px);
  overflow-y: auto;
  padding: 18px;
}
.ve-cond-search { display: block; margin: 0 0 10px; }
.ve-cond-search input[type='search'] { min-height: 42px; }
.ve-cond-count { display: block; margin: 6px 0 8px 2px; font-size: var(--fs-small); color: var(--c-muted); }
.ve-cond-group { margin-bottom: 10px; }
.ve-cond-group-label {
  display: block;
  margin: 8px 12px 4px;
  color: var(--c-pink);
  font-size: 13px;
  font-weight: 600;
}
.ve-cond-group ul {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0 8px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ve-cond-group ul a { padding: 5px 12px; font-size: 14px; }
.ve-cond-all a { font-weight: 500; color: var(--c-pink); }

/* right-hand actions */
.ve-nav-actions { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.ve-nav-search {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--c-ink);
  cursor: pointer;
  transition: background-color var(--dur-fast) var(--ease-std), color var(--dur-fast) var(--ease-std);
}
.ve-nav-search:hover { background: var(--c-pink-tint); color: var(--c-pink); }
.ve-nav-search svg { width: 20px; height: 20px; }
.ve-nav-secondary { white-space: nowrap; }
.ve-nav-book { white-space: nowrap; }
.ve-nav-book-icon, .ve-nav-toggle { display: none; }

@media (max-width: 1279px) {
  .ve-menu-link { padding: 10px 7px; font-size: 13px; }
  .ve-logo img { width: 150px; }
  .ve-nav-actions { gap: 6px; }
}
@media (max-width: 1199px) {
  .ve-nav-secondary { display: none; }
}
@media (max-width: 1099px) {
  .ve-menu-link { padding: 10px 5px; }
  .ve-logo img { width: 136px; }
}

/* mobile (<1024): logo + booking icon + hamburger, solid white from first paint */
@media (max-width: 1023px) {
  .ve-utility { display: none; }
  .ve-nav { display: none; }
  .ve-nav-search { display: none; }
  .ve-nav-secondary { display: none; }
  .ve-nav-book { display: none; }
  .ve-logo img { width: 140px; }
  .ve-header.is-stuck .ve-logo img { width: 128px; }
  .ve-navbar-inner { height: var(--header-h); }
  .ve-nav-book-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    color: var(--c-pink);
    background: var(--c-pink-tint);
    text-decoration: none;
  }
  .ve-nav-book-icon:hover { background: var(--c-pink); color: var(--c-white); }
  .ve-nav-book-icon svg { width: 22px; height: 22px; }
  .ve-nav-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 44px;
    padding: 0 6px 0 10px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--c-ink);
    font-size: var(--fs-nav);
    font-weight: 500;
    cursor: pointer;
  }
  .ve-nav-toggle svg { width: 26px; height: 26px; }
}
@media (max-width: 380px) {
  .ve-logo img { width: 124px; }
  .ve-nav-toggle span { display: none; }
}

/* mobile panel */
.ve-mobile-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: var(--ve-panel-top, var(--header-h));
  background: rgb(28 28 28 / 0.35);
  z-index: 1700;
}
.ve-mobile-panel {
  position: fixed;
  left: 0;
  right: 0;
  top: var(--ve-panel-top, var(--header-h));
  bottom: 0;
  z-index: 1750;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--c-white);
  padding: 8px var(--gutter) 48px;
  -webkit-overflow-scrolling: touch;
}
.ve-mobile-menu { list-style: none; margin: 0; padding: 0; }
.ve-mobile-menu > li { margin: 0; border-bottom: 1px solid var(--c-line); }
.ve-mobile-row { display: flex; align-items: stretch; }
.ve-mobile-row > a {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  min-height: 52px;
  padding: 10px 4px;
  color: var(--c-ink);
  font-size: 17px;
  font-weight: 500;
  text-decoration: none;
}
.ve-mobile-row > a:hover, .ve-mobile-menu li.is-active > .ve-mobile-row > a { color: var(--c-pink); text-decoration: none; }
.ve-mobile-row > a, .ve-mobile-toggle { position: relative; z-index: 1; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.ve-mobile-sub .ve-cond-all--top { margin: 2px 0 8px; }
.ve-mobile-sub .ve-cond-all--top a { font-weight: 600; color: var(--c-pink); min-height: 44px; display: flex; align-items: center; }
.ve-mobile-toggle {
  flex: 0 0 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  color: var(--c-pink);
  cursor: pointer;
}
.ve-mobile-toggle svg { width: 22px; height: 22px; }
.ve-mobile-sub { list-style: none; margin: 0; padding: 0 0 10px 14px; }
.ve-mobile-sub li { margin: 0; }
.ve-mobile-sub a {
  display: block;
  min-height: 44px;
  padding: 10px 4px;
  color: var(--c-text);
  font-size: 16px;
  text-decoration: none;
}
.ve-mobile-sub a:hover, .ve-mobile-sub li.is-active > a { color: var(--c-pink); }
.ve-mobile-sub .ve-cond-group-label { margin: 10px 4px 2px; }
.ve-mobile-sub .ve-cond-group ul { grid-template-columns: 1fr; }
.ve-mobile-sub .ve-cond-group ul a { padding: 8px 4px; min-height: 40px; }
.ve-mobile-cta { display: grid; gap: 12px; padding: 24px 0 8px; }
.ve-mobile-cta .ve-btn { width: 100%; }
.ve-mobile-meta { display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: center; padding: 12px 0; color: var(--c-muted); font-size: var(--fs-small); }
.ve-mobile-meta a { color: var(--c-ink); }

/* Body scroll lock while the panel is open */
body.ve-menu-open { overflow: hidden; }

/* ======================================================= C4 curve divider */
.ve-curve {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  display: block;
  width: 100%;
  height: var(--curve-h);
  color: var(--c-white);
  pointer-events: none;
  z-index: 2;
}
.ve-curve svg { display: block; width: 100%; height: 100%; }
.ve-curve--flip { bottom: auto; top: -1px; transform: scaleY(-1); }
.ve-curve--static { position: relative; bottom: auto; margin-top: -1px; }

/* ========================================================= C2 photo hero */
.ve-photo-hero {
  position: relative;
  display: grid;
  align-items: center;
  min-height: 440px;
  overflow: hidden;
  isolation: isolate;
  background: var(--c-ink);
  color: var(--c-white);
  padding: 48px 0 calc(var(--curve-h) + 56px);
}
/* Home: the faces live in the upper half of the frame, so the headline,
   buttons and proof line sit in the lower half over the firm end of the navy
   wash (Premier likewise sets its H1 under the faces, over the torsos). */
.ve-photo-hero--home {
  /* Height grows with width because the faces do: the portrait source always
     spans the full width, so its faces scale with the viewport. 31.6vw keeps
     the baby's chin above the headline block (about 360px tall) at every width
     from 768 to 2560; the photo's own vertical offset is set below. */
  min-height: calc(31.6vw + 360px);
  align-items: end;
  padding-bottom: calc(var(--curve-h) + 64px);
}
@media (min-width: 768px) {
  .ve-photo-hero--home .ve-photo-hero-img { object-position: 50% -19vw; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  /* tablets: the headline block is proportionally taller, so the veil firms up sooner */
  .ve-photo-hero--home .ve-photo-hero-scrim { background: linear-gradient(180deg, rgb(3 48 79 / 0.16) 0%, rgb(3 48 79 / 0.06) 24%, rgb(3 48 79 / 0.22) 40%, rgb(3 48 79 / 0.70) 54%, rgb(3 48 79 / 0.84) 72%, rgb(3 48 79 / 0.88) 100%); }
}
/* 1024-1279: the frosted header covers the top 120px of a narrower photo, so
   the photo sits lower and the hero grows to keep the chin above the H1 */
@media (min-width: 1024px) and (max-width: 1279px) {
  .ve-photo-hero--home { min-height: calc(36vw + 360px); }
  .ve-photo-hero--home .ve-photo-hero-img { object-position: 50% -15vw; }
}
.ve-photo-hero--page { min-height: 440px; }
@media (min-width: 1024px) {
  /* run the photo under the frosted header */
  .ve-photo-hero { margin-top: calc(-1 * var(--header-h)); padding-top: calc(var(--header-h) + 48px); }
  .ve-photo-hero--page { min-height: calc(440px + var(--header-h)); }
}
@media (max-width: 767px) {
  .ve-photo-hero--home { min-height: 640px; padding-bottom: calc(var(--curve-h) + 56px); }
  .ve-photo-hero--page { min-height: 380px; }
}
.ve-photo-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--focal, 50% 40%);
  z-index: -2;
}
.ve-photo-hero-scrim {
  position: absolute;
  inset: 0;
  background: var(--wash-hero);
  pointer-events: none;
  z-index: -1;
}
/* phone framing + scrim: written after the base rules above so they win at
   equal specificity (an earlier copy of these two lines was silently overridden) */
@media (max-width: 767px) {
  .ve-photo-hero-img { object-position: var(--focal-mobile, var(--focal, 50% 40%)); }
  .ve-photo-hero-scrim { background: var(--wash-hero-mobile, var(--wash-hero)); }
}
.ve-photo-hero--page .ve-photo-hero-scrim { background: var(--wash-hero-page); }
@media (min-width: 768px) and (max-width: 1199px) {
  .ve-photo-hero--page .ve-photo-hero-scrim { background: var(--wash-hero-page-tablet); }
}
@media (max-width: 767px) {
  .ve-photo-hero--page .ve-photo-hero-scrim { background: var(--wash-hero-page-mobile); }
}
.ve-photo-hero--page .ve-photo-hero-content .ve-eyebrow { color: var(--c-pink-light); text-shadow: none; }
.ve-photo-hero--page .ve-photo-hero-title { max-width: 16ch; }
.ve-photo-hero--page .ve-photo-hero-sub { max-width: 44ch; }
/* Split photo hero (team page): a group photo has faces across its middle, so
   on desktop the photo takes the right 60% and fades into the navy ground the
   title sits on; below 1024 the title drops under the faces. */
@media (min-width: 1024px) {
  .ve-photo-hero--split .ve-photo-hero-img { left: auto; width: 60%; object-position: 30% 28%; }
  .ve-photo-hero--split .ve-photo-hero-scrim { background: linear-gradient(90deg, var(--c-navy-deep) 0%, var(--c-navy-deep) 40%, rgb(3 48 79 / 0.6) 48%, rgb(3 48 79 / 0.12) 64%, rgb(3 48 79 / 0) 80%); }
}
@media (max-width: 1023px) {
  .ve-photo-hero--split { align-items: end; min-height: 560px; }
  .ve-photo-hero--split .ve-photo-hero-img { object-position: 36% 24%; }
  .ve-photo-hero--split .ve-photo-hero-scrim { background: linear-gradient(180deg, rgb(3 48 79 / 0.08) 0%, rgb(3 48 79 / 0.08) 34%, rgb(3 48 79 / 0.72) 54%, rgb(3 48 79 / 0.9) 100%); }
}
@media (max-width: 767px) {
  .ve-photo-hero--split { min-height: 500px; }
}
/* Side photo hero (home): for a photo that is too small to run full bleed and
   has faces across its whole width (the three doctors). The text column sits
   on solid navy and the photo never goes under it. From 1024 the photo fills
   the space right of the text column (never wider than its 1133px source),
   starts below the frosted header, is cropped from the bottom (a little from
   the left at most) and fades into the navy on its left edge. Below 1024 the
   photo comes first, full width, and the text follows on navy. */
.ve-photo-hero.ve-photo-hero--side {
  --side-text: 540px;
  --side-gap: 48px;
  --side-photo-w: min(1133px, calc(100vw - max(var(--gutter), (100vw - var(--container)) / 2) - var(--side-text) - var(--side-gap)));
  background: var(--c-navy-deep);
}
.ve-photo-hero--side .ve-photo-hero-scrim { display: none; }
.ve-photo-hero--side .ve-photo-hero-title,
.ve-photo-hero--side .ve-photo-hero-sub { text-shadow: none; }
.ve-photo-hero--side .ve-photo-hero-sub { color: rgb(255 255 255 / 0.9); }
@media (min-width: 1024px) and (max-width: 1279px) {
  .ve-photo-hero.ve-photo-hero--side { --side-text: 420px; --side-gap: 36px; }
}
@media (min-width: 1024px) {
  .ve-photo-hero.ve-photo-hero--side {
    min-height: calc(var(--header-h) + var(--side-photo-w) / 1.3);
    align-items: center;
    padding-bottom: calc(var(--curve-h) + 72px);
  }
  .ve-photo-hero.ve-photo-hero--side .ve-photo-hero-img {
    inset: var(--header-h) 0 auto auto;
    width: var(--side-photo-w);
    /* never taller than 1133:1000 (so at most ~5% comes off the left edge,
       clear of Dr. John) and never shorter than 1.3:1 (faces stay whole) */
    height: clamp(calc(var(--side-photo-w) / 1.3), calc(100% - var(--header-h)), calc(var(--side-photo-w) / 1.133));
    object-position: 100% 6%;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%), linear-gradient(180deg, #000 86%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-image: linear-gradient(90deg, transparent 0, #000 6%), linear-gradient(180deg, #000 86%, transparent 100%);
    mask-composite: intersect;
  }
  .ve-photo-hero--side .ve-photo-hero-title,
  .ve-photo-hero--side .ve-photo-hero-sub { max-width: var(--side-text); }
  .ve-photo-hero--side .ve-scroll-cue {
    left: max(var(--gutter), (100% - var(--container)) / 2);
    transform: translateX(-8px);
  }
}
@media (max-width: 1023px) {
  .ve-photo-hero.ve-photo-hero--side {
    min-height: 0;
    padding-top: 0;
    align-items: start;
    padding-bottom: calc(var(--curve-h) + 72px);
  }
  .ve-photo-hero.ve-photo-hero--side .ve-photo-hero-img {
    position: relative;
    inset: auto;
    width: 100%;
    height: auto;
    aspect-ratio: 1133 / 872;
    object-position: 50% 6%;
    -webkit-mask-image: linear-gradient(180deg, #000 82%, transparent 100%);
    mask-image: linear-gradient(180deg, #000 82%, transparent 100%);
  }
  .ve-photo-hero--side .ve-photo-hero-content { padding-top: 8px; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .ve-photo-hero.ve-photo-hero--side .ve-photo-hero-img { aspect-ratio: 1133 / 760; }
  .ve-photo-hero--side .ve-photo-hero-title { max-width: 18ch; }
}
.ve-photo-hero-content { position: relative; z-index: 1; text-align: center; }
.ve-photo-hero-content--left { text-align: left; }
.ve-photo-hero-content .ve-eyebrow { color: var(--c-white); text-shadow: 0 1px 8px rgb(3 48 79 / 0.5); }
.ve-photo-hero-title {
  margin: 0 auto;
  max-width: 22ch;
  color: var(--c-white);
  font-size: var(--fs-hero);
  font-weight: 500;
  line-height: var(--lh-tight);
  letter-spacing: 1.5px;
  text-wrap: balance;
  text-shadow: 0 2px 18px rgb(3 48 79 / 0.55), 0 1px 2px rgb(3 48 79 / 0.35);
}
.ve-photo-hero-content--left .ve-photo-hero-title { margin-left: 0; }
.ve-photo-hero--page .ve-photo-hero-title { font-size: var(--fs-h1); font-weight: 300; letter-spacing: normal; }
.ve-photo-hero-sub {
  max-width: 60ch;
  margin: 18px auto 0;
  font-size: var(--fs-lead);
  line-height: var(--lh-lead);
  text-shadow: 0 1px 10px rgb(3 48 79 / 0.6);
}
.ve-photo-hero-content--left .ve-photo-hero-sub { margin-left: 0; }
.ve-photo-hero-actions { margin-top: 30px; justify-content: center; }
.ve-photo-hero-content--left .ve-photo-hero-actions { justify-content: flex-start; }
.ve-photo-hero .ve-crumbs { margin-bottom: 14px; color: rgb(255 255 255 / 0.85); }
.ve-photo-hero .ve-crumbs a, .ve-photo-hero .ve-crumbs [aria-current] { color: var(--c-white); }
@media (max-width: 767px) {
  .ve-photo-hero-title { letter-spacing: 1px; }
  .ve-photo-hero-actions .ve-btn:nth-child(2) { display: none; }
}
.ve-scroll-cue {
  position: absolute;
  left: 50%;
  bottom: calc(var(--curve-h) + 10px);
  z-index: 3;
  display: inline-flex;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  transform: translateX(-50%);
  color: var(--c-white);
  opacity: 0.9;
  filter: drop-shadow(0 1px 4px rgb(3 48 79 / 0.6));
}
.ve-scroll-cue svg { width: 30px; height: 30px; }
.ve-scroll-cue:hover { color: var(--c-white); opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
  .ve-scroll-cue svg { animation: ve-bob 2s var(--ease-std) infinite; }
}
@keyframes ve-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

/* =========================================================== C3 title band */
.ve-band {
  position: relative;
  background: var(--c-navy-wash);
  padding: 34px 0 calc(var(--curve-h) + 14px);
}
.ve-band--slim { padding: 22px 0 var(--curve-h); }
.ve-band .ve-crumbs { margin-bottom: 10px; }
.ve-band-title { margin: 0; max-width: 24ch; }
.ve-band-lead { max-width: 62ch; margin: 8px 0 0; font-size: var(--fs-lead); line-height: var(--lh-lead); color: var(--c-text); }
.ve-band .ve-eyebrow { margin-bottom: 6px; }
@media (max-width: 767px) {
  .ve-band { padding-top: 22px; }
}

/* ========================================================== breadcrumbs */
.ve-crumbs { font-size: var(--fs-small); color: var(--c-muted); }
.ve-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 4px; list-style: none; margin: 0; padding: 0; }
.ve-crumbs li { display: inline-flex; align-items: center; margin: 0; }
.ve-crumbs a { color: var(--c-pink); }
.ve-crumbs svg { width: 14px; height: 14px; margin: 0 2px; opacity: 0.6; }
.ve-crumbs [aria-current] { color: var(--c-ink); font-weight: 500; }

/* ====================================================== C6 section heading */
.ve-heading { margin: 0 0 var(--block-gap); }
.ve-heading--center { margin-left: auto; margin-right: auto; text-align: center; }
.ve-heading h1, .ve-heading h2, .ve-heading h3 { margin: 0; }
.ve-heading-intro { max-width: 62ch; margin: 16px 0 0; font-size: var(--fs-lead); line-height: var(--lh-lead); color: var(--c-text); }
.ve-heading--center .ve-heading-intro { margin-left: auto; margin-right: auto; }
.ve-heading--light, .ve-heading--light h1, .ve-heading--light h2, .ve-heading--light h3, .ve-heading--light .ve-eyebrow, .ve-heading--light .ve-heading-intro { color: var(--c-white); }

/* ======================================================== C10 CTA panels */
.ve-cta {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-card);
  background: var(--grad-brand);
  color: var(--c-white);
  isolation: isolate;
}
.ve-cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(rgb(255 255 255 / 0.06) 1px, transparent 1.2px) 0 0 / 14px 14px;
  pointer-events: none;
  z-index: -1;
}
.ve-cta h2, .ve-cta h3, .ve-cta p { color: var(--c-white); }
.ve-cta .ve-eyebrow { color: var(--c-gold); letter-spacing: 0.06em; }
.ve-cta--inline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  max-width: 1180px;
  margin-left: auto;
  padding: 34px 48px;
}
.ve-cta--inline .ve-cta-text { margin: 0; max-width: 56ch; font-size: var(--fs-lead); line-height: 1.55; }
.ve-cta--inline .ve-btn { flex: 0 0 auto; min-width: 240px; }
.ve-cta--large { text-align: center; padding: clamp(48px, 6vw, 72px) var(--gutter); }
.ve-cta--large h2 { margin: 0 auto 14px; max-width: 24ch; }
.ve-cta--large .ve-cta-text { max-width: 60ch; margin: 0 auto 28px; font-size: var(--fs-lead); line-height: var(--lh-lead); }
.ve-cta-proof { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px; margin-top: 22px; font-size: var(--fs-small); font-weight: 500; }
.ve-cta-wrap { padding: calc(var(--section-y) * 0.5) 0; }
@media (max-width: 767px) {
  .ve-cta--inline { flex-direction: column; align-items: stretch; text-align: center; padding: 28px 22px; }
  .ve-cta--inline .ve-cta-text { max-width: none; }
  .ve-cta--inline .ve-btn { min-width: 0; }
}

/* ============================================================ star rating */
.ve-stars { display: inline-flex; align-items: center; gap: 2px; color: var(--c-gold); line-height: 1; }
.ve-stars svg { width: 18px; height: 18px; }
.ve-stars--lg svg { width: 24px; height: 24px; }

/* =========================================================== C15 accordion */
.ve-acc { list-style: none; margin: 0; padding: 0; }
.ve-acc { border-top: 1px solid var(--c-line); }
.ve-acc-item { margin: 0; border-bottom: 1px solid var(--c-line); background: transparent; }
.ve-acc-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  padding: 20px 4px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--c-navy);
  font-size: var(--fs-h3);
  font-weight: 500;
  line-height: 1.3;
  text-align: left;
  cursor: pointer;
  transition: background-color var(--dur-fast) var(--ease-std);
}
.ve-acc-trigger:hover { color: var(--c-pink-deep); }
.ve-acc-trigger:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.ve-acc-icon {
  flex: 0 0 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 2px solid var(--c-pink);
  border-radius: 50%;
  color: var(--c-pink);
}
.ve-acc-icon svg { width: 16px; height: 16px; }
.ve-acc-panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur-base) var(--ease-std); }
.ve-acc-item.is-open > .ve-acc-panel { grid-template-rows: 1fr; }
.ve-acc-panel-inner { overflow: hidden; visibility: hidden; transition: visibility 0s var(--ease-std) var(--dur-base); }
.ve-acc-item.is-open > .ve-acc-panel > .ve-acc-panel-inner { visibility: visible; transition-delay: 0s; }
.ve-acc-body { padding: 0 56px 24px 4px; color: var(--c-text); }
.ve-acc-body > :last-child { margin-bottom: 0; }
@media (max-width: 767px) {
  .ve-acc-trigger { padding: 16px 2px; font-size: 18px; }
  .ve-acc-body { padding: 0 2px 18px; }
}

/* ===================================================== C16 content kit */
.ve-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
}
.ve-row--reverse > .ve-row-media { order: -1; }
.ve-row-media img { display: block; width: 100%; height: auto; border-radius: var(--radius-img); object-fit: cover; }
.ve-row-text > :first-child { margin-top: 0; }
.ve-row-text > :last-child { margin-bottom: 0; }
.ve-row-text h2 { margin-bottom: 14px; }
.ve-row + .ve-row { margin-top: var(--section-y); }
@media (max-width: 767px) {
  .ve-row { grid-template-columns: 1fr; gap: 24px; }
  .ve-row--reverse > .ve-row-media, .ve-row > .ve-row-media { order: -1; }
}

.ve-photo-frame { display: block; overflow: hidden; border-radius: var(--radius-img); background: var(--c-surface); }
.ve-photo-frame img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-base) var(--ease-std); }
a:hover .ve-photo-frame img, .ve-photo-frame:hover img { transform: scale(1.03); }
.ve-photo-frame--4x3 { aspect-ratio: 4 / 3; }
.ve-photo-frame--16x10 { aspect-ratio: 16 / 10; }
.ve-photo-frame--portrait { aspect-ratio: 4 / 5; }
.ve-photo-frame--square { aspect-ratio: 1; }

.ve-quote {
  position: relative;
  margin: var(--block-gap) 0;
  padding: 26px 28px;
  border-radius: var(--radius-card);
  background: var(--c-pink-tint);
  color: var(--c-ink);
}
.ve-quote .ve-stars { margin-bottom: 12px; }
.ve-quote p { margin: 0; font-size: var(--fs-lead); line-height: var(--lh-lead); }
.ve-quote cite { display: block; margin-top: 12px; font-style: normal; font-size: var(--fs-small); color: var(--c-muted); }

.ve-byline {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px 8px 8px;
  border: 1px solid var(--c-line);
  border-radius: 999px;
  background: var(--c-white);
  font-size: var(--fs-small);
  color: var(--c-text);
}
.ve-byline img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; }
.ve-byline strong { color: var(--c-ink); font-weight: 500; }

/* Related / quick links: a plain list (Zach 09-28: "just lists", never a box
   around each item). Text links on hairline separators, arrow in pink. */
.ve-related { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0 40px; list-style: none; margin: 0; padding: 0; }
.ve-related li { margin: 0; border-bottom: 1px solid var(--c-line); }
.ve-related a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 52px;
  padding: 12px 2px;
  color: var(--c-ink);
  font-weight: 500;
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-std);
}
.ve-related a:hover { color: var(--c-pink); text-decoration: none; }
main .ve-related li a, main .ve-related li a:hover { text-decoration: none; }
.ve-related a svg { flex: 0 0 auto; width: 18px; height: 18px; color: var(--c-pink); transition: transform var(--dur-base) var(--ease-out); }
.ve-related a:hover svg { transform: translateX(4px); }

/* stats box basics (C12; home.css may refine) */
.ve-stats { border: 1px solid var(--c-line); border-radius: var(--radius-card); padding: clamp(32px, 5vw, 56px) clamp(20px, 4vw, 48px); background: var(--c-white); }
.ve-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-top: var(--block-gap); text-align: center; }
.ve-stat-number { display: block; color: var(--c-navy); font-size: var(--fs-stat); font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.ve-stat-label { display: block; margin-top: 10px; color: var(--c-text); font-size: var(--fs-small); line-height: 1.4; }
@media (max-width: 767px) { .ve-stats-grid { grid-template-columns: repeat(2, 1fr); } }

/* ========================================================== C17 reveal */
@media (prefers-reduced-motion: no-preference) {
  .ve-reveal[data-state='pending'] { opacity: 0; transform: translateY(var(--reveal-y)); }
  .ve-reveal--left[data-state='pending'] { transform: translateX(calc(-1 * var(--reveal-x))); }
  .ve-reveal--right[data-state='pending'] { transform: translateX(var(--reveal-x)); }
  .ve-reveal[data-state='in'] {
    opacity: 1;
    transform: none;
    transition: opacity var(--dur-reveal) var(--ease-out), transform var(--dur-reveal) var(--ease-out);
    transition-delay: var(--reveal-delay, 0ms);
  }
  .ve-reveal-group > :nth-child(2) { --reveal-delay: var(--stagger); }
  .ve-reveal-group > :nth-child(3) { --reveal-delay: calc(var(--stagger) * 2); }
  .ve-reveal-group > :nth-child(4) { --reveal-delay: calc(var(--stagger) * 3); }
  .ve-reveal-group > :nth-child(5) { --reveal-delay: calc(var(--stagger) * 4); }
  .ve-reveal-group > :nth-child(6) { --reveal-delay: calc(var(--stagger) * 5); }
}

/* ============================================================ C14 footer */
.ve-footer { position: relative; background: var(--c-surface); color: var(--c-text); padding: var(--section-y) 0 28px; }
/* the signature pink-to-gold hairline across the top of the footer */
.ve-footer::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--rule-brand); pointer-events: none; }
.ve-footer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.ve-footer-col h2 { display: flex; align-items: center; gap: 12px; margin: 0 0 18px; font-size: 18px; font-weight: 600; color: var(--c-ink); }
.ve-footer-col h2 svg { width: 24px; height: 24px; color: var(--c-pink); }
.ve-footer-col p { margin: 0 0 10px; }
.ve-footer-col a:not(.ve-btn) { color: var(--c-ink); }
.ve-footer-col a:not(.ve-btn):hover { color: var(--c-pink); }
.ve-footer-contact strong { font-weight: 500; }
.ve-footer-contact .ve-btn { margin-top: 8px; min-width: 200px; }
.ve-footer-buttons { display: grid; gap: 10px; justify-items: start; margin: 14px 0 18px; }
.ve-footer-hours { list-style: none; margin: 0; padding: 0; }
.ve-footer-hours li { display: grid; grid-template-columns: 96px 1fr; gap: 8px; margin: 0 0 6px; font-size: var(--fs-small); }
.ve-footer-hours li span:first-child { font-weight: 500; color: var(--c-ink); }
.ve-footer-hours li.is-closed span:last-child { color: var(--c-muted); }
.ve-footer-address address { font-style: normal; line-height: 1.6; }
.ve-footer-map { margin-top: 14px; }
.ve-footer-map-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 160px;
  padding: 16px;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-card);
  background: var(--c-white);
  color: var(--c-pink);
  font-weight: 500;
  cursor: pointer;
  transition: border-color var(--dur-base) var(--ease-std), background-color var(--dur-base) var(--ease-std);
}
.ve-footer-map-btn:hover { border-color: var(--c-pink); background: var(--c-pink-tint); }
.ve-footer-map iframe { display: block; width: 100%; height: 220px; border: 0; border-radius: var(--radius-card); }
.ve-footer-map-link { display: inline-block; margin-top: 8px; font-size: var(--fs-small); }
.ve-footer-bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 32px;
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid var(--c-line);
}
.ve-footer-logo img { display: block; width: 150px; height: auto; }
.ve-footer-legal { display: flex; flex-wrap: wrap; gap: 6px 18px; list-style: none; margin: 0; padding: 0; font-size: var(--fs-small); }
.ve-footer-legal li { margin: 0; }
.ve-footer-legal a { color: var(--c-text); }
.ve-footer-legal a:hover { color: var(--c-pink); }
.ve-footer-quick { display: flex; flex-wrap: wrap; gap: 6px 18px; list-style: none; margin: 18px 0 0; padding: 0; font-size: var(--fs-small); }
.ve-footer-quick li { margin: 0; }
.ve-footer-quick a { color: var(--c-ink); }
.ve-footer-quick a:hover { color: var(--c-pink); }
.ve-footer-fine { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 24px; margin-top: 18px; font-size: var(--fs-small); color: var(--c-muted); }
.ve-footer-fine p { margin: 0; }
@media (max-width: 1023px) {
  .ve-footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1023px) {
  /* 44px tap targets: the visible text stays small, the hit area grows */
  .ve-footer-legal, .ve-footer-quick { gap: 0 18px; }
  .ve-footer-legal a, .ve-footer-quick a, .ve-footer-map-link, .ve-footer-contact p > a, .ve-footer-fine a { display: inline-block; padding: 10px 0; }
  .ve-footer-contact p { margin-bottom: 0; }
  .ve-footer-quick { margin-top: 8px; }
}
@media (max-width: 767px) {
  .ve-footer-grid { grid-template-columns: 1fr; gap: 32px; text-align: center; }
  .ve-footer-col h2 { justify-content: center; }
  .ve-footer-buttons { justify-items: center; }
  .ve-footer-hours li { grid-template-columns: 1fr; gap: 0; margin-bottom: 10px; }
  .ve-footer-bottom, .ve-footer-fine { flex-direction: column; text-align: center; }
  .ve-footer-legal, .ve-footer-quick { justify-content: center; }
  .ve-footer-fine .ve-social-row { justify-content: center; gap: 6px; }
}

/* ========================================================== social links */
.ve-social-row { display: inline-flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ve-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--c-line-strong);
  border-radius: 50%;
  color: var(--c-ink);
  text-decoration: none;
  transition: background-color var(--dur-base) var(--ease-std), color var(--dur-base) var(--ease-std), border-color var(--dur-base) var(--ease-std);
}
.ve-social:hover { background: var(--c-pink); border-color: var(--c-pink); color: var(--c-white); }
.ve-social svg { width: 18px; height: 18px; }

/* ====================================================== Fullscript bar */
.fullscript-promo-banner {
  position: relative;
  z-index: 1790;
  width: 100%;
  border-bottom: 1px solid var(--c-line);
  background: var(--c-white);
  color: var(--c-text);
}
.fullscript-promo-inner {
  display: flex;
  min-height: 38px;
  max-width: calc(var(--container-wide) + 2 * var(--gutter));
  margin: 0 auto;
  padding: 5px 48px 5px var(--gutter);
  align-items: center;
  justify-content: center;
  gap: 14px;
}
.fullscript-promo-copy { display: flex; min-width: 0; align-items: baseline; gap: 6px; font-size: 14px; line-height: 1.3; white-space: nowrap; }
.fullscript-promo-copy strong { color: var(--c-pink); font-weight: 600; }
.fullscript-promo-copy > span { overflow: hidden; min-width: 0; text-overflow: ellipsis; }
.fullscript-promo-link, .fullscript-promo-link:visited {
  display: inline-flex;
  min-height: 28px;
  padding: 0 12px;
  align-items: center;
  border: 1px solid var(--c-pink);
  border-radius: var(--radius-btn);
  color: var(--c-pink);
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--dur-fast) var(--ease-std), color var(--dur-fast) var(--ease-std);
}
/* 44px tap targets (the visible pill stays 28px, the close circle 32px):
   an invisible hit area extends past each control. */
.fullscript-promo-link { position: relative; }
.fullscript-promo-link::after { content: ''; position: absolute; inset: -8px -4px; }
.fullscript-promo-close::after { content: ''; position: absolute; inset: -6px; border-radius: 50%; }
.fullscript-promo-link:hover, .fullscript-promo-link:focus-visible { background: var(--c-pink); color: var(--c-white); text-decoration: none; }
.fullscript-promo-close {
  position: absolute;
  top: 50%;
  right: 10px;
  width: 32px;
  height: 32px;
  padding: 0;
  transform: translateY(-50%);
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--c-muted);
  cursor: pointer;
  font: 500 22px/1 var(--font-sans);
}
.fullscript-promo-close:hover { background: var(--c-pink-tint); color: var(--c-pink); }
@media (max-width: 1023px) {
  /* tablet: let the copy wrap to two lines instead of truncating against the button */
  .fullscript-promo-inner { gap: 18px; padding-right: 52px; }
  .fullscript-promo-copy { flex-wrap: wrap; row-gap: 0; white-space: normal; }
  .fullscript-promo-copy > span { overflow: visible; text-overflow: clip; }
}
@media (max-width: 640px) {
  /* 44px tall on phones so the promo link and close hit areas fit inside it */
  .fullscript-promo-inner { min-height: 44px; padding: 5px 44px 5px 12px; gap: 10px; }
  .fullscript-promo-copy > span { display: none; }
  .fullscript-promo-close { right: 6px; }
}

/* ================================================== mobile booking bar */
.mobile-cta-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 900;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px var(--gutter) calc(8px + env(safe-area-inset-bottom, 0px));
  background: var(--c-white);
  box-shadow: 0 -1px 0 rgb(0 0 0 / 0.1), 0 -4px 12px rgb(0 0 0 / 0.06);
  transform: translateY(100%);
  transition: transform var(--dur-base) var(--ease-std);
}
.mobile-cta-bar.is-visible { transform: translateY(0); }
.mobile-cta-bar .ve-btn { flex: 1 1 0; min-height: 46px; padding-left: 12px; padding-right: 12px; }
body.ve-menu-open .mobile-cta-bar { display: none !important; }
/* Phones: keep the page end and focused links clear of the bar (WCAG 2.4.11),
   and lift the other floating buttons above it while it is up. `translate`
   leaves each button's own transform (hover scale) alone. Bar = 46px button
   + 2 x 8px padding. */
@media (max-width: 768px) {
  :root { --cta-bar-h: calc(62px + env(safe-area-inset-bottom, 0px)); }
  html.ve-has-cta-bar { scroll-padding-bottom: var(--cta-bar-h); }
  html.ve-has-cta-bar body { padding-bottom: var(--cta-bar-h); }
  .ve-float-lift,
  .review-widget-mobile,
  [data-replica-fallback='userway'],
  .userway_buttons_wrapper {
    transition: translate var(--dur-base) var(--ease-std);
  }
  html.ve-cta-bar-up .ve-float-lift,
  html.ve-cta-bar-up .review-widget-mobile,
  html.ve-cta-bar-up [data-replica-fallback='userway'],
  html.ve-cta-bar-up .userway_buttons_wrapper {
    translate: 0 calc(-1 * var(--cta-bar-h)) !important;
  }
}

/* ================================================== dev style guide only */
.ve-sg-section { padding: 40px 0; border-bottom: 1px solid var(--c-line); }
.ve-sg-label { display: block; margin: 0 0 16px; color: var(--c-muted); font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.ve-sg-swatches { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; }
.ve-sg-swatch { border: 1px solid var(--c-line); border-radius: var(--radius-card); overflow: hidden; font-size: 13px; }
.ve-sg-swatch div { height: 64px; }
.ve-sg-swatch span { display: block; padding: 8px 10px; }
.ve-sg-dark { background: var(--c-ink); padding: 24px; border-radius: var(--radius-card); }
