@charset "UTF-8";
/* snippet-navbar-shadcn (moved from inline <style> in snippet-navbar-shadcn.php) */

#snippet-navbar-fixed-dropdown .navbar {
  min-height: 4.5rem !important;
  transition:
    min-height 200ms ease,
    background-color 200ms ease,
    -webkit-backdrop-filter 200ms ease,
    backdrop-filter 200ms ease;
}

#snippet-navbar-fixed-dropdown .navbar.md-navbar-past-hero {
  min-height: 3.5rem !important;
  /* "Frosted glass" effect without reducing opacity of the contents */
  background: rgba(
    255,
    255,
    255,
    0.75
  ) !important; /* override later `.navbar-marketing { background: var(--bs-white); }` */
  /* Make the frosted edge read a bit clearer on light backgrounds */
  border-bottom: 1px solid rgba(17, 17, 17, 0.08) !important;
  will-change: backdrop-filter;
}

.nav-link-font {
  font-size: clamp(
    0.75rem,
    1.4vw,
    0.875rem
  ); /* smallest size, scales with viewport, largest size */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-transform: uppercase;
  font-weight: 500;
  line-height: 1em;
  letter-spacing: 0.05em;
}
@media (max-width: 767.98px) {
  .nav-link-font {
    font-size: 1.0625rem !important; /* force 17px min on mobile */
  }
}

.bars {
  padding: 20px;
}

/* Ensure nav-item is positioned for absolute arrow */
#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item {
  position: relative;
}

/* progress bar START */
.mdbar {
  background: transparent;
  height: 2px;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5;
}
#MDBar {
  background-color: var(--bs-primary) !important;
}
/* progress bar END */

/* Respect reduced-motion preference across navbar UI */
@media (prefers-reduced-motion: reduce) {
  #snippet-navbar-fixed-dropdown *,
  #snippet-navbar-fixed-dropdown *::before,
  #snippet-navbar-fixed-dropdown *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Dropdown Arrow (Stripe-style) - Desktop only */

/* ===================================
   DROPDOWNS
   =================================== */

.dropdown-menu {
  font-size: 0.9rem;
  border: none;
  box-shadow: var(--md-box-shadow);
}

/* Dropdown Arrow (Stripe-style) */
.nav-item .SiteHeaderArrow {
  position: absolute;
  top: 100%;
  left: 50%;
  width: 16px;
  height: 16px;
  margin-top: 0px;
  background-color: var(--bs-body-bg);
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-bottom: none;
  border-right: none;
  transform: translateX(-50%) rotate(45deg);
  box-shadow: -2px -2px 4px rgba(0, 0, 0, 0.02);
  z-index: 1001;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease;
}

/* Show arrow when dropdown is active */
.nav-item.show .SiteHeaderArrow,
.nav-item:hover .SiteHeaderArrow {
  opacity: 1;
}

/* Ensure dropdown menu has proper spacing for arrow */
.nav-item .dropdown-menu {
  margin-top: 1rem;
}

.dropdown-menu .dropdown-header {
  font-size: 0.75rem;
  font-weight: var(--md-font-weight-bold);
  display: flex;
  align-items: center;
}

.dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
}

.dropdown-menu .dropdown-item .dropdown-item-icon {
  margin-right: 0.5rem;
  line-height: 1;
}

.dropdown-menu .dropdown-item .dropdown-item-icon svg {
  height: 0.9em;
  width: 0.9em;
}

.dropdown-menu .dropdown-item.active .dropdown-item-icon,
.dropdown-menu .dropdown-item:active .dropdown-item-icon {
  color: var(--bs-white);
}

.dropdown .dropdown-toggle {
  display: inline-flex;
  align-items: center;
}

.dropdown .dropdown-toggle .dropdown-arrow {
  margin-left: 0.4rem;
  margin-right: 0;
  transition: transform 0.1s ease-in-out;
  font-size: 0.6em;
}

.dropdown .dropdown-toggle.show .dropdown-arrow {
  transform: rotate(90deg);
}

/* Show arrow when dropdown is active */
.nav-item.show .SiteHeaderArrow,
.nav-item:hover .SiteHeaderArrow,
.dropdown.show .SiteHeaderArrow {
  opacity: 1;
}

/* Hide on mobile */
@media (max-width: 767.98px) {
  .SiteHeaderArrow {
    display: none;
  }
}

/* Dark mode: frosted effect on scroll-past-hero */
[data-bs-theme="dark"]
  #snippet-navbar-fixed-dropdown
  .navbar.md-navbar-past-hero {
  /* Match light mode's frosted opacity, but with a true black tint */
  background: rgba(0, 0, 0, 0.75) !important;
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

/* Dark mode: Dropdown Arrow - System Preference */
@media (prefers-color-scheme: dark) {
  :root:not([data-bs-theme="light"]) .nav-item .SiteHeaderArrow {
    background-color: var(--bs-mode, #1b1e21);
    border-color: rgba(255, 255, 255, 0.1);
    box-shadow: -2px -2px 4px rgba(0, 0, 0, 0.2);
  }
}

/* Dark mode: Dropdown Arrow - Manual Toggle */
[data-bs-theme="dark"] .SiteHeaderArrow {
  background-color: var(--bs-dark, #1b1e21);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: -2px -2px 4px rgba(0, 0, 0, 0.2);
}

/* Apply blur only when supported (prevents "it does nothing" confusion in unsupported browsers) */
@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))) {
  #snippet-navbar-fixed-dropdown .navbar.md-navbar-past-hero {
    -webkit-backdrop-filter: saturate(180%) blur(10px);
    backdrop-filter: saturate(180%) blur(10px);
  }
}

/* When the mobile overlay menu is open, prevent scrolling the page underneath.
   We keep scrolling enabled within the navbar overlay / dropdown menus. */
html.md-navbar-open,
body.md-navbar-open {
  overflow: hidden !important;
  height: 100% !important;
}

