/*
 * NorCal TMJ & Sleep Apnea — Design Enhancement Layer
 * Phase 4 Implementation — injected after Elementor CSS
 * Do not modify Elementor source files — all overrides live here.
 */

/* Webfonts — "Modern clinical" pairing: Plus Jakarta Sans (display) + Inter (text).
   @import must precede every other rule in the stylesheet. */
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Plus+Jakarta+Sans:wght@500;600;700;800&display=swap');

/* ═══════════════════════════════════════════════════════
   1. DESIGN TOKENS
   ═══════════════════════════════════════════════════════ */
:root {
  /* Brand palette — refined from original */
  --nc-blue:          #1a78a0;   /* deeper, more authoritative blue */
  --nc-blue-dark:     #115a78;   /* deep hover/active */
  --nc-blue-mid:      #1d8ab6;   /* mid-range for gradients */
  --nc-blue-light:    #e6f3f9;   /* section tint bg */
  --nc-blue-xlight:   #f0f8fc;   /* very light bg alt */
  --nc-amber:         #d4780f;   /* warm CTA — approachable, medical warm */
  --nc-amber-dark:    #b5650c;   /* CTA hover */
  --nc-amber-glow:    rgba(212,120,15,.20);

  /* Neutrals */
  --nc-text:          #1e2d3d;   /* slightly warmer dark */
  --nc-text-body:     #2d3e4f;   /* body text */
  --nc-text-muted:    #4c5f70;   /* muted/meta text — darkened for AA contrast */
  --nc-border:        #d6e6ef;   /* light border */
  --nc-border-mid:    #b8cfd9;   /* slightly stronger border */
  --nc-bg:            #f8fbfd;   /* page bg — very slight tint */
  --nc-bg-section:    #f0f7fa;   /* alt section bg */
  --nc-dark:          #0d2535;   /* footer dark bg */
  --nc-dark-accent:   #091c29;   /* footer bottom bar */
  --nc-white:         #ffffff;

  /* Spacing */
  --nc-radius:        8px;
  --nc-radius-sm:     5px;
  --nc-radius-lg:     12px;

  /* Shadows */
  --nc-shadow-xs:   0 1px 3px rgba(10,40,60,.08);
  --nc-shadow-sm:   0 2px 8px rgba(10,40,60,.10), 0 1px 3px rgba(0,0,0,.05);
  --nc-shadow:      0 4px 16px rgba(26,120,160,.13), 0 2px 5px rgba(0,0,0,.06);
  --nc-shadow-lg:   0 10px 32px rgba(26,120,160,.18), 0 4px 10px rgba(0,0,0,.08);
  --nc-shadow-btn:  0 2px 10px rgba(212,120,15,.30);
  --nc-shadow-btn-h:0 5px 18px rgba(212,120,15,.40);

  /* Motion */
  --nc-ease:        cubic-bezier(0.4, 0, 0.2, 1);
  --nc-transition:  all 0.22s var(--nc-ease);
  --nc-transition-slow: all 0.35s var(--nc-ease);

  /* Type stacks — new pairing with archived fonts as graceful fallback */
  --nc-font-display: "Plus Jakarta Sans", "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --nc-font-body:    "Inter", "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}


/* ═══════════════════════════════════════════════════════
   2. ELEMENTOR VARIABLE OVERRIDES (kit-6 = <body>)
   ═══════════════════════════════════════════════════════ */
.elementor-kit-6 {
  --e-global-color-primary:   var(--nc-blue) !important;
  --e-global-color-accent:    var(--nc-blue) !important;
  --e-global-color-bce0e94:   var(--nc-amber) !important;
  --e-global-color-97a658b:   var(--nc-amber-dark) !important;

  /* Typography — Plus Jakarta Sans (display) / Inter (text).
     Overriding the kit variables cascades to every Elementor widget. */
  --e-global-typography-primary-font-family:   var(--nc-font-display) !important;
  --e-global-typography-secondary-font-family: var(--nc-font-display) !important;
  --e-global-typography-accent-font-family:    var(--nc-font-display) !important;
  --e-global-typography-text-font-family:      var(--nc-font-body) !important;
}


/* ═══════════════════════════════════════════════════════
   3. BASE / GLOBAL
   ═══════════════════════════════════════════════════════ */
html {
  scroll-behavior: smooth;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--nc-text-body);
}

/* Text links — unified blue (exclude buttons, which are also <a> tags) */
.elementor-kit-6 a:not(.elementor-button),
.elementor-widget-text-editor a:not(.elementor-button) {
  color: var(--nc-blue) !important;
  transition: color 0.15s !important;
  text-decoration-color: rgba(26,120,160,.3);
}

.elementor-kit-6 a:not(.elementor-button):hover,
.elementor-widget-text-editor a:not(.elementor-button):hover {
  color: var(--nc-blue-dark) !important;
  text-decoration-color: var(--nc-blue);
}

/* ── GLOBAL BUTTON COLOR RULE ──────────────────────────────
   Elementor buttons render as <a> elements. Set white text
   here with high specificity so no link rule can override it. */
.elementor-kit-6 .elementor-button,
.elementor-widget-button .elementor-button {
  color: #fff !important;
  background-color: var(--nc-blue) !important;
}

/* Shape divider fills — match updated primary */
.elementor-shape-fill {
  fill: var(--nc-blue) !important;
}

/* Reduce wave height site-wide (was 110px, feels dated) */
.elementor-shape-bottom svg,
.elementor-shape-top svg {
  height: 50px !important;
}


/* ═══════════════════════════════════════════════════════
   4. TYPOGRAPHY
   ═══════════════════════════════════════════════════════ */
.elementor-heading-title {
  letter-spacing: -0.018em !important;
  line-height: 1.2 !important;
}

/* Section headings — tighter tracking for authority */
h2.elementor-heading-title {
  letter-spacing: -0.02em !important;
}

h3.elementor-heading-title {
  letter-spacing: -0.01em !important;
}

/* Body text readability — line-height only; no color override (hero text is white) */
.elementor-widget-text-editor,
.elementor-text-editor,
.elementor-widget-text-editor p,
.elementor-widget-text-editor li {
  line-height: 1.72 !important;
}

/* Fluid hero headline — force white on BOTH variants (the mobile heading
   ae010cb otherwise inherits the global brand-blue heading color, which was
   unreadable over the photo). */
.elementor-28 .elementor-element-734148a .elementor-heading-title,
.elementor-28 .elementor-element-ae010cb .elementor-heading-title {
  color: #fff !important;
  font-size: clamp(2rem, 4.2vw, 3.4rem) !important;
  line-height: 1.10 !important;
  letter-spacing: -0.03em !important;
  text-shadow: 0 2px 14px rgba(0,0,0,.40) !important;
}

/* Hero intro paragraph — force readable near-white on BOTH variants (the
   mobile text editor 75f3a15 otherwise inherits the dark global body color). */
.elementor-28 .elementor-element-8e0a25c,
.elementor-28 .elementor-element-8e0a25c p,
.elementor-28 .elementor-element-75f3a15,
.elementor-28 .elementor-element-75f3a15 p {
  color: rgba(255,255,255,0.94) !important;
  text-shadow: 0 1px 8px rgba(0,0,0,.40) !important;
}

/* Section title size — more restrained than current 35px inline style */
.elementor-28 .elementor-element-30666e8 .elementor-heading-title {
  font-size: clamp(1.6rem, 3vw, 2.2rem) !important;
}


/* ═══════════════════════════════════════════════════════
   5. BUTTONS
   ═══════════════════════════════════════════════════════ */
/* Global button improvements */
.elementor-button {
  border-radius: var(--nc-radius) !important;
  letter-spacing: 0.01em !important;
  transition: var(--nc-transition) !important;
  text-transform: none !important;          /* remove UPPERCASE */
  font-weight: 600 !important;
}

.elementor-button:active {
  transform: translateY(1px) !important;
}

/* Primary amber CTA — header "Request Appointment" */
.elementor-8 .elementor-element-cb994ef .elementor-button {
  background-color: var(--nc-amber) !important;
  border-color: var(--nc-amber) !important;
  color: #fff !important;
  box-shadow: var(--nc-shadow-btn) !important;
}

.elementor-8 .elementor-element-cb994ef .elementor-button:hover,
.elementor-8 .elementor-element-cb994ef .elementor-button:focus {
  background-color: var(--nc-amber-dark) !important;
  border-color: var(--nc-amber-dark) !important;
  box-shadow: var(--nc-shadow-btn-h) !important;
  transform: translateY(-1px) !important;
}

/* Secondary outline — header phone CTA */
.elementor-8 .elementor-element-8218bbd .elementor-button {
  border-color: var(--nc-blue) !important;
  color: var(--nc-blue) !important;
  background-color: transparent !important;
  fill: var(--nc-blue) !important;
}

.elementor-8 .elementor-element-8218bbd .elementor-button:hover,
.elementor-8 .elementor-element-8218bbd .elementor-button:focus {
  background-color: var(--nc-blue) !important;
  color: #fff !important;
  fill: #fff !important;
  transform: translateY(-1px) !important;
}

/* Primary CTAs on hero sections → amber (these are "Request an Appointment") */
.elementor-28 .elementor-element-7279dda .elementor-button,
.elementor-28 .elementor-element-ceb5cc2 .elementor-button {
  background-color: var(--nc-amber) !important;
  border-color: var(--nc-amber) !important;
  color: #fff !important;
  box-shadow: var(--nc-shadow-btn) !important;
}

.elementor-28 .elementor-element-7279dda .elementor-button:hover,
.elementor-28 .elementor-element-ceb5cc2 .elementor-button:hover {
  background-color: var(--nc-amber-dark) !important;
  border-color: var(--nc-amber-dark) !important;
  box-shadow: var(--nc-shadow-btn-h) !important;
  transform: translateY(-1px) !important;
}

/* Secondary CTAs in blue sections → deep blue fill for clear readability
   (Learn More × 4, All Articles — these sit on blue bg, amber text there is poor contrast) */
.elementor-28 .elementor-element-ea3770a .elementor-button,
.elementor-28 .elementor-element-34b6a3d .elementor-button,
.elementor-28 .elementor-element-059bcab .elementor-button,
.elementor-28 .elementor-element-171532c .elementor-button,
.elementor-28 .elementor-element-fa43aab .elementor-button,
.elementor-28 .elementor-element-a279ab8 .elementor-button {
  background-color: #fff !important;
  border-color: #fff !important;
  color: var(--nc-blue-dark) !important;
  font-weight: 700 !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.15) !important;
}

.elementor-28 .elementor-element-ea3770a .elementor-button:hover,
.elementor-28 .elementor-element-34b6a3d .elementor-button:hover,
.elementor-28 .elementor-element-059bcab .elementor-button:hover,
.elementor-28 .elementor-element-171532c .elementor-button:hover,
.elementor-28 .elementor-element-fa43aab .elementor-button:hover,
.elementor-28 .elementor-element-a279ab8 .elementor-button:hover {
  background-color: var(--nc-blue-light) !important;
  border-color: var(--nc-blue-light) !important;
  color: var(--nc-blue-dark) !important;
  box-shadow: 0 4px 14px rgba(0,0,0,.20) !important;
  transform: translateY(-1px) !important;
}


/* Footer white button (post-255 copyright bar) — keep dark text on white */
.elementor-255 .elementor-element-4458671 .elementor-button {
  background-color: #fff !important;
  color: #252525 !important;
}

/* Header phone outline button — blue text on transparent bg */
.elementor-8 .elementor-element-8218bbd .elementor-button {
  background-color: transparent !important;
  color: var(--nc-blue) !important;
  border-color: var(--nc-blue) !important;
  fill: var(--nc-blue) !important;
}

.elementor-8 .elementor-element-8218bbd .elementor-button:hover,
.elementor-8 .elementor-element-8218bbd .elementor-button:focus {
  background-color: var(--nc-blue) !important;
  color: #fff !important;
  fill: #fff !important;
}


/* ═══════════════════════════════════════════════════════
   6. HEADER & NAVIGATION
   ═══════════════════════════════════════════════════════ */
/* Logo size — larger for legibility of the wordmark */
.elementor-8 .elementor-element-d2c6393 img {
  width: 172px !important;
  max-width: 172px !important;
}

@media (max-width: 1024px) {
  .elementor-8 .elementor-element-d2c6393 img {
    width: 150px !important;
    max-width: 150px !important;
  }
}
@media (max-width: 767px) {
  .elementor-8 .elementor-element-d2c6393 img {
    width: 138px !important;
    max-width: 138px !important;
  }
}

/* Header bar */
.elementor-8 .elementor-element-ca3212d {
  background-color: var(--nc-white) !important;
  box-shadow: 0 1px 0 var(--nc-border), 0 2px 14px rgba(0,0,0,.055) !important;
}

/* Contain header content on wide screens + distribute the three columns
   (logo auto · nav flexible/centered · actions auto) instead of rigid thirds. */
.elementor-8 .elementor-element-ca3212d > .elementor-container {
  max-width: 1260px !important;
  margin-inline: auto !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 1rem;
}
.elementor-8 .elementor-element-8452622 { width: auto !important; flex: 0 0 auto !important; }
.elementor-8 .elementor-element-17ee3c8 { width: auto !important; flex: 1 1 auto !important; }
.elementor-8 .elementor-element-30c2589 { width: auto !important; flex: 0 0 auto !important; }

/* Right-side action buttons: keep on one line, never wrap the phone number */
.elementor-8 .elementor-element-30c2589 .elementor-widget-wrap {
  flex-wrap: nowrap !important;
  justify-content: flex-end !important;
  align-items: center !important;
  gap: .6rem;
}
.elementor-8 .elementor-element-30c2589 .elementor-button,
.elementor-8 .elementor-element-30c2589 .elementor-button-text { white-space: nowrap !important; }

/* Nav items */
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item {
  color: var(--nc-text) !important;
  font-size: 14.5px !important;
  font-weight: 600 !important;
  padding-left: 10px !important;
  padding-right: 10px !important;
  transition: color 0.15s !important;
}

.elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item:hover,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item.elementor-item-active,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item.highlighted {
  color: var(--nc-blue) !important;
  fill: var(--nc-blue) !important;
}

/* Active item — color + slight weight emphasis */
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item.elementor-item-active {
  color: var(--nc-blue) !important;
  fill: var(--nc-blue) !important;
}

/* Dropdown menu — white background (was dark #343434) */
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown {
  background-color: var(--nc-white) !important;
  border: 1px solid var(--nc-border) !important;
  border-top: 3px solid var(--nc-blue) !important;
  border-radius: 0 0 var(--nc-radius) var(--nc-radius) !important;
  box-shadow: 0 8px 28px rgba(0,0,0,.12), 0 3px 8px rgba(0,0,0,.06) !important;
  overflow: visible !important;   /* allow full text to show */
  min-width: 260px !important;    /* fits longest items like "Sleep Apnea Evaluation & Treatment" */
  width: max-content !important;  /* grow to text width, never clip */
}

.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a:visited {
  color: var(--nc-text) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 10px 18px !important;
  white-space: nowrap !important;  /* keep each item on one line */
  transition: background 0.14s, color 0.14s !important;
  border-bottom: 1px solid var(--nc-border) !important;
  display: block;
}

.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a:last-child {
  border-bottom: none !important;
}

/* Round hover highlight corners to match container radius */
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown li:last-child a {
  border-radius: 0 0 var(--nc-radius) var(--nc-radius) !important;
}

.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a:hover,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a:focus,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a.elementor-item-active,
.elementor-8 .elementor-element-e580eda .elementor-nav-menu--dropdown a.highlighted {
  color: var(--nc-blue) !important;
  background-color: var(--nc-blue-xlight) !important;
}

/* Hamburger toggle */
.elementor-menu-toggle {
  transition: var(--nc-transition) !important;
}

.elementor-menu-toggle:hover {
  opacity: 0.85 !important;
}


/* ═══════════════════════════════════════════════════════
   7. HERO SECTIONS
   ═══════════════════════════════════════════════════════ */
