/*
 * Quote Valley Design Refresh — v2 (full visual redesign)
 * Presentation-only layer (colors, spacing, type, layout via CSS/JS).
 * Does not alter URLs, content/copy, or database data.
 * Design direction: QVI lockup colors (sky cyan, wordmark teal, sun gold),
 * generous whitespace, and soft depth rather than flat Elementor defaults.
 * Built from scratch against the site's actual 20-section homepage
 * structure (surveyed section-by-section) rather than patched piecemeal.
 */

:root {
  /* Core brand palette — user-specified QVI blue #2596be */
  --qv-navy: #2596be;
  --qv-navy-dark: #1c718f;
  --qv-navy-mid: #2084a8;
  --qv-navy-light: #e8f4f8;
  --qv-navy-rgb: 37, 150, 190;
  --qv-yellow: #f4bc04;
  --qv-yellow-dark: #d9a600;

  --qv-ink-900: #165a72;
  --qv-ink-800: #0e3d4e;
  --qv-indigo: var(--qv-navy);
  --qv-indigo-dark: var(--qv-navy-dark);
  --qv-indigo-light: var(--qv-navy-light);
  --qv-cyan: #2596be;
  --qv-cyan-light: #d4eef5;
  --qv-teal: #54bcb8;
  --qv-coral: #f4bc04;
  --qv-coral-dark: #d9a600;
  --qv-gold: #f4bc04;
  --qv-gold-dark: #d9a600;
  --qv-ink: #1a1a1a;
  --qv-heading: #2596be;
  --qv-muted: #4b5563;
  --qv-link: #2596be;
  --qv-link-hover: #1c718f;
  --qv-bg: #ffffff;
  --qv-bg-alt: #f3f9fb;
  --qv-card: #ffffff;
  --qv-border: #e5e7eb;
  --qv-input-border: #e9f0f6;

  /* Radii — reference uses a notably TIGHT 6px on cards/tiles and a full
     pill (9999px) only on buttons. Earlier versions used 14-28px, which is
     a large part of why this site read as softer/busier than the
     benchmark. */
  --qv-radius-xl: 8px;
  --qv-radius-lg: 6px;
  --qv-radius-md: 6px;
  --qv-radius-sm: 4px;
  --qv-radius-pill: 9999px;

  /* Shadows — reference cards are near-flat: a hairline border does the
     separating work, not a drop shadow. */
  --qv-shadow-sm: 0 1px 2px rgba(10, 20, 40, .05);
  --qv-shadow: 0 4px 12px rgba(10, 20, 40, .08);
  --qv-shadow-hover: 0 8px 20px rgba(10, 20, 40, .12);
  --qv-shadow-color: 0 8px 20px rgba(37, 150, 190, .16);

  /* ---- Measured from the reference (healthforcalifornia.com) ---- */
  --qv-header-h: 112px;          /* reference header row height */
  --qv-header-h-mobile: 64px;
  --qv-container: 1280px;       /* reference .container at xl */
  --qv-gutter: 24px;
  --qv-text-col: 928px;          /* reference body/section text column */
  --qv-hero-col: 780px;          /* longer QVI headline needs more than the reference's 593px */
  --qv-hero-min-h: calc(100vh - var(--qv-header-h)); /* reference min-h-[calc(100vh-112px)] */

  /* Type scale — reference: H1 60/60/700, section headings 30/36/500,
     body 16/24. Section headings being weight 500 (not 700+) is the
     single biggest reason the reference reads calm rather than shouty. */
  /* Reference H1 is 60px/1.0 for a 30-character headline that sets in 2
     lines and fills ~21% of its hero. Our headline is ~62 characters —
     more than double — so a literal 60px sets 5 lines and swallows ~38%
     of the hero, which reads as unbalanced rather than as a match. We
     therefore match the reference's PROPORTION (a dominant H1 at roughly
     a fifth to a quarter of hero height, 3 lines) rather than its literal
     pixel value, and widen the text column to suit the longer string. */
  --qv-fs-h1: 48px;
  --qv-lh-h1: 1.05;
  --qv-fw-h1: 700;
  --qv-fs-h2: 30px;
  --qv-lh-h2: 36px;
  --qv-fw-h2: 500;
  --qv-fs-h3: 24px;
  --qv-lh-h3: 32px;
  --qv-fs-body: 16px;
  --qv-lh-body: 24px;
  --qv-heading-mb: 20px;

  /* Controls — reference buttons h-10 (40px), inputs 3.5rem (56px) */
  --qv-btn-h: 40px;
  --qv-btn-pad-x: 24px;
  --qv-btn-fs: 14px;
  --qv-btn-fw: 600;
  --qv-input-h: 56px;
  --qv-nav-fs: 14px;
  --qv-nav-fw: 500;
  --qv-nav-pad-x: 16px;

  /* Rhythm — reference py-16/py-20 (~64–80px) */
  --qv-section-pad-y: 80px;
  --qv-section-pad-y-tablet: 56px;
  --qv-section-pad-y-mobile: 40px;
  --qv-grid-gap: 20px;
  --qv-font: Montserrat, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

html.qv-modern.elementor-kit-6,
html.qv-modern body.elementor-kit-6 {
  --e-global-color-accent: var(--qv-navy);
}

/* ---------------------------------------------------------------- */
/* Base                                                              */
/* ---------------------------------------------------------------- */

html.qv-modern,
html.qv-modern body {
  overflow-x: hidden;
  max-width: 100%;
}

/* Guard against accidental horizontal scrolling at any width: nothing
   inside a section may exceed its container, and long unbroken strings
   (URLs, "1095a-3895 Corrections", email addresses) wrap instead of
   pushing the page sideways. */
.qv-modern .elementor-top-section,
.qv-modern .elementor-container,
.qv-modern .elementor-column,
.qv-modern .elementor-widget-wrap {
  max-width: 100%;
  min-width: 0;
}

.qv-modern p,
.qv-modern li,
.qv-modern h1,
.qv-modern h2,
.qv-modern h3,
.qv-modern a {
  overflow-wrap: break-word;
}

html.qv-modern body {
  color: var(--qv-ink);
  background: #fff;
  font-family: var(--qv-font);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.qv-modern h1,
.qv-modern h2,
.qv-modern h3,
.qv-modern h4,
.qv-modern h5,
.qv-modern h6 {
  letter-spacing: -.02em;
}

/* Default heading/paragraph color is dark ink — but sections with a
   colored/dark background (flagged with .qv-on-dark by JS, based on
   actual computed background luminance) flip to light text instead.
   This fixes the old bug where global dark headings were unreadable on
   the site's own purple/teal gradient sections. */
/* Typography hierarchy matched to the measured reference: ONE dominant
   H1 (60px/1.0/700) and deliberately restrained section headings
   (30px/36px/500). The previous 750 weight on every heading is what made
   this site read louder and busier than the benchmark. */
.qv-modern .elementor-widget-heading .elementor-heading-title,
.qv-modern h1.elementor-heading-title,
.qv-modern h2.elementor-heading-title,
.qv-modern h3.elementor-heading-title {
  color: var(--qv-heading);
  font-weight: var(--qv-fw-h2);
  font-family: var(--qv-font);
}

.qv-modern p,
.qv-modern li {
  color: var(--qv-muted);
  font-size: var(--qv-fs-body);
  line-height: var(--qv-lh-body);
}

.qv-modern a {
  color: var(--qv-link);
}

.qv-modern a:hover {
  color: var(--qv-link-hover);
}

.qv-modern img {
  max-width: 100%;
  height: auto;
}

* {
  -webkit-tap-highlight-color: transparent;
}

/* Sections flagged by JS as having a dark/colored background get light
   text across the board — EXCEPT inside a nested white/light card box
   (icon-box, image-box, CTA, price-table, or anything explicitly given
   its own background), which keeps normal dark text since the card's
   own background is light regardless of the section behind it. This is
   what the :not() exclusions below are for; without them, cards that
   float on a dark/colored section background (e.g. the teal "Health
   Insurance / Financial Help / Enrollment Help" cards) go invisible —
   white text on their own white card background. */
.qv-modern .qv-on-dark .elementor-heading-title,
.qv-modern .qv-on-dark h1,
.qv-modern .qv-on-dark h2,
.qv-modern .qv-on-dark h3 {
  color: #fff !important;
}

.qv-modern .qv-on-dark p,
.qv-modern .qv-on-dark li,
.qv-modern .qv-on-dark .elementor-widget-text-editor {
  color: rgba(255, 255, 255, .86) !important;
}

.qv-modern .qv-on-dark a:not(.elementor-button) {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: rgba(255, 255, 255, .5);
}

/* Opt back OUT of forced white text inside any card-like widget that
   has its own light background, since those sit visually "on top of"
   the dark section rather than directly against it. */
.qv-modern .qv-on-dark .elementor-widget-icon-box .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-icon-box h1,
.qv-modern .qv-on-dark .elementor-widget-icon-box h2,
.qv-modern .qv-on-dark .elementor-widget-icon-box h3,
.qv-modern .qv-on-dark .elementor-widget-icon-box p,
.qv-modern .qv-on-dark .elementor-widget-icon-box li,
.qv-modern .qv-on-dark .elementor-widget-image-box .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-image-box h1,
.qv-modern .qv-on-dark .elementor-widget-image-box h2,
.qv-modern .qv-on-dark .elementor-widget-image-box h3,
.qv-modern .qv-on-dark .elementor-widget-image-box p,
.qv-modern .qv-on-dark .elementor-widget-call-to-action .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-call-to-action h1,
.qv-modern .qv-on-dark .elementor-widget-call-to-action h2,
.qv-modern .qv-on-dark .elementor-widget-call-to-action h3,
.qv-modern .qv-on-dark .elementor-widget-call-to-action p,
.qv-modern .qv-on-dark .elementor-widget-price-table .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box h1,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box h2,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box h3,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box p,
.qv-modern .qv-on-dark .elementor-widget-shortcode .elementor-heading-title,
.qv-modern .qv-on-dark .elementor-widget-shortcode h1,
.qv-modern .qv-on-dark .elementor-widget-shortcode h2,
.qv-modern .qv-on-dark .elementor-widget-shortcode h3,
.qv-modern .qv-on-dark .elementor-widget-shortcode p,
.qv-modern .qv-on-dark .elementor-widget-shortcode li,
.qv-modern .qv-on-dark form .elementor-heading-title,
.qv-modern .qv-on-dark form label,
.qv-modern .qv-on-dark form p {
  color: var(--qv-ink-900) !important;
}

.qv-modern .qv-on-dark .elementor-widget-icon-box p,
.qv-modern .qv-on-dark .elementor-widget-image-box p,
.qv-modern .qv-on-dark .elementor-widget-call-to-action p,
.qv-modern .qv-on-dark .elementor-widget-eael-info-box p,
.qv-modern .qv-on-dark .elementor-widget-shortcode p,
.qv-modern .qv-on-dark .elementor-widget-shortcode li {
  color: var(--qv-muted) !important;
}

/* ---------------------------------------------------------------- */
/* Header / navigation (HFE nav menu widget)                        */
/* ---------------------------------------------------------------- */

.qv-modern header {
  position: sticky;
  top: 0;
  z-index: 9999;
  background: #fff;
  box-shadow: 0 1px 0 rgba(11, 17, 48, .06);
}

.qv-modern header .elementor-container,
.qv-modern header .e-con-inner {
  min-height: var(--qv-header-h);
}

/* Utility bar (language switcher row): slim strip. */
.qv-modern header .elementor-section:first-of-type {
  min-height: 0;
}

.qv-modern header .elementor-section:first-of-type .elementor-container {
  min-height: 34px;
  padding-top: 4px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--qv-border);
}

.qv-modern header .elementor-section:first-of-type .gtranslate_wrapper {
  transform: scale(.92);
  transform-origin: right center;
}

/* Primary nav links — reference measures 14px / weight 500 / brand blue,
   with 16px horizontal padding on each link and the link filling the
   full header height (so the whole strip is the hit target). */
.qv-modern .hfe-nav-menu .menu-item > a,
.qv-modern .hfe-nav-menu-item > a {
  font-weight: var(--qv-nav-fw);
  font-size: var(--qv-nav-fs);
  letter-spacing: .01em;
  color: var(--qv-navy) !important;
  padding-left: var(--qv-nav-pad-x);
  padding-right: var(--qv-nav-pad-x);
  transition: color .2s ease;
  white-space: nowrap;
}

.qv-modern .hfe-nav-menu .menu-item > a:hover,
.qv-modern .hfe-nav-menu .menu-item.current-menu-item > a {
  color: var(--qv-link-hover) !important;
}

.qv-modern .hfe-nav-menu.hfe-layout-horizontal > .menu-item {
  margin-left: 0;
  margin-right: 0;
}

/* Phone number: icon + pill treatment, sized to the same 40px control
   height as the header CTA so the two chips align. */
.qv-modern header a[href^="tel:"] {
  font-weight: 600;
  font-size: var(--qv-btn-fs);
  color: var(--qv-navy) !important;
  white-space: nowrap;
  display: inline-flex !important;
  align-items: center;
  gap: 7px;
  height: var(--qv-btn-h);
  padding: 0 16px;
  border-radius: var(--qv-radius-pill);
  background: var(--qv-navy-light);
  margin-left: 8px;
}

.qv-modern header a[href^="tel:"]::before {
  content: "";
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  background-color: var(--qv-indigo);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1-9.4 0-17-7.6-17-17 0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.2.2 2.4.6 3.6.1.4 0 .8-.3 1L6.6 10.8z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1-9.4 0-17-7.6-17-17 0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.2.2 2.4.6 3.6.1.4 0 .8-.3 1L6.6 10.8z'/></svg>") center / contain no-repeat;
}

.qv-modern header a[href^="tel:"]:hover {
  background: var(--qv-navy-light);
}

/* Header CTA ("Service Areas") — reference CTA measures 40px tall with
   24px horizontal padding and a full pill radius. */
.qv-modern .hfe-nav-menu .menu-item.hfe-button-wrapper > a.elementor-button {
  min-height: var(--qv-btn-h) !important;
  height: var(--qv-btn-h);
  display: inline-flex !important;
  align-items: center;
  padding: 0 var(--qv-btn-pad-x) !important;
  font-size: var(--qv-btn-fs) !important;
  font-weight: var(--qv-btn-fw) !important;
  border-radius: var(--qv-radius-pill) !important;
  box-shadow: none !important;
  margin-left: 12px;
  background: var(--qv-navy) !important;
}

.qv-modern .hfe-nav-menu .menu-item.hfe-button-wrapper > a.elementor-button:hover {
  background: var(--qv-navy-dark) !important;
}

/* "1095a-3895", "Blog" and "Corrections" are relocated into the
   Resources dropdown by regroupNavIntoDropdowns() in design-refresh.js
   (same links/labels, just one click deeper) so the visible row stays
   to Home / Plans / Products / Resources / About us / Contact us +
   phone + Service Areas — a clean single row like the reference site,
   instead of 11 competing items. */
.qv-modern .qv-moved-to-dropdown {
  order: 99;
}

/* One of the relocated links ("...Corrections") carries an
   .elementor-button class in the source markup, so the global button
   rule rendered it as a filled pill floating inside the dropdown. Inside
   a submenu every entry should read as a plain menu row. */
.qv-modern .sub-menu a.elementor-button,
.qv-modern .sub-menu a.hfe-menu-item.elementor-button {
  background: transparent !important;
  color: var(--qv-ink) !important;
  border-radius: 0 !important;
  padding: 15px !important;
  min-height: 0 !important;
  height: auto;
  font-size: var(--qv-nav-fs);
  font-weight: var(--qv-nav-fw);
  justify-content: flex-start;
  box-shadow: none !important;
}

.qv-modern .sub-menu a.elementor-button:hover {
  background: var(--qv-bg-alt) !important;
  color: var(--qv-navy) !important;
}

/* Hamburger toggle (native HFE element) */
.qv-modern .hfe-nav-menu__toggle {
  border-radius: var(--qv-radius-sm);
  transition: background .15s ease;
}

.qv-modern .hfe-nav-menu__toggle:hover {
  background: var(--qv-indigo-light);
}

.qv-modern .hfe-nav-menu-icon svg,
.qv-modern .hfe-nav-menu-icon i {
  color: var(--qv-ink-900);
  font-size: 24px;
}

.qv-modern .hfe-nav-menu__layout-dropdown .hfe-nav-menu,
.qv-modern .hfe-nav-menu-layout.dropdown {
  background: #fff;
  border-top: 1px solid var(--qv-border);
  box-shadow: var(--qv-shadow);
}

.qv-modern .hfe-nav-menu__layout-dropdown .hfe-nav-menu .menu-item > a,
.qv-modern .hfe-nav-menu-layout.dropdown .menu-item > a {
  padding-top: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--qv-border);
  font-size: 16px;
}