body.md-navbar-open {
  position: fixed !important;
  width: 100% !important;
  left: 0 !important;
  right: 0 !important;
  touch-action: none; /* extra safety on mobile */
}

/* Dropdown toggles currently show TWO arrows:
   - your inline SVG chevron
   - Bootstrap's default caret from `.dropdown-toggle::after`
   Keep the SVG and hide the Bootstrap caret. */
#snippet-navbar-fixed-dropdown .dropdown-toggle::after {
  display: none !important;
}

/* Brand (logo icon + clinic name) */
#snippet-navbar-fixed-dropdown .navbar-logo {
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  -webkit-tap-highlight-color: transparent;
}

#snippet-navbar-fixed-dropdown .navbar-logo:focus,
#snippet-navbar-fixed-dropdown .navbar-logo:focus-visible,
#snippet-navbar-fixed-dropdown .navbar-logo:active {
  outline: none !important;
  box-shadow: none !important;
}

#snippet-navbar-fixed-dropdown .navbar-logo .md-navbar-brand-text {
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: 1;
  font-size: 1.35rem;
  color: inherit;
  white-space: nowrap;
}

/* Rotate chevrons on top-level nav items when dropdown is open */
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item.dropdown.show
  > button.nav-link
  svg.lucide-chevron-down,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item.dropdown
  > button.nav-link[aria-expanded="true"]
  svg.lucide-chevron-down {
  transform: rotate(180deg);
}

/* ===================================
   CONTACT US DROPDOWN 
   =================================== */

/* Contact Card - Base Styles */
.md-contact-card {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 0.875rem;
  border-radius: 0.5rem;
  text-decoration: none;
  color: inherit;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid transparent;
  background-color: transparent;
  position: relative;
  overflow: hidden;
}

.md-contact-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.03) 0%,
    transparent 100%
  );
  opacity: 0;
  transition: opacity 0.3s ease;
}

.md-contact-card:hover::before {
  opacity: 1;
}

.md-contact-card:hover {
  border-color: rgba(var(--bs-primary-rgb), 0.15);
  background-color: rgba(var(--bs-primary-rgb), 0.02);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/* Highlight Card (Featured - Book Online) */
.md-contact-card-highlight {
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.04) 0%,
    rgba(var(--bs-secondary-rgb), 0.04) 100%
  );
  border-color: rgba(var(--bs-primary-rgb), 0.12);
}

.md-contact-card-highlight:hover {
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.08) 0%,
    rgba(var(--bs-secondary-rgb), 0.08) 100%
  );
  border-color: rgba(var(--bs-primary-rgb), 0.25);
  box-shadow: 0 8px 24px rgba(var(--bs-primary-rgb), 0.15);
}

/* Icon Container */
.md-contact-card-icon {
  flex: 0 0 auto;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.08) 0%,
    rgba(var(--bs-primary-rgb), 0.12) 100%
  );
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
}

.md-contact-card:hover .md-contact-card-icon {
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.15) 0%,
    rgba(var(--bs-primary-rgb), 0.2) 100%
  );
  transform: scale(1.05) rotate(2deg);
}

.md-contact-card-highlight .md-contact-card-icon {
  background: linear-gradient(
    135deg,
    var(--bs-primary) 0%,
    var(--bs-secondary) 100%
  );
}

.md-contact-card-icon svg {
  width: 1.125rem;
  height: 1.125rem;
  stroke: var(--bs-primary);
  fill: none;
  transition: all 0.3s ease;
  position: relative;
  z-index: 1;
}

.md-contact-card-highlight .md-contact-card-icon svg {
  stroke: var(--bs-white);
}

.md-contact-card:hover .md-contact-card-icon svg {
  stroke: var(--bs-primary);
}

.md-contact-card-highlight:hover .md-contact-card-icon svg {
  stroke: var(--bs-white);
  transform: scale(1.1);
}

/* Content */
.md-contact-card-content {
  flex: 1;
  min-width: 0;
}

.md-contact-card-title {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--bs-body-color);
  margin-bottom: 0.25rem;
  transition: color 0.2s ease;
}

.md-contact-card:hover .md-contact-card-title {
  color: var(--bs-primary);
}

.md-contact-card-desc {
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--bs-secondary-color, #6c757d);
  opacity: 0.85;
}

/* ===================================
   DARK MODE SUPPORT
   =================================== */

/* Manual Dark Mode */
[data-bs-theme="dark"] .md-contact-card {
  color: var(--bs-body-color);
}

[data-bs-theme="dark"] .md-contact-card::before {
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.03) 0%,
    transparent 100%
  );
}

[data-bs-theme="dark"] .md-contact-card:hover {
  border-color: rgba(255, 255, 255, 0.15);
  background-color: rgba(255, 255, 255, 0.03);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

[data-bs-theme="dark"] .md-contact-card-highlight {
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.08) 0%,
    rgba(var(--bs-secondary-rgb), 0.08) 100%
  );
  border-color: rgba(var(--bs-primary-rgb), 0.2);
}

[data-bs-theme="dark"] .md-contact-card-highlight:hover {
  background: linear-gradient(
    135deg,
    rgba(var(--bs-primary-rgb), 0.12) 0%,
    rgba(var(--bs-secondary-rgb), 0.12) 100%
  );
  border-color: rgba(var(--bs-primary-rgb), 0.35);
}

[data-bs-theme="dark"] .md-contact-card-icon {
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.08) 0%,
    rgba(255, 255, 255, 0.12) 100%
  );
}

[data-bs-theme="dark"] .md-contact-card:hover .md-contact-card-icon {
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.15) 0%,
    rgba(255, 255, 255, 0.2) 100%
  );
}

[data-bs-theme="dark"] .md-contact-card-icon svg {
  stroke: rgba(255, 255, 255, 0.9);
}