/* Stronger, more cinematic gradient overlay */
.elementor-28 .elementor-element-f884446 > .elementor-background-overlay,
.elementor-28 .elementor-element-86f0cd9 > .elementor-background-overlay {
  background-image: linear-gradient(
    95deg,
    rgba(5,20,38,0.88) 0%,
    rgba(5,20,38,0.68) 38%,
    rgba(5,20,38,0.20) 68%,
    transparent 88%
  ) !important;
  opacity: 1 !important;
}

/* Wave dividers from hero — match refined blue */
.elementor-28 .elementor-element-f884446 > .elementor-shape-bottom .elementor-shape-fill,
.elementor-28 .elementor-element-86f0cd9 > .elementor-shape-bottom .elementor-shape-fill {
  fill: var(--nc-blue) !important;
}


/* ═══════════════════════════════════════════════════════
   8. SECTIONS — BLUE BACKGROUNDS
   ═══════════════════════════════════════════════════════ */
/* Icon-box cards on blue sections — better shadows */
.elementor-28 .elementor-element-c963234 > .elementor-element-populated,
.elementor-28 .elementor-element-21c40d7 > .elementor-element-populated {
  box-shadow: 0 6px 24px rgba(0,0,0,.20) !important;
  border-radius: 10px !important;
  transition: box-shadow 0.25s var(--nc-ease), transform 0.25s var(--nc-ease) !important;
}

.elementor-28 .elementor-element-c963234:hover > .elementor-element-populated,
.elementor-28 .elementor-element-21c40d7:hover > .elementor-element-populated {
  box-shadow: 0 14px 40px rgba(0,0,0,.28) !important;
  transform: translateY(-5px);
}

/* Icon box content improvements */
.elementor-icon-box-wrapper {
  transition: var(--nc-transition) !important;
}

/* ═══════════════════════════════════════════════════════
   9. SERVICE IMAGE CARDS
   ═══════════════════════════════════════════════════════ */
.elementor-image-box-wrapper {
  transition: var(--nc-transition) !important;
}

.elementor-widget-image-box {
  transition: var(--nc-transition) !important;
}

.elementor-widget-image-box:hover .elementor-image-box-wrapper {
  transform: translateY(-4px) !important;
}

.elementor-image-box-img img {
  border-radius: var(--nc-radius) !important;
  transition: transform 0.30s var(--nc-ease) !important;
  box-shadow: var(--nc-shadow-xs) !important;
}

.elementor-widget-image-box:hover .elementor-image-box-img img {
  transform: scale(1.025) !important;
  box-shadow: var(--nc-shadow-sm) !important;
}

.elementor-image-box-title {
  letter-spacing: -0.01em !important;
}


/* ═══════════════════════════════════════════════════════
   10. TESTIMONIAL CARDS
   ═══════════════════════════════════════════════════════ */
.elementor-testimonial__inner {
  background: var(--nc-white) !important;
  border-radius: var(--nc-radius-lg) !important;
  box-shadow: var(--nc-shadow) !important;
  border: 1px solid var(--nc-border) !important;
  transition: var(--nc-transition) !important;
  padding: 24px 20px !important;
}

.elementor-testimonial__inner:hover {
  box-shadow: var(--nc-shadow-lg) !important;
  transform: translateY(-3px) !important;
  border-color: var(--nc-border-mid) !important;
}

.elementor-testimonial__text {
  font-style: italic;
  color: var(--nc-text-muted) !important;
  line-height: 1.7 !important;
}

.elementor-testimonial__name {
  color: var(--nc-text) !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}


/* ═══════════════════════════════════════════════════════
   11. ARTICLE / POST CARDS — GLOBAL
   ═══════════════════════════════════════════════════════ */
.elementor-post__card {
  border-radius: var(--nc-radius) !important;
  overflow: hidden !important;
  box-shadow: var(--nc-shadow-sm) !important;
  border: 1px solid var(--nc-border) !important;
  transition: var(--nc-transition) !important;
  background: var(--nc-white) !important;
}

.elementor-post__card:hover {
  box-shadow: var(--nc-shadow-lg) !important;
  transform: translateY(-5px) !important;
  border-color: var(--nc-border-mid) !important;
}

/* Force uniform 16:9 thumbnail so all cards align regardless of original image size.
   Elementor sizes this box with the padding-bottom hack (height:0 + padding), so the
   image MUST be absolutely positioned — height:100% against a zero-height box collapses
   to nothing (this was leaving the thumbnails blank). Override the ratio to a clean 16:9. */
.elementor-post__thumbnail {
  position: relative !important;
  height: 0 !important;
  padding-bottom: 56.25% !important;   /* 16:9 */
  overflow: hidden !important;
}

.elementor-post__thumbnail img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  transition: transform 0.35s var(--nc-ease) !important;
  display: block;
}

.elementor-post__card:hover .elementor-post__thumbnail img {
  transform: scale(1.06) !important;
}

.elementor-post__title a {
  color: var(--nc-text) !important;
  transition: color 0.15s !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
}

.elementor-post__card:hover .elementor-post__title a {
  color: var(--nc-blue) !important;
}

.elementor-post-info,
.elementor-post__meta-data {
  color: var(--nc-text-muted) !important;
  font-size: 13px !important;
}

/* Category badge — brand colour instead of gray */
.elementor-post__badge {
  background: var(--nc-blue) !important;
  color: #fff !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  border-radius: 4px !important;
  padding: 4px 10px !important;
}


/* ═══════════════════════════════════════════════════════
   11b. ARTICLES LISTING PAGE (post-133) — PAGE-SPECIFIC
   ═══════════════════════════════════════════════════════ */

/* ── Card grid: equal-height rows ─────────────────────── */
.elementor-133 .elementor-posts-container {
  align-items: stretch !important;
}

.elementor-133 .elementor-post {
  display: flex !important;
  flex-direction: column !important;
}

.elementor-133 .elementor-post__card {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
}

.elementor-133 .elementor-post__card .elementor-post__text {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
}

/* Push meta to bottom of each card */
.elementor-133 .elementor-post__card .elementor-post__meta-data {
  margin-top: auto !important;
}

/* ── Title sizing ──────────────────────────────────────── */
.elementor-133 .elementor-post__title {
  font-size: 17px !important;
  line-height: 1.35 !important;
}

.elementor-133 .elementor-post__title a {
  font-weight: 600 !important;
}

/* ── Page hero section background ─────────────────────── */
.elementor-133 [data-id="01f9aa2"] {
  background: linear-gradient(150deg, var(--nc-blue-dark) 0%, var(--nc-blue) 100%) !important;
  padding: 28px 0 32px !important;
}

.elementor-133 [data-id="01f9aa2"] .elementor-heading-title {
  color: #fff !important;
  font-size: clamp(1.8rem, 3vw, 2.8rem) !important;
  letter-spacing: -0.02em !important;
}

/* ── CALL US TODAY CTA banner ──────────────────────────── */
.elementor-133 [data-id="0ba0c1a"] {
  background: var(--nc-blue) !important;
  padding: 40px 0 !important;
  margin-top: 48px !important;
}

.elementor-133 [data-id="0ba0c1a"] .elementor-heading-title {
  color: #fff !important;
}

/* "CALL US TODAY" label — smaller, muted treatment */
.elementor-133 [data-id="1637023"] .elementor-heading-title {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  opacity: 0.75 !important;
  margin-bottom: 4px !important;
}

/* "Request an Appointment" heading — large, bold */
.elementor-133 [data-id="24e2586"] .elementor-heading-title {
  font-size: clamp(1.5rem, 2.5vw, 2rem) !important;
  font-weight: 700 !important;
  margin-bottom: 20px !important;
}

/* CTA button in banner — amber */
.elementor-133 [data-id="0da1907"] .elementor-button {
  background-color: var(--nc-amber) !important;
  border-color: var(--nc-amber) !important;
  color: #fff !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  padding: 14px 32px !important;
  box-shadow: var(--nc-shadow-btn) !important;
}

.elementor-133 [data-id="0da1907"] .elementor-button:hover {
  background-color: var(--nc-amber-dark) !important;
  border-color: var(--nc-amber-dark) !important;
  transform: translateY(-1px) !important;
  box-shadow: var(--nc-shadow-btn-h) !important;
}

/* ── Search, Categories, Recent Articles — stacked sidebar cards ──
   These inner-sections live in the narrow right sidebar column, so they
   must stay full-width; forcing 33% here squeezes titles to one char/line. */
.elementor-133 [data-id="5fcc64e"],
.elementor-133 [data-id="bf5eafe"],
.elementor-133 [data-id="fe2234b"] {
  display: block !important;
  width: 100% !important;
  box-sizing: border-box !important;
  padding: 22px 20px !important;
  margin: 0 0 20px !important;
  background: var(--nc-white) !important;
  border: 1px solid var(--nc-border) !important;
  border-radius: var(--nc-radius) !important;
}

/* Section headings in sidebar panels */
.elementor-133 [data-id="5fcc64e"] .elementor-heading-title,
.elementor-133 [data-id="bf5eafe"] .elementor-heading-title,
.elementor-133 [data-id="fe2234b"] .elementor-heading-title {
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: var(--nc-text-muted) !important;
  margin-bottom: 16px !important;
  padding-bottom: 10px !important;
  border-bottom: 2px solid var(--nc-blue) !important;
}

/* ── Search input ────────────────────────────────────── */
.elementor-133 .elementor-search-form__container {
  border: 1.5px solid var(--nc-border) !important;
  border-radius: 6px !important;
  overflow: hidden !important;
  display: flex !important;
  transition: border-color 0.15s !important;
}

.elementor-133 .elementor-search-form__container:focus-within {
  border-color: var(--nc-blue) !important;
  box-shadow: 0 0 0 3px rgba(26,120,160,.12) !important;
}

.elementor-133 .elementor-search-form__input {
  border: none !important;
  outline: none !important;
  padding: 10px 14px !important;
  font-size: 14px !important;
  color: var(--nc-text) !important;
  flex: 1 !important;
  background: transparent !important;
}

.elementor-133 .elementor-search-form__submit {
  background: var(--nc-blue) !important;
  color: #fff !important;
  border: none !important;
  padding: 0 16px !important;
  cursor: pointer !important;
  transition: background 0.15s !important;
}

.elementor-133 .elementor-search-form__submit:hover {
  background: var(--nc-blue-dark) !important;
}

.elementor-133 .elementor-search-form__submit i {
  color: #fff !important;
}

/* ── Categories list — pill tags ─────────────────────── */
.elementor-133 .elementor-sitemap-list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
}

.elementor-133 .elementor-sitemap-item {
  margin: 0 !important;
}

.elementor-133 .elementor-sitemap-item a {
  display: inline-block !important;
  background: var(--nc-blue-light) !important;
  color: var(--nc-blue-dark) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  padding: 5px 14px !important;
  border-radius: 999px !important;
  text-decoration: none !important;
  border: 1px solid var(--nc-border) !important;
  transition: var(--nc-transition) !important;
}

.elementor-133 .elementor-sitemap-item a:hover {
  background: var(--nc-blue) !important;
  color: #fff !important;
  border-color: var(--nc-blue) !important;
}

/* ── Recent Articles — styled link list ──────────────── */
.elementor-133 [data-id="fe2234b"] .elementor-post {
  border-bottom: 1px solid var(--nc-border) !important;
  padding: 10px 0 !important;
  margin: 0 !important;
  transition: var(--nc-transition) !important;
}

.elementor-133 [data-id="fe2234b"] .elementor-post:last-child {
  border-bottom: none !important;
}

.elementor-133 [data-id="fe2234b"] .elementor-post:hover {
  padding-left: 6px !important;
}

.elementor-133 [data-id="fe2234b"] .elementor-post__title {
  font-size: 14px !important;
  line-height: 1.4 !important;
  margin: 0 !important;
}

.elementor-133 [data-id="fe2234b"] .elementor-post__title a {
  color: var(--nc-text) !important;
  font-weight: 500 !important;
}

.elementor-133 [data-id="fe2234b"] .elementor-post__title a:hover {
  color: var(--nc-blue) !important;
}

/* ── Pagination — hidden on the static mirror ──────────
   Page 1 already lists every article, and the "?e-page=2" links can't
   paginate without a backend (they just reload page 1), so the broken-looking
   Previous/1/2/Next control is removed rather than styled. */
.elementor-133 .elementor-pagination { display: none !important; }

/* ── Responsive: stack sidebar sections on mobile/tablet ─ */
@media (max-width: 900px) {
  .elementor-133 [data-id="5fcc64e"],
  .elementor-133 [data-id="bf5eafe"],
  .elementor-133 [data-id="fe2234b"] {
    display: block !important;
    width: 100% !important;
    border-left: none !important;
    border-right: none !important;
    padding: 24px 20px !important;
  }
}


/* ═══════════════════════════════════════════════════════
   12. DOCTOR / TEAM PROFILE CARDS
   ═══════════════════════════════════════════════════════ */
/* Profile images */
.elementor-widget-image img {
  transition: transform 0.30s var(--nc-ease) !important;
}

/* Doctor page image hover */
.elementor-widget-image:hover img {
  transform: scale(1.02) !important;
}

/* Credential callouts */
.elementor-widget-icon-list .elementor-icon-list-item {
  transition: transform 0.15s !important;
  padding: 2px 0 !important;
}

.elementor-widget-icon-list .elementor-icon-list-item:hover {
  transform: translateX(3px) !important;
}

.elementor-icon-list-text {
  line-height: 1.5 !important;
}


/* ═══════════════════════════════════════════════════════
   13. DIVIDERS — REFINE
   ═══════════════════════════════════════════════════════ */
.elementor-divider-separator {
  border-color: var(--nc-border-mid) !important;
  opacity: 0.7;
}


/* ═══════════════════════════════════════════════════════
   14. FOOTER
   ═══════════════════════════════════════════════════════ */
/* Custom multi-column footer — structure lives in partials/footer.html
   (.nc-foot-*). Replaces the original single-column Elementor footer. */
.elementor-location-footer { background: var(--nc-dark); }
.nc-foot {
  background:
    radial-gradient(900px 360px at 12% -25%, rgba(26,120,160,.14), transparent 70%),
    var(--nc-dark);
  color: rgba(255,255,255,.88);
  font-family: var(--nc-font-body);
}
.nc-foot-inner {
  max-width: 1180px; margin-inline: auto;
  padding: clamp(2.6rem, 5vw, 4rem) clamp(1.1rem, 4vw, 2rem) clamp(2rem, 4vw, 3rem);
  display: grid; gap: clamp(1.8rem, 3vw, 2.6rem) clamp(1.5rem, 3vw, 3rem);
  grid-template-columns: 1.8fr 1fr 1fr 1.5fr;
}
.nc-foot-h {
  font-family: var(--nc-font-display); font-weight: 700;
  font-size: .82rem; letter-spacing: .1em; text-transform: uppercase;
  color: #fff; margin: 0 0 1.15rem;
}