/* ------------------------------------------------------------------ */
/* Single clean nav row (>=1140px) — after regroupNavIntoDropdowns()   */
/* folds "1095a-3895"/"Blog"/"Corrections" into the Resources dropdown */
/* (see design-refresh.js), only 7 top-level items + phone + button    */
/* remain, which fit comfortably on one line — matching the reference  */
/* site's single-row header instead of the old two-row/hamburger hack. */
/* ------------------------------------------------------------------ */
@media (min-width: 1140px) {
  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal ul.hfe-nav-menu {
    /* wrap, not nowrap: before regroupNavIntoDropdowns() runs there are
       still 11 top-level items, and nowrap made them overflow leftwards
       across the logo for the first moment of every page load. Wrapping
       degrades to a brief second row instead of an overlap, and keeps
       every link reachable even if the JS never runs. */
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 2px;
  }

  /* Reference header row measures 112px tall with the nav links filling
     that full height. */
  .qv-modern header .elementor-section:nth-of-type(2) .elementor-container {
    min-height: var(--qv-header-h);
    align-items: center;
    padding-top: 0;
    padding-bottom: 0;
  }

  /* The header row measured 132px because the builder adds 10px of
     column padding top and bottom on top of the 112px min-height. */
  .qv-modern header .elementor-section:nth-of-type(2) .elementor-column > .elementor-widget-wrap {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  .qv-modern header .elementor-section:nth-of-type(2) .elementor-widget-nav-menu,
  .qv-modern header .elementor-section:nth-of-type(2) .hfe-nav-menu__breakpoint-tablet {
    margin-bottom: 0;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet ul.hfe-nav-menu > li > a {
    display: flex;
    align-items: center;
    min-height: var(--qv-header-h);
  }

  /* The button and phone pill are vertically centred chips, not
     full-height strips. */
  .qv-modern .hfe-nav-menu__breakpoint-tablet ul.hfe-nav-menu > li.hfe-button-wrapper > a,
  .qv-modern .hfe-nav-menu__breakpoint-tablet ul.hfe-nav-menu > li > a[href^="tel:"] {
    min-height: var(--qv-btn-h);
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal {
    display: block !important;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet .hfe-nav-menu__toggle {
    display: none !important;
  }
}

/* ------------------------------------------------------------------ */
/* Hamburger fallback for narrow tablet/small-desktop (768-1139px)     */
/* ------------------------------------------------------------------ */
@media (min-width: 768px) and (max-width: 1139px) {
  .qv-modern header .elementor-section:nth-of-type(2) .elementor-container {
    min-height: 64px;
    align-items: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet {
    display: flex;
    align-items: center;
    min-height: 0;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet .elementor-widget-container {
    display: flex;
    align-items: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet .hfe-nav-menu__toggle {
    display: flex !important;
    opacity: 1 !important;
    visibility: visible !important;
    margin-left: auto;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal {
    display: none;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .hfe-nav-menu__toggle {
    background: var(--qv-indigo-light);
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open nav.hfe-nav-menu__layout-horizontal {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border-top: 1px solid var(--qv-border);
    box-shadow: var(--qv-shadow);
    max-height: calc(100vh - 60px);
    overflow-y: auto;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal ul.hfe-nav-menu {
    flex-direction: column;
    align-items: stretch;
    width: min(100%, 480px);
    margin: 0 auto;
    padding: 6px 20px 18px;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .menu-item > a {
    padding-top: 13px;
    padding-bottom: 13px;
    border-bottom: 1px solid var(--qv-border);
    min-height: 44px;
    display: flex;
    align-items: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .sub-menu {
    display: none;
    position: static !important;
    box-shadow: none !important;
    width: 100% !important;
    padding-left: 12px;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .menu-item.qv-submenu-open > .sub-menu {
    display: block !important;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .hfe-menu-toggle.sub-arrow {
    transition: transform .15s ease;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .menu-item.qv-submenu-open > .hfe-has-submenu-container .hfe-menu-toggle.sub-arrow,
  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal .menu-item.qv-submenu-open .hfe-has-submenu-container .hfe-menu-toggle.sub-arrow {
    transform: rotate(180deg);
  }
}

/* ---------------------------------------------------------------- */
/* Layout width & section rhythm                                    */
/* ---------------------------------------------------------------- */

/* Container matched to the reference: 1210px outer with 24px gutters,
   giving a 1162px content measure. */
.qv-modern .elementor-top-section > .elementor-container,
.qv-modern .e-con-inner {
  width: 100%;
  /* !important: Elementor's own boxed-section rule sets a competing
     max-width that otherwise widens this to 1260px. */
  max-width: var(--qv-container) !important;
  padding-left: var(--qv-gutter);
  padding-right: var(--qv-gutter);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

.qv-modern .elementor-top-section {
  position: relative;
}

/* Give every content section (below the header) generous, consistent
   vertical breathing room instead of Elementor's cramped defaults. */
.qv-modern .elementor-top-section.qv-section-spaced {
  padding-top: var(--qv-section-pad-y);
  padding-bottom: var(--qv-section-pad-y);
}

/* Section heading pattern: centered eyebrow + heading + short intro,
   used across most content sections for a consistent rhythm. */
/* Section headings: reference measures a flat 30px/36px at weight 500,
   with a ~928px text column and 20px space beneath. No fluid clamp —
   the reference holds one size across desktop and steps down only on
   small screens (see the mobile block). */
/* NOTE: this deliberately uses the SAME selector shape as the responsive
   overrides further down. An earlier version also listed a much more
   specific compound selector here; because both carry !important, that
   higher specificity silently outranked every mobile step, pinning
   section headings at 30px on phones. Keep one selector shape per
   element so the breakpoints can actually take effect. */
.qv-modern .elementor-top-section > .elementor-container > .elementor-column:only-child .elementor-widget-heading h2.elementor-heading-title {
  /* !important for the same reason as the hero H1: Elementor's
     per-page stylesheet pins these at a fixed size with ID-scoped
     specificity, which would otherwise also block the mobile steps. */
  font-size: var(--qv-fs-h2) !important;
  line-height: var(--qv-lh-h2) !important;
  font-weight: var(--qv-fw-h2) !important;
  text-align: center;
  max-width: var(--qv-text-col);
  margin-left: auto;
  margin-right: auto;
  margin-bottom: var(--qv-heading-mb);
}

.qv-modern .elementor-widget-heading h2.elementor-heading-title {
  font-size: var(--qv-fs-h2) !important;
  line-height: var(--qv-lh-h2) !important;
  font-weight: var(--qv-fw-h2) !important;
  color: var(--qv-heading);
}

/* Inner-page titles: pages without a hero were inheriting whatever size
   the builder happened to set per page (30px on About, 40px elsewhere).
   Normalise them to one page-title size so every page in the site reads
   as the same design family. */
.qv-modern .elementor-top-section:not(.qv-hero) h1.elementor-heading-title {
  font-size: 40px !important;
  line-height: 1.15 !important;
  font-weight: var(--qv-fw-h1) !important;
}

/* Card / subsection headings */
.qv-modern .elementor-widget-heading h3.elementor-heading-title {
  font-size: var(--qv-fs-h3) !important;
  line-height: var(--qv-lh-h3) !important;
  font-weight: var(--qv-fw-h2) !important;
}

/* Body copy sits in the reference's ~928px reading column, centered
   under centered section headings. */
.qv-modern .elementor-top-section > .elementor-container > .elementor-column:only-child > .elementor-widget-wrap > .elementor-widget-text-editor {
  max-width: var(--qv-text-col);
  margin-left: auto;
  margin-right: auto;
}

/* ---------------------------------------------------------------- */
/* HERO (qv-section-4) — full redesign                               */
/* ---------------------------------------------------------------- */

/* Hero — reference measures a 581px-tall content band on a left-to-right
   deep-blue gradient (rgb(15,49,78) -> rgb(30,101,160)). That gradient is
   subtle enough to read as a flat field but gives the panel direction. */
.qv-modern .elementor-top-section.qv-hero {
  position: relative;
  background: #fff !important;
  background-image: none !important;
  overflow: hidden;
  display: flex;
  align-items: center;
  min-height: 0;
  padding-top: 48px !important;
  padding-bottom: 56px !important;
  border-bottom: 1px solid var(--qv-border);
}

.qv-modern .elementor-top-section.qv-hero > .elementor-container {
  width: 100%;
}

/* The hero's right-hand column carries a builder-set frame (transparent
   fill + drop shadow) around the Lottie panel. Until the Lottie player
   hydrates, that frame paints as a solid purple rectangle with only the
   Apply button inside. Kill the frame and hide the empty Lottie host so
   the column is just the navy hero field. */
.qv-modern .elementor-top-section.qv-hero .elementor-column > .elementor-widget-wrap,
.qv-modern .elementor-top-section.qv-hero .elementor-column > .elementor-element-populated {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

.qv-modern .elementor-top-section.qv-hero .elementor-column > .elementor-widget-wrap > .elementor-background-overlay,
.qv-modern .elementor-top-section.qv-hero .elementor-column > .elementor-element-populated > .elementor-background-overlay {
  display: none !important;
}

.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation {
  position: relative;
  display: block;
  width: min(420px, 100%);
  max-width: 100%;
  margin: 0 auto;
  z-index: 1;
  overflow: visible;
  background: transparent !important;
  background-color: transparent !important;
  opacity: 1 !important;
  visibility: visible !important;
  aspect-ratio: 1 / 1;
}

/* Static Covered California mark so the right column is never blank
   while the Lottie player is still lazy-loading. */
.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation:not(:has(svg)):not(:has(canvas))::after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  min-height: 220px;
  background-color: var(--qv-navy);
  -webkit-mask: url("/wp-content/uploads/2024/01/cc_icon.svg") center / contain no-repeat;
  mask: url("/wp-content/uploads/2024/01/cc_icon.svg") center / contain no-repeat;
}

.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation > a {
  position: absolute;
  inset: 0;
  z-index: 2;
}

.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation svg,
.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation canvas {
  display: block;
  margin: 0 auto;
  width: 100% !important;
  max-width: 100%;
  height: auto !important;
}

.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation svg ~ svg,
.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation canvas ~ canvas {
  display: none !important;
}

/* Recolor the Covered California Lottie to brand blue #2596be.
   JSON fills are also updated; this keeps SVG output in sync if a
   cached player still paints the old indigo. */
.qv-modern .qv-hero .premium-lottie-animation svg path,
.qv-modern .qv-hero .premium-lottie-animation svg g,
body.page-id-329 .premium-lottie-animation svg path,
body.page-id-329 .premium-lottie-animation svg g {
  fill: #2596be !important;
}

.qv-modern .elementor-top-section.qv-hero .elementor-widget-premium-lottie {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  min-height: 360px;
  overflow: visible;
}

@media (max-width: 767px) {
  .qv-modern .elementor-top-section.qv-hero .elementor-widget-premium-lottie {
    min-height: 220px;
  }
}

/* Ring lives on the Lottie itself (not the hero section) so it stays
   centered on the logo regardless of column width or the CTA below. */
.qv-modern .elementor-top-section.qv-hero::before {
  display: none !important;
}

/* Decorative ring is a real element (.qv-hero-ring) placed on the logo. */
.qv-modern .elementor-top-section.qv-hero .premium-lottie-animation::before {
  display: none !important;
}

.qv-modern .elementor-top-section.qv-hero .qv-hero-ring {
  position: absolute;
  border-radius: 50%;
  border: 3px solid rgba(37, 150, 190, .55);
  box-sizing: border-box;
  pointer-events: none;
  z-index: 3;
}

.qv-modern .elementor-top-section.qv-hero > .elementor-background-overlay {
  display: none !important;
}

.qv-modern .elementor-top-section.qv-hero .elementor-container {
  position: relative;
  z-index: 1;
}

/* H1 — reference: 60px, line-height 60px (exactly 1.0), weight 700,
   held to a 581px column so it breaks into short, deliberate lines
   instead of running the full container width. */
/* !important is required on these specific properties only: Elementor's
   generated per-page stylesheet (post-8.css) carries ID-scoped rules
   (.elementor-8 .elementor-element.elementor-element-<id> ...) that
   otherwise win the cascade and hold the H1 at 39px/64px/600. */
.qv-modern .elementor-top-section.qv-hero h1.elementor-heading-title {
  color: var(--qv-heading) !important;
  font-size: var(--qv-fs-h1) !important;
  line-height: var(--qv-lh-h1) !important;
  font-weight: var(--qv-fw-h1) !important;
  letter-spacing: -.02em;
  text-align: left !important;
  max-width: var(--qv-hero-col);
  margin-bottom: 12px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}

.qv-modern .elementor-top-section.qv-hero h1 .qv-hero-heading {
  display: block;
  font-size: inherit !important;
  line-height: inherit !important;
  font-weight: inherit !important;
  color: inherit;
}

/* Second line of the H1 ("Serving the Central Valley") — a true
   subheading: smaller, lighter, not shouting with the H1. */
.qv-modern .elementor-top-section.qv-hero h1 .qv-hero-subhead {
  display: block;
  font-size: 22px !important;
  line-height: 1.35 !important;
  font-weight: 400 !important;
  letter-spacing: .04em;
  text-transform: none;
  color: var(--qv-muted) !important;
}

/* Supporting line under the subheading ("Get Free Help…"). */
.qv-modern .elementor-top-section.qv-hero .elementor-widget-heading h2.elementor-heading-title {
  color: var(--qv-muted) !important;
  font-weight: 400 !important;
  font-size: 16px !important;
  line-height: 24px !important;
  text-align: left !important;
  max-width: var(--qv-hero-col);
  margin: 0 0 20px;
}

/* The hero's sub-headline sat indented relative to the H1 because its
   own widget carries left padding from the page builder — zero it so
   both start on the same optical left edge, as in the reference. */
.qv-modern .elementor-top-section.qv-hero .elementor-widget-heading > .elementor-widget-container {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.qv-modern .elementor-top-section.qv-hero p {
  color: var(--qv-muted);
}

/* Quick-link tiles inside the hero — flattened from elevated glass
   cards into simple flat pill buttons in a single row (reference-style
   restraint: plain white pills on the dark hero, no blur/shadow/hover
   lift theatrics). image-box markup is unchanged — same 4 real links,
   same labels/icons — only the container styling is simplified. */
.qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box {
  height: 100%;
}

/* Hero quick-link tiles — reference measures 160x144 squarish white
   tiles at a tight 6px radius, 20px apart, label 14px/500 in brand
   blue. Min-height rather than fixed height so longer two-line labels
   in our own copy don't clip. */
.qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box > .elementor-widget-container {
  height: 100%;
  min-height: 144px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: var(--qv-navy-light);
  border-radius: var(--qv-radius-lg) !important;
  padding: 16px 12px !important;
  box-shadow: none !important;
  border: 1px solid var(--qv-border);
  transition: border-color .15s ease;
  text-align: center;
}

.qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box:hover > .elementor-widget-container {
  border-color: var(--qv-cyan);
  background: #fff;
}

.qv-modern .elementor-top-section.qv-hero .elementor-image-box-img {
  max-width: 34px;
  margin: 0 auto;
}

.qv-modern .elementor-top-section.qv-hero .elementor-image-box-content {
  margin: 0;
}

.qv-modern .elementor-top-section.qv-hero .elementor-image-box-title {
  color: var(--qv-navy);
  font-weight: var(--qv-nav-fw);
  font-size: var(--qv-nav-fs);
  line-height: 1.35;
  margin: 0;
}

.qv-modern .elementor-top-section.qv-hero .elementor-image-box-title a {
  color: inherit;
}

/* Hero side panel: Lottie + Apply button stacked and centered together. */
@media (min-width: 768px) {
  .qv-modern .elementor-top-section.qv-hero > .elementor-container {
    display: flex;
    align-items: center;
    gap: 24px;
  }

  .qv-modern .elementor-top-section.qv-hero > .elementor-container > .elementor-column {
    width: 50% !important;
    max-width: 50% !important;
    flex: 1 1 0;
    min-width: 0;
  }
}

.qv-modern .elementor-top-section.qv-hero > .elementor-container > .elementor-column:last-child {
  position: relative;
}

.qv-modern .elementor-top-section.qv-hero > .elementor-container > .elementor-column:last-child > .elementor-widget-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 12px;
}

.qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box > .elementor-widget-container {
  position: relative;
}

.qv-modern .elementor-top-section.qv-hero > .elementor-container > .elementor-column:last-child > .elementor-widget-wrap > .elementor-widget-premium-lottie,
.qv-modern .elementor-top-section.qv-hero > .elementor-container > .elementor-column:last-child > .elementor-widget-wrap > .elementor-widget-button {
  width: auto;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  align-self: center;
}

.qv-modern .elementor-top-section.qv-hero .elementor-widget-button .elementor-button-wrapper {
  display: flex;
  justify-content: center;
}

.qv-modern .elementor-top-section.qv-hero .elementor-widget-button > .elementor-widget-container {
  padding: 0 !important;
  margin: 0 !important;
}

.qv-modern .elementor-top-section.qv-hero a.elementor-button {
  background: var(--qv-navy) !important;
  color: #fff !important;
  box-shadow: none;
  border: none !important;
  margin: 0 auto;
}

.qv-modern .elementor-top-section.qv-hero a.elementor-button:hover {
  background: var(--qv-navy-dark) !important;
  color: #fff !important;
}

/* ---------------------------------------------------------------- */
/* Content sections — cards, icon boxes, feature panels             */
/* ---------------------------------------------------------------- */

/* Give every content section consistent generous padding by default;
   the hero and a few full-bleed sections override this individually. */
.qv-modern .elementor-top-section:not(.qv-hero):not(:first-of-type):not(:nth-of-type(2)) {
  padding-top: var(--qv-section-pad-y);
  padding-bottom: var(--qv-section-pad-y);
}

/* A heading section immediately followed by one or more headingless
   icon-box "row" sections (see markSectionGroups() in design-refresh.js)
   is really one visual group — trim the heading's bottom padding and the
   continuation rows' top padding so the whole group reads as a single
   section with one card grid, not several stacked sections with huge
   gaps between them. */
/* !important here for the same specificity reason as the headings: the
   generic section-padding rule above uses several :not() pseudo-classes,
   which makes it MORE specific than these group rules — so without it a
   card row that should butt up against its heading kept a full 72px of
   top padding, leaving a ~220px blank band before the first card. */
.qv-modern .elementor-top-section.qv-section-group-start {
  padding-bottom: 36px !important;
}

.qv-modern .elementor-top-section.qv-section-continuation {
  padding-top: 0 !important;
}

/* Sections that render no content at all (see markEmptySections() in
   design-refresh.js) collapse completely instead of contributing a band
   of blank page. */
.qv-modern .elementor-top-section.qv-empty-section,
.qv-modern .e-con.qv-empty-section {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  min-height: 0 !important;
}

.qv-modern .qv-empty-section > .elementor-container {
  min-height: 0 !important;
}

/* Zero the builder's default column padding and widget margins inside a
   collapsed section too, otherwise ~50px of blank band survives. */
.qv-modern .qv-empty-section .elementor-column,
.qv-modern .qv-empty-section .elementor-widget-wrap,
.qv-modern .qv-empty-section .elementor-widget,
.qv-modern .qv-empty-section .elementor-widget-container {
  padding: 0 !important;
  margin: 0 !important;
  min-height: 0 !important;
}

.qv-modern .elementor-top-section.qv-section-continuation + .elementor-top-section.qv-section-continuation {
  padding-top: 0;
}

@media (max-width: 767px) {
  .qv-modern .elementor-top-section.qv-section-group-start {
    padding-bottom: 20px !important;
  }
}

/* Standard card treatment for icon-box / image-box / CTA / price-table
   widgets used as feature cards throughout the page. */
/* Card system — reference cards are near-flat: hairline border, 6px
   radius, minimal shadow, and equal height so rows align cleanly. */
.qv-modern .qv-modern-card > .elementor-widget-container,
.qv-modern .elementor-widget-image-box > .elementor-widget-container,
.qv-modern .elementor-widget-call-to-action > .elementor-widget-container,
.qv-modern .elementor-widget-price-table > .elementor-widget-container {
  height: 100%;
  padding: 24px;
  background: var(--qv-card);
  border: 1px solid var(--qv-border);
  border-radius: var(--qv-radius-lg);
  box-shadow: var(--qv-shadow-sm);
  transition: box-shadow .18s ease, border-color .18s ease;
}

.qv-modern .qv-modern-card:hover > .elementor-widget-container,
.qv-modern .elementor-widget-image-box:hover > .elementor-widget-container {
  box-shadow: var(--qv-shadow);
  border-color: var(--qv-navy);
}

/* Equal-height rows: stretch columns so cards in a row match, which is
   what keeps the reference's grids reading as tidy bands. */
.qv-modern .elementor-top-section > .elementor-container {
  align-items: stretch;
}

.qv-modern .elementor-column > .elementor-widget-wrap {
  align-content: flex-start;
}

.qv-modern .elementor-widget-icon-list .elementor-icon-list-icon {
  color: var(--qv-indigo);
}

.qv-modern .elementor-view-default .elementor-icon {
  color: var(--qv-navy);
}

.qv-modern .qv-on-dark .elementor-view-default .elementor-icon {
  color: #fff;
}

.qv-modern .elementor-widget-image-box .elementor-image-box-title {
  color: var(--qv-ink-900);
  font-weight: 750;
}

.qv-modern .elementor-widget-image img,
.qv-modern .elementor-widget-image-box img {
  border-radius: 16px;
}

/* eael-info-box widget (used in "Why Choose Covered California" and
   "Why Choose Quote Valley Insurance" sections) — flat card treatment,
   consistent with the rest of the flattened palette. */
.qv-modern .elementor-widget-eael-info-box .eael-info-box {
  border-radius: var(--qv-radius-lg) !important;
  box-shadow: var(--qv-shadow-sm) !important;
}

.qv-modern .elementor-widget-eael-info-box .eael-info-box-content-wrap {
  border-radius: var(--qv-radius-lg) !important;
}

/* Trust / partner logo strip */
.qv-modern .qv-logo-strip,
.qv-modern .elementor-widget-image-carousel {
  padding-top: 8px;
  padding-bottom: 8px;
}

.qv-modern .elementor-widget-image-carousel img {
  filter: grayscale(35%);
  opacity: .85;
  transition: filter .2s ease, opacity .2s ease;
}

.qv-modern .elementor-widget-image-carousel img:hover {
  filter: grayscale(0%);
  opacity: 1;
}

/* Sections that previously used ad-hoc indigo/cyan gradient
   background-images (surveyed: qv-section-3, 10, 12, 14, 17) — flattened
   to solid colors (reference-style: flat navy-tinted panel / flat white
   / flat pale panel, no gradients) instead of the old mismatched hues. */
.qv-modern .qv-section-10,
.qv-modern .qv-section-17 {
  background: var(--qv-bg-alt) !important;
}

/* Two elementor-widget-image widgets inside this section (the
   "Covered California" / "Medicare" split panels) carry their own
   Elementor-native gradient "background" style
   (linear-gradient(90deg, #4f63f9, #17b8ca)) baked in behind the logo
   image — same pattern as the Elementor-native box-shadow found on the
   quote-form widget. Flatten to solid navy so no gradient survives
   anywhere on the page. */
.qv-modern .qv-section-10 .elementor-widget-image > .elementor-widget-container {
  background: var(--qv-navy) !important;
}

.qv-modern .qv-section-11,
.qv-modern .qv-section-12,
.qv-modern .qv-section-14 {
  /* Flat light-gray instead of white so this panel still reads as a
     distinct band in the page rhythm (reference alternates flat white
     and flat light-gray sections rather than a colored gradient).
     qv-section-11 ("Helping Californians Find Affordable Health
     Insurance") still had its old solid cyan (#17b8ca) background —
     the qv-section-N numbering shifted by one position at some point
     after this rule was first written; verified directly against the
     live DOM rather than assumed. */
  background: var(--qv-bg-alt) !important;
}

/* Elementor's own generated per-page stylesheet (post-8.css) also has a
   leftover per-widget rule forcing this section's heading to white text,
   set back when the section had its old cyan background. .qv-on-dark
   can't fix this since it's a more specific ID-scoped Elementor
   selector, not something this plugin's CSS originally added. Override
   it directly now that the section is flat light gray. */
.qv-modern .qv-section-11 h1.elementor-heading-title,
.qv-modern .qv-section-11 h2.elementor-heading-title,
.qv-modern .qv-section-11 h3.elementor-heading-title {
  color: var(--qv-ink-900) !important;
}

.qv-modern .qv-section-11 > .elementor-background-overlay,
.qv-modern .qv-section-12 > .elementor-background-overlay,
.qv-modern .qv-section-14 > .elementor-background-overlay,
.qv-modern .qv-section-10 > .elementor-background-overlay,
.qv-modern .qv-section-17 > .elementor-background-overlay {
  display: none !important;
}

/* "About Quote Valley Insurance" section (qv-section-13) — this was the
   original readability bug: dark navy headings on a solid indigo/purple
   background. Flat navy fill (matching the reference site's flat dark
   panels, no gradient) and forced light text (also handled generically
   by .qv-on-dark, this is belt and suspenders since it's prominent). */
.qv-modern .qv-section-13 {
  background: var(--qv-navy) !important;
}

.qv-modern .qv-section-13 .elementor-heading-title,
.qv-modern .qv-section-13 h1,
.qv-modern .qv-section-13 h2,
.qv-modern .qv-section-13 h3 {
  color: #fff !important;
}

.qv-modern .qv-section-13 p,
.qv-modern .qv-section-13 .elementor-widget-text-editor,
.qv-modern .qv-section-13 li {
  color: rgba(255, 255, 255, .86) !important;
}

.qv-modern .qv-section-13 strong,
.qv-modern .qv-section-13 b {
  color: #fff !important;
}

/* Quote form section (qv-section-17) contact-info tiles */
.qv-modern .qv-section-17 .elementor-widget-icon-box > .elementor-widget-container {
  background: rgba(255, 255, 255, .55);
  border: 1px solid rgba(37, 150, 190, .18);
}

/* ---------------------------------------------------------------- */
/* Buttons (site-wide, outside hero)                                 */
/* ---------------------------------------------------------------- */

/* Button system — one consistent control: 40px tall, 24px side padding,
   pill radius, 14px/600, matching the reference's measured CTA. */
.qv-modern a.elementor-button,
.qv-modern button.elementor-button,
.qv-modern input[type="submit"],
.qv-modern input.wpcf7-submit {
  min-height: var(--qv-btn-h);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0 !important;
  border-radius: var(--qv-radius-pill) !important;
  padding: 0 var(--qv-btn-pad-x) !important;
  background: var(--qv-navy) !important;
  color: #fff !important;
  font-size: var(--qv-btn-fs);
  font-weight: var(--qv-btn-fw);
  letter-spacing: .01em;
  box-shadow: none;
  transition: background .15s ease;
}

.qv-modern a.elementor-button:hover,
.qv-modern button.elementor-button:hover,
.qv-modern input[type="submit"]:hover,
.qv-modern input.wpcf7-submit:hover {
  background: var(--qv-navy-dark) !important;
  color: #fff !important;
}

.qv-modern a.elementor-button.qv-smart-cta {
  background: var(--qv-cyan) !important;
  color: #fff !important;
  box-shadow: none;
}

.qv-modern a.elementor-button.qv-smart-cta:hover {
  background: #1298a8 !important;
}

.qv-modern a.elementor-button.qv-smart-cta:hover {
  filter: brightness(1.05);
  color: #fff !important;
}

/* ---------------------------------------------------------------- */
/* Forms (Contact Form 7 + Elementor forms)                          */
/* ---------------------------------------------------------------- */

.qv-modern form.wpcf7-form,
.qv-modern .elementor-form {
  float: none;
  width: 100%;
}

.qv-modern form.wpcf7-form input,
.qv-modern form.wpcf7-form select,
.qv-modern form.wpcf7-form textarea,
.qv-modern .elementor-form input,
.qv-modern .elementor-form select,
.qv-modern .elementor-form textarea {
  box-sizing: border-box;
  float: none;
  width: 100%;
  max-width: 100%;
  border: 1px solid var(--qv-border) !important;
  border-radius: var(--qv-radius-lg);
  background: #fff;
  color: var(--qv-ink) !important;
  font-size: var(--qv-fs-body);
  box-shadow: none;
  transition: border-color .18s ease, box-shadow .18s ease;
}

.qv-modern form.wpcf7-form input,
.qv-modern form.wpcf7-form select,
.qv-modern .elementor-form input,
.qv-modern .elementor-form select {
  min-height: var(--qv-input-h);
}

.qv-modern form.wpcf7-form textarea,
.qv-modern .elementor-form textarea {
  min-height: 140px;
  padding: 12px !important;
}

.qv-modern form.wpcf7-form input:focus,
.qv-modern form.wpcf7-form select:focus,
.qv-modern form.wpcf7-form textarea:focus,
.qv-modern .elementor-form input:focus,
.qv-modern .elementor-form select:focus,
.qv-modern .elementor-form textarea:focus {
  border-color: var(--qv-indigo) !important;
  outline: none;
  box-shadow: 0 0 0 4px rgba(37, 150, 190, .14);
}

.qv-modern form.wpcf7-form .full p label {
  color: var(--qv-ink) !important;
  font-weight: 650;
}

.qv-modern .full,
.qv-modern .half-l,
.qv-modern .half-r,
.qv-modern .half-l .half-ll,
.qv-modern .half-l .half-lr {
  box-sizing: border-box;
}

/* Quote-request form card (qv-section-17) gets its own elevated card
   treatment instead of a flat panel. */
/* Only the OUTER wrapper gets the card treatment — applying it to both
   the wrapper AND the <form> inside created two nested rounded white
   boxes that rendered as a stray collapsed bar above the visible form
   fields (the inner one had no visible height of its own to show a
   shadow/radius against). */
.qv-modern .qv-section-17 .elementor-widget-shortcode > .elementor-widget-container {
  background: #fff;
  border-radius: var(--qv-radius-xl);
  /* Elementor's own per-widget "Box Shadow" setting on this shortcode
     widget (baked into the page's generated post-53.css) is a hard,
     unblurred, 50%-opacity black shadow offset -100px/-100px. On the
     old flat/transparent card that never read as more than a faint
     smudge, but against this new solid white card it renders as a
     dramatic, ugly, hard-edged rectangle stacked behind the form.
     !important is required to beat that Elementor-generated rule. */
  box-shadow: var(--qv-shadow) !important;
  padding: 28px;
}

/* The column wrapper around this widget carries a second, separate
   Elementor "Box Shadow" setting (0 0 10px rgba(0,0,0,.5)) — also a
   leftover from the old flat design. Neutralize it so it doesn't add
   a second faint gray halo around the new card. */
.qv-modern .qv-section-17 .elementor-widget-shortcode.elementor-element,
.qv-modern .qv-section-17 .elementor-widget-wrap {
  box-shadow: none !important;
}

/* The CF7 form's row wrapper (div.full) is floated left with no
   clearfix in this theme's markup, which collapses both the <form>
   and its .wpcf7 wrapper to 0 real height (offsetHeight/clientHeight
   both measure 0 even though scrollHeight shows the floated content).
   That left the card padding above rendering as an empty white/gray
   pill with the actual fields spilling out uncontained below it.
   Clearfix both levels so they wrap their floated children properly
   and the card box actually surrounds the whole form. */
.qv-modern .qv-section-17 .elementor-widget-shortcode .wpcf7,
.qv-modern .qv-section-17 .elementor-widget-shortcode form.wpcf7-form {
  display: flow-root;
}

/* ---------------------------------------------------------------- */
/* Footer                                                            */
/* ---------------------------------------------------------------- */

/* IMPORTANT: scoped to .qv-real-footer (flagged by markRealFooter() in
   design-refresh.js), NOT the bare <footer> tag. Header Footer Elementor
   wraps its whole "footer template" region — which on this site also
   contains a full quote-request form section — inside one <footer>
   landmark. A selector on the bare tag was bleeding dark-footer text
   styling onto that form section, making its heading unreadable. */
.qv-modern .qv-real-footer {
  background: var(--qv-ink-900) !important;
}

.qv-modern .qv-real-footer:first-of-type {
  padding-top: 56px;
}

.qv-modern .qv-real-footer p,
.qv-modern .qv-real-footer li,
.qv-modern .qv-real-footer a,
.qv-modern .qv-real-footer .elementor-heading-title,
.qv-modern .qv-real-footer .elementor-icon-list-text,
.qv-modern .qv-real-footer .elementor-icon-list-item,
.qv-modern .qv-real-footer .elementor-icon-list-item a,
.qv-modern .qv-real-footer .elementor-icon-list-icon,
.qv-modern .qv-real-footer .elementor-icon-list-icon i,
.qv-modern .qv-real-footer .elementor-icon-list-icon svg,
.qv-modern .qv-real-footer .hfe-nav-menu .menu-item > a,
.qv-modern .qv-real-footer .hfe-nav-menu-item > a,
.qv-modern .qv-real-footer a.hfe-menu-item {
  color: #fff !important;
  fill: currentColor !important;
}

.qv-modern .qv-real-footer a:hover,
.qv-modern .qv-real-footer .elementor-icon-list-item a:hover,
.qv-modern .qv-real-footer .elementor-icon-list-item a:hover .elementor-icon-list-text,
.qv-modern .qv-real-footer .hfe-nav-menu .menu-item > a:hover,
.qv-modern .qv-real-footer a.hfe-menu-item:hover {
  color: var(--qv-cyan) !important;
}

.qv-modern .qv-real-footer .elementor-widget-button a.elementor-button {
  background: var(--qv-navy) !important;
  color: #fff !important;
  box-shadow: none;
}

.qv-modern .qv-real-footer .elementor-widget-button a.elementor-button:hover {
  background: var(--qv-navy-dark) !important;
}

.qv-modern .qv-real-footer .elementor-widget-social-icons a,
.qv-modern .qv-real-footer .elementor-social-icon {
  background: rgba(255, 255, 255, .18) !important;
  color: #fff !important;
  transition: background .18s ease, transform .18s ease;
}

.qv-modern .qv-real-footer .elementor-social-icon i,
.qv-modern .qv-real-footer .elementor-social-icon svg {
  color: #fff !important;
  fill: #fff !important;
}

.qv-modern .qv-real-footer .elementor-widget-social-icons a:hover,
.qv-modern .qv-real-footer .elementor-social-icon:hover {
  background: var(--qv-cyan) !important;
  color: #fff !important;
  transform: translateY(-2px);
}

.qv-modern .qv-real-footer .elementor-divider__element {
  border-color: rgba(255, 255, 255, .12) !important;
}

/* ---------------------------------------------------------------- */
/* Accessibility / interaction                                       */
/* ---------------------------------------------------------------- */

.qv-modern a:focus-visible,
.qv-modern button:focus-visible,
.qv-modern input:focus-visible,
.qv-modern select:focus-visible,
.qv-modern textarea:focus-visible {
  outline: 3px solid rgba(255, 122, 89, .8);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .qv-modern *,
  .qv-modern *::before,
  .qv-modern *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* ================================================================== */
/* TABLET (<=1024px)                                                   */
/* ================================================================== */

@media (max-width: 1024px) {
  .qv-modern .elementor-top-section > .elementor-container,
  .qv-modern .e-con-inner {
    max-width: 100%;
    padding-left: 20px;
    padding-right: 20px;
  }

  /* Hero steps down in scale but keeps its proportions; the text column
     is released to full width since there is no side image beside it. */
  .qv-modern .elementor-top-section.qv-hero {
    min-height: 0;
    padding-top: 44px;
    padding-bottom: 44px;
  }

  /* These overrides must repeat !important: the desktop hero rules carry
     it (to beat Elementor's ID-scoped post-8.css), and without it here a
     base !important would outrank every responsive step below. */
  .qv-modern .elementor-top-section.qv-hero h1.elementor-heading-title {
    font-size: 40px !important;
    max-width: none;
  }

  .qv-modern .elementor-top-section.qv-hero h1 .qv-hero-subhead {
    font-size: 20px !important;
    font-weight: 400 !important;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-widget-heading h2.elementor-heading-title {
    font-size: 16px !important;
    line-height: 24px !important;
    max-width: none;
  }

  .qv-modern .elementor-widget-heading h2.elementor-heading-title {
    font-size: 26px !important;
    line-height: 32px !important;
  }

  .qv-modern .elementor-top-section:not(.qv-hero):not(:first-of-type):not(:nth-of-type(2)) {
    padding-top: var(--qv-section-pad-y-tablet);
    padding-bottom: var(--qv-section-pad-y-tablet);
  }

  /* Tablet: 3-4 column card rows collapse to 2 across, not straight to 1. */
  .qv-modern .elementor-top-section.qv-hero .elementor-container .elementor-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--qv-grid-gap);
  }
}

/* ================================================================== */
/* MOBILE (<=767px) — primary iPhone target range                     */
/* ================================================================== */

@media (max-width: 767px) {
  .qv-modern body {
    font-size: 16px;
  }

  .qv-modern .elementor-top-section > .elementor-container,
  .qv-modern .e-con-inner {
    max-width: 100%;
    padding-left: 16px;
    padding-right: 16px;
  }

  .qv-modern header .elementor-container,
  .qv-modern header .e-con-inner {
    min-height: var(--qv-header-h-mobile);
  }

  .qv-modern header .elementor-widget-theme-site-logo img,
  .qv-modern header .elementor-widget-site-logo img {
    max-height: 34px;
    width: auto;
  }

  .qv-modern header .elementor-column.elementor-col-50:has(a[href^="tel:"]) {
    display: flex;
    align-items: center;
    justify-content: flex-end;
  }

  .qv-modern .hfe-nav-menu__toggle {
    min-width: 44px;
    min-height: 44px;
    display: flex !important;
    align-items: center;
    justify-content: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .hfe-nav-menu__toggle {
    background: var(--qv-navy-light);
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open nav.hfe-nav-menu__layout-horizontal,
  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open nav.hfe-nav-menu__layout-dropdown,
  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .hfe-nav-menu-layout {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    position: fixed;
    top: var(--qv-header-h-mobile);
    left: 0;
    right: 0;
    background: #fff;
    border-top: 1px solid var(--qv-border);
    box-shadow: var(--qv-shadow);
    max-height: calc(100vh - var(--qv-header-h-mobile));
    overflow-y: auto;
    z-index: 9998;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .hfe-nav-menu {
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
  }

  .qv-modern .hfe-nav-menu .menu-item > a {
    display: flex;
    min-height: 44px;
    align-items: center;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal ul.hfe-nav-menu,
  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open ul.hfe-nav-menu {
    width: 100%;
    padding: 6px 16px 18px;
    flex-direction: column;
    align-items: stretch;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .sub-menu {
    display: none;
    position: static !important;
    box-shadow: none !important;
    width: 100% !important;
    padding-left: 12px;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .menu-item.qv-submenu-open > .sub-menu {
    display: block !important;
  }

  /* Hero — reference drops its H1 to ~30px on small screens and stacks
     the plan tiles; the decorative ring is scaled down so it stays a
     background accent rather than competing with the copy. */
  .qv-modern .elementor-top-section.qv-hero {
    min-height: 0;
    padding-top: 36px;
    padding-bottom: 36px;
  }

  .qv-modern .elementor-top-section.qv-hero::before {
    display: none;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-container {
    flex-direction: column;
  }

  .qv-modern .elementor-top-section.qv-hero h1.elementor-heading-title {
    font-size: 30px !important;
    line-height: 1.15 !important;
    text-align: left !important;
    max-width: none;
    /* Long words like "California" must never force a sideways scroll. */
    overflow-wrap: break-word;
  }

  .qv-modern .elementor-top-section.qv-hero h1 .qv-hero-subhead {
    font-size: 18px !important;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-widget-heading h2.elementor-heading-title {
    font-size: 15px !important;
    line-height: 22px !important;
    max-width: none;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-container .elementor-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box > .elementor-widget-container {
    min-height: 118px;
    padding: 14px 10px;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-icon-box-title {
    font-size: 13px;
  }

  .qv-modern .elementor-top-section:not(.qv-hero):not(:first-of-type):not(:nth-of-type(2)) {
    padding-top: var(--qv-section-pad-y-mobile);
    padding-bottom: var(--qv-section-pad-y-mobile);
  }

  .qv-modern .elementor-top-section:not(.qv-hero) h1.elementor-heading-title {
    font-size: 28px !important;
  }

  .qv-modern .elementor-widget-heading h2.elementor-heading-title {
    font-size: 24px !important;
    line-height: 30px !important;
  }

  .qv-modern .elementor-widget-heading h3.elementor-heading-title {
    font-size: 18px !important;
    line-height: 26px !important;
  }

  /* Mobile controls get a 48px touch target (above the 44px minimum)
     while keeping the same pill/type language as desktop. */
  .qv-modern a.elementor-button,
  .qv-modern button.elementor-button,
  .qv-modern input[type="submit"],
  .qv-modern input.wpcf7-submit {
    min-height: 48px;
    padding: 0 22px !important;
    font-size: 15px;
  }

  .qv-modern .qv-modern-card > .elementor-widget-container,
  .qv-modern .elementor-widget-image-box > .elementor-widget-container,
  .qv-modern .elementor-widget-call-to-action > .elementor-widget-container,
  .qv-modern .elementor-widget-price-table > .elementor-widget-container {
    padding: 20px 18px;
    border-radius: var(--qv-radius-md);
  }

  .qv-modern .half-l,
  .qv-modern .half-r,
  .qv-modern .half-l .half-ll,
  .qv-modern .half-l .half-lr {
    float: none;
    width: 100%;
    padding-left: 0;
    padding-right: 0;
    margin-bottom: 14px;
  }

  .qv-modern .full {
    width: 100%;
    margin: 10px 0;
  }

  .qv-modern .elementor-widget-button {
    width: 100%;
  }

  .qv-modern .elementor-widget-button a.elementor-button {
    display: inline-flex;
    width: auto;
    max-width: 100%;
    justify-content: center;
    align-items: center;
  }

  .qv-modern .elementor-widget-button.qv-mobile-full a.elementor-button {
    width: 100%;
  }

  .qv-modern table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ================================================================== */
/* SMALL / IPHONE MINI-WIDTH (<=390px)                                  */
/* ================================================================== */

@media (max-width: 414px) {
  .qv-modern .elementor-top-section > .elementor-container,
  .qv-modern .e-con-inner {
    padding-left: 14px;
    padding-right: 14px;
  }

  .qv-modern .elementor-top-section.qv-hero h1.elementor-heading-title {
    font-size: 27px !important;
  }

  .qv-modern .elementor-top-section.qv-hero h1 .qv-hero-subhead {
    font-size: 16px !important;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-container .elementor-container {
    gap: 10px;
  }
}

/* 320px (iPhone SE / smallest supported): the two-up tile grid becomes a
   single column so labels never truncate or force horizontal overflow. */
@media (max-width: 360px) {
  .qv-modern .elementor-top-section > .elementor-container,
  .qv-modern .e-con-inner {
    padding-left: 12px;
    padding-right: 12px;
  }

  .qv-modern .elementor-top-section.qv-hero h1.elementor-heading-title {
    font-size: 25px !important;
  }

  .qv-modern .elementor-top-section.qv-hero h1 .qv-hero-subhead {
    font-size: 15px !important;
  }

  .qv-modern .elementor-widget-heading h2.elementor-heading-title {
    font-size: 21px !important;
    line-height: 27px !important;
  }

  /* The decorative ring is suppressed on the narrowest screens: at 320px
     it crosses the headline and hurts legibility rather than decorating. */
  .qv-modern .elementor-top-section.qv-hero::before {
    display: none;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-container .elementor-container {
    grid-template-columns: 1fr;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-widget-image-box > .elementor-widget-container {
    min-height: 0;
    flex-direction: row;
    justify-content: flex-start;
    gap: 12px;
    padding: 12px 14px;
    text-align: left;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-image-box-img {
    margin: 0;
    max-width: 28px;
  }

  .qv-modern .qv-modern-card > .elementor-widget-container,
  .qv-modern .elementor-widget-image-box > .elementor-widget-container,
  .qv-modern .elementor-widget-call-to-action > .elementor-widget-container {
    padding: 16px 14px;
  }
}

@media (max-width: 900px) and (orientation: landscape) {
  .qv-modern .elementor-top-section.qv-hero {
    padding-top: 24px;
    padding-bottom: 24px;
  }
}

/* ================================================================== */
/* v4 — visual-system match (measured from healthforcalifornia.com)      */
/* Presentation only. Own content, logo, URLs, and branding stay.   */
/* ================================================================== */

.qv-modern header .pageheader,
.qv-modern header section.pageheader {
  display: none !important;
}

.qv-modern header {
  background: #fff;
  box-shadow: none;
  border-bottom: 1px solid var(--qv-border);
}

.qv-modern header .hfe-site-logo-img,
.qv-modern header .elementor-widget-site-logo img {
  max-height: 60px;
  width: auto;
}

.qv-modern header .elementor-section:first-of-type {
  position: relative;
  z-index: 2;
}

.qv-modern header .elementor-section:first-of-type .elementor-container {
  min-height: 0;
  padding-top: 2px;
  padding-bottom: 0;
  border-bottom: 0;
  justify-content: flex-end;
}

.qv-modern header .gtranslate_wrapper {
  transform: scale(.85);
  transform-origin: right center;
}

.qv-modern .hfe-nav-menu .menu-item > a,
.qv-modern .hfe-nav-menu-item > a {
  color: var(--qv-navy) !important;
}

.qv-modern .hfe-nav-menu .menu-item > a:hover,
.qv-modern .hfe-nav-menu .menu-item.current-menu-item > a {
  color: var(--qv-link-hover) !important;
}

.qv-modern header a[href^="tel:"] {
  background: transparent;
  color: var(--qv-navy) !important;
  font-weight: 600;
  padding: 0 8px;
  height: var(--qv-btn-h);
}

.qv-modern header a[href^="tel:"]:hover {
  background: var(--qv-navy-light);
}

.qv-modern header a.qv-header-cta,
.qv-modern .qv-header-cta-item > a.qv-header-cta {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: var(--qv-btn-h) !important;
  min-height: var(--qv-btn-h) !important;
  padding: 0 16px !important;
  margin-left: 6px;
  border: 0 !important;
  border-radius: var(--qv-radius-pill) !important;
  background: var(--qv-navy) !important;
  color: #fff !important;
  font-size: var(--qv-btn-fs) !important;
  font-weight: var(--qv-btn-fw) !important;
  letter-spacing: .01em;
  white-space: nowrap;
  box-shadow: 0 1px 2px rgba(28, 113, 143, .2) !important;
  transition: background .15s ease, box-shadow .15s ease;
}

.qv-modern header a.qv-header-cta::before {
  content: "";
  width: 14px;
  height: 14px;
  flex: 0 0 auto;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2C8.1 2 5 5.1 5 9c0 5.2 7 13 7 13s7-7.8 7-13c0-3.9-3.1-7-7-7zm0 9.5A2.5 2.5 0 1 1 12 6a2.5 2.5 0 0 1 0 5.5z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2C8.1 2 5 5.1 5 9c0 5.2 7 13 7 13s7-7.8 7-13c0-3.9-3.1-7-7-7zm0 9.5A2.5 2.5 0 1 1 12 6a2.5 2.5 0 0 1 0 5.5z'/></svg>") center / contain no-repeat;
}

.qv-modern header a.qv-header-cta:hover {
  background: var(--qv-navy-dark) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(37, 150, 190, .28) !important;
}

@media (min-width: 1140px) {
  .qv-modern header ul.hfe-nav-menu {
    flex-wrap: nowrap !important;
    align-items: center;
  }

  .qv-modern header .hfe-nav-menu .menu-item > a {
    padding-left: 12px;
    padding-right: 12px;
  }

  .qv-modern header .qv-lang-item,
  .qv-modern header .qv-header-cta-item,
  .qv-modern header li:has(> a[href^="tel:"]) {
    align-self: center;
    min-height: 0;
  }

  .qv-modern header .qv-header-cta-item > a,
  .qv-modern header li > a[href^="tel:"] {
    min-height: var(--qv-btn-h) !important;
    height: var(--qv-btn-h) !important;
  }
}

.qv-modern .qv-hero .elementor-widget-heading h2.elementor-heading-title {
  font-size: 16px !important;
  line-height: 24px !important;
  font-weight: 400 !important;
  color: var(--qv-muted) !important;
}

.qv-modern a.elementor-button,
.qv-modern button.elementor-button,
.qv-modern input[type="submit"],
.qv-modern input.wpcf7-submit {
  font-family: var(--qv-font);
}

.qv-modern form.wpcf7-form input,
.qv-modern form.wpcf7-form select,
.qv-modern form.wpcf7-form textarea,
.qv-modern .elementor-form input,
.qv-modern .elementor-form select,
.qv-modern .elementor-form textarea {
  border: 2px solid var(--qv-input-border) !important;
  border-radius: 8px;
  color: #4b5563 !important;
  font-family: var(--qv-font);
}

.qv-modern form.wpcf7-form input:focus,
.qv-modern form.wpcf7-form select:focus,
.qv-modern form.wpcf7-form textarea:focus,
.qv-modern .elementor-form input:focus,
.qv-modern .elementor-form select:focus,
.qv-modern .elementor-form textarea:focus {
  border-color: var(--qv-navy) !important;
  box-shadow: 0 0 0 3px rgba(37, 150, 190, .16);
}

.qv-modern .qv-real-footer {
  background: var(--qv-navy-dark) !important;
}

.qv-modern .qv-real-footer a:hover {
  color: var(--qv-cyan) !important;
}

.qv-modern .elementor-widget-image-box .elementor-image-box-title {
  font-weight: 500;
  color: var(--qv-heading);
}

.qv-modern .elementor-widget-image img,
.qv-modern .elementor-widget-image-box img {
  border-radius: 6px;
}

/* Inner-page titles: brand-blue, left in multi-column, not a gradient banner */
.qv-modern .elementor-top-section:not(.qv-hero) h1.elementor-heading-title {
  color: var(--qv-heading) !important;
}

/* Hero tiles: yellow ring hover like the reference selected card */
.qv-modern .qv-hero .elementor-widget-image-box > .elementor-widget-container {
  border-width: 2px;
}

@media (min-width: 1025px) {
  .qv-modern .qv-hero .elementor-container .elementor-container {
    gap: 20px;
  }
}

/* Mobile hero tiles: stacked icon-left rows like the reference */
@media (max-width: 430px) {
  .qv-modern .elementor-top-section.qv-hero .elementor-container .elementor-container {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .qv-modern .qv-hero .elementor-widget-image-box > .elementor-widget-container {
    min-height: 0;
    flex-direction: row;
    justify-content: flex-start;
    gap: 14px;
    padding: 14px 16px !important;
    text-align: left;
  }

  .qv-modern .qv-hero .elementor-image-box-img {
    margin: 0;
    max-width: 40px;
  }

  .qv-modern header a.qv-header-cta {
    width: 100%;
    margin: 8px 0 0;
  }
}

@media (max-width: 767px) {
  .qv-modern .elementor-widget-button a.elementor-button,
  .qv-modern a.qv-smart-cta {
    width: 100%;
  }

  .qv-modern header .hfe-site-logo-img,
  .qv-modern header .elementor-widget-site-logo img {
    max-height: 40px;
  }
}

/* ---------------------------------------------------------------- */
/* Covered California page — info band above the quote tool          */
/* ---------------------------------------------------------------- */

.qv-modern .qv-cc-info {
  background: var(--qv-bg-alt);
  border-top: 1px solid var(--qv-border);
  border-bottom: 1px solid var(--qv-border);
  padding: 48px var(--qv-gutter);
}

.qv-modern .qv-cc-info-inner {
  max-width: var(--qv-container);
  margin: 0 auto;
}

.qv-modern .qv-cc-info h2 {
  color: var(--qv-heading);
  font-size: 28px;
  line-height: 1.2;
  font-weight: 700;
  margin: 0 0 12px;
}

.qv-modern .qv-cc-info > .qv-cc-info-inner > p,
.qv-modern .qv-cc-info-cta {
  color: var(--qv-muted);
  font-size: 16px;
  line-height: 1.6;
  max-width: 760px;
  margin: 0 0 28px;
}

.qv-modern .qv-cc-info a {
  color: var(--qv-link);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.qv-modern .qv-cc-info a:hover {
  color: var(--qv-link-hover);
}

.qv-modern .qv-cc-info-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 28px;
}

.qv-modern .qv-cc-info-card {
  background: #fff;
  border: 1px solid var(--qv-border);
  border-radius: var(--qv-radius-lg);
  padding: 20px 18px;
}

.qv-modern .qv-cc-info-card h3 {
  color: var(--qv-heading);
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 8px;
}

.qv-modern .qv-cc-info-card p {
  color: var(--qv-muted);
  font-size: 14px;
  line-height: 1.5;
  margin: 0;
}

.qv-modern .qv-cc-info-cta {
  margin-bottom: 0;
}

@media (max-width: 1024px) {
  .qv-modern .qv-cc-info-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .qv-modern .qv-cc-info {
    padding: 32px 16px;
  }

  .qv-modern .qv-cc-info-grid {
    grid-template-columns: 1fr;
  }

  .qv-modern .qv-cc-info h2 {
    font-size: 24px;
  }
}

/* ================================================================== */
/* iPhone / small-phone polish (notch, tap targets, stacked columns)  */
/* ================================================================== */

html.qv-modern {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.qv-modern header {
  padding-top: env(safe-area-inset-top);
}

.qv-modern img,
.qv-modern video,
.qv-modern canvas,
.qv-modern svg,
.qv-modern iframe {
  max-width: 100%;
}

.qv-modern iframe {
  display: block;
}

@media (max-width: 767px) {
  .qv-modern main .elementor-top-section > .elementor-container {
    flex-wrap: wrap;
  }

  .qv-modern main .elementor-top-section > .elementor-container > .elementor-column {
    width: 100% !important;
    max-width: 100% !important;
  }

  .qv-modern header {
    padding-left: max(12px, env(safe-area-inset-left));
    padding-right: max(12px, env(safe-area-inset-right));
  }

  .qv-modern header .elementor-section:first-of-type .elementor-container {
    min-height: 28px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  .qv-modern header .elementor-section:nth-of-type(2) > .elementor-container {
    min-height: 56px;
    align-items: center;
  }

  .qv-modern header .elementor-section:nth-of-type(2) > .elementor-container > .elementor-column:first-child {
    width: 72% !important;
    max-width: 72% !important;
    flex: 1 1 auto;
  }

  .qv-modern header .elementor-section:nth-of-type(2) > .elementor-container > .elementor-column:last-child {
    width: 28% !important;
    max-width: 28% !important;
    flex: 0 0 auto;
  }

  .qv-modern header .hfe-site-logo,
  .qv-modern header .hfe-site-logo a,
  .qv-modern header .elementor-widget-theme-site-logo {
    display: flex;
    align-items: center;
    max-width: 100%;
  }

  .qv-modern header .hfe-site-logo-img,
  .qv-modern header .elementor-widget-theme-site-logo img,
  .qv-modern header .elementor-widget-site-logo img {
    max-height: 36px !important;
    height: 36px !important;
    width: auto !important;
    max-width: min(220px, 68vw) !important;
    object-fit: contain;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open nav.hfe-nav-menu__layout-horizontal,
  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open nav.hfe-nav-menu__layout-dropdown,
  .qv-modern .hfe-nav-menu__breakpoint-tablet.qv-nav-open .hfe-nav-menu-layout {
    top: calc(var(--qv-header-h-mobile) + env(safe-area-inset-top, 0px));
    max-height: calc(100dvh - var(--qv-header-h-mobile) - env(safe-area-inset-top, 0px));
    padding-bottom: env(safe-area-inset-bottom, 12px);
  }

  .qv-modern .elementor-top-section.qv-hero {
    padding-top: 24px !important;
    padding-bottom: 28px !important;
    overflow: visible;
  }

  .qv-modern .elementor-top-section.qv-hero > .elementor-container {
    flex-direction: column !important;
    gap: 8px;
  }

  .qv-modern .elementor-top-section.qv-hero .elementor-widget-premium-lottie {
    min-height: 180px;
  }

  .qv-modern .elementor-top-section.qv-hero .premium-lottie-animation {
    width: min(220px, 72vw);
    margin: 0 auto;
  }

  .qv-modern .elementor-top-section.qv-hero a.elementor-button,
  .qv-modern .elementor-widget-button a.elementor-button,
  .qv-modern a.qv-smart-cta {
    width: 100%;
    max-width: 100%;
    min-height: 48px;
    touch-action: manipulation;
  }

  .qv-modern form.wpcf7-form input,
  .qv-modern form.wpcf7-form select,
  .qv-modern form.wpcf7-form textarea,
  .qv-modern .elementor-form input,
  .qv-modern .elementor-form select,
  .qv-modern .elementor-form textarea {
    font-size: 16px !important;
    width: 100%;
    max-width: 100%;
  }

  .qv-modern iframe[src*="quotit"],
  .qv-modern iframe[data-src*="quotit"] {
    width: 100% !important;
    max-width: 100% !important;
    height: 70vh !important;
    min-height: 520px;
    border: 0;
  }

  .qv-modern .qv-section-17 .elementor-widget-shortcode > .elementor-widget-container {
    padding: 18px 14px;
  }

  .qv-modern .qv-real-footer {
    padding-bottom: env(safe-area-inset-bottom, 16px);
  }
}

/* Keep Covered California intro copy above the animation on phones
   (Elementor reverse-mobile otherwise puts the Lottie first). */
@media (max-width: 767px) {
  html.qv-modern body.page-id-329 .elementor-reverse-mobile > .elementor-container {
    flex-direction: column !important;
  }
}

/* ---------------------------------------------------------------- */
/* Language switcher in the nav row + Service Areas CTA              */
/* ---------------------------------------------------------------- */

.qv-modern header {
  overflow: visible;
}

.qv-modern header:has(.qv-lang-item) .elementor-section:first-of-type {
  display: none !important;
}

.qv-modern header .qv-lang-item {
  list-style: none;
  display: flex;
  align-items: center;
  margin: 0 6px 0 8px;
  padding: 0;
  position: relative;
  z-index: 10002;
  min-height: 36px;
  min-width: 36px;
}

.qv-modern header .qv-lang-item .gtranslate_wrapper,
.qv-modern header .qv-lang-item .gt_switcher.notranslate {
  float: none !important;
  width: auto !important;
  line-height: 0;
  position: relative;
}

.qv-modern header .qv-lang-item .gt_switcher {
  overflow: visible !important;
  font-family: var(--qv-font) !important;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_selected a {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  box-sizing: border-box !important;
  width: auto !important;
  min-width: 0;
  height: var(--qv-btn-h);
  padding: 0 12px 0 10px !important;
  border: 1px solid var(--qv-border) !important;
  border-radius: var(--qv-radius-pill) !important;
  background: #fff !important;
  color: var(--qv-navy) !important;
  font-size: 13px !important;
  font-weight: 600;
  line-height: 1;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_selected {
  background: transparent !important;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_selected a:hover,
.qv-modern header .qv-lang-item .gt_switcher .gt_selected a.open {
  background: var(--qv-navy-light) !important;
  border-color: var(--qv-navy) !important;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_selected a img {
  width: 18px !important;
  height: 18px !important;
  border-radius: 50%;
  object-fit: cover;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_option {
  position: absolute !important;
  top: calc(100% + 6px);
  right: 0;
  left: auto;
  z-index: 10050;
  width: 160px !important;
  max-width: calc(100vw - 24px);
  border: 1px solid var(--qv-border) !important;
  border-radius: var(--qv-radius-md) !important;
  background: #fff !important;
  box-shadow: var(--qv-shadow);
}

.qv-modern header .qv-lang-item .gt_switcher .gt_option a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px !important;
  color: var(--qv-ink) !important;
  font-size: 13px !important;
}

.qv-modern header .qv-lang-item .gt_switcher .gt_option a:hover {
  background: var(--qv-navy-light) !important;
}

@media (min-width: 1140px) {
  .qv-modern header .hfe-nav-menu__breakpoint-tablet .elementor-widget-container {
    display: flex;
    align-items: center;
    overflow: visible;
  }
}

@media (max-width: 1139px) {
  .qv-modern header .hfe-nav-menu__breakpoint-tablet > .elementor-widget-container {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    overflow: visible;
  }

  .qv-modern header .hfe-nav-menu__breakpoint-tablet > .elementor-widget-container > .qv-lang-item {
    flex: 0 0 auto;
  }

  .qv-modern header .hfe-nav-menu__breakpoint-tablet:not(.qv-nav-open) > .elementor-widget-container > div.hfe-nav-menu-layout,
  .qv-modern header .hfe-nav-menu__breakpoint-tablet:not(.qv-nav-open) > .elementor-widget-container > div.hfe-nav-menu:not(ul) {
    flex: 0 0 auto;
    width: auto !important;
  }

  /* Only the DIV that holds the hamburger — not the UL, which shares
     these HFE class names and must stay a column inside the open menu. */
  .qv-modern header .elementor-widget-container > div.hfe-nav-menu-layout,
  .qv-modern header .elementor-widget-container > div.hfe-nav-menu:not(ul) {
    display: flex;
    flex-direction: row !important;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    overflow: visible;
  }

  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-horizontal,
  .qv-modern .hfe-nav-menu__breakpoint-tablet nav.hfe-nav-menu__layout-dropdown {
    display: none;
  }

  .qv-modern header .qv-lang-item {
    margin: 0;
    flex: 0 0 auto;
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    width: auto !important;
  }

  .qv-modern header:has(.qv-lang-item) .hfe-nav-menu__toggle {
    margin-left: 0;
    flex: 0 0 auto;
  }

  .qv-modern header .qv-header-cta-item {
    margin: 12px 0 8px;
    width: 100%;
  }

  .qv-modern header a.qv-header-cta {
    width: 100%;
    margin-left: 0;
    min-height: 48px !important;
    height: 48px !important;
    border-radius: 10px !important;
    font-size: 15px !important;
    box-shadow: 0 2px 8px rgba(37, 150, 190, .22) !important;
  }
}

@media (max-width: 767px) {
  .qv-modern header .elementor-section:nth-of-type(2) > .elementor-container > .elementor-column:first-child {
    width: 54% !important;
    max-width: 54% !important;
  }

  .qv-modern header .elementor-section:nth-of-type(2) > .elementor-container > .elementor-column:last-child {
    width: 46% !important;
    max-width: 46% !important;
  }

  .qv-modern header .qv-lang-item .gt_switcher .gt_selected a {
    padding: 0 10px 0 8px !important;
    min-height: 36px;
    height: 36px;
  }
}

/* Phones: flag-only control so English + hamburger fit beside the logo. */
@media (max-width: 479px) {
  .qv-modern header .qv-lang-item .gt_switcher .gt_selected a {
    font-size: 0 !important;
    gap: 0;
    padding: 0 !important;
    width: 36px;
    min-width: 36px;
    height: 36px;
    justify-content: center;
  }

  .qv-modern header .qv-lang-item .gt_switcher .gt_option a {
    font-size: 13px !important;
  }
}