[data-bs-theme="dark"] .md-contact-card:hover .md-contact-card-title {
  color: rgba(255, 255, 255, 1);
}

/* System Preference Dark Mode */
@media (prefers-color-scheme: dark) {
  :root:not([data-bs-theme="light"]) .md-contact-card {
    color: var(--bs-body-color);
  }

  :root:not([data-bs-theme="light"]) .md-contact-card::before {
    background: linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.03) 0%,
      transparent 100%
    );
  }

  :root:not([data-bs-theme="light"]) .md-contact-card:hover {
    border-color: rgba(255, 255, 255, 0.15);
    background-color: rgba(255, 255, 255, 0.03);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  }

  :root:not([data-bs-theme="light"]) .md-contact-card-highlight {
    background: linear-gradient(
      135deg,
      rgba(var(--bs-primary-rgb), 0.08) 0%,
      rgba(var(--bs-secondary-rgb), 0.08) 100%
    );
    border-color: rgba(var(--bs-primary-rgb), 0.2);
  }

  :root:not([data-bs-theme="light"]) .md-contact-card-highlight:hover {
    background: linear-gradient(
      135deg,
      rgba(var(--bs-primary-rgb), 0.12) 0%,
      rgba(var(--bs-secondary-rgb), 0.12) 100%
    );
    border-color: rgba(var(--bs-primary-rgb), 0.35);
  }

  :root:not([data-bs-theme="light"]) .md-contact-card-icon {
    background: linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.08) 0%,
      rgba(255, 255, 255, 0.12) 100%
    );
  }

  :root:not([data-bs-theme="light"])
    .md-contact-card:hover
    .md-contact-card-icon {
    background: linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.15) 0%,
      rgba(255, 255, 255, 0.2) 100%
    );
  }

  :root:not([data-bs-theme="light"]) .md-contact-card-icon svg {
    stroke: rgba(255, 255, 255, 0.9);
  }

  :root:not([data-bs-theme="light"])
    .md-contact-card:hover
    .md-contact-card-title {
    color: rgba(255, 255, 255, 1);
  }
}

/* Mobile Responsive */
@media (max-width: 767.98px) {
  .md-contact-card {
    padding: 0.625rem 0.75rem;
  }

  .md-contact-card-icon {
    width: 2rem;
    height: 2rem;
  }

  .md-contact-card-icon svg {
    width: 1rem;
    height: 1rem;
  }

  .md-contact-card-title {
    font-size: 0.875rem;
  }

  .md-contact-card-desc {
    font-size: 0.75rem;
  }
}

/* Over a video banner: make top-level navigation items white (but don't affect dropdown menus) */
#snippet-navbar-fixed-dropdown
  .navbar-marketing:not(.navbar-shrink)
  .navbar-nav
  > .nav-item
  > .nav-link,
#snippet-navbar-fixed-dropdown
  .navbar-marketing:not(.navbar-shrink)
  .navbar-nav
  > .nav-item
  > button.nav-link {
  color: var(--bs-white) !important;
  /*
    box-shadow: 0 3px 4px rgba(0,0,0,0.1);
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter:saturate(180%) blur(5px);
    backdrop-filter:saturate(180%) blur(5px);    
    */
}

/* Top-level hover highlight: match Bootstrap dropdown hover background in BOTH themes */
:root:not([data-bs-theme="dark"]) #snippet-navbar-fixed-dropdown,
[data-bs-theme="light"] #snippet-navbar-fixed-dropdown {
  --md-topnav-hover-stroke: #111;
}
[data-bs-theme="dark"] #snippet-navbar-fixed-dropdown {
  --md-topnav-hover-stroke: var(--bs-body-color);
}

#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > .nav-link,
#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > button.nav-link {
  transition:
    color 150ms ease,
    background-color 150ms ease;
}

#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > .nav-link:hover,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > .nav-link:focus-visible,
#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > button.nav-link:hover,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > button.nav-link:focus-visible {
  background-color: var(--md-secondary-100) !important;
  color: var(--bs-secondary) !important;
  -webkit-text-fill-color: var(
    --bs-secondary
  ) !important; /* Safari/WebKit edge cases */
}

/* If any nested element (eg SVG) has its own color, force it to inherit on hover */
#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > .nav-link:hover *,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > .nav-link:focus-visible
  *,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > button.nav-link:hover
  *,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > button.nav-link:focus-visible
  * {
  color: inherit !important;
}

/* Ensure the chevron SVG also flips to black on hover (SVG uses stroke, not text color) */
#snippet-navbar-fixed-dropdown .navbar-nav > .nav-item > .nav-link:hover svg,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > .nav-link:focus-visible
  svg,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > button.nav-link:hover
  svg,
#snippet-navbar-fixed-dropdown
  .navbar-nav
  > .nav-item
  > button.nav-link:focus-visible
  svg {
  stroke: var(--md-topnav-hover-stroke) !important;
}

/* Keep dropdown menu text black (scoped to light mode so we don't break dark theme) */
:root:not([data-bs-theme="dark"]) #snippet-navbar-fixed-dropdown .dropdown-menu,
[data-bs-theme="light"] #snippet-navbar-fixed-dropdown .dropdown-menu {
  --bs-dropdown-link-color: #111;
  --bs-dropdown-link-hover-color: #111;
  --bs-dropdown-link-active-color: #111;
  --bs-dropdown-header-color: #111;
  /* Override Bootstrap's default blue "active/pressed" background with the same gray used on hover */
  --bs-dropdown-link-active-bg: var(--md-secondary-100);
}

/* Light mode: solid white navbar with black text */
:root:not([data-bs-theme="dark"])
  #snippet-navbar-fixed-dropdown
  .navbar-marketing,
[data-bs-theme="light"] #snippet-navbar-fixed-dropdown .navbar-marketing {
  /*background: var(--bs-body-bg); */
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
  -webkit-backdrop-filter: saturate(180%) blur(5px);
  backdrop-filter: saturate(180%) blur(5px);
}