/* Brand column */
.nc-foot-logo { display: inline-block; }
.nc-foot-logo img { width: 200px; height: auto; }
.nc-foot-tagline {
  margin: 1.05rem 0 1.35rem; max-width: 34ch;
  font-size: .95rem; line-height: 1.65; color: rgba(255,255,255,.88);
}
.nc-foot-rating {
  display: inline-flex; align-items: center; gap: .55rem;
  text-decoration: none; font-size: .9rem; color: #fff;
  background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px; padding: .5rem .95rem;
  transition: background .18s var(--nc-ease), border-color .18s var(--nc-ease);
}
.nc-foot-rating:hover { background: rgba(255,255,255,.13); border-color: rgba(255,255,255,.34); }
.nc-foot-rating strong { color: #fff; font-weight: 800; }
.nc-foot-rating-stars { color: var(--nc-amber); letter-spacing: 1px; font-size: .95rem; }

/* Link columns */
.nc-foot-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .72rem; }
.nc-foot-col a {
  color: rgba(255,255,255,.88); text-decoration: none; font-size: .95rem;
  transition: color .15s var(--nc-ease);
}
.nc-foot-col a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* Contact column */
.nc-foot-contact-list { list-style: none; margin: 0 0 1.25rem; padding: 0; display: flex; flex-direction: column; gap: .72rem; }
.nc-foot-contact-list li { display: flex; gap: .7rem; align-items: flex-start; font-size: .95rem; line-height: 1.5; color: #fff; }
.nc-foot-contact-list svg { width: 18px; height: 18px; flex: none; margin-top: 2px; color: var(--nc-amber); }
.nc-foot-contact-list a { color: #fff; text-decoration: none; transition: color .15s var(--nc-ease); }
.nc-foot-contact-list a:hover { color: var(--nc-amber); }
.nc-foot-cta {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--nc-font-display); font-weight: 700; font-size: .92rem;
  text-decoration: none; color: #fff; background: var(--nc-amber);
  border-radius: 999px; padding: .78rem 1.5rem; box-shadow: var(--nc-shadow-btn);
  transition: background .18s var(--nc-ease), transform .18s var(--nc-ease), box-shadow .18s var(--nc-ease);
}
.nc-foot-cta:hover { background: var(--nc-amber-dark); color: #fff; transform: translateY(-2px); box-shadow: var(--nc-shadow-btn-h); }

/* Bottom bar */
.nc-foot-bottom { background: var(--nc-dark-accent); border-top: 1px solid rgba(255,255,255,.09); }
.nc-foot-bottom-inner {
  max-width: 1180px; margin-inline: auto;
  padding: 1.1rem clamp(1.1rem, 4vw, 2rem);
  display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; align-items: center; justify-content: space-between;
  font-size: .85rem; color: rgba(255,255,255,.78);
}
.nc-foot-bottom-inner p { margin: 0; }
.nc-foot-bottom-links { display: flex; gap: .7rem; align-items: center; }
.nc-foot-bottom-links a { color: rgba(255,255,255,.88); text-decoration: none; transition: color .15s var(--nc-ease); }
.nc-foot-bottom-links a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* Footer links must override the site-wide brand-blue <a> rule
   (.elementor-kit-6 a:not(.elementor-button)) which uses !important. */
.nc-foot a:not(.elementor-button) { color: rgba(255,255,255,.88) !important; text-decoration: none !important; }
.nc-foot a:not(.elementor-button):hover { color: #fff !important; }
.nc-foot .nc-foot-contact-list a { color: #fff !important; }
.nc-foot .nc-foot-contact-list a:hover { color: var(--nc-amber) !important; }
.nc-foot a.nc-foot-rating,
.nc-foot a.nc-foot-cta { color: #fff !important; }
.nc-foot .nc-foot-col a:hover,
.nc-foot .nc-foot-bottom-links a:hover { text-decoration: underline !important; text-underline-offset: 3px; }

@media (max-width: 900px) {
  /* Brand + Get-in-touch span full width; the two short link lists pair up. */
  .nc-foot-inner { grid-template-columns: 1fr 1fr; }
  .nc-foot-brand, .nc-foot-contact { grid-column: 1 / -1; }
}
@media (max-width: 767px) {
  /* The sticky mobile bar already offers "Request an Appointment" — drop the
     duplicate footer button to cut clutter on phones. */
  .nc-foot-cta { display: none; }
  .nc-foot-contact-list { margin-bottom: 0; }
}
@media (max-width: 560px) {
  /* Keep the link lists side-by-side (compact) instead of a long single stack,
     trim the tagline, and tighten spacing so the footer isn't overwhelming. */
  .nc-foot-inner { padding-top: 2.2rem; gap: 1.5rem 1.1rem; }
  .nc-foot-tagline { display: none; }
  .nc-foot-bottom-inner { justify-content: center; text-align: center; }
}


/* ═══════════════════════════════════════════════════════
   15. ACCESSIBILITY & FOCUS STATES
   ═══════════════════════════════════════════════════════ */
/* Visible focus rings for keyboard users */
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
.elementor-button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid var(--nc-amber) !important;
  outline-offset: 3px !important;
  border-radius: 4px !important;
}

/* Skip link improvement */
.skip-link:focus {
  position: fixed !important;
  top: 12px !important;
  left: 12px !important;
  z-index: 99999 !important;
  background: var(--nc-amber) !important;
  color: #fff !important;
  padding: 10px 16px !important;
  border-radius: var(--nc-radius-sm) !important;
  font-weight: 600 !important;
  box-shadow: var(--nc-shadow) !important;
  text-decoration: none !important;
}

/* Scroll anchor offset */
[id] {
  scroll-margin-top: 80px;
}


/* ═══════════════════════════════════════════════════════
   16. MOBILE — TABLET (≤1024px)
   ═══════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
  /* Hamburger button — visible & branded */
  .elementor-menu-toggle {
    background-color: var(--nc-blue) !important;
    border-radius: var(--nc-radius-sm) !important;
    min-width: 40px !important;
    min-height: 40px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .elementor-menu-toggle i,
  .elementor-menu-toggle .e-font-icon-svg {
    color: var(--nc-white) !important;
    fill: var(--nc-white) !important;
  }

  /* Mobile nav items */
  .elementor-nav-menu--dropdown .elementor-item,
  .elementor-nav-menu--dropdown .elementor-sub-item {
    color: var(--nc-text) !important;
    padding: 12px 20px !important;
    font-size: 15px !important;
    border-bottom: 1px solid var(--nc-border) !important;
  }
}


/* ═══════════════════════════════════════════════════════
   17. MOBILE — PHONE (≤767px)
   ═══════════════════════════════════════════════════════ */
@media (max-width: 767px) {
  /* Touch-friendly buttons */
  .elementor-button {
    min-height: 44px !important;
    padding-top: 11px !important;
    padding-bottom: 11px !important;
    font-size: 15px !important;
  }

  /* Smaller wave on mobile */
  .elementor-shape-bottom svg,
  .elementor-shape-top svg {
    height: 28px !important;
  }

  /* Header padding on small screens */
  .elementor-8 .elementor-element-ca3212d {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }

  /* Article card titles */
  .elementor-post__title {
    font-size: 1rem !important;
  }

  /* Testimonial padding */
  .elementor-testimonial__inner {
    padding: 18px 16px !important;
  }

  /* Footer is now the custom .nc-foot grid — responsive rules live with it. */
}


/* ═══════════════════════════════════════════════════════
   18. CONTACT PAGE ENHANCEMENTS
   ═══════════════════════════════════════════════════════ */
/* Form inputs */
.elementor-field-group input,
.elementor-field-group textarea,
.elementor-field-group select {
  border: 1.5px solid var(--nc-border) !important;
  border-radius: var(--nc-radius-sm) !important;
  transition: border-color 0.15s, box-shadow 0.15s !important;
  font-size: 15px !important;
  padding: 12px 14px !important;
  background: var(--nc-white) !important;
  color: var(--nc-text) !important;
}

.elementor-field-group input:focus,
.elementor-field-group textarea:focus,
.elementor-field-group select:focus {
  border-color: var(--nc-blue) !important;
  box-shadow: 0 0 0 3px rgba(26,120,160,.15) !important;
  outline: none !important;
}

.elementor-field-group label {
  font-weight: 600 !important;
  color: var(--nc-text) !important;
  font-size: 14px !important;
  letter-spacing: 0.01em !important;
  margin-bottom: 5px !important;
}

/* Form submit button */
.elementor-button[type="submit"],
.elementor-field-type-submit .elementor-button {
  background-color: var(--nc-amber) !important;
  border-color: var(--nc-amber) !important;
  color: var(--nc-white) !important;
  box-shadow: var(--nc-shadow-btn) !important;
}

.elementor-button[type="submit"]:hover,
.elementor-field-type-submit .elementor-button:hover {
  background-color: var(--nc-amber-dark) !important;
  border-color: var(--nc-amber-dark) !important;
  box-shadow: var(--nc-shadow-btn-h) !important;
  transform: translateY(-1px) !important;
}


/* ═══════════════════════════════════════════════════════
   19. SOCIAL ICONS
   ═══════════════════════════════════════════════════════ */
/* Header social icons */
.elementor-8 .elementor-element-c9be081 .elementor-social-icon {
  background-color: var(--nc-amber) !important;
  border-color: var(--nc-border) !important;
  transition: var(--nc-transition) !important;
}

.elementor-8 .elementor-element-c9be081 .elementor-social-icon:hover {
  background-color: var(--nc-amber-dark) !important;
  transform: translateY(-2px) !important;
}

/* Right-align the mobile/tablet action icons (logo left, actions right).
   Widget only renders ≤1024px, so this never affects the desktop nav. */
.elementor-8 .elementor-element-c9be081 .elementor-grid {
  justify-content: flex-end !important;
  gap: 9px !important;
}

/* Mobile menu icon — ensure tappable above sticky header layers,
   and visually distinct (brand blue) from the amber call/email icons. */
.elementor-8 .elementor-element-c9be081 .elementor-social-icon-align-justify {
  pointer-events: auto !important;
  position: relative !important;
  z-index: 100 !important;
  cursor: pointer !important;
  -webkit-tap-highlight-color: transparent;
  border: 0;
  font: inherit;
  appearance: none;
  -webkit-appearance: none;
  background-color: var(--nc-blue) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.elementor-8 .elementor-element-c9be081 .elementor-social-icon-align-justify:hover {
  background-color: var(--nc-blue-dark) !important;
}
/* Inline burger glyph (replaces the missing FontAwesome icon). Drawn purely in
   CSS as three white bars so it's immune to Elementor's svg/font-size:0 icon
   rules that collapsed an <svg> to 0px wide. */
.nc-menu-btn .nc-burger {
  display: block !important;
  flex: 0 0 22px !important;     /* flex-basis governs the item's width; beats the
                                    width:0 the icon CSS otherwise forces */
  width: 22px !important;
  min-width: 22px !important;
  height: 15px !important;
  background:
    linear-gradient(#fff, #fff) top    / 22px 2.4px no-repeat,
    linear-gradient(#fff, #fff) center / 22px 2.4px no-repeat,
    linear-gradient(#fff, #fff) bottom / 22px 2.4px no-repeat !important;
}

/* Hide Elementor popup templates in page footer — menu is cloned into overlay */
.elementor-location-popup,
.elementor-popup-modal {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* ── Manual mobile menu overlay — slide-in accordion panel ── */
#nc-mobile-menu-overlay {
  display: none;
  position: fixed; inset: 0; z-index: 999999;
  background: rgba(6, 22, 38, 0.62);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
#nc-mobile-menu-overlay.is-open { display: block !important; }

.nc-mobile-menu-panel {
  position: fixed; top: 0; right: 0;
  width: min(360px, 90vw);
  height: 100%; height: 100dvh;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  background: var(--nc-dark);
  box-shadow: -10px 0 40px rgba(0, 0, 0, 0.38);
  z-index: 1000000;
  padding-bottom: 28px;
  animation: ncMenuSlide .25s var(--nc-ease);
}
@keyframes ncMenuSlide { from { transform: translateX(100%); } to { transform: translateX(0); } }

/* Panel header (logo + close) — sticky */
.nc-mm-head {
  position: sticky; top: 0; z-index: 2;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 15px 16px 15px 20px;
  background: var(--nc-dark);
  border-bottom: 1px solid rgba(255, 255, 255, 0.10);
}
.nc-mm-head img { width: 140px; height: auto; display: block; }
.nc-mobile-menu-close {
  flex: none; width: 42px; height: 42px;
  display: flex; align-items: center; justify-content: center;
  border: 0; border-radius: 10px;
  background: rgba(255, 255, 255, 0.10); color: #fff;
  font-size: 26px; line-height: 1; cursor: pointer;
  transition: background .15s var(--nc-ease);
}
.nc-mobile-menu-close:hover { background: rgba(255, 255, 255, 0.20); }

/* Lists */
#nc-mobile-menu-overlay .nc-mm-body { padding: 4px 0; }
#nc-mobile-menu-overlay .elementor-nav-menu,
#nc-mobile-menu-overlay .elementor-nav-menu li,
#nc-mobile-menu-overlay .sub-menu { display: block; list-style: none; margin: 0; padding: 0; }
#nc-mobile-menu-overlay .nc-mobile-menu-nav > .elementor-nav-menu > li {
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

/* Top-level links — high-contrast white (beats the global brand-blue <a> rule) */
#nc-mobile-menu-overlay a.elementor-item {
  color: #fff !important;
  display: block; padding: 15px 20px;
  font-family: var(--nc-font-display); font-weight: 600; font-size: 16px;
  text-decoration: none !important;
}
#nc-mobile-menu-overlay a.elementor-item:hover,
#nc-mobile-menu-overlay a.elementor-item:focus {
  background: rgba(255, 255, 255, 0.07); color: #fff !important;
}

/* Parent rows: label + caret on one line, submenu wraps below.
   !important beats the more-specific `#overlay .elementor-nav-menu li{display:block}`. */
#nc-mobile-menu-overlay .menu-item-has-children { display: flex !important; flex-wrap: wrap; align-items: stretch; }
#nc-mobile-menu-overlay .menu-item-has-children > a { flex: 1; }
#nc-mobile-menu-overlay .nc-caret {
  flex: none; width: 54px;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 0; border-left: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.65); cursor: pointer;
  transition: background .15s var(--nc-ease), color .15s var(--nc-ease);
}
#nc-mobile-menu-overlay .nc-caret:hover { background: rgba(255, 255, 255, 0.07); color: #fff; }
#nc-mobile-menu-overlay .nc-caret svg { width: 16px; height: 16px; transition: transform .2s var(--nc-ease); }
#nc-mobile-menu-overlay .menu-item-has-children.nc-submenu-open > .nc-caret svg { transform: rotate(180deg); }

/* Submenus — collapsed by default, accordion-expanded */
#nc-mobile-menu-overlay .sub-menu { flex-basis: 100%; width: 100%; display: none; background: rgba(0, 0, 0, 0.22); }
#nc-mobile-menu-overlay .menu-item-has-children.nc-submenu-open > .sub-menu { display: block; }
#nc-mobile-menu-overlay .sub-menu a {
  color: rgba(255, 255, 255, 0.86) !important;
  display: block; padding: 13px 20px 13px 34px;
  font-size: 14.5px; font-weight: 500; text-decoration: none !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
#nc-mobile-menu-overlay .sub-menu a:hover,
#nc-mobile-menu-overlay .sub-menu a:focus { background: rgba(255, 255, 255, 0.07); color: #fff !important; }

/* Active page highlight */
#nc-mobile-menu-overlay a.elementor-item-active {
  color: var(--nc-amber) !important;
  box-shadow: inset 3px 0 0 var(--nc-amber);
}

html.nc-mobile-menu-open { overflow: hidden; }


/* ═══════════════════════════════════════════════════════
   20. SWIPER / CAROUSEL NAVIGATION
   ═══════════════════════════════════════════════════════ */
.swiper-button-next,
.swiper-button-prev {
  color: var(--nc-blue) !important;
  background: var(--nc-white) !important;
  border-radius: 50% !important;
  width: 40px !important;
  height: 40px !important;
  box-shadow: var(--nc-shadow-sm) !important;
  transition: var(--nc-transition) !important;
}

.swiper-button-next:hover,
.swiper-button-prev:hover {
  background: var(--nc-blue) !important;
  color: var(--nc-white) !important;
  box-shadow: var(--nc-shadow) !important;
}

.swiper-button-next::after,
.swiper-button-prev::after {
  font-size: 14px !important;
  font-weight: 700 !important;
}

.swiper-pagination-bullet-active {
  background: var(--nc-blue) !important;
}


/* ═══════════════════════════════════════════════════════
   21. SECTION PAGE TITLE HERO BANNERS (inner pages)
   ═══════════════════════════════════════════════════════ */
/* Tighten hero banners on inner pages */
.elementor-widget-heading .elementor-heading-title.elementor-size-xxl {
  font-size: clamp(2rem, 4vw, 3rem) !important;
  line-height: 1.15 !important;
}


/* ═══════════════════════════════════════════════════════
   22. INNER PAGE HERO BANNER (shared element d346923)
   ═══════════════════════════════════════════════════════ */
/* All inner page hero banners use a solid CSS-var gradient — make it directional */
.elementor-element-d346923:not(.elementor-motion-effects-element-type-background),
.elementor-element-d346923 > .elementor-motion-effects-container > .elementor-motion-effects-layer {
  background-image: linear-gradient(
    150deg,
    var(--nc-blue-dark) 0%,
    var(--nc-blue) 55%,
    var(--nc-blue-mid) 100%
  ) !important;
}

/* Hero shape bottom on inner pages */
.elementor-element-d346923 > .elementor-shape-bottom .elementor-shape-fill {
  fill: #fff !important;  /* transition to white content area */
}

.elementor-element-d346923 > .elementor-shape-bottom svg {
  height: 40px !important;
}

/* All text inside inner-page hero banners must be white (dark gradient bg) */
.elementor-element-d346923 .elementor-heading-title,
.elementor-element-d346923 .elementor-widget-text-editor,
.elementor-element-d346923 .elementor-widget-text-editor p,
.elementor-element-d346923 .elementor-widget-text-editor li,
.elementor-element-d346923 p,
.elementor-element-d346923 h1,
.elementor-element-d346923 h2,
.elementor-element-d346923 h3 {
  color: #fff !important;
}

/* Inner page title uppercase — make letter-spacing a bit better */
.elementor-element-b8f42ac .elementor-heading-title {
  letter-spacing: 0.05em !important;
  font-size: clamp(1.6rem, 3.5vw, 2.6rem) !important;
  line-height: 1.2 !important;
}


/* ═══════════════════════════════════════════════════════
   23. MISC POLISH
   ═══════════════════════════════════════════════════════ */
/* Prevent layout shift on images */
img {
  height: auto;
}

/* Improve icon list readability */
.elementor-icon-list-items {
  row-gap: 4px !important;
}

.elementor-icon-list-item {
  line-height: 1.55 !important;
  margin-bottom: 6px !important;
}

/* Section containers — consistent max-width behavior */
.elementor-section.elementor-section-boxed > .elementor-container {
  padding-left: 20px;
  padding-right: 20px;
}

/* Page-level content sections — vertical rhythm */
.elementor-section {
  scroll-margin-top: 80px;
}


/* ═══════════════════════════════════════════════════════
   24. TYPOGRAPHY APPLICATION  (Phase 4)
   New pairing applied with !important so it also beats the
   "Montserrat"/"Lato" hard-coded in archived per-post CSS.
   ═══════════════════════════════════════════════════════ */
body {
  font-family: var(--nc-font-body);
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern" 1, "liga" 1;
  background-color: var(--nc-bg);
}

/* Display face — headings & titles */
h1, h2, h3, h4, h5, h6,
.elementor-heading-title,
.elementor-image-box-title,
.elementor-icon-box-title,
.elementor-post__title, .elementor-post__title a,
.elementor-testimonial__name,
.elementor-flip-box__layer__title,
.elementor-cta__title {
  font-family: var(--nc-font-display) !important;
  font-feature-settings: "ss01" 1, "kern" 1;
}

/* Text face — body copy & UI */
p, li, blockquote, label,
input, textarea, select,
.elementor-widget-text-editor, .elementor-text-editor,
.elementor-widget-text-editor p, .elementor-widget-text-editor li,
.elementor-icon-list-text, .elementor-icon-box-description,
.elementor-image-box-description, .elementor-testimonial__text,
.elementor-button, .elementor-item, .elementor-sub-item,
.elementor-post__excerpt, .elementor-post-info,
.elementor-widget-theme-post-content {
  font-family: var(--nc-font-body) !important;
}

/* Brand selection highlight */
::selection      { background: var(--nc-blue); color: #fff; }
::-moz-selection { background: var(--nc-blue); color: #fff; }

/* Subtle branded scrollbar (desktop only) */
@media (min-width: 1025px) {
  html { scrollbar-width: thin; scrollbar-color: var(--nc-border-mid) var(--nc-blue-light); }
  ::-webkit-scrollbar { width: 12px; height: 12px; }
  ::-webkit-scrollbar-track { background: var(--nc-blue-light); }
  ::-webkit-scrollbar-thumb {
    background: var(--nc-border-mid);
    border-radius: 999px;
    border: 3px solid var(--nc-blue-light);
  }
  ::-webkit-scrollbar-thumb:hover { background: var(--nc-blue-mid); }
}


/* ═══════════════════════════════════════════════════════
   25. DESKTOP NAV — animated underline (premium micro-interaction)
   Scoped to the header's horizontal main menu only.
   ═══════════════════════════════════════════════════════ */
@media (min-width: 1025px) {
  .elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item {
    position: relative !important;
  }
  .elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item::after {
    content: "";
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: 4px;
    height: 2px;
    border-radius: 2px;
    background: var(--nc-blue);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.22s var(--nc-ease);
  }
  .elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item:hover::after,
  .elementor-8 .elementor-element-e580eda .elementor-nav-menu--main .elementor-item.elementor-item-active::after {
    transform: scaleX(1);
  }
}


/* ═══════════════════════════════════════════════════════
   26. LONG-FORM READING — blog post body (theme-post-content)
   Comfortable measure + rhythm for the dynamic article body.
   ═══════════════════════════════════════════════════════ */
.elementor-widget-theme-post-content {
  font-size: 1.05rem !important;
  line-height: 1.78 !important;
  color: var(--nc-text-body) !important;
}

.elementor-widget-theme-post-content > .elementor-widget-container > * {
  max-width: 72ch;
}

.elementor-widget-theme-post-content p {
  margin: 0 0 1.15em !important;
}

.elementor-widget-theme-post-content h2 {
  margin: 1.7em 0 0.5em !important;
  line-height: 1.25 !important;
}

.elementor-widget-theme-post-content h3 {
  margin: 1.35em 0 0.4em !important;
  line-height: 1.3 !important;
}

.elementor-widget-theme-post-content ul,
.elementor-widget-theme-post-content ol {
  line-height: 1.72 !important;
  margin: 0 0 1.15em !important;
  padding-left: 1.4em !important;
}

.elementor-widget-theme-post-content li { margin-bottom: 0.4em !important; }

.elementor-widget-theme-post-content a {
  color: var(--nc-blue) !important;
  text-decoration: underline;
  text-decoration-color: rgba(26,120,160,.35);
  text-underline-offset: 2px;
  transition: color 0.15s, text-decoration-color 0.15s;
}

.elementor-widget-theme-post-content a:hover {
  color: var(--nc-blue-dark) !important;
  text-decoration-color: var(--nc-blue);
}

.elementor-widget-theme-post-content img {
  border-radius: var(--nc-radius) !important;
  box-shadow: var(--nc-shadow-sm) !important;
  height: auto;
}

/* Blockquotes inside any rich-text content */
.elementor-widget-theme-post-content blockquote,
.elementor-widget-text-editor blockquote {
  border-left: 4px solid var(--nc-blue) !important;
  background: var(--nc-blue-light) !important;
  margin: 1.4em 0 !important;
  padding: 14px 20px !important;
  border-radius: 0 var(--nc-radius) var(--nc-radius) 0 !important;
  color: var(--nc-text) !important;
  font-style: italic;
}

/* Tables inside content — light, legible */
.elementor-widget-theme-post-content table,
.elementor-widget-text-editor table {
  width: 100%;
  border-collapse: collapse !important;
  margin: 1.4em 0 !important;
  font-size: 0.95rem;
}

.elementor-widget-theme-post-content th,
.elementor-widget-theme-post-content td,
.elementor-widget-text-editor th,
.elementor-widget-text-editor td {
  border: 1px solid var(--nc-border) !important;
  padding: 10px 14px !important;
  text-align: left;
}

.elementor-widget-theme-post-content th,
.elementor-widget-text-editor th {
  background: var(--nc-blue-light) !important;
  color: var(--nc-text) !important;
  font-weight: 600;
}


/* ═══════════════════════════════════════════════════════
   27. POST NAVIGATION — prev / next (single posts)
   ═══════════════════════════════════════════════════════ */
.elementor-post-navigation {
  border-top: 1px solid var(--nc-border) !important;
  border-bottom: 1px solid var(--nc-border) !important;
  padding: 18px 0 !important;
}

.elementor-post-navigation__prev,
.elementor-post-navigation__next {
  transition: var(--nc-transition) !important;
}

.elementor-post-navigation__link__prev,
.elementor-post-navigation__link__next {
  color: var(--nc-text-muted) !important;
  font-weight: 500 !important;
  transition: color 0.15s !important;
}

.elementor-post-navigation__prev:hover .elementor-post-navigation__link__prev,
.elementor-post-navigation__next:hover .elementor-post-navigation__link__next {
  color: var(--nc-blue) !important;
}

.elementor-post-navigation__prev:hover { transform: translateX(-3px); }
.elementor-post-navigation__next:hover { transform: translateX(3px); }

.elementor-post-navigation__separator {
  background-color: var(--nc-border) !important;
}


/* ═══════════════════════════════════════════════════════
   28. SHARE BUTTONS
   ═══════════════════════════════════════════════════════ */
.elementor-share-btn {
  border-radius: var(--nc-radius-sm) !important;
  transition: var(--nc-transition) !important;
}

.elementor-share-btn:hover {
  transform: translateY(-2px);
  filter: brightness(1.06);
}


/* ═══════════════════════════════════════════════════════
   29. FLIP BOXES
   ═══════════════════════════════════════════════════════ */
.elementor-flip-box__layer,
.elementor-flip-box__layer__overlay {
  border-radius: var(--nc-radius-lg) !important;
}

.elementor-flip-box {
  border-radius: var(--nc-radius-lg) !important;
  box-shadow: var(--nc-shadow) !important;
  overflow: hidden !important;
}

.elementor-flip-box__button {
  border-radius: var(--nc-radius) !important;
  font-weight: 600 !important;
  text-transform: none !important;
}


/* ═══════════════════════════════════════════════════════
   30. CONTENT IMAGES — rich-text editor
   ═══════════════════════════════════════════════════════ */
.elementor-widget-text-editor img {
  border-radius: var(--nc-radius) !important;
  height: auto;
}


/* ═══════════════════════════════════════════════════════
   31. LEGACY keisus / WPBakery PAGES  (Phase 4)
   The 5 old-theme pages (about/, about/our-*, tmj/symptoms/jaw-pain)
   lost ALL their theme + Bootstrap CSS in the archive. This layer is
   the only stylesheet reaching them, so the rules below give them a
   readable, on-brand layout. Everything is scoped to body.wpb-js-composer
   so Elementor pages are never affected.
   ═══════════════════════════════════════════════════════ */
.wpb-js-composer {
  color: var(--nc-text-body);
  line-height: 1.7;
}

.wpb-js-composer img { max-width: 100%; height: auto; }

/* ── Centered page container (Bootstrap .container is gone) ── */
.wpb-js-composer .container {
  max-width: 1160px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 20px;
  padding-right: 20px;
  box-sizing: border-box;
}

/* ── Grid fallback for vc_col-sm-* (Bootstrap grid is gone) ── */
.wpb-js-composer .vc_row-fluid,
.wpb-js-composer .wpb_row {
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
  align-items: flex-start;
}

.wpb-js-composer [class*="vc_col-sm-"] { box-sizing: border-box; min-width: 0; }
.wpb-js-composer .vc_col-sm-12 { flex: 0 0 100%; }
.wpb-js-composer .vc_col-sm-8  { flex: 1 1 calc(66.666% - 30px); }
.wpb-js-composer .vc_col-sm-6  { flex: 1 1 calc(50% - 30px); }
.wpb-js-composer .vc_col-sm-4  { flex: 1 1 calc(33.333% - 30px); }
.wpb-js-composer .vc_col-sm-3  { flex: 1 1 calc(25% - 30px); }

@media (max-width: 767px) {
  .wpb-js-composer [class*="vc_col-sm-"] { flex: 0 0 100%; }
}

/* ── Header bar ── */
.wpb-js-composer #header {
  background: var(--nc-white);
  border-bottom: 1px solid var(--nc-border);
  box-shadow: var(--nc-shadow-xs);
  padding: 12px 0;
}

.wpb-js-composer .header-logo img { max-width: 160px; }

.wpb-js-composer #primary-nav { margin-top: 6px; }

.wpb-js-composer #primary-menu.list-inline {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
  padding: 0;
  margin: 0;
}

.wpb-js-composer #primary-menu > li { position: relative; }

.wpb-js-composer #primary-menu a {
  display: block;
  padding: 10px 13px;
  color: var(--nc-text);
  font-weight: 600;
  font-size: 14.5px;
  text-decoration: none;
  border-radius: var(--nc-radius-sm);
  transition: var(--nc-transition);
}

.wpb-js-composer #primary-menu > li > a:hover,
.wpb-js-composer #primary-menu > li.current-menu-item > a,
.wpb-js-composer #primary-menu > li.current-menu-ancestor > a,
.wpb-js-composer #primary-menu > li.current-menu-parent > a {
  color: var(--nc-blue);
  background: var(--nc-blue-xlight);
}

/* Hover dropdown (keisus toggle JS is gone) */
.wpb-js-composer #primary-menu .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 230px;
  list-style: none;
  margin: 0;
  padding: 6px 0;
  background: var(--nc-white);
  border: 1px solid var(--nc-border);
  border-top: 3px solid var(--nc-blue);
  border-radius: 0 0 var(--nc-radius) var(--nc-radius);
  box-shadow: var(--nc-shadow);
  display: none;
  z-index: 9999;
}

.wpb-js-composer #primary-menu li:hover > .sub-menu,
.wpb-js-composer #primary-menu li:focus-within > .sub-menu { display: block; }

.wpb-js-composer #primary-menu .sub-menu a {
  padding: 9px 18px;
  font-weight: 500;
  white-space: nowrap;
  border-radius: 0;
}