/* Light mode DESKTOP ONLY: black text and inverse hover (keep mobile white) */
@media (min-width: 767.98px) {
  /* Light mode: brand text should be dark on the solid white navbar */
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-logo
    .md-navbar-brand-text,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-logo
    .md-navbar-brand-text {
    color: #111 !important;
  }

  /* Light mode: make nav items black text (override the white text rule) */
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link {
    color: #111 !important;
    -webkit-text-fill-color: #111 !important;
  }

  /* Light mode: make chevron SVG black to match text */
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg {
    stroke: #111 !important;
  }

  /* Light mode: on hover, use the SAME highlight background as dropdown items */
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:hover,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:focus-visible,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:hover,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:focus-visible,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:hover,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:focus-visible,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:hover,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:focus-visible {
    background-color: var(--md-secondary-100) !important;
    color: var(--bs-secondary) !important;
    -webkit-text-fill-color: var(--bs-secondary) !important;
  }

  /* Light mode: on hover, make chevron SVG match the text */
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:hover
    svg,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:focus-visible
    svg,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:hover
    svg,
  :root:not([data-bs-theme="dark"])
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:focus-visible
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:hover
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > .nav-link:focus-visible
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:hover
    svg,
  [data-bs-theme="light"]
    #snippet-navbar-fixed-dropdown
    .navbar-marketing
    .navbar-nav
    > .nav-item
    > button.nav-link:focus-visible
    svg {
    stroke: var(--md-topnav-hover-stroke) !important;
  }
}

/* Dark mode: align with `snippet-navbar-fixed-dropdown` theme rules */
[data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .navbar-marketing {
  /* Black + reduced opacity (like light mode's softened white) */
  background: rgba(0, 0, 0, 0.75);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
  -webkit-backdrop-filter: saturate(180%) blur(5px);
  backdrop-filter: saturate(180%) blur(5px);
}

[data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .navbar-shrink {
  box-shadow: 0 3px 4px rgba(255, 255, 255, 0.05);
  background: rgba(0, 0, 0, 0.75);
  -webkit-backdrop-filter: saturate(180%) blur(5px);
  backdrop-filter: saturate(180%) blur(5px);
}

[data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .dropdown-menu {
  --bs-dropdown-bg: var(--bs-dark);
  --bs-dropdown-link-color: var(--bs-body-color);
  --bs-dropdown-link-hover-color: var(--bs-body-color);
  --bs-dropdown-link-active-color: var(--bs-body-color);
  --bs-dropdown-link-disabled-color: var(--bs-gray-200);
  --bs-dropdown-divider-bg: var(--bs-body-bg);
  -webkit-box-shadow: none;
  box-shadow: none;
}

#snippet-navbar-fixed-dropdown .dropdown-header {
  font-size: 0.65rem !important;
  margin-left: 0.5rem !important;
}

[data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .dropdown-header {
  color: var(--bs-white) !important;
}

/* Dropdown items: no extra padding (we'll use a tiny gap on mobile instead) */
#snippet-navbar-fixed-dropdown .dropdown-menu .dropdown-item {
  padding: 0.25rem 0.5rem !important;
  font-size: 0.8rem !important;
  transition: all 0.2s ease-in-out !important;
  /* Allow long titles to wrap instead of being clipped */
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Mobile-only navbar behavior:
   - hamburger on the far right
   - collapsed menu becomes a full-screen overlay
   - nav items left-aligned in a vertical list */
@media (max-width: 767.98px) {
  /* When the mobile menu is open we show a full-screen backdrop. Ensure the navbar (controls + panel + footer)
       sits ABOVE the backdrop (otherwise the overlay can dim the nav UI due to stacking contexts). */
  #snippet-navbar-fixed-dropdown .navbar.fixed-top {
    z-index: 1095 !important;
  }

  /* Mobile: when scrolled past hero (`.md-navbar-past-hero`), DO NOT use the desktop frosted/blur style.
       Keep the navbar (parent of `.md-mobile-nav-controls`) solid when the menu is NOT open. */
  html:not(.md-navbar-open)
    #snippet-navbar-fixed-dropdown
    .navbar.md-navbar-past-hero {
    background: var(--bs-white) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  [data-bs-theme="dark"]:not(.md-navbar-open)
    #snippet-navbar-fixed-dropdown
    .navbar.md-navbar-past-hero {
    background: var(--bs-dark) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* Shared sizing vars for mobile panel/backdrop masking */
  #snippet-navbar-fixed-dropdown {
    /* Full-screen mobile nav */
    --md-mobile-panel-width: 100vw;
    --md-mobile-topbar-height: 4rem;
    --md-mobile-header-height: calc(
      env(safe-area-inset-top, 0px) + var(--md-mobile-topbar-height)
    );
  }

  /* Remove the default Bootstrap navbar vertical padding and lock the header height
       so OPEN/CLOSED look identical with no extra whitespace around the controls row. */
  #snippet-navbar-fixed-dropdown .navbar {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    min-height: var(--md-mobile-header-height) !important;
    height: var(--md-mobile-header-height);
  }

  /* Mobile top bar layout:
       hamburger = far left, logo = centered, other controls = far right */
  #snippet-navbar-fixed-dropdown .container-fluid {
    position: relative; /* anchor for absolute-centered logo */
    /* Make the header container match the controls row height (open/closed) */
    display: flex;
    align-items: stretch;
    height: var(--md-mobile-header-height);
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    /* Make CLOSED layout full-bleed so it matches the OPEN (fixed) layout width */
    padding-left: 0 !important;
    padding-right: 0 !important;
    /* AOS adds transforms; that breaks `position: fixed` for the mobile controls when opening the menu */
    transform: none !important;
  }

  /* Group top buttons into a single "header" layer above the scrolling menu */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-controls {
    /* Always pin on mobile so the layout never reflows/“tightens” when opening */
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1065; /* above the overlay (1060) */
    min-height: 4rem;
    display: flex;
    align-items: center;
    width: calc(100%);
    height: var(--md-mobile-header-height);
    box-sizing: border-box;
    /* Use the OPEN padding as the canonical mobile header sizing so CLOSED matches OPEN */
    padding: calc(env(safe-area-inset-top, 0px) + 0.5rem) 1rem 0.5rem;
    /* box-shadow: 0 1px 0 rgba(17, 17, 17, 0.08); */
    /* Keep controls crisp + not “dimmed” by the backdrop */
    background: var(--bs-white);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  /* (No special open-state rule needed; we keep it pinned in both states.) */

  /* Reduce Safari/iOS compositing blur on icons/logo */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-controls img,
  #snippet-navbar-fixed-dropdown .md-mobile-nav-controls svg {
    transform: translateZ(0);
    backface-visibility: hidden;
  }

  /* Mobile-only: tiny gap between dropdown items (no padding, especially no right padding) */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu
    .dropdown-item,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu
    .dropdown-item {
    padding: 0 !important;
  }

  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu
    .dropdown-item:not(:last-child),
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu
    .dropdown-item:not(:last-child) {
    margin-bottom: 0.6rem !important;
  }
  /* Mobile header icon ordering:
       - phone on the left
       - hamburger on the right
       (logo stays centered via absolute positioning) */
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars {
    margin-left: auto; /* push to far right */
    position: relative;
    z-index: 1063; /* above the full-screen menu */
    order: 2;
  }

  /* Center the logo in the mobile top bar (independent of left/right control widths) */
  #snippet-navbar-fixed-dropdown .navbar-toggler.navbar-logo {
    position: absolute !important;
    left: 50%;
    transform: translateX(-50%);
    margin: 0 !important;
  }

  #snippet-navbar-fixed-dropdown .md-mobile-nav-controls {
    justify-content: flex-start;
  }

  /* Phone icon */
  #snippet-navbar-fixed-dropdown .navbar-toggler[aria-label="Call Now!"] {
    margin-left: 0;
  }

  /* Right-side controls (theme toggle + phone) */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-controls-right {
    margin-left: 0; /* no longer the "push-right" element */
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    order: 1; /* move to left of the hamburger */
  }

  /* Toggle hamburger <-> X (depends on icon classes from your ICON_* output) */
  /* Keep both icons perfectly overlapped + animate between them */
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars {
    position: relative;
  }

  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-bars,
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-xmark {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transition:
      opacity 160ms ease,
      transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
    will-change: opacity, transform;
    line-height: 1;
    margin: 0 !important;
    pointer-events: none;
  }

  /* Make the hamburger icon bigger (without changing the button size) */
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-bars {
    font-size: 1.35rem;
  }
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-bars svg {
    width: 1.35rem;
    height: 1.35rem;
  }

  /* Ensure the close (X) icon has a visible size/color on mobile */
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-xmark {
    width: 1.35rem;
    height: 1.35rem;
    color: #111; /* default light background */
  }

  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-toggler.bars
    .icon-xmark {
    color: #fff;
  }

  /* Default: X is hidden + slightly rotated/scaled for a nicer morph */
  #snippet-navbar-fixed-dropdown .navbar-toggler.bars .icon-xmark {
    opacity: 0;
    transform: translate(-50%, -50%) rotate(-90deg) scale(0.8);
  }
  #snippet-navbar-fixed-dropdown
    .navbar-toggler.bars[aria-expanded="true"]
    .icon-bars {
    opacity: 0;
    transform: translate(-50%, -50%) rotate(90deg) scale(0.8);
  }
  #snippet-navbar-fixed-dropdown
    .navbar-toggler.bars[aria-expanded="true"]
    .icon-xmark {
    opacity: 1 !important;
    transform: translate(-50%, -50%) rotate(0deg) scale(1);
  }

  /* Keep other top controls above the overlay as well */
  #snippet-navbar-fixed-dropdown .navbar-toggler.navbar-logo,
  #snippet-navbar-fixed-dropdown .navbar-toggler[aria-label="Call Now!"] {
    position: relative;
    z-index: 1061;
  }

  /* Mobile nav panel (full screen) */
  #snippet-navbar-fixed-dropdown .navbar-collapse {
    position: fixed;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    right: 0 !important;
    width: 100vw;
    height: 100vh;
    background: var(--bs-white);
    -webkit-backdrop-filter: saturate(180%) blur(8px);
    backdrop-filter: saturate(180%) blur(8px);
    box-shadow: none;
    border-right: none;

    /* Layout: scrollable body + pinned footer */
    display: flex;
    flex-direction: column;

    /* leave padding to the body/footer, not the overlay container */
    padding: 0;

    /* never scroll the overlay itself (keeps footer pinned); only body scrolls */
    overflow: hidden;
    overscroll-behavior: contain;
    touch-action: pan-y;
    z-index: 1060;

    /* animation (closed state) */
    opacity: 0;
    transform: translateX(-105%);
    visibility: hidden;
    pointer-events: none;
    transition:
      opacity 180ms ease,
      transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1),
      visibility 0s linear 220ms;
  }

  /* Open state */
  #snippet-navbar-fixed-dropdown .navbar-collapse.show {
    opacity: 1;
    transform: translateX(0);
    visibility: visible;
    pointer-events: auto;
    transition:
      opacity 180ms ease,
      transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
  }

  /* Click-outside backdrop */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-backdrop {
    position: fixed;
    inset: 0;
    /* Dim the entire page behind the nav while it slides */
    background: rgba(15, 15, 16, 0.5);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    /* Close faster than the panel slide-out */
    transition:
      opacity 80ms ease,
      visibility 0s linear 80ms;
    z-index: 1059; /* just below the panel (1060); above page content */
    touch-action: none;
  }

  #snippet-navbar-fixed-dropdown .md-mobile-nav-backdrop.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 160ms ease;
  }

  #snippet-navbar-fixed-dropdown {
    position: fixed !important;
    top: 0 !important;
    z-index: 10000;
  }

  /* Scrollable nav body (the ONLY scrollbar in the mobile overlay) */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-body {
    /* flex: 1 1 auto; */
    /* leave room for the fixed top controls row so content never overlaps it */
    padding: calc(env(safe-area-inset-top, 0px) + 6.5rem) 1.25rem 1.25rem;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    /* Some layouts wrap content in `.text-center`; force the mobile menu content left. */
    text-align: left !important;
    height: 100vh;
    margin-bottom: 8rem;
  }

  /* Pinned footer CTA row */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-footer {
    /* flex: 0 0 auto; */
    position: fixed;
    width: 100%;
    bottom: calc(env(safe-area-inset-bottom) + 6rem);
    padding: 0.75rem 1.25rem calc(env(safe-area-inset-bottom, 0px) + 0.75rem);
    padding-top: 1.25rem;
    background: rgba(255, 255, 255, 0.96);
    -webkit-backdrop-filter: saturate(180%) blur(8px);
    backdrop-filter: saturate(180%) blur(8px);
    border-top: 1px solid rgba(17, 17, 17, 0.08);
    /* Layout is handled by `.md-mobile-footer-bar` */
  }

  /* Theme toggle buttons in the mobile footer */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-footer .color-mode-buttons {
    width: 100%;
    justify-content: center;
  }

  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-footer
    .color-mode-buttons
    .btn {
    flex: 1 1 0;
    justify-content: center;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
  }

  /* Theme buttons in mobile footer */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-footer .dark-mode-switch {
    width: 100%;
  }

  #snippet-navbar-fixed-dropdown .md-mobile-nav-footer .dark-mode-switch .btn {
    flex: 1 1 0;
    white-space: nowrap;
  }

  /* Footer CTA buttons: make icons consistent size */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-footer .btn svg {
    width: 1.15rem;
    height: 1.15rem;
  }

  #snippet-navbar-fixed-dropdown .mobile-nav-footer-theme-switch {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: fit-content !important;
    display: inline-flex;
    align-items: center;
  }

  /* Footer layout: theme left, pill centered */
  #snippet-navbar-fixed-dropdown .md-mobile-footer-bar {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
  }

  #snippet-navbar-fixed-dropdown .md-mobile-footer-cta {
    width: 100%;
    display: flex;
    justify-content: center;
  }

  /* Add horizontal dividers like the reference (top-level items only) */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-body .navbar-nav > .nav-item {
    border-bottom: 1px solid rgba(17, 17, 17, 0.1);
    padding: 0.25rem 0;
  }

  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-body
    .navbar-nav
    > .nav-item:last-child {
    border-bottom: 0;
  }

  /* Remove the "pill" feel on mobile list items; make them read like a menu */
  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-body
    .navbar-nav
    > .nav-item
    > .nav-link,
  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-body
    .navbar-nav
    > .nav-item
    > button.nav-link {
    border-radius: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* During Bootstrap's transition phase (`.collapsing`), animate based on html state classes */
  #snippet-navbar-fixed-dropdown .navbar-collapse.collapsing {
    visibility: visible;
    pointer-events: auto;
    transition:
      opacity 180ms ease,
      transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
    /* Ensure Bootstrap's inline height doesn't interfere with our fixed offcanvas */
    height: 100vh !important;
  }

  /* Opening: offscreen -> onscreen */
  html.md-navbar-opening
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing {
    opacity: 1;
    transform: translateX(0);
  }

  /* Closing: onscreen -> offscreen */
  html.md-navbar-closing
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing {
    opacity: 0;
    transform: translateX(-105%);
  }

  /* When the mobile menu is OPEN, make top-level items muted (dropdown items stay black) */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > .nav-link,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > .nav-link,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > button.nav-link,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > button.nav-link {
    color: rgba(17, 17, 17, 0.7) !important;
    -webkit-text-fill-color: rgba(17, 17, 17, 0.7) !important;
    background: transparent !important;
  }

  /* Make the chevron SVG match the text color in the open mobile menu */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg {
    stroke: #111 !important;
  }

  /* Make dropdown "cards" seamless in the mobile full-screen menu */
  #snippet-navbar-fixed-dropdown .navbar-collapse.collapsing .dropdown-menu,
  #snippet-navbar-fixed-dropdown .navbar-collapse.show .dropdown-menu {
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    border-radius: 0 !important;
  }

  /* Mobile dropdown open/close animation.
       We can't animate `display: none`, so keep the dropdown-menu laid out and animate max-height/opacity instead.
       Also: do NOT create a second scrollbar (we use overflow:hidden, not overflow-y:auto). */
  #snippet-navbar-fixed-dropdown .navbar-collapse.collapsing .dropdown-menu,
  #snippet-navbar-fixed-dropdown .navbar-collapse.show .dropdown-menu {
    display: block !important;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transform: translateY(-6px);
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin-top: 0 !important;
    pointer-events: none;
    transition:
      max-height 240ms ease,
      opacity 180ms ease,
      transform 240ms ease,
      padding 240ms ease;
    will-change: max-height, opacity, transform;
  }

  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show,
  #snippet-navbar-fixed-dropdown .navbar-collapse.show .dropdown-menu.show {
    max-height: 9999px; /* large enough to fit any menu without inner scrolling */
    overflow: hidden;
    opacity: 1;
    transform: translateY(0);
    padding-top: 0.75rem !important;
    padding-bottom: 0.75rem !important;
    pointer-events: auto;
  }

  @media (prefers-reduced-motion: reduce) {
    #snippet-navbar-fixed-dropdown .navbar-collapse.collapsing .dropdown-menu,
    #snippet-navbar-fixed-dropdown .navbar-collapse.show .dropdown-menu {
      transition: none !important;
    }
  }

  /* Mobile-only: use GAP between items (no padding) */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu
    .dropdown-item,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu
    .dropdown-item {
    padding: 0 !important; /* override markup `py-*` utilities */
    margin: 0 !important;
  }

  /* Mobile dropdown spacing:
       - Parent headers (e.g. "Family Dentistry") should be flush-left (no left margin)
       - Child links under a header should be indented */
  #snippet-navbar-fixed-dropdown .navbar-collapse.collapsing .dropdown-header,
  #snippet-navbar-fixed-dropdown .navbar-collapse.show .dropdown-header {
    margin-left: 0 !important;
    padding-left: 0 !important;
  }

  /* Indent ONLY the simple child links generated by `snippet_navbar()` (class="dropdown-item")
       and NOT the preview card item (which uses `.rounded-4`). */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu
    a.dropdown-item:not(.rounded-4),
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu
    a.dropdown-item:not(.rounded-4) {
    margin-left: 0.25rem !important;
  }

  /* Apply gap per column so links are evenly spaced without adding padding */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"],
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"] {
    display: flex;
    flex-direction: column;
    gap: 1rem; /* match item-to-item spacing */
  }

  /* The first "header" item sits in its o    wn column; give it the same spacing
       below it as the rest of the dropdown items have between themselves. */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"]:first-child
    > .dropdown-item,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"]:first-child
    > .dropdown-item {
    margin-bottom: 1rem !important;
  }

  /* Mobile dropdown layout (full-screen menu): force vertical flow */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu.show
    .row.g-0,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show
    .row.g-0 {
    display: block;
  }

  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"],
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show
    .row.g-0
    > [class*="col-"] {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Tighten spacing so the buttons list sits neatly under the preview card */
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .dropdown-menu.show
    .row.g-0
    > .p-3,
  #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .dropdown-menu.show
    .row.g-0
    > .p-3 {
    padding-top: 0.75rem !important;
    padding-bottom: 0.75rem !important;
  }

  /* Left-align + stack menu items (override the existing flex utility classes).
       Scope to the scrollable body so the footer CTA row can stay centered. */
  #snippet-navbar-fixed-dropdown .md-mobile-nav-body .navbar-nav {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    width: 100% !important;
    margin-left: 0 !important; /* override `ms-auto` on the UL */
    margin-right: 0 !important;
    gap: 0.25rem !important;
  }

  #snippet-navbar-fixed-dropdown .md-mobile-nav-body .navbar-nav > .nav-item {
    width: 100% !important;
  }

  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-body
    .navbar-nav
    > .nav-item
    > .nav-link,
  #snippet-navbar-fixed-dropdown
    .md-mobile-nav-body
    .navbar-nav
    > .nav-item
    > button.nav-link {
    width: 100% !important;
    display: flex !important; /* override `d-inline-flex` */
    justify-content: flex-start !important;
    text-align: left !important;
  }
}