.wpb-js-composer #primary-menu .sub-menu a:hover {
  background: var(--nc-blue-xlight);
  color: var(--nc-blue);
}

/* ── Page title ── */
.wpb-js-composer .page-title {
  font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  line-height: 1.2;
  color: var(--nc-text);
  margin: 28px 0 22px;
  padding-bottom: 12px;
  border-bottom: 3px solid var(--nc-blue);
}

/* ── Body content & typography ── */
.wpb-js-composer h1, .wpb-js-composer h2,
.wpb-js-composer h3, .wpb-js-composer h4 {
  color: var(--nc-text);
  line-height: 1.25;
}

.wpb-js-composer .wpb_text_column { line-height: 1.75; }
.wpb-js-composer .wpb_text_column p { margin: 0 0 1.1em; }

/* Content links turn brand blue. The ID-scoped header/footer nav rules
   above already outrank this by specificity, so they keep their own color. */
.wpb-js-composer a:not(.button) {
  color: var(--nc-blue);
  transition: color 0.15s;
}

.wpb-js-composer a:not(.button):hover { color: var(--nc-blue-dark); }

.wpb-js-composer .widget-title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--nc-text-muted);
  border-bottom: 2px solid var(--nc-blue);
  padding-bottom: 8px;
  margin-bottom: 16px;
}

.wpb-js-composer .wpb_single_image img,
.wpb-js-composer .wpb_text_column img {
  border-radius: var(--nc-radius);
}

/* ── Footer ── */
.wpb-js-composer #footer {
  background: var(--nc-dark);
  color: rgba(255,255,255,.80);
  padding: 44px 0 0;
  margin-top: 52px;
}

.wpb-js-composer #footer .widget-title {
  color: rgba(255,255,255,.72);
  border-bottom-color: rgba(255,255,255,.18);
}

.wpb-js-composer #footer a { color: rgba(255,255,255,.80); transition: color 0.15s; }
.wpb-js-composer #footer a:hover { color: var(--nc-white); }

.wpb-js-composer #copyright-wrapper {
  background: var(--nc-dark-accent);
  padding: 16px 0;
  margin-top: 36px;
  font-size: 14px;
}

.wpb-js-composer #secondary-nav ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  padding: 0;
  margin: 0;
}

.wpb-js-composer #secondary-nav a { color: rgba(255,255,255,.80); }
.wpb-js-composer #secondary-nav a:hover { color: var(--nc-white); }


/* ═══════════════════════════════════════════════════════
   32. HOME HERO — centered layout  (Phase 4)
   Center the headline, intro paragraph, and CTA as one block. The home
   page has two hero variants (both share the headline copy):
     • f884446 — DESKTOP (hidden-mobile). Two col-50 columns: content
       column ae244d8 (heading 734148a, text 8e0a25c, button 7279dda) on
       the left and an EMPTY column 0dd4f16 on the right. We collapse the
       empty column and centre the content column across the full width.
     • 86f0cd9 — MOBILE/TABLET (hidden-desktop). Single col-100 column
       704aa6c (heading ae010cb, text 75f3a15, button ceb5cc2).
   Also rebalance the overlay (§7 was a directional dark-left gradient) so
   the centered white text stays readable across the full width.
   ═══════════════════════════════════════════════════════ */