/* Desktop: Bootstrap hides `.navbar-toggler` on `navbar-expand-md` at md+.
   Keep the full logo link visible without affecting the hamburger button. */
@media (min-width: 767.98px) {
  #snippet-navbar-fixed-dropdown
    .navbar-expand-md
    .navbar-toggler.navbar-logo-desktop {
    display: inline-flex !important;
    align-items: center;
  }
}

@media (max-width: 767.98px) {
  #snippet-navbar-fixed-dropdown .navbar-toggler.navbar-logo-desktop {
    display: none !important;
  }
}

@media (min-width: 767.98px) {
  #snippet-navbar-fixed-dropdown .navbar-toggler.navbar-logo-mobile {
    display: none !important;
  }
}

/* Mobile-first: keep dropdowns IN the document flow when the navbar is collapsed,
   so they are full-width and scroll naturally (no absolute positioning). */
#snippet-navbar-fixed-dropdown
  .navbar-nav
  .dropdown.dropdown-xl
  > .dropdown-menu {
  position: static;
  width: 100%;
  min-width: 20rem;
  max-width: 100%;
  transform: none;
}

/* Optional: if you want each dropdown item to behave like a 2-line block on mobile */
#snippet-navbar-fixed-dropdown
  .navbar-nav
  .dropdown.dropdown-xl
  > .dropdown-menu
  .dropdown-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

/* Desktop (md+): Bootstrap dropdowns become absolutely-positioned; avoid shrink-to-fit
   by removing the narrow positioned ancestor and allowing the menu to size to content. */
@media (min-width: 767.98px) {
  /* Let the nav list span the container so dropdowns aren't constrained by shrink-to-fit UL width */
  #snippet-navbar-fixed-dropdown [data-slot="navigation-menu-list"] {
    width: 100%;
  }

  #snippet-navbar-fixed-dropdown .navbar-nav .dropdown.dropdown-xl {
    position: static; /* override Bootstrap's `.dropdown { position: relative; }` */
  }

  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu {
    position: absolute;
    /* Reduced spacing for tighter layout with arrow */
    /* top: calc(100% + 0.625rem); */
    top: calc(100% - 0.5rem);
    left: 50%;
    transform: translateX(-50%);

    /* Keep ALL desktop dropdown cards on-screen */
    width: max-content;
    min-width: 0;
    max-width: calc(100vw - 2rem);

    z-index: 1000; /* below arrow (1001) but above other content */
  }

  /* Desktop hover UX: keep menu open when moving from trigger -> menu (bridge the gap) */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -0.625rem;
    height: 0.625rem;
    background: transparent;
  }

  /* Desktop-only: open dropdowns on hover (and keep accessible via keyboard) */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:hover
    > .dropdown-menu,
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:focus-within
    > .dropdown-menu {
    display: block;
  }

  /* Show arrow on hover-open as well */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:hover
    > .SiteHeaderArrow,
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:focus-within
    > .SiteHeaderArrow {
    opacity: 1;
  }

  /* Rotate chevron on hover-open as well */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:hover
    > button.nav-link
    svg.lucide-chevron-down,
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    > .dropdown.dropdown-xl:focus-within
    > button.nav-link
    svg.lucide-chevron-down {
    transform: rotate(180deg);
  }

  /* Contact Us dropdown: align under its trigger (instead of centered like mega menus) */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl.dropdown-align-start {
    position: relative !important; /* restore containing block for the absolute dropdown */
  }

  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl.dropdown-align-start
    > .dropdown-menu {
    left: 0 !important;
    transform: none !important;
    top: calc(100% - 0.5rem); /* Match the reduced spacing */
  }

  /* Desktop-only: slightly smaller dropdown item text (mobile unchanged) */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu
    a.dropdown-item {
    font-size: 0.8rem;
  }

  /* Dental Services dropdown: make it wider to accommodate 4 columns */
  /* NOTE: `.dropdown-menu` is not the adjacent sibling of the button (there's `.SiteHeaderArrow` in between),
       so we use `~` (general sibling) instead of `+`. */
  #snippet-navbar-fixed-dropdown
    #navbarDropdownDentalServices
    ~ .dropdown-menu {
    width: min(60rem, calc(100vw - 2rem));
  }

  /* Dental Services dropdown: slightly smaller link text on desktop only (mobile unchanged)
    #snippet-navbar-fixed-dropdown #navbarDropdownDentalServices + .dropdown-menu a.dropdown-item {
        font-size: 0.95rem;
    } */
}