/* DESKTOP: drop the empty right column and centre the content column */
.elementor-28 .elementor-element-0dd4f16 { display: none !important; }

.elementor-28 .elementor-element-f884446 > .elementor-container {
  justify-content: center !important;
}

.elementor-28 .elementor-element-ae244d8 {
  width: 100% !important;
  max-width: 760px !important;
  flex: 0 1 760px !important;
}

/* Centre every widget row in both hero content columns. The widget-wrap is
   a flex container — justify-content centres the width-initial text widget,
   while text-align centres the inline content of the full-width widgets. */
.elementor-28 .elementor-element-ae244d8 > .elementor-widget-wrap,
.elementor-28 .elementor-element-704aa6c > .elementor-widget-wrap {
  justify-content: center !important;
}

.elementor-28 .elementor-element-ae244d8 .elementor-widget,
.elementor-28 .elementor-element-704aa6c .elementor-widget,
.elementor-28 .elementor-element-ae244d8 .elementor-widget-container,
.elementor-28 .elementor-element-704aa6c .elementor-widget-container {
  text-align: center !important;
}

/* Constrain the intro paragraph to a comfortable centred measure */
.elementor-28 .elementor-element-8e0a25c,
.elementor-28 .elementor-element-75f3a15 {
  width: 100% !important;
  max-width: 720px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Centre the CTA buttons (inline-block) within their widgets */
.elementor-28 .elementor-element-7279dda .elementor-button-wrapper,
.elementor-28 .elementor-element-ceb5cc2 .elementor-button-wrapper {
  text-align: center !important;
}

/* Balanced overlay for centred text (overrides the directional gradient in §7) */
.elementor-28 .elementor-element-f884446 > .elementor-background-overlay,
.elementor-28 .elementor-element-86f0cd9 > .elementor-background-overlay {
  background-image: linear-gradient(
    180deg,
    rgba(5,20,38,0.60) 0%,
    rgba(5,20,38,0.46) 45%,
    rgba(5,20,38,0.64) 100%
  ) !important;
  opacity: 1 !important;
}

/* On phones the cover image crops to the bright bridge right behind the
   headline — darken the overlay more and centre the image so the centred
   white text stays readable. */
@media (max-width: 767px) {
  /* Remove the stray "bridge band": a spacer-only section (2a1a31e) that sat
     above the hero and exposed the bright photo above the text. Also drop the
     hero's trailing spacer (a6921a3). */
  .elementor-28 .elementor-element-2a1a31e,
  .elementor-28 .elementor-element-a6921a3 {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
  }

  /* The mobile text section has no image of its own — give it the bridge photo
     (which previously only lived in the now-hidden band) so the text sits OVER
     the photo, like the desktop/tablet hero. Keep the block compact so the
     photo does not dominate the lower half of the hero on phones. */
  .elementor-28 .elementor-element-86f0cd9 {
    background-image: url("/wp-content/uploads/2023/09/The-Golden-Gate-Bridge-Wallpaper-for-Desktop.jpg") !important;
    background-position: center 22% !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
    padding: 36px 16px 44px !important;
    overflow: hidden !important;
  }
  .elementor-28 .elementor-element-86f0cd9 > .elementor-container {
    min-height: 0 !important;
  }
  .elementor-28 .elementor-element-86f0cd9 > .elementor-shape-bottom svg {
    height: 24px !important;
  }
  .elementor-28 .elementor-element-86f0cd9 > .elementor-background-overlay {
    background-image: linear-gradient(
      180deg,
      rgba(5,20,38,0.62) 0%,
      rgba(5,20,38,0.56) 42%,
      rgba(5,20,38,0.78) 100%
    ) !important;
  }
}

/* ElementsKit before/after slider — on the static mirror the comparison JS
   often fails to init, leaving both photos stacked full-width (very tall).
   Collapse to a single image until twentytwenty mounts. */
.elementskit-image-comparison {
  position: relative;
  overflow: hidden;
  line-height: 0;
  max-width: 100%;
}
.elementskit-image-comparison:not(.twentytwenty-container) > img {
  width: 100%;
  height: auto;
  max-height: 420px;
  object-fit: cover;
  display: block;
}
.elementskit-image-comparison:not(.twentytwenty-container) > img + img {
  display: none !important;
}
@media (max-width: 767px) {
  .elementskit-image-comparison:not(.twentytwenty-container) > img {
    max-height: min(280px, 46vh);
  }
  .elementskit-image-comparison.twentytwenty-container {
    max-height: min(320px, 48vh) !important;
  }
  .elementskit-image-comparison.twentytwenty-container img {
    max-height: min(320px, 48vh) !important;
    object-fit: cover;
  }

  /* Home OAT section — keep stacked column photos from dominating the layout */
  .elementor-28 .elementor-element-3e114e4 .elementor-widget-image img {
    width: 100%;
    max-height: min(300px, 46vh);
    object-fit: cover;
  }
}


/* ============================================================
   GR-TEST-ENH-v1
   (1) Google Reviews social-proof section — home page
   (2) Testimonials archive page — card polish
   Uses the --nc-* design tokens defined at the top of this file.
   ============================================================ */

/* ---------- (1) Google Reviews — home ---------- */
.gr-section {
  background:
    radial-gradient(1100px 380px at 50% -12%, var(--nc-blue-light), transparent 70%),
    var(--nc-bg-section);
  padding: clamp(3rem, 6vw, 5.5rem) 0;
  border-top: 1px solid var(--nc-border);
}
.gr-inner {
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: clamp(1rem, 4vw, 2rem);
  display: flex;
  flex-direction: column;
  gap: clamp(1.8rem, 4vw, 2.6rem);
}
.gr-intro { text-align: center; max-width: 640px; margin-inline: auto; }
.gr-eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--nc-font-display); font-weight: 600;
  font-size: .8rem; letter-spacing: .09em; text-transform: uppercase;
  color: var(--nc-blue);
}
.gr-intro h2 {
  font-family: var(--nc-font-display); font-weight: 800;
  font-size: clamp(1.7rem, 3.5vw, 2.35rem); color: var(--nc-text);
  margin: .6rem 0 .5rem; line-height: 1.12; letter-spacing: -.02em;
}
.gr-intro p { color: var(--nc-text-muted); font-size: 1.05rem; margin: 0; }

.gr-summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 1.1rem 2rem;
  padding: 1.3rem 1.6rem; background: var(--nc-white);
  border: 1px solid var(--nc-border); border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-sm);
}
.gr-summary-brand { display: flex; align-items: center; gap: .9rem; }
.gr-glogo { width: 40px; height: 40px; flex: none; }
.gr-summary-label {
  font-family: var(--nc-font-display); font-weight: 700;
  font-size: 1.1rem; color: var(--nc-text); line-height: 1.15;
}
.gr-summary-score { display: flex; align-items: center; gap: .85rem; margin-inline-start: auto; }
.gr-score-num {
  font-family: var(--nc-font-display); font-weight: 800;
  font-size: 2.3rem; line-height: 1; color: var(--nc-text);
}
.gr-score-meta { display: flex; flex-direction: column; gap: .2rem; }
.gr-score-meta small { color: var(--nc-text-muted); font-size: .85rem; }
.gr-score-meta strong { color: var(--nc-text); }

.gr-cta {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--nc-font-display); font-weight: 600; font-size: .95rem;
  text-decoration: none; color: var(--nc-text);
  background: var(--nc-white); border: 1.5px solid var(--nc-border);
  border-radius: 999px; padding: .7rem 1.2rem;
  transition: border-color .15s var(--nc-ease), box-shadow .15s var(--nc-ease), transform .15s var(--nc-ease);
}
.gr-cta:hover { border-color: var(--nc-blue); box-shadow: var(--nc-shadow-sm); transform: translateY(-1px); }
.gr-cta svg { width: 18px; height: 18px; flex: none; }

.gr-stars { display: inline-flex; gap: 2px; color: var(--nc-amber); line-height: 0; }
.gr-stars svg { width: 18px; height: 18px; fill: currentColor; }
.gr-stars--sm svg { width: 15px; height: 15px; }

.gr-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(1rem, 2.5vw, 1.6rem); align-items: stretch;
}
.gr-card {
  display: flex; flex-direction: column; margin: 0;
  background: var(--nc-white); border: 1px solid var(--nc-border);
  border-radius: var(--nc-radius-lg); padding: 1.35rem 1.5rem;
  box-shadow: var(--nc-shadow-sm);
  transition: transform .18s var(--nc-ease), box-shadow .18s var(--nc-ease), border-color .18s var(--nc-ease);
}
.gr-card:hover { transform: translateY(-4px); box-shadow: var(--nc-shadow); border-color: var(--nc-blue-light); }
.gr-card-top { display: flex; align-items: center; gap: .85rem; margin-bottom: .9rem; }
.gr-avatar {
  flex: none; width: 44px; height: 44px; border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--nc-font-display); font-weight: 700; font-size: 1.1rem;
  color: #fff; background: var(--gr-av, var(--nc-blue));
}
.gr-card-id { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.gr-name { font-family: var(--nc-font-display); font-weight: 700; color: var(--nc-text); line-height: 1.1; }
.gr-card-g { width: 22px; height: 22px; flex: none; margin-inline-start: auto; align-self: flex-start; }
.gr-quote {
  margin: 0; color: var(--nc-text-body); font-size: 1rem; line-height: 1.62;
  /* Collapse to a fixed 4 lines so every card is the same compact height.
     min-height reserves the full 4 lines even for short reviews. */
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
  overflow: hidden; min-height: calc(1.62em * 4);
}
.gr-card--expanded .gr-quote {
  display: block; -webkit-line-clamp: initial; overflow: visible; min-height: 0;
}
/* "Read more / Read less" toggle, injected by review-readmore.js only when
   a review's text actually overflows the clamp. */
.gr-readmore {
  align-self: flex-start; margin-top: .65rem; padding: 0;
  background: none; border: 0; cursor: pointer;
  font-family: var(--nc-font-display); font-weight: 700; font-size: .85rem;
  color: var(--nc-blue); transition: color .15s var(--nc-ease);
}
.gr-readmore:hover { color: var(--nc-blue-dark); text-decoration: underline; }

@media (max-width: 768px) {
  .gr-grid { grid-template-columns: 1fr; }
  .gr-summary { flex-direction: column; align-items: flex-start; }
  .gr-summary-score { margin-inline-start: 0; }
  .gr-cta { width: 100%; justify-content: center; }
}

/* ---------- (2) Testimonials archive — card polish ----------
   Scoped to the testimonials CPT archive so nothing else is touched.
   Each loop item carries the WP post_class `type-testimonials`; we add
   card chrome to whichever wrapper the listing widget renders. The
   :not() guards stop double-card chrome when the item is also an
   Elementor post card (which already has its own styling). */
body.post-type-archive-testimonials .elementor-widget-theme-archive-title .elementor-heading-title {
  font-family: var(--nc-font-display) !important;
  font-weight: 800 !important;
  letter-spacing: -.02em !important;
}

body.post-type-archive-testimonials .jet-listing-grid__item,
body.post-type-archive-testimonials .e-loop-item,
body.post-type-archive-testimonials article.type-testimonials:not(.elementor-post) {
  position: relative;
  background: var(--nc-white);
  border: 1px solid var(--nc-border);
  border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-sm);
  padding: 2.6rem 2rem 1.8rem;
  transition: transform .2s var(--nc-ease), box-shadow .2s var(--nc-ease), border-color .2s var(--nc-ease);
  height: 100%;
}
body.post-type-archive-testimonials .jet-listing-grid__item:hover,
body.post-type-archive-testimonials .e-loop-item:hover,
body.post-type-archive-testimonials article.type-testimonials:not(.elementor-post):hover {
  transform: translateY(-4px);
  box-shadow: var(--nc-shadow-lg);
  border-color: var(--nc-blue-light);
}

/* Decorative opening quote on each card */
body.post-type-archive-testimonials .jet-listing-grid__item::before,
body.post-type-archive-testimonials .e-loop-item::before,
body.post-type-archive-testimonials article.type-testimonials:not(.elementor-post)::before {
  content: "\201C";
  position: absolute; top: .2rem; left: 1.1rem;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 4.2rem; line-height: 1;
  color: var(--nc-blue); opacity: .13; pointer-events: none;
}

/* Elementor-post-based testimonial cards: add the gold star row + quote feel
   without re-boxing (they already have .elementor-post__card chrome). */
body.post-type-archive-testimonials .elementor-post__card .elementor-post__text::before,
body.post-type-archive-testimonials .jet-listing-grid__item .jet-listing-dynamic-field__content::before {
  content: "\2605\2605\2605\2605\2605";
  display: block; color: var(--nc-amber);
  font-size: 1rem; letter-spacing: 3px; margin-bottom: .6rem;
}

/* Readable testimonial body + name typography within the archive */
body.post-type-archive-testimonials .jet-listing-dynamic-field__content,
body.post-type-archive-testimonials .elementor-post__excerpt p,
body.post-type-archive-testimonials article.type-testimonials p {
  color: var(--nc-text-body) !important;
  line-height: 1.72 !important;
  font-size: 1.02rem !important;
}
body.post-type-archive-testimonials .elementor-post__title,
body.post-type-archive-testimonials .jet-listing-grid__item h2,
body.post-type-archive-testimonials .jet-listing-grid__item h3 {
  font-family: var(--nc-font-display) !important;
  font-weight: 700 !important;
  color: var(--nc-text) !important;
}

@media (max-width: 768px) {
  body.post-type-archive-testimonials .jet-listing-grid__item,
  body.post-type-archive-testimonials .e-loop-item,
  body.post-type-archive-testimonials article.type-testimonials:not(.elementor-post) {
    padding: 2.1rem 1.4rem 1.5rem;
  }
}

/* ============================================================
   GR-TEST-ENH-v2
   (3) Testimonials page (/customer-feedback/) — full redesign
   Reuses the .gr-* component system from (1). Adds the hero
   page title, a "verified date" line on featured cards, the
   "Share your experience" CTA band (replaces the old QR/SCAN
   + write-a-testimonial block), and polish for the kept
   "Other Testimonials" loop grid.
   ============================================================ */

/* Featured-review card: verified date footer.
   margin-top:auto pins it to the card bottom so dates align across the row
   even when cards stretch to equal height. */
.gr-card-date {
  display: block; margin-top: auto; padding-top: .9rem;
  font-family: var(--nc-font-display); font-weight: 600;
  font-size: .78rem; color: var(--nc-text-muted);
}

/* "Read all reviews" text CTA (home reviews section → testimonials page) */
.gr-more {
  align-self: center; display: inline-flex; align-items: center; gap: .5rem;
  margin-top: .2rem; padding: .55rem .9rem;
  font-family: var(--nc-font-display); font-weight: 700; font-size: 1rem;
  text-decoration: none; color: var(--nc-blue);
  transition: color .18s var(--nc-ease), gap .18s var(--nc-ease);
}
.gr-more:hover { color: var(--nc-blue-dark); gap: .8rem; }
.gr-more-arrow { font-size: 1.15em; line-height: 1; }