/* Medium-only (md): keep ALL navbar dropdown menus fully on-screen.
   - Clamp menu width to the viewport (prevents left/right overflow)
   - Allow vertical scrolling if the menu is tall
   - Override global `text-wrap: nowrap !important` so long labels wrap instead of overflowing */
@media (min-width: 768px) and (max-width: 991.98px) {
  /* Medium-only: keep dropdowns anchored to the navbar (same vertical positioning as desktop),
       but prevent horizontal overflow and allow vertical scrolling when tall. */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu {
    /* Do NOT change position/top here (keeps the tight gap under the navbar) */
    width: fit-content !important; /* shrink-to-fit on abs-positioned menus */
    min-width: 20rem !important;
    max-width: calc(100vw - 2rem) !important;

    max-height: calc(100vh - 8rem) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
  }

  /* Medium-only: override the higher-specificity align-start rule so these menus don't run off the right edge */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl.dropdown-align-start
    > .dropdown-menu {
    left: 50% !important;
    right: auto !important;
    transform: translateX(-50%) !important;
  }

  /* Medium-only: Dental Services has an explicit wide desktop width; undo that on medium */
  #snippet-navbar-fixed-dropdown
    #navbarDropdownDentalServices
    ~ .dropdown-menu {
    width: fit-content !important;
    max-width: calc(100vw - 2rem) !important;
  }

  /* Allow long link titles to wrap (overrides the global `text-wrap: nowrap !important`) */
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu
    a.dropdown-item,
  #snippet-navbar-fixed-dropdown
    .navbar-nav
    .dropdown.dropdown-xl
    > .dropdown-menu
    .dropdown-header {
    white-space: normal !important;
    text-wrap: wrap !important;
    /* `anywhere` can cause the browser to choose a *very* narrow min-content width (letter-by-letter).
           Keep wrapping, but prefer breaking at normal points. */
    overflow-wrap: break-word;
    word-break: break-word;
  }

  /* Medium-only: make these two dropdowns wider (they look bad when allowed to shrink too far),
       while still clamping to the viewport so they never overflow. */
  #snippet-navbar-fixed-dropdown #navbarDropdownPatientInfo ~ .dropdown-menu,
  #snippet-navbar-fixed-dropdown #navbarDropdownNews ~ .dropdown-menu {
    width: fit-content !important;
    min-width: 15rem !important;
    max-width: calc(100vw - 2rem) !important;
  }
  #snippet-navbar-fixed-dropdown
    #navbarDropdownDentalServices
    ~ .dropdown-menu {
    width: fit-content !important;
    min-width: 30rem !important;
    max-width: calc(100vw - 2rem) !important;
  }

  /* Medium-only: ensure Contact dropdown cards don't get too narrow */
  #snippet-navbar-fixed-dropdown .dropdown-menu .md-contact-card {
    min-width: 15rem !important;
  }
}

#snippet-navbar-fixed-dropdown {
  overflow-x: hidden !important;
}

/* Don't force desktop padding here; keep dropdown items consistent with base rules */
.dropdown-item {
  text-wrap: nowrap !important;
}

/* Mobile overlay background + menu item colors for dark mode */
@media (max-width: 767.98px) {
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .md-mobile-nav-controls {
    background: var(--bs-dark);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  [data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .navbar-collapse {
    background: rgba(15, 15, 16, 0.98);
  }

  [data-bs-theme="dark"] #snippet-navbar-fixed-dropdown .md-mobile-nav-footer {
    background: rgba(15, 15, 16, 0.98);
    border-top-color: rgba(255, 255, 255, 0.1);
  }

  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .md-mobile-nav-backdrop {
    background: rgba(0, 0, 0, 0.45);
  }

  /* When the mobile menu is OPEN in dark mode: keep top-level items readable */
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > .nav-link,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > .nav-link,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > button.nav-link,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > button.nav-link {
    color: rgba(255, 255, 255, 0.85) !important;
    -webkit-text-fill-color: rgba(255, 255, 255, 0.85) !important;
  }

  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > .nav-link
    svg,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.collapsing
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg,
  [data-bs-theme="dark"]
    #snippet-navbar-fixed-dropdown
    .navbar-collapse.show
    .navbar-nav
    > .nav-item
    > button.nav-link
    svg {
    stroke: rgba(255, 255, 255, 0.85) !important;
  }
}