/* "Share your experience" CTA band */
.gr-share { padding: clamp(2.5rem, 5vw, 4.5rem) clamp(1rem, 4vw, 2rem); background: var(--nc-bg); }
.gr-share-inner {
  max-width: 1180px; margin-inline: auto;
  display: flex; flex-wrap: wrap; align-items: center; gap: clamp(1.6rem, 4vw, 3rem);
  padding: clamp(1.8rem, 4vw, 3rem);
  background:
    radial-gradient(700px 300px at 85% -30%, rgba(255,255,255,.16), transparent 70%),
    linear-gradient(135deg, var(--nc-blue-mid) 0%, var(--nc-blue-dark) 100%);
  border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-lg);
  color: #fff;
}
.gr-share-copy { flex: 1 1 320px; }
.gr-share-eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--nc-font-display); font-weight: 600;
  font-size: .78rem; letter-spacing: .09em; text-transform: uppercase;
  color: rgba(255,255,255,.82); margin-bottom: .55rem;
}
.gr-share-copy h2 {
  font-family: var(--nc-font-display); font-weight: 800;
  font-size: clamp(1.5rem, 3vw, 2.05rem); line-height: 1.14; letter-spacing: -.02em;
  color: #fff; margin: 0 0 .6rem;
}
.gr-share-copy p {
  margin: 0 0 1.5rem; max-width: 48ch;
  color: rgba(255,255,255,.88); font-size: 1.05rem; line-height: 1.62;
}
.gr-share-actions { display: flex; flex-wrap: wrap; gap: .8rem; }
.gr-btn {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--nc-font-display); font-weight: 700; font-size: .97rem;
  text-decoration: none; border-radius: 999px; padding: .82rem 1.45rem;
  transition: var(--nc-transition); cursor: pointer; border: 1.5px solid transparent;
}
.gr-btn svg { width: 18px; height: 18px; flex: none; }
.gr-btn--primary { background: var(--nc-white); color: var(--nc-blue-dark); }
.gr-btn--primary:hover { transform: translateY(-2px); box-shadow: 0 9px 24px rgba(0,0,0,.25); color: var(--nc-blue-dark); }
.gr-btn--ghost { background: rgba(0,0,0,.22); color: #fff; border-color: rgba(255,255,255,.7); }
.gr-btn--ghost:hover { background: rgba(0,0,0,.34); border-color: #fff; color: #fff; transform: translateY(-2px); }

.gr-qr-card {
  flex: none; width: 210px;
  display: flex; flex-direction: column; align-items: center; gap: .65rem;
  padding: 1.1rem; background: var(--nc-white);
  border-radius: var(--nc-radius-lg); box-shadow: var(--nc-shadow-sm);
}
.gr-qr-img { width: 168px; height: 168px; display: block; border-radius: var(--nc-radius-sm); }
.gr-qr-label {
  font-family: var(--nc-font-display); font-weight: 600; font-size: .85rem;
  color: var(--nc-text-muted); line-height: 1.3; text-align: center;
}

@media (max-width: 768px) {
  .gr-share-inner { flex-direction: column; text-align: center; }
  .gr-share-actions { justify-content: center; }
  .gr-share-copy p { margin-inline: auto; }
  .gr-share-eyebrow { justify-content: center; }
}

/* Kept "Other Testimonials" loop grid — heading + gentle card lift */
.elementor-page-1686 .elementor-element-d5b34f7 { padding-block: clamp(1rem, 3vw, 2rem) clamp(2.5rem, 6vw, 4.5rem); }
.elementor-page-1686 .elementor-element-bd3afd0 .elementor-heading-title {
  font-family: var(--nc-font-display) !important; font-weight: 800 !important;
  letter-spacing: -.02em !important; text-align: center;
  font-size: clamp(1.5rem, 3vw, 2rem); color: var(--nc-text);
  margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
}
.elementor-page-1686 .e-loop-item .elementor-element-4e79d36 {
  transition: transform .2s var(--nc-ease), box-shadow .2s var(--nc-ease);
}
.elementor-page-1686 .e-loop-item:hover .elementor-element-4e79d36 {
  transform: translateY(-4px); box-shadow: 0 12px 30px rgba(26,120,160,.18) !important;
}
/* The loop's Elementor rating widget loses its sizing CSS in the static mirror
   (renders as oversized stacked black glyphs). Re-lay it as a small gold star row
   to match the featured-review cards above. */
.elementor-page-1686 .e-loop-item .e-rating-wrapper {
  display: flex; gap: 5px; justify-content: center; margin-bottom: .5rem;
}
.elementor-page-1686 .e-loop-item .e-rating .e-icon { display: inline-flex; }
.elementor-page-1686 .e-loop-item .e-rating .e-icon-unmarked { display: none; }
.elementor-page-1686 .e-loop-item .e-rating .e-icon-marked i {
  font-size: 19px; line-height: 1; color: var(--nc-amber);
}


/* ═══════════════════════════════════════════════════════
   33. UX IMPROVEMENTS (improvements branch)
   ═══════════════════════════════════════════════════════ */

/* [1] Respect prefers-reduced-motion — near-disable non-essential motion. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* [2] Smooth in-page scrolling (motion-safe) + offset anchored targets so the
   sticky header never covers a jumped-to heading. */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
:target { scroll-margin-top: 96px; }
[id] > h1, [id] > h2, h1[id], h2[id], h3[id], h4[id] { scroll-margin-top: 96px; }

/* [3] Branded, subtle scrollbar. */
@supports (scrollbar-color: auto) {
  html { scrollbar-color: var(--nc-blue-mid) var(--nc-bg-section); scrollbar-width: thin; }
}
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: var(--nc-bg-section); }
::-webkit-scrollbar-thumb {
  background: var(--nc-blue-mid); border-radius: 999px;
  border: 3px solid var(--nc-bg-section);
}
::-webkit-scrollbar-thumb:hover { background: var(--nc-blue); }

/* [4] Brand-tinted text selection. */
::selection { background: var(--nc-blue); color: #fff; }
::-moz-selection { background: var(--nc-blue); color: #fff; }

/* [5] Skip-link — visually hidden until focused, then a clear pill. */
.skip-link {
  position: absolute !important; left: -9999px; top: auto;
  width: 1px; height: 1px; overflow: hidden;
}
.skip-link:focus {
  position: fixed !important; left: 16px; top: 12px;
  width: auto; height: auto; overflow: visible; clip: auto;
  z-index: 1000001;
  background: var(--nc-blue); color: #fff;
  padding: 12px 20px; border-radius: 999px;
  font-family: var(--nc-font-display); font-weight: 700; font-size: .95rem;
  text-decoration: none; box-shadow: var(--nc-shadow-lg);
}

/* [6] Consistent, high-contrast keyboard focus ring on every interactive
   element; suppressed for mouse users via :focus-visible. */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible,
input:focus-visible, textarea:focus-visible, select:focus-visible,
summary:focus-visible, [tabindex]:focus-visible,
.elementor-button:focus-visible, .nc-caret:focus-visible,
.gr-readmore:focus-visible, .nc-mobile-menu-close:focus-visible,
.nc-menu-btn:focus-visible, .gr-cta:focus-visible {
  outline: 3px solid var(--nc-amber) !important;
  outline-offset: 2px !important;
  border-radius: 4px;
}
:focus:not(:focus-visible) { outline: none; }

/* [7] Floating back-to-top button (created by ux-enhancements.js). */
.nc-to-top {
  position: fixed; right: 18px; bottom: 18px; z-index: 9998;
  width: 46px; height: 46px; border: 0; border-radius: 50%;
  background: var(--nc-blue); color: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--nc-shadow-lg);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .2s var(--nc-ease), transform .2s var(--nc-ease),
              background .15s var(--nc-ease), visibility .2s;
}
.nc-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.nc-to-top:hover { background: var(--nc-blue-dark); }
.nc-to-top svg { width: 22px; height: 22px; fill: none; stroke: #fff; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
@media print { .nc-to-top { display: none !important; } }

/* [8] Deepen the sticky header shadow once scrolled (class set by JS). */
html.nc-scrolled .elementor-8 .elementor-element-ca3212d {
  box-shadow: 0 2px 8px rgba(10,40,60,.10), 0 8px 26px rgba(10,40,60,.14) !important;
}

/* [9] Scroll-reveal — hidden state only applies when JS opts in (nc-reveal-on),
   so no-JS users always see content. Disabled under reduced-motion. */
html.nc-reveal-on .nc-reveal {
  opacity: 0; transform: translateY(16px);
  transition: opacity .55s var(--nc-ease), transform .55s var(--nc-ease);
  will-change: opacity, transform;
}
html.nc-reveal-on .nc-reveal.nc-revealed { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html.nc-reveal-on .nc-reveal { opacity: 1 !important; transform: none !important; }
}

/* [10] Image fade-in on load; missing/broken images hidden gracefully. */
img.nc-img-fade { opacity: 0; transition: opacity .4s var(--nc-ease); }
img.nc-img-fade.nc-img-in { opacity: 1; }
img.nc-img-error { opacity: 0 !important; visibility: hidden !important; }
@media (prefers-reduced-motion: reduce) { img.nc-img-fade { opacity: 1; transition: none; } }

/* [15] Reading-progress bar on article pages. */
.nc-progress {
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: var(--nc-amber); z-index: 100000;
  transition: width .1s linear;
}
@media print { .nc-progress { display: none !important; } }

/* [16] Sticky mobile CTA bar (phones only). */
.nc-mcta { display: none; }
@media (max-width: 767px) {
  .nc-mcta {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 9997;
    display: flex; gap: 8px; padding: 8px 10px;
    background: rgba(255,255,255,.96);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    border-top: 1px solid var(--nc-border);
    box-shadow: 0 -4px 16px rgba(10,40,60,.10);
  }
  .nc-mcta a {
    flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
    min-height: 46px; border-radius: 999px; text-decoration: none;
    font-family: var(--nc-font-display); font-weight: 700; font-size: .95rem;
  }
  .nc-mcta-call { flex: 0 0 33% !important; background: var(--nc-blue-light); color: var(--nc-blue-dark); border: 1.5px solid var(--nc-border); }
  .nc-mcta-call svg { width: 18px; height: 18px; }
  .nc-mcta-book { background: var(--nc-amber); color: #fff; box-shadow: var(--nc-shadow-btn); }
  .nc-to-top { bottom: 74px; }
  body { padding-bottom: 64px; }
}
@media print { .nc-mcta { display: none !important; } }

/* [17] Print styles — hide interactive chrome, black-on-white, expand URLs. */
@media print {
  .elementor-location-header, .nc-to-top, .nc-mcta, .nc-progress,
  #nc-mobile-menu-overlay, .skip-link, .elementor-menu-toggle { display: none !important; }
  body { background: #fff !important; color: #000 !important; padding-bottom: 0 !important; }
  .elementor-section, .elementor-background-overlay, .gr-section,
  .nc-foot, .nc-foot-bottom { background: #fff !important; box-shadow: none !important; }
  .elementor-shape { display: none !important; }
  h1, h2, h3, h4, p, li, blockquote,
  .elementor-heading-title, .gr-quote, .nc-foot * {
    color: #000 !important; text-shadow: none !important;
  }
  a { color: #000 !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .85em; word-break: break-all; }
  img { max-width: 100% !important; }
  .elementor-button, .gr-cta, .nc-foot-cta {
    border: 1px solid #000 !important; color: #000 !important;
    background: #fff !important; box-shadow: none !important;
  }
}

/* [20] CLS reduction — images with width/height attrs reserve correct space and
   scale by their intrinsic ratio instead of distorting (modern best practice). */
img[width][height] { height: auto; }

/* [23] Article typography — comfortable rhythm on single post pages. */
body.single .elementor-widget-text-editor { line-height: 1.75; }
body.single .elementor-widget-text-editor p { margin-bottom: 1.05em; }
body.single .elementor-widget-text-editor ul,
body.single .elementor-widget-text-editor ol { margin: 0 0 1.1em 1.25em; }
body.single .elementor-widget-text-editor li { margin-bottom: .4em; line-height: 1.65; }
body.single .elementor-widget-text-editor h2,
body.single .elementor-widget-text-editor h3,
body.single .elementor-widget-theme-post-content h2,
body.single .elementor-widget-theme-post-content h3 {
  line-height: 1.3; margin-top: 1.5em; margin-bottom: .5em;
  letter-spacing: -.01em;
}
body.single blockquote {
  border-left: 4px solid var(--nc-blue);
  background: var(--nc-blue-xlight);
  margin: 1.4em 0; padding: .85em 1.2em;
  border-radius: 0 var(--nc-radius) var(--nc-radius) 0;
}

/* [24] Mark off-site links inside body content with a small ↗ (internal links
   are root-relative, so href^="http" reliably means external here). */
.elementor-widget-text-editor a[href^="http"]:not(.elementor-button)::after,
.elementor-widget-theme-post-content a[href^="http"]:not(.elementor-button)::after {
  content: "\2197";
  display: inline-block; margin-left: .12em;
  font-size: .82em; vertical-align: super; line-height: 0;
  color: var(--nc-blue); text-decoration: none;
}

/* [25] Branded 404 page. */
.nc-404-body {
  margin: 0; min-height: 100vh; display: grid; place-items: center;
  padding: 2rem 1rem; font-family: var(--nc-font-body); color: var(--nc-text-body);
  background: radial-gradient(1000px 500px at 50% -10%, var(--nc-blue-light), transparent 70%), var(--nc-bg);
}
.nc-404 { text-align: center; max-width: 600px; }
.nc-404-logo img { width: 200px; height: auto; margin-bottom: 1.5rem; }
.nc-404-code {
  font-family: var(--nc-font-display); font-weight: 800;
  font-size: clamp(4rem, 14vw, 7rem); line-height: 1;
  color: var(--nc-blue); margin: 0; letter-spacing: -.04em;
}
.nc-404-title {
  font-family: var(--nc-font-display); font-weight: 800;
  font-size: clamp(1.5rem, 4vw, 2.2rem); color: var(--nc-text); margin: .3rem 0 .6rem;
}
.nc-404-msg { color: var(--nc-text-muted); font-size: 1.05rem; line-height: 1.6; margin: 0 auto 1.8rem; max-width: 46ch; }
.nc-404-actions { display: flex; flex-wrap: wrap; gap: .8rem; justify-content: center; margin-bottom: 2rem; }
.nc-404-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: .8rem 1.6rem; border-radius: 999px;
  font-family: var(--nc-font-display); font-weight: 700; text-decoration: none;
  transition: var(--nc-transition);
}
.nc-404-btn--primary { background: var(--nc-amber); color: #fff; box-shadow: var(--nc-shadow-btn); }
.nc-404-btn--primary:hover { background: var(--nc-amber-dark); transform: translateY(-2px); box-shadow: var(--nc-shadow-btn-h); color: #fff; }
.nc-404-btn--ghost { background: #fff; color: var(--nc-blue-dark); border: 1.5px solid var(--nc-border); }
.nc-404-btn--ghost:hover { border-color: var(--nc-blue); transform: translateY(-2px); }
.nc-404-links { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; justify-content: center; }
.nc-404-links a { color: var(--nc-blue); text-decoration: none; font-weight: 600; font-size: .95rem; }
.nc-404-links a:hover { color: var(--nc-blue-dark); text-decoration: underline; }

/* [27] Ensure key interactive targets meet the 44px minimum on touch devices. */
@media (pointer: coarse) {
  .nc-foot-col a, .nc-foot-bottom-links a, .gr-more, .gr-readmore,
  .nc-404-links a {
    min-height: 44px; display: inline-flex; align-items: center;
  }
  .elementor-nav-menu--dropdown .elementor-sub-item,
  .elementor-nav-menu--dropdown .elementor-item { min-height: 44px; display: flex; align-items: center; }
}

/* [29] Form UX & accessibility polish (Elementor forms). */
.elementor-field-group > label,
.elementor-field-group .elementor-field-label {
  font-family: var(--nc-font-display); font-weight: 600; font-size: .9rem;
  color: var(--nc-text); margin-bottom: 6px; display: inline-block;
}
.elementor-field-group input::placeholder,
.elementor-field-group textarea::placeholder { color: var(--nc-text-muted); opacity: .85; }
.elementor-field-group textarea { min-height: 120px; resize: vertical; }
.elementor-field-group input:focus,
.elementor-field-group textarea:focus,
.elementor-field-group select:focus {
  border-color: var(--nc-blue) !important;
  box-shadow: 0 0 0 3px var(--nc-blue-light) !important;
  outline: none;
}
.elementor-field-subgroup .elementor-field-option label {
  font-weight: 500; color: var(--nc-text-body); cursor: pointer;
}
.elementor-field-subgroup .elementor-field-option input { accent-color: var(--nc-blue); }

/* [r2-13] Honor prefers-contrast: more — stronger borders & focus. */
@media (prefers-contrast: more) {
  :root {
    --nc-border: #8fb0c0;
    --nc-border-mid: #6f93a3;
    --nc-text-muted: #3c4f60;
  }
  .gr-card, .elementor-post__card, .nc-foot, .nc-foot-rating { border-color: var(--nc-border-mid) !important; }
  a:focus-visible, button:focus-visible, [tabindex]:focus-visible { outline-width: 4px !important; }
  .nc-foot-col a, .nc-foot-bottom-links a { text-decoration: underline; }
}

/* [r2-16] Active footer link (aria-current set by sync-partials). */
.nc-foot a[aria-current="page"] { color: #fff !important; }
.nc-foot-col a[aria-current="page"] { font-weight: 700; box-shadow: inset 0 -2px 0 var(--nc-amber); }

/* [r2-17] Breadcrumb navigation (rendered by ux-enhancements.js). */
.nc-crumbs { max-width: 1180px; margin: 0 auto; padding: .7rem clamp(1rem, 4vw, 2rem) .2rem; }
.nc-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; font-size: .85rem; font-family: var(--nc-font-display); }
.nc-crumbs li { display: flex; align-items: center; color: var(--nc-text-muted); }
.nc-crumbs li:not(:last-child)::after { content: "\203A"; margin-left: .35rem; color: var(--nc-border-mid); }
.nc-crumbs a { color: var(--nc-blue); text-decoration: none; }
.nc-crumbs a:hover { text-decoration: underline; text-underline-offset: 2px; }
.nc-crumbs li[aria-current] { color: var(--nc-text); font-weight: 700; }
@media print { .nc-crumbs { display: none !important; } }

/* [r2-20] Skip rendering work for the always-below-the-fold footer until near. */
.nc-foot { content-visibility: auto; contain-intrinsic-size: auto 420px; }

/* ═══ ROUND 2 — page-specific UI polish ═══ */
/* [r2-23] Image-box CTA tiles (New Patient / Request / Refer): lift + icon pop. */
.elementor-widget-image-box .elementor-image-box-wrapper { transition: transform .2s var(--nc-ease); }
.elementor-widget-image-box:hover .elementor-image-box-wrapper,
.elementor-widget-image-box:focus-within .elementor-image-box-wrapper { transform: translateY(-4px); }
.elementor-widget-image-box .elementor-image-box-icon .elementor-icon { transition: transform .2s var(--nc-ease); }
.elementor-widget-image-box:hover .elementor-image-box-icon .elementor-icon { transform: scale(1.08); }

/* [r2-24] Service flip-box cards — rounded corners, soft shadow, lift. */
.elementor-widget-flip-box .elementor-flip-box {
  border-radius: var(--nc-radius-lg); overflow: hidden;
  box-shadow: var(--nc-shadow-sm); transition: box-shadow .2s var(--nc-ease), transform .2s var(--nc-ease);
}
.elementor-widget-flip-box:hover .elementor-flip-box { box-shadow: var(--nc-shadow); transform: translateY(-3px); }
.elementor-widget-image a img.elementor-animation-shrink { border-radius: var(--nc-radius-lg); }

/* [r2-25] Article listing cards — uniform thumbnail ratio, hover lift, meta. */
.elementor-post__thumbnail { aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--nc-radius) var(--nc-radius) 0 0; }
.elementor-post__thumbnail img { width: 100% !important; height: 100% !important; object-fit: cover; transition: transform .35s var(--nc-ease); }
.elementor-post:hover .elementor-post__thumbnail img { transform: scale(1.05); }
.elementor-post__card { transition: box-shadow .2s var(--nc-ease), transform .2s var(--nc-ease); }
.elementor-post__card:hover { transform: translateY(-4px); box-shadow: var(--nc-shadow); }
.elementor-post-date, .elementor-post__meta-data { color: var(--nc-text-muted); font-size: .85rem; }

/* [r2-26] Article sidebar — search field + category chips polish. */
body.single .elementor-widget-search-form input,
body.single .elementor-search-form__input {
  border: 1.5px solid var(--nc-border) !important; border-radius: var(--nc-radius) !important;
  background: var(--nc-white) !important; padding: 11px 14px !important;
}
body.single .elementor-sitemap-list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; }
body.single .elementor-sitemap-item-category a {
  display: inline-block; padding: .35rem .85rem;
  background: var(--nc-blue-xlight); color: var(--nc-blue-dark);
  border-radius: 999px; text-decoration: none; font-size: .85rem; font-weight: 600;
  transition: background .15s var(--nc-ease), color .15s var(--nc-ease);
}
body.single .elementor-sitemap-item-category a:hover { background: var(--nc-blue); color: #fff; }

/* [r2-27] Article meta row (date/time) — quiet, consistent. */
body.single .elementor-post-info,
body.single .elementor-widget-post-info .elementor-icon-list-items { color: var(--nc-text-muted); font-size: .9rem; }
body.single .elementor-post-info__item, body.single .elementor-post-info__terms-list-item { color: var(--nc-text-muted); }
body.single .elementor-post-info__item--type-date { font-weight: 600; color: var(--nc-text); }

/* [r2-28] Article featured image + in-content images. */
body.single .elementor-widget-theme-post-featured-image img,
body.single .wp-post-image { border-radius: var(--nc-radius-lg); box-shadow: var(--nc-shadow-sm); }
body.single .elementor-widget-theme-post-content img { max-width: 100%; height: auto; border-radius: var(--nc-radius); }

/* [r2-29] Flip-boxes are keyboard-focusable (tabindex=0) but only flipped on
   hover — mirror the flip on :focus-within so keyboard users see the back. */
.elementor-flip-box:focus-within .elementor-flip-box__layer__front { opacity: 0; }
.elementor-flip-box:focus-within .elementor-flip-box__layer__back { opacity: 1; }
.elementor-flip-box:focus-within .elementor-flip-box__front { transform: rotateY(180deg); }
.elementor-flip-box:focus-within .elementor-flip-box__back { transform: rotateY(360deg); }

/* [r2-30] Our Doctors / Our Team portrait photos — rounded with soft shadow. */
body.page-id-165 .elementor-widget-image img,
body.page-id-182 .elementor-widget-image img {
  border-radius: var(--nc-radius-lg); box-shadow: var(--nc-shadow-sm);
}

/* [r2-31] Bio/info panels on Doctors & Team pages read as rounded cards. */
body.page-id-165 .elementor-column[data-settings*="classic"] > .elementor-widget-wrap,
body.page-id-182 .elementor-column[data-settings*="classic"] > .elementor-widget-wrap {
  border-radius: var(--nc-radius-lg);
}
body.page-id-165 .elementor-column[data-settings*="classic"],
body.page-id-182 .elementor-column[data-settings*="classic"] {
  border-radius: var(--nc-radius-lg); overflow: hidden; box-shadow: var(--nc-shadow-sm);
}

/* [r2-32] Our Philosophy — comfortable reading measure & rhythm. */
body.page-id-1389 .elementor-widget-text-editor { line-height: 1.8; }
body.page-id-1389 .elementor-widget-text-editor p { max-width: 72ch; }

/* [r2-33] Contact page — info panel & form read as rounded cards. */
body.page-id-220 .elementor-column[data-settings*="classic"] { border-radius: var(--nc-radius-lg); overflow: hidden; }
body.page-id-220 .elementor-widget-form .elementor-form,
body.page-id-220 form.elementor-form { background: var(--nc-white); border: 1px solid var(--nc-border); border-radius: var(--nc-radius-lg); box-shadow: var(--nc-shadow-sm); padding: clamp(1rem,3vw,1.6rem); }

/* [r2-34] Insurance page — list items as branded checkmarks. */
body.page-id-1456 .elementor-widget-text-editor ul { list-style: none; padding-left: 0; }
body.page-id-1456 .elementor-widget-text-editor ul li { position: relative; padding-left: 1.9em; margin-bottom: .55em; line-height: 1.6; }
body.page-id-1456 .elementor-widget-text-editor ul li::before {
  content: "\2713"; position: absolute; left: 0; top: 0;
  color: #fff; background: var(--nc-blue); width: 1.3em; height: 1.3em;
  border-radius: 50%; display: grid; place-items: center; font-size: .75em; font-weight: 800;
}

/* [r2-35] New Patient Forms — framed embed/iframe. */
body.page-id-618 iframe {
  width: 100%; border: 1px solid var(--nc-border); border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-sm); background: #fff;
}

/* ═══════════════════════════════════════════════════════
   [r3-apt] Request an Appointment (page-id-382) — full form redesign
   Principal-designer pass: single centred card, persistent
   top-aligned labels (replaces the placeholder-only pattern),
   consistent field grid, branded focus/validation states, a
   prominent CTA, trust microcopy, and matching action cards.
   All scoped to .page-id-382 — archived HTML is untouched.
   ═══════════════════════════════════════════════════════ */

/* Fallback JotForm embed, if ever present, stays framed. */
body.page-id-382 iframe {
  width: 100%; border: 1px solid var(--nc-border); border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-sm); background: #fff;
}

/* ── Layout: drop the two empty side columns, centre the form ── */
body.page-id-382 .elementor-element-fc7d6bf > .elementor-container { justify-content: center; }
body.page-id-382 .elementor-element-421f7fa,
body.page-id-382 .elementor-element-723f9bf { display: none !important; }
body.page-id-382 .elementor-element-f1c80d5 {
  width: 100% !important; max-width: 660px !important; background: transparent !important;
}

/* ── The form card (kill the column gradient; one clean card) ── */
body.page-id-382 .elementor-element-f1c80d5 > .elementor-widget-wrap.elementor-element-populated {
  background: var(--nc-white) !important;
  border: 1px solid var(--nc-border) !important;
  border-radius: var(--nc-radius-lg) !important;
  box-shadow: var(--nc-shadow-lg) !important;
  padding: clamp(1.5rem, 4vw, 2.6rem) !important;
  position: relative; overflow: hidden;
}
/* Brand accent strip across the top of the card */
body.page-id-382 .elementor-element-f1c80d5 > .elementor-widget-wrap.elementor-element-populated::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  background: linear-gradient(90deg, var(--nc-blue) 0%, var(--nc-blue-mid) 55%, var(--nc-amber) 100%);
}
/* Inner <form> must NOT be a second card */
body.page-id-382 .elementor-widget-form .elementor-form {
  background: transparent !important; border: 0 !important;
  box-shadow: none !important; padding: 0 !important;
}

/* ── Card heading + supportive subtitle ── */
body.page-id-382 .elementor-element-d8ffcbc .elementor-heading-title {
  font-family: var(--nc-font-display) !important; font-weight: 800 !important;
  font-size: clamp(1.5rem, 3.2vw, 1.95rem) !important; letter-spacing: -.02em;
  color: var(--nc-text) !important; line-height: 1.15; text-align: center;
}
body.page-id-382 .elementor-element-d8ffcbc .elementor-widget-container::after {
  content: "Tell us a little about you and our team will call back to confirm your visit.";
  display: block; max-width: 44ch; margin: .65rem auto 0; text-align: center;
  font-size: .95rem; line-height: 1.5; color: var(--nc-text-muted); font-weight: 500;
}
/* Quieter, tighter divider under the heading */
body.page-id-382 .elementor-element-8b526f4 { margin: 1rem auto 1.5rem; max-width: 60px; }
body.page-id-382 .elementor-element-8b526f4 .elementor-divider-separator { border-top-color: var(--nc-amber) !important; }

/* ── Field grid: even gutters, predictable 2-up / full rows ── */
body.page-id-382 .elementor-form-fields-wrapper {
  display: flex; flex-wrap: wrap; gap: .95rem 1rem; margin: 0 !important;
}
body.page-id-382 .elementor-field-group { padding: 0 !important; margin: 0 !important; }
body.page-id-382 .elementor-field-group.elementor-col-50 {
  flex: 1 1 calc(50% - .5rem); max-width: calc(50% - .5rem);
}
body.page-id-382 .elementor-field-group.elementor-col-100 { flex: 1 1 100%; max-width: 100%; }

/* ── Persistent, top-aligned labels (un-hide the screen-only ones) ── */
body.page-id-382 .elementor-field-group > .elementor-field-label {
  position: static !important; top: auto !important; width: auto !important; height: auto !important;
  margin: 0 0 7px !important; padding: 0 !important; overflow: visible !important;
  clip: auto !important; clip-path: none !important; white-space: normal !important;
  font-family: var(--nc-font-display) !important; font-weight: 600 !important;
  font-size: .82rem !important; letter-spacing: .01em; text-transform: none !important;
  color: var(--nc-text) !important; line-height: 1.3;
}
body.page-id-382 .elementor-field-required > .elementor-field-label::after {
  content: " *"; color: var(--nc-amber); font-weight: 700;
}
/* Placeholders now just duplicate the visible label → hide them */
body.page-id-382 .elementor-field-type-text input::placeholder,
body.page-id-382 .elementor-field-type-email input::placeholder,
body.page-id-382 .elementor-field-type-tel input::placeholder,
body.page-id-382 .elementor-field-type-textarea textarea::placeholder { color: transparent !important; }

/* ── Inputs ── */
body.page-id-382 .elementor-field-group input:not([type=checkbox]):not([type=radio]),
body.page-id-382 .elementor-field-group select,
body.page-id-382 .elementor-field-group textarea {
  width: 100% !important; min-height: 48px; padding: 12px 14px !important;
  border: 1.5px solid var(--nc-border-mid) !important; border-radius: var(--nc-radius) !important;
  background: #fff !important; color: var(--nc-text) !important; font-size: 15px !important;
}
body.page-id-382 .elementor-field-group textarea { min-height: 120px; resize: vertical; }
body.page-id-382 .elementor-select-wrapper select { padding-right: 2.6rem !important; }
body.page-id-382 input[type="date"]::-webkit-calendar-picker-indicator,
body.page-id-382 input[type="time"]::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .65; }
/* Focus + validation feedback */
body.page-id-382 .elementor-field-group input:focus,
body.page-id-382 .elementor-field-group select:focus,
body.page-id-382 .elementor-field-group textarea:focus {
  border-color: var(--nc-blue) !important; box-shadow: 0 0 0 3px rgba(26,120,160,.18) !important; outline: none !important;
}
body.page-id-382 .elementor-field-group input:user-invalid,
body.page-id-382 .elementor-field-group select:user-invalid,
body.page-id-382 .elementor-field-group textarea:user-invalid {
  border-color: #c0392b !important; box-shadow: 0 0 0 3px rgba(192,57,43,.12) !important;
}

/* ── Submit button: full-width, branded, with a send icon ── */
body.page-id-382 .elementor-field-type-submit { margin-top: .3rem !important; }
body.page-id-382 .elementor-field-type-submit .elementor-button {
  width: 100% !important; justify-content: center;
  background: var(--nc-amber) !important; border: 1.5px solid var(--nc-amber) !important; color: #fff !important;
  font-family: var(--nc-font-display) !important; font-weight: 700 !important;
  font-size: 1.02rem !important; letter-spacing: .01em;
  padding: 14px 24px !important; border-radius: 999px !important; box-shadow: var(--nc-shadow-btn) !important;
}
body.page-id-382 .elementor-field-type-submit .elementor-button:hover {
  background: var(--nc-amber-dark) !important; border-color: var(--nc-amber-dark) !important;
  transform: translateY(-2px); box-shadow: var(--nc-shadow-btn-h) !important;
}
body.page-id-382 .elementor-field-type-submit .elementor-button-icon::before {
  font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f1d8"; margin-right: .6rem; font-size: .95em;
}
/* Trust / privacy reassurance directly under the CTA */
body.page-id-382 .elementor-form::after {
  content: "\1F512  Your details stay private and are used only to schedule your visit.";
  display: block; text-align: center; margin-top: 1rem;
  font-size: .8rem; line-height: 1.45; color: var(--nc-text-muted);
}

/* ── Secondary action cards (New Patient / Refer a Patient) ── */
body.page-id-382 .elementor-element-738ac10 .elementor-column { display: flex; }
body.page-id-382 .elementor-element-738ac10 .elementor-column > .elementor-widget-wrap.elementor-element-populated {
  width: 100%; height: 100%;
  background: #fff; border: 1px solid var(--nc-border); border-radius: var(--nc-radius-lg);
  box-shadow: var(--nc-shadow-sm); padding: 2rem 1.5rem;
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
  transition: transform .2s var(--nc-ease), box-shadow .2s var(--nc-ease);
}
body.page-id-382 .elementor-element-738ac10 .elementor-column > .elementor-widget-wrap.elementor-element-populated:hover {
  transform: translateY(-4px); box-shadow: var(--nc-shadow);
}
body.page-id-382 .elementor-element-738ac10 .elementor-view-framed .elementor-icon {
  border-color: var(--nc-blue) !important; background: var(--nc-blue-light) !important;
}
body.page-id-382 .elementor-element-738ac10 .elementor-icon,
body.page-id-382 .elementor-element-738ac10 .elementor-icon i { color: var(--nc-blue) !important; }
body.page-id-382 .elementor-element-738ac10 .elementor-icon-box-title {
  font-family: var(--nc-font-display) !important; font-weight: 700 !important; color: var(--nc-text) !important;
}
body.page-id-382 .elementor-element-738ac10 .elementor-widget-button { margin-top: auto; width: 100%; }
body.page-id-382 .elementor-element-738ac10 .elementor-button {
  width: 100%; justify-content: center;
  background: var(--nc-blue) !important; border: 1.5px solid var(--nc-blue) !important; color: #fff !important;
  border-radius: 999px !important; font-family: var(--nc-font-display) !important; font-weight: 600 !important;
}
body.page-id-382 .elementor-element-738ac10 .elementor-button:hover {
  background: var(--nc-blue-dark) !important; border-color: var(--nc-blue-dark) !important; transform: translateY(-2px);
}

/* ── Responsive: stack everything on small screens ── */
@media (max-width: 600px) {
  body.page-id-382 .elementor-field-group.elementor-col-50 { flex-basis: 100%; max-width: 100%; }
  body.page-id-382 .elementor-element-738ac10 .elementor-inner-column { width: 100% !important; }
}
@media (prefers-reduced-motion: reduce) {
  body.page-id-382 .elementor-button:hover,
  body.page-id-382 .elementor-element-738ac10 .elementor-widget-wrap.elementor-element-populated:hover { transform: none !important; }
}

/* [r3-2] Form submit fallback panel (rendered by ux-enhancements.js when a
   form would otherwise POST to the missing backend). Site-wide so it also
   covers the Contact page form. */
.nc-form-fallback {
  text-align: center; outline: none;
  animation: nc-ff-in .3s var(--nc-ease) both;
}
@keyframes nc-ff-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.nc-ff-icon {
  width: 56px; height: 56px; margin: 0 auto .9rem; border-radius: 50%;
  display: grid; place-items: center; color: #fff;
  background: linear-gradient(135deg, var(--nc-blue-mid), var(--nc-blue));
  box-shadow: var(--nc-shadow);
}
.nc-ff-icon svg { width: 26px; height: 26px; }
.nc-ff-icon--ok { background: linear-gradient(135deg, #2ea44f, #1f8a3f); }
/* Submit button while the relay request is in flight */
body.page-id-382 .elementor-field-type-submit .elementor-button[disabled],
body.page-id-382 .elementor-field-type-submit .elementor-button:disabled {
  opacity: .8; cursor: progress; transform: none !important;
}
.nc-ff-title {
  font-family: var(--nc-font-display); font-weight: 800; letter-spacing: -.01em;
  font-size: clamp(1.2rem, 2.6vw, 1.45rem); color: var(--nc-text); margin: 0 0 .5rem;
}
.nc-ff-text {
  max-width: 46ch; margin: 0 auto 1.25rem; color: var(--nc-text-body);
  font-size: 1rem; line-height: 1.6;
}
.nc-ff-actions { display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; }
.nc-ff-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  font-family: var(--nc-font-display); font-weight: 700; font-size: 1rem;
  text-decoration: none; border-radius: 999px; padding: .8rem 1.5rem;
  border: 1.5px solid transparent; transition: var(--nc-transition); cursor: pointer;
}
.nc-ff-btn--primary { background: var(--nc-amber); color: #fff; box-shadow: var(--nc-shadow-btn); }
.nc-ff-btn--primary:hover { background: var(--nc-amber-dark); color: #fff; transform: translateY(-2px); box-shadow: var(--nc-shadow-btn-h); }
.nc-ff-btn--ghost { background: #fff; color: var(--nc-blue-dark); border-color: var(--nc-border-mid); }
.nc-ff-btn--ghost:hover { border-color: var(--nc-blue); color: var(--nc-blue-dark); transform: translateY(-2px); }
.nc-ff-meta { margin: 1.15rem auto 0; font-size: .85rem; color: var(--nc-text-muted); line-height: 1.5; }
.nc-ff-meta a { color: var(--nc-blue); text-decoration: none; font-weight: 600; }
.nc-ff-meta a:hover { text-decoration: underline; }
@media (prefers-reduced-motion: reduce) {
  .nc-form-fallback { animation: none; }
  .nc-ff-btn:hover { transform: none; }
}

/* [r2-37] Category/Author archive titles — display font, tight tracking. */
body.archive .elementor-widget-theme-archive-title .elementor-heading-title,
body.archive .page-header .entry-title,
body.archive h1.elementor-heading-title {
  font-family: var(--nc-font-display) !important; font-weight: 800 !important;
  letter-spacing: -.02em !important;
}
body.archive .elementor-posts-container { align-items: stretch; }

/* [r2-38] Content images — gentle rounded corners. */
.elementor-widget-text-editor img { border-radius: var(--nc-radius); }

/* [r2-39] Wide content tables scroll horizontally instead of overflowing. */
.elementor-widget-text-editor table,
.elementor-widget-theme-post-content table {
  display: block; width: 100%; overflow-x: auto; border-collapse: collapse;
  -webkit-overflow-scrolling: touch;
}
.elementor-widget-text-editor th, .elementor-widget-text-editor td,
.elementor-widget-theme-post-content th, .elementor-widget-theme-post-content td {
  border: 1px solid var(--nc-border); padding: .55rem .8rem; text-align: left;
}
.elementor-widget-text-editor th, .elementor-widget-theme-post-content th { background: var(--nc-blue-xlight); }

/* [r2-40] Prevent media from causing horizontal page scroll on small screens. */
img, iframe, video, svg { max-width: 100%; }

/* [r2-41] Consistent underline offset for body-content links. */
.elementor-widget-text-editor a:not(.elementor-button),
.elementor-widget-theme-post-content a:not(.elementor-button) { text-underline-offset: 2px; }

/* [r2-42] Buttons — subtle active "press" feedback. */
.elementor-button, .gr-cta, .nc-foot-cta, .nc-404-btn, .gr-btn { transition: var(--nc-transition); }
.elementor-button:active, .gr-cta:active, .nc-foot-cta:active,
.nc-404-btn:active, .gr-btn:active { transform: translateY(1px) scale(.99); }

/* [r2-43] Article blockquotes — decorative opening quote mark. */
body.single blockquote { position: relative; padding-left: 2.6rem; }
body.single blockquote::before {
  content: "\201C"; position: absolute; left: .6rem; top: -.1em;
  font-family: Georgia, "Times New Roman", serif; font-size: 2.6rem; line-height: 1;
  color: var(--nc-blue); opacity: .45;
}

/* [r2-44] Explicit reduced-motion hardening for round-1/2 dynamic UI. */
@media (prefers-reduced-motion: reduce) {
  .nc-to-top { transform: none !important; }
  .nc-mobile-menu-panel { animation: none !important; }
  html.nc-reveal-on .nc-reveal { transition: none !important; opacity: 1 !important; transform: none !important; }
  .elementor-post__thumbnail img, .elementor-widget-flip-box .elementor-flip-box { transition: none !important; }
}

/* [r2-45] Video embeds — 16:9 aspect ratio reserves space (cuts CLS). */
iframe[src*="youtube"], iframe[src*="youtu.be"], iframe[src*="vimeo"] {
  width: 100%; aspect-ratio: 16 / 9; height: auto;
}

/* [r2-46] Listing cards lift on keyboard focus, matching hover. */
.elementor-post:focus-within .elementor-post__card,
.e-loop-item:focus-within .elementor-section,
.gr-card:focus-within { box-shadow: var(--nc-shadow); transform: translateY(-3px); }

/* [r2-47] Solid background fallback where backdrop-filter is unsupported. */
@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))) {
  .nc-mcta { background: #fff; }
  #nc-mobile-menu-overlay { background: rgba(6, 22, 38, 0.92); }
}

/* [r2-48] Skip-link lands on #content (tabindex -1) — focus it without a giant
   ring around the whole content area. */
#content:focus { outline: none; }

/* [r2-49] Print: drop the article sidebar widgets (search/categories/recent)
   and breadcrumb so the printed page is just the content. */
@media print {
  .elementor-widget-search-form, .elementor-widget-sidebar,
  .elementor-widget-wp-widget-search, .elementor-sitemap, .nc-crumbs { display: none !important; }
}

/* ═══════════════════════════════════════════════════════
   [r3-phil] Our Philosophy (page-id-1389) — Mission / Vision /
   Values redesign. Stock icons swapped for brand icon badges,
   matched cards + a full-width Values feature card. Text untouched;
   archived HTML untouched (all scoped here).
   ═══════════════════════════════════════════════════════ */
body.page-id-1389 .elementor-element-d346923 h1.elementor-heading-title {
  font-family: var(--nc-font-display) !important; font-weight: 800 !important; letter-spacing: -.02em;
}
/* Comfortable rhythm for the two content sections */
body.page-id-1389 .elementor-element-ceda1e8 { padding: clamp(2.4rem,5vw,3.8rem) clamp(1rem,4vw,2rem) clamp(1rem,2vw,1.4rem); }
body.page-id-1389 .elementor-element-9588d99 { padding: 0 clamp(1rem,4vw,2rem) clamp(2.6rem,5vw,4.4rem); }
/* Two-up row: equal-height cards with a real gap */
body.page-id-1389 .elementor-element-ceda1e8 > .elementor-container { gap: clamp(1.1rem,3vw,1.8rem); align-items: stretch; }
body.page-id-1389 .elementor-element-ceda1e8 .elementor-column { display: flex; }
body.page-id-1389 .elementor-element-ceda1e8 .elementor-widget-wrap { width: 100%; }
body.page-id-1389 .elementor-element-ceda1e8 .elementor-widget-image-box,
body.page-id-1389 .elementor-element-ceda1e8 .elementor-widget-container { width: 100%; height: 100%; }
/* Drop the two empty columns flanking Values; let Values span full width */
body.page-id-1389 .elementor-element-76c7dd4, body.page-id-1389 .elementor-element-953c257 { display: none !important; }
body.page-id-1389 .elementor-element-6673190 { width: 100% !important; }
/* Card base */
body.page-id-1389 .elementor-image-box-wrapper {
  position: relative; overflow: hidden; height: 100%;
  background: var(--nc-white); border: 1px solid var(--nc-border);
  border-radius: var(--nc-radius-lg); box-shadow: var(--nc-shadow-sm);
  padding: clamp(1.6rem,3vw,2.4rem);
  transition: transform .2s var(--nc-ease), box-shadow .2s var(--nc-ease);
}
body.page-id-1389 .elementor-widget-image-box:hover .elementor-image-box-wrapper { transform: translateY(-4px); box-shadow: var(--nc-shadow); }
body.page-id-1389 .elementor-image-box-wrapper::before { content:''; position:absolute; top:0; left:0; right:0; height:4px; background: linear-gradient(90deg, var(--nc-blue), var(--nc-blue-mid)); }
/* Icon badge replaces the stock image */
body.page-id-1389 .elementor-image-box-img { width:66px; height:66px; margin:0 auto 1.2rem; border-radius:50%; background: var(--nc-blue-light); display:grid; place-items:center; flex:none; }
body.page-id-1389 .elementor-image-box-img img { display:none !important; }
body.page-id-1389 .elementor-image-box-img::after { content:''; width:32px; height:32px; background:center/contain no-repeat; }
body.page-id-1389 .elementor-element-a3b4736 .elementor-image-box-img::after { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%231a78a0%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%271.6%27%20fill%3D%27%231a78a0%27%20stroke%3D%27none%27%2F%3E%3C%2Fsvg%3E"); }
body.page-id-1389 .elementor-element-61982ac .elementor-image-box-img::after { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%231a78a0%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2%2012s3.6-7%2010-7%2010%207%2010%207-3.6%207-10%207-10-7-10-7Z%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%273%27%2F%3E%3C%2Fsvg%3E"); }
body.page-id-1389 .elementor-element-c80204d .elementor-image-box-img::after { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%231a78a0%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M20.8%205.6a5.4%205.4%200%200%200-7.7%200L12%206.7l-1.1-1.1a5.4%205.4%200%201%200-7.7%207.6L12%2022l8.8-8.8a5.4%205.4%200%200%200%200-7.6Z%27%2F%3E%3C%2Fsvg%3E"); }
/* Titles + body */
body.page-id-1389 .elementor-image-box-title { font-family: var(--nc-font-display) !important; font-weight: 800 !important; font-size: clamp(1.2rem,2.4vw,1.5rem) !important; letter-spacing:-.01em; color: var(--nc-text) !important; margin-bottom:.6rem !important; }
body.page-id-1389 .elementor-image-box-description { color: var(--nc-text-body) !important; line-height: 1.7 !important; font-size: 1rem !important; }
/* Mission & Vision: centred cards (flex column so the badge centres too) */
body.page-id-1389 .elementor-element-a3b4736 .elementor-image-box-wrapper, body.page-id-1389 .elementor-element-61982ac .elementor-image-box-wrapper { display: flex; flex-direction: column; align-items: center; text-align: center; }
/* Values: full-width horizontal feature card */
body.page-id-1389 .elementor-element-c80204d .elementor-image-box-wrapper { display:flex; align-items:center; gap: clamp(1.2rem,3vw,2.2rem); text-align:left; }
body.page-id-1389 .elementor-element-c80204d .elementor-image-box-img { margin:0; }
body.page-id-1389 .elementor-element-c80204d .elementor-image-box-content { flex:1; }
@media (max-width:700px){
  body.page-id-1389 .elementor-element-c80204d .elementor-image-box-wrapper { flex-direction:column; text-align:center; }
  body.page-id-1389 .elementor-element-c80204d .elementor-image-box-img { margin:0 auto; }
}
@media (prefers-reduced-motion: reduce){ body.page-id-1389 .elementor-widget-image-box:hover .elementor-image-box-wrapper { transform:none !important; } }

/* ═══════════════════════════════════════════════════════
   [r3-art] Articles polish + article-body column fix
   ═══════════════════════════════════════════════════════ */
/* Fix malformed WordPress "Columns" blocks in article bodies: when a columns
   block has no real .wp-block-column children (e.g. /what-is-tmj/), its raw
   <figure>/<p>/<ol> children become flex items and squash into unreadable
   narrow columns. Force every non-column child to a full-width row so the
   article reads as one clean column. Proper 2-column blocks (real
   .wp-block-column children, e.g. the snoring article) are left untouched. */
body.single .elementor-widget-theme-post-content .wp-block-columns:not(:has(> .wp-block-column)) {
  display: block !important;
}
body.single .elementor-widget-theme-post-content .wp-block-columns:not(:has(> .wp-block-column)) > * {
  width: 100% !important; max-width: 100% !important; margin-bottom: 1rem;
}
body.single .elementor-widget-theme-post-content .wp-block-columns figure.wp-block-column-is-layout-flow img {
  border-radius: var(--nc-radius); box-shadow: var(--nc-shadow-sm);
}

/* Articles listing — each post reads as a resting card (not only on hover) */
.elementor-133 .elementor-post__card {
  background: var(--nc-white) !important;
  border: 1px solid var(--nc-border) !important;
  border-radius: var(--nc-radius-lg) !important;
  overflow: hidden !important;
  box-shadow: var(--nc-shadow-xs) !important;
}
.elementor-133 .elementor-post__thumbnail { border-radius: 0 !important; }
.elementor-133 .elementor-post__card .elementor-post__text { padding: 0 16px !important; }
.elementor-133 .elementor-post__card .elementor-post__title { margin-top: 15px !important; }
.elementor-133 .elementor-post__card .elementor-post__meta-data { padding: 0 16px 15px !important; margin-bottom: 0 !important; }
