/* ==========================================================================
   1st Class Heat & Air — Brand Stylesheet
   Base styles + Elementor Pro native-widget overrides + component classes.
   Premium-but-neighborly. Warm, honest, zero-pressure.
   ========================================================================== */

/* ---------- 1. Base / global ------------------------------------------- */
body,
.elementor-kit-default {
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  background-color: var(--surface-page);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  color: var(--navy);
  line-height: var(--lh-heading);
  font-weight: 700;
}

a {
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-standard);
}
a:hover { color: var(--red); }

::selection { background: rgba(0, 47, 140, 0.14); }

:focus-visible {
  outline: 2px solid var(--navy);
  outline-offset: 2px;
}

/* Layout helpers (optional — Elementor sections usually own width) */
.fc-container { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.fc-measure   { max-width: var(--measure); }
.fc-section   { padding-block: var(--section-y); }

/* ---------- 2. Display wordmark voice ---------------------------------- */
.fc-display,
.fc-hero-number {
  font-family: var(--font-display);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  line-height: var(--lh-tight);
  letter-spacing: 0.01em;
  color: var(--navy);
}
.fc-display { font-size: var(--fs-display); }
.fc-hero-number { font-size: var(--fs-display); color: var(--red); }

.fc-eyebrow {
  display: inline-block;
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--tracking-eyebrow);
  color: var(--red);
}

/* ---------- 3. Elementor Headings & Text ------------------------------- */
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--font-heading);
  color: var(--navy);
  line-height: var(--lh-heading);
}
.elementor-widget-text-editor { color: var(--ink-soft); }

/* On navy bands, flip text to white */
.fc-on-navy,
.fc-on-navy h1, .fc-on-navy h2, .fc-on-navy h3,
.fc-on-navy .elementor-heading-title,
.fc-on-navy .elementor-widget-text-editor { color: var(--white); }
.fc-on-navy .fc-eyebrow { color: #FFD9A0; }

/* ---------- 4. Buttons (Elementor native + .fc-btn) -------------------- *
   HOVER PHILOSOPHY (reworked): premium-but-neighborly means confident, not
   bouncy. Buttons NO LONGER jump on hover. Instead the brand color deepens,
   the shadow settles a touch lower, and any trailing icon glides ~3px — so
   the motion lives in the icon, not the whole element. Calm and intentional.
   ------------------------------------------------------------------------ */
.elementor-button,
.fc-btn {
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.01em;
  border-radius: var(--radius-pill);
  padding: 0.9em 1.8em;
  transition: background-color var(--dur-mid) var(--ease-standard),
              color var(--dur-mid) var(--ease-standard),
              box-shadow var(--dur-mid) var(--ease-standard);
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55em;
  line-height: 1.1;
  min-height: 44px; /* tap target */
}

/* ---- Button icon system -------------------------------------------------
   Works for: Elementor's native button icon (.elementor-button-icon),
   inline SVGs/Lucide inside .fc-btn, and <i> icon fonts.
   The icon glides on hover; the button itself stays put. ---------------- */
.elementor-button .elementor-button-icon,
.fc-btn .fc-btn__icon,
.fc-btn > svg,
.fc-btn > i {
  display: inline-flex;
  align-items: center;
  font-size: 1.05em;
  transition: transform var(--dur-mid) var(--ease-out);
  will-change: transform;
}
.elementor-button .elementor-button-icon svg,
.fc-btn .fc-btn__icon svg,
.fc-btn > svg {
  width: 1.05em;
  height: 1.05em;
  flex: 0 0 auto;
}
/* Trailing icon (icon AFTER text) glides right on hover */
.elementor-button:hover .elementor-button-align-icon-right .elementor-button-icon,
.elementor-button:hover .elementor-button-icon,
.fc-btn:hover .fc-btn__icon--right,
.fc-btn:hover > svg:last-child { transform: translateX(3px); }
/* Leading icon (icon BEFORE text) glides left on hover */
.fc-btn:hover .fc-btn__icon--left,
.fc-btn:hover > svg:first-child { transform: translateX(-2px); }
/* Phone-style buttons: a subtle "ring" tilt instead of a glide */
.fc-btn--phone:hover .fc-btn__icon,
.fc-btn--phone:hover > svg { transform: rotate(-12deg) scale(1.08); }

/* ---- Primary = navy ---- */
.elementor-button,
.fc-btn--primary {
  background-color: var(--action-primary);
  color: var(--white);
  box-shadow: var(--shadow-brand);
}
.elementor-button:hover,
.elementor-button:focus-visible,
.fc-btn--primary:hover,
.fc-btn--primary:focus-visible {
  background-color: var(--action-primary-hover);
  color: var(--white);
  box-shadow: 0 16px 34px rgba(0, 47, 140, 0.28);
}
.elementor-button:active,
.fc-btn--primary:active {
  background-color: var(--action-primary-press);
  box-shadow: 0 6px 16px rgba(0, 47, 140, 0.24);
}

/* ---- Accent = red, for CTAs that need heat ---- */
.fc-btn--accent,
.elementor-button.fc-btn--accent {
  background-color: var(--action-accent);
  color: var(--white);
  box-shadow: 0 12px 30px rgba(208, 32, 46, 0.24);
}
.fc-btn--accent:hover,
.fc-btn--accent:focus-visible {
  background-color: var(--action-accent-hover);
  color: #fff;
  box-shadow: 0 16px 34px rgba(208, 32, 46, 0.30);
}
.fc-btn--accent:active {
  background-color: var(--action-accent-press);
  box-shadow: 0 6px 16px rgba(208, 32, 46, 0.26);
}

/* ---- Outline / secondary (e.g. Comfort Club secondary CTA) ---- */
.fc-btn--outline,
.elementor-button.fc-btn--outline {
  background-color: transparent;
  color: var(--navy);
  box-shadow: inset 0 0 0 2px var(--navy);
}
.fc-btn--outline:hover,
.fc-btn--outline:focus-visible {
  background-color: var(--navy);
  color: var(--white);
  box-shadow: inset 0 0 0 2px var(--navy), 0 12px 26px rgba(0, 47, 140, 0.22);
}
.fc-btn--outline:active { background-color: var(--navy-press); box-shadow: inset 0 0 0 2px var(--navy-press); }
.fc-on-navy .fc-btn--outline { color: var(--white); box-shadow: inset 0 0 0 2px rgba(255,255,255,0.7); }
.fc-on-navy .fc-btn--outline:hover { background:#fff; color: var(--navy); box-shadow: inset 0 0 0 2px #fff; }

/* ---------- 5. Cards ---------------------------------------------------- */
.fc-card {
  background: var(--surface-card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--border-subtle);
  padding: var(--space-24);
  transition: box-shadow var(--dur-slow) var(--ease-standard),
              border-color var(--dur-slow) var(--ease-standard);
}
/* No jump — the card simply deepens and warms its edge on hover. */
.fc-card:hover {
  box-shadow: var(--shadow-lg);
  border-color: rgba(0, 47, 140, 0.18);
}

/* Service card — icon-top layout */
.fc-service-card .fc-service-icon {
  width: 56px; height: 56px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-md);
  background: var(--surface-muted);
  color: var(--navy);
  margin-bottom: var(--space-12);
}
.fc-service-card h3 { margin: 0 0 var(--space-6); font-size: var(--fs-h3); }
.fc-service-card p  { margin: 0; color: var(--ink-soft); }

/* Elementor's own icon-box & image-box nudged onto brand */
.elementor-widget-icon-box .elementor-icon,
.elementor-widget-image-box .elementor-icon { color: var(--navy); }
.elementor-widget-icon-box .elementor-icon-box-title,
.elementor-widget-image-box .elementor-image-box-title { font-family: var(--font-heading); color: var(--navy); }

/* ---------- 6. Trust bar / rating stars -------------------------------- */
.fc-trustbar {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: var(--space-16);
  padding: var(--space-12) var(--space-16);
}
.fc-trust-item {
  display: inline-flex; align-items: center; gap: var(--space-6);
  font-family: var(--font-heading); font-weight: 600;
  color: var(--ink-soft); font-size: var(--fs-small);
}
.fc-trust-item strong { color: var(--navy); }

.fc-stars { display: inline-flex; gap: 2px; color: var(--star); }
.fc-stars svg { width: 18px; height: 18px; fill: var(--star); stroke: none; }

/* ---------- 7. Comfort Club panel -------------------------------------- */
.fc-comfort-club {
  background: var(--gradient-navy);
  color: var(--white);
  border-radius: var(--radius-lg);
  padding: var(--space-32);
  box-shadow: var(--shadow-brand);
}
.fc-comfort-club h2, .fc-comfort-club h3 { color: var(--white); }
.fc-comfort-club .fc-price {
  font-family: var(--font-display);
  font-style: italic; font-weight: 800;
  font-size: clamp(2.2rem, 5vw, 3.4rem);
  color: var(--white); line-height: 1;
}
.fc-comfort-club .fc-price small { font-size: 0.4em; font-style: normal; font-family: var(--font-body); opacity: 0.85; }

/* ---------- 8. Badges / chips ------------------------------------------ */
.fc-badge {
  display: inline-flex; align-items: center; gap: 0.4em;
  font-family: var(--font-heading); font-weight: 700;
  font-size: var(--fs-eyebrow); text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.4em 0.9em; border-radius: var(--radius-pill);
}
.fc-badge--navy  { background: rgba(0,47,140,0.1);  color: var(--navy); }
.fc-badge--red   { background: rgba(208,32,46,0.1); color: var(--red); }

/* Star-shield style keyline (echoes the logo) */
.fc-shield-keyline { box-shadow: 0 0 0 3px var(--white), var(--shadow-md); border-radius: var(--radius-md); }

/* ---------- 9. Hero band ----------------------------------------------- */
.fc-hero {
  position: relative;
  background: var(--gradient-navy);
  color: var(--white);
  border-radius: 0;
  overflow: hidden;
}
.fc-hero--photo::after {
  content: ""; position: absolute; inset: 0;
  background: var(--gradient-hero); pointer-events: none;
}
.fc-hero .fc-hero-inner { position: relative; z-index: 1; }

/* ---------- 10. Inputs -------------------------------------------------- */
.fc-input,
.elementor-field-textual {
  border-radius: var(--radius-md) !important;
  border: 1px solid var(--border-strong) !important;
  padding: 0.8em 1em !important;
  font-family: var(--font-body) !important;
  color: var(--ink) !important;
  background: var(--white) !important;
  min-height: 44px;
  transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard);
}
.fc-input:focus,
.elementor-field-textual:focus {
  border-color: var(--navy) !important;
  box-shadow: 0 0 0 3px rgba(0,47,140,0.12) !important;
  outline: none;
}

/* ---------- 11. Phone CTA (always reachable) --------------------------- */
.fc-phone-cta {
  display: inline-flex; align-items: center; gap: 0.5em;
  font-family: var(--font-heading); font-weight: 800;
  color: var(--navy); font-size: var(--fs-lead);
}
.fc-phone-cta svg { width: 20px; height: 20px; }
.fc-on-navy .fc-phone-cta { color: var(--white); }

/* ---------- 12. Footer -------------------------------------------------- */
.fc-footer {
  background: var(--gradient-navy);
  color: rgba(255,255,255,0.82);
}
.fc-footer a { color: rgba(255,255,255,0.82); }
.fc-footer a:hover { color: var(--white); }

/* ---------- 13. Hero buttons (global) ---------------------------------- *
   The site-wide hero CTA pattern, matching the AC Repair hero:
     • Primary   = solid WHITE pill, navy text  -> reads loud on navy/photo
     • Secondary = transparent pill, white hairline border, white text
   Works two ways:
     1. Automatically for any .elementor-button inside a .fc-hero / .fc-on-navy
        band, so existing hero buttons inherit the look with no per-button class.
     2. Explicitly via .fc-btn--hero / .fc-btn--hero-outline on any button.
   ------------------------------------------------------------------------ */

/* Stack + spacing for a hero's button group */
.fc-hero-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-12);
  margin-top: var(--space-16);
}

/* --- Primary hero button: solid white pill, navy label --- */
.fc-btn--hero,
.fc-hero .elementor-button,
.fc-on-navy .elementor-button:not(.fc-btn--accent):not(.fc-btn--outline) {
  background-color: var(--white);
  color: var(--navy);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-lg);
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.fc-btn--hero:hover,
.fc-hero .elementor-button:hover,
.fc-on-navy .elementor-button:not(.fc-btn--accent):not(.fc-btn--outline):hover {
  background-color: #F0F3F8;
  color: var(--navy-press);
  box-shadow: 0 18px 40px rgba(0, 22, 66, 0.34);
}
.fc-btn--hero:active,
.fc-hero .elementor-button:active {
  background-color: #E6EBF2;
  box-shadow: 0 8px 18px rgba(0, 22, 66, 0.28);
}

/* --- Secondary hero button: ghost pill, white hairline, white label --- */
.fc-btn--hero-outline,
.fc-hero .elementor-button.fc-btn--hero-outline,
.fc-on-navy .elementor-button.fc-btn--hero-outline {
  background-color: transparent;
  color: var(--white);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.85);
  border-radius: var(--radius-pill);
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.fc-btn--hero-outline:hover {
  background-color: var(--white);
  color: var(--navy);
  box-shadow: inset 0 0 0 2px var(--white), 0 14px 30px rgba(0, 22, 66, 0.28);
}
.fc-btn--hero-outline:active { background-color: #E6EBF2; box-shadow: inset 0 0 0 2px #E6EBF2; }

/* Phone glyph inside a hero button (Elementor icon or Lucide) keeps inline size */
.fc-hero .elementor-button .elementor-button-icon,
.fc-btn--hero .elementor-button-icon,
.fc-btn--hero-outline .elementor-button-icon { font-size: 1em; }
.fc-hero .elementor-button svg,
.fc-btn--hero svg,
.fc-btn--hero-outline svg { width: 1.1em; height: 1.1em; flex: 0 0 auto; }

/* On phones, let hero buttons go full-width for big tap targets */
@media (max-width: 767px) {
  .fc-hero-actions { align-self: stretch; }
  .fc-hero-actions .elementor-button,
  .fc-btn--hero,
  .fc-btn--hero-outline { width: 100%; justify-content: center; }
}

/* ---------- 14. Icon sizing guard (fixes blown-up icons) --------------- *
   Constrains Elementor icon / icon-box / button icons and any inline SVG so a
   dropped width/height never balloons an icon to its container width (the giant
   red phone & calendar blocks). Scoped to icons only — never affects content
   images, the hero photo, logo, or partner-logo rows.
   ------------------------------------------------------------------------ */
/* Restore Elementor's intended behavior: the SVG/img tracks the icon's
   font-size (which Elementor controls per-widget), instead of stretching to
   the container. :where() keeps specificity at 0 so ANY Elementor widget
   setting or inline style overrides this — it's a safety net, not a hammer. */
:where(.elementor-icon svg),
:where(.elementor-icon img),
:where(.elementor-icon-box-icon svg),
:where(.elementor-icon-box-icon img),
:where(.elementor-button-icon svg),
:where(.elementor-button-icon img) {
  width: 1em;
  height: 1em;
  display: inline-block;
  vertical-align: middle;
}

/* Hard cap so a runaway icon (no width/height at all) can never balloon into a
   giant block, regardless of widget. Caps the rendered glyph, not the wrapper. */
.elementor-icon svg,
.elementor-icon img,
.elementor-icon-box-icon svg,
.elementor-icon-box-icon img {
  max-width: 96px;
  max-height: 96px;
}

/* Zero-specificity fallback font-size only when Elementor emitted none. */
:where(.elementor-icon) { font-size: 28px; line-height: 1; }
:where(.elementor-icon i) { font-size: inherit; }

/* Generic inline brand icon helper for HTML widgets */
.fc-icon { width: 1.25em; height: 1.25em; flex: 0 0 auto; color: currentColor; vertical-align: middle; }
.fc-icon--lg { width: 2em; height: 2em; }

/* ---------- 15. Reduced motion ----------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}


/* ============================================================
   16. MENU STYLES & SITE-SPECIFIC OVERRIDES
   Folded in from 1stclass-menu-styles.css (updated 2026-03-14).
   These are tested, element-ID-scoped Elementor fixes for this
   exact site — kept verbatim. Structure:
     - Desktop + base mega-menu behavior
     - Mobile/tablet polish (<=1024px)
     - Mobile header CTA buttons (Call Now + Book Now)
     - Small phones (<=480px)
     - About Us inline-SVG overflow fix (page-id-233)
     - Mobile type-scale overrides
   ============================================================ */

.grecaptcha-badge {
    visibility: hidden;
}
#elementor-popup-modal-3568 .eicon-close:before { color: #FFF;}
@media (max-width: 1024px) {
  .e-n-menu-wrapper {
    margin-top: 0 !important;
    padding: 8px 0 !important;
    background: #FFF !important;
    z-index: 100;
    height: fit-content !important;
    max-height: 100vh !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }
}
/* DESKTOP MENU STYLES */
.e-n-menu-title-container {
  pointer-events: auto !important;
  cursor: pointer !important;
  position: relative;
  z-index: 10;
  width: auto !important;
}
.e-n-menu-item {
  pointer-events: auto !important;
}
.e-n-menu {
  pointer-events: auto !important;
}
.e-n-menu-wrapper {
  pointer-events: auto !important;
}
.e-n-tabs-heading button[id] {
  cursor: pointer !important;
  transition: background-color 0.2s ease, transform 0.1s ease;
}
.e-n-tabs-heading button[id]:hover {
  opacity: 0.9;
  transform: translateX(2px);
}
.e-n-tabs-heading button[id]:active {
  transform: scale(0.98);
}
/* Mobile specific styles */
@media (max-width: 991px) {
  .e-n-menu-title-container {
    display: flex;
    align-items: center;
    width: 100%;
  }
  .e-n-menu-dropdown-icon {
    pointer-events: auto;
    z-index: 11;
  }
  .e-n-tabs-heading button[id] {
    padding: 12px 16px;
    min-height: 44px;
    text-align: left;
    width: 100%;
  }
}
/* Desktop specific styles */
@media (min-width: 992px) {
	h1.onefc-h1v2 { line-height: 1.25em; width: 80%}
  .e-n-menu-item:hover > .e-n-menu-content {
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
  .e-n-menu-content {
    pointer-events: auto !important;
  }
  .e-n-menu-title-container {
    pointer-events: auto !important;
  }
  .e-n-menu-title-container:hover {
    opacity: 0.8;
  }
  .e-n-tabs-heading button[id] {
    position: relative;
  }
  /* REMOVED: arrow icon on desktop tab buttons (per request) */
}
/* Accessibility */
.e-n-menu-title-container:focus,
.e-n-tabs-heading button[id]:focus {
  outline: 2px solid #0066cc;
  outline-offset: 2px;
}
.e-n-tabs-heading button[id] {
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
}
/* Red dropdown arrows — KEEP */
.e-n-menu-dropdown-icon-closed svg {
  fill: #CC0000 !important;
}
/* =============================================================
   MOBILE HEADER BUTTONS — Call Now + Book Now on one line
   ============================================================= */
@media (max-width: 767px) {
  .elementor-element-643e2da,
  .elementor-element-643e2da > .e-con-inner {
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
  }
  .elementor-element-6af2eef {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: 100% !important;
    height: 50px !important;
  }
  .elementor-element-5c78e4d,
  .elementor-element-ea6a826 {
    display: none !important;
  }
  .elementor-element-320206f,
  .elementor-element-f173400 {
    flex: 0 0 50% !important;
    max-width: 50% !important;
    min-width: 0 !important;
    width: 50% !important;
    display: flex !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  .elementor-element-f173400 .elementor-widget-container,
  .elementor-element-f173400 .elementor-button-content-wrapper,
  .elementor-element-f173400 .elementor-button-wrapper {
    padding: 0 !important;
    margin: 0 !important;
    width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .elementor-element-320206f a,
  .elementor-element-f173400 a {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    height: 50px !important;
    padding: 0 16px !important;
    min-height: 50px !important;
    max-height: 50px !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    border: none !important;
    border-radius: 0 !important;
    box-sizing: border-box !important;
    white-space: nowrap !important;
    outline: none !important;
    margin: 0 !important;
    text-align: center !important;
    line-height: 1 !important;
  }
  /* CALL NOW — light grey block */
  .elementor-element-320206f,
  .elementor-element-320206f .elementor-widget-container,
  .elementor-element-320206f .elementor-icon-list-items,
  .elementor-element-320206f .elementor-icon-list-item,
  .elementor-element-320206f .elementor-inline-items,
  .elementor-element-320206f .elementor-inline-item {
    display: flex !important;
    width: 100% !important;
    height: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    outline: none !important;
    background: transparent !important;
    list-style: none !important;
  }
  .elementor-element-320206f a,
  .elementor-element-320206f a:link,
  .elementor-element-320206f a:visited,
  .elementor-element-320206f a:hover,
  .elementor-element-320206f a:active,
  .elementor-element-320206f a:focus,
  .elementor-element-320206f a:focus-visible {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    height: 50px !important;
    padding: 0 16px !important;
    min-height: 50px !important;
    background: #e5e7eb !important;
    color: #1a1a1a !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    font-family: inherit !important;
    text-decoration: none !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    border: none !important;
    border-width: 0 !important;
    border-style: none !important;
    border-radius: 0 !important;
    outline: none !important;
    outline-width: 0 !important;
    outline-style: none !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
    -webkit-tap-highlight-color: transparent !important;
  }
  .elementor-element-320206f .elementor-icon-list-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    flex-shrink: 0 !important;
  }
  .elementor-element-320206f .elementor-icon-list-icon svg {
    width: 14px !important;
    height: 14px !important;
    fill: #1a1a1a !important;
    display: block !important;
  }
  .elementor-element-320206f .elementor-icon-list-text {
    display: inline !important;
    width: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    color: #1a1a1a !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    line-height: 1 !important;
  }
  /* BOOK NOW — red block */
  .elementor-element-f173400 a.elementor-button {
    background: #D32F2F !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 16px !important;
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1 !important;
    height: 50px !important;
  }
  .elementor-element-f173400 .elementor-button-icon svg {
    width: 14px !important;
    height: 14px !important;
    fill: #ffffff !important;
  }
}
/* =============================================================
   MOBILE + TABLET POLISH (<= 1024px)
   ============================================================= */
@media (max-width: 1024px) {
  .e-n-menu-wrapper {
    overscroll-behavior-y: contain;
  }
  .elementor-element-643e2da,
  .elementor-element-643e2da > .e-con-inner {
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
  }
  .elementor-element-6af2eef {
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  .e-n-menu-content,
  .e-n-menu-items-wrapper,
  .e-n-tabs-heading,
  .e-n-tabs,
  .e-n-menu-content .e-con,
  .e-n-menu-content .elementor-widget-container {
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
  }
  .e-n-menu-wrapper::-webkit-scrollbar { width: 3px; }
  .e-n-menu-wrapper::-webkit-scrollbar-track { background: transparent; }
  .e-n-menu-wrapper::-webkit-scrollbar-thumb {
    background: rgba(0,0,0,0.15);
    border-radius: 3px;
  }
  body.e-n-menu--open,
  body.elementor-menu--open {
    overflow: hidden !important;
  }
  html, body { overflow-x: hidden !important; }
  .e-n-menu-item {
    border-bottom: 1px solid rgba(0,0,0,0.06) !important;
  }
  .e-n-menu-item:last-child {
    border-bottom: none !important;
  }
  .e-n-menu-title-container {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 16px 20px !important;
    min-height: 54px !important;
    font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif !important;
    -webkit-tap-highlight-color: transparent;
  }
  .e-n-menu-title-container .e-n-menu-title {
    font-size: 17px !important;
    font-weight: 600 !important;
    color: #1a1a1a !important;
    letter-spacing: -0.2px !important;
  }
  .e-n-menu-title-container .e-n-menu-dropdown-icon,
  .e-n-menu-item .e-n-menu-dropdown-icon {
    flex-direction: row !important;
    flex-shrink: 0 !important;
    width: 28px !important;
    height: 28px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin-left: 8px !important;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
  }
  .e-n-menu-dropdown-icon svg {
    width: 12px !important;
    height: 12px !important;
  }
  .e-n-menu-item.e-active .e-n-menu-dropdown-icon,
  .e-n-menu-item[aria-expanded="true"] .e-n-menu-dropdown-icon {
    transform: rotate(180deg) !important;
  }
  .e-n-menu-title-container:active {
    opacity: 0.6 !important;
    transition: opacity 0.05s !important;
  }
  /* MEGA MENU CONTENT — hide rich panels on mobile */
  .e-n-menu-content [role="tabpanel"],
  .e-n-menu-content .e-n-tabs-content,
  .e-n-menu-content .e-n-tabs-content > .e-con,
  .e-n-menu-content .e-n-tabs-content > .e-child {
    display: none !important;
  }
  .e-n-menu-content .elementor-widget-image,
  .e-n-menu-content img {
    display: none !important;
  }
  .e-n-menu-content .elementor-widget-text-editor,
  .e-n-menu-content .elementor-widget-heading {
    display: none !important;
  }
  .e-n-menu-content .elementor-widget-icon-list,
  .e-n-menu-content .elementor-widget-button,
  .e-n-menu-content .elementor-widget-call-to-action,
  .e-n-menu-content ul:not(.e-n-tabs-heading) {
    display: none !important;
  }
  .e-n-menu-content > .e-con > .e-con:first-child {
    display: none !important;
  }
  .e-n-menu-content .e-con .e-con {
    display: none !important;
  }
  .e-n-menu-content .e-con {
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
    min-height: 0 !important;
  }
  /* Keep the tabs widget + headings visible */
  .e-n-menu-content .elementor-widget-n-tabs,
  .e-n-menu-content .elementor-widget-n-tabs > .elementor-widget-container,
  .e-n-menu-content .elementor-widget-n-tabs .e-n-tabs {
    display: block !important;
  }
  .e-n-menu-content .e-n-tabs-heading,
  .e-n-menu-content .e-n-tabs > .e-n-tabs-heading {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    padding: 0 !important;
    width: 100% !important;
  }
  .e-n-menu-content .e-n-tabs-heading button {
    display: flex !important;
  }
  .e-n-menu-content {
    background: #f9f9f9 !important;
    padding: 0 !important;
    margin: 0 !important;
    border-left: none !important;
  }
  /* Sub-links styled like iOS settings rows */
  .e-n-menu-content .e-n-tabs-heading button,
  .e-n-menu-content .e-n-tabs-heading [role="tab"] {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    padding: 14px 20px 14px 36px !important;
    margin: 0 !important;
    border: none !important;
    border-bottom: 1px solid rgba(0,0,0,0.04) !important;
    border-radius: 0 !important;
    background: #f9f9f9 !important;
    color: #333333 !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif !important;
    text-align: left !important;
    min-height: 48px !important;
    cursor: pointer !important;
    -webkit-appearance: none !important;
    text-decoration: none !important;
    -webkit-tap-highlight-color: transparent;
    transition: none !important;
    transform: none !important;
  }
  .e-n-menu-content .e-n-tabs-heading button::after,
  .e-n-menu-content .e-n-tabs-heading button::before {
    content: none !important;
    display: none !important;
  }
  .e-n-menu-content .e-n-tabs-heading button .e-n-tab-icon,
  .e-n-menu-content .e-n-tabs-heading button > svg,
  .e-n-menu-content .e-n-tabs-heading button > i {
    display: none !important;
  }
  .e-n-menu-content .e-n-tabs-heading button[aria-selected="true"],
  .e-n-menu-content .e-n-tabs-heading button.e-active {
    background: #f9f9f9 !important;
    color: #333333 !important;
    border-left: none !important;
    box-shadow: none !important;
    font-weight: 400 !important;
  }
  .e-n-menu-content .e-n-tabs-heading button:hover {
    opacity: 1 !important;
    transform: none !important;
  }
  .e-n-menu-content .e-n-tabs-heading button:active {
    background: rgba(0,0,0,0.04) !important;
    transition: none !important;
    transform: none !important;
  }
  .e-n-menu-content .e-n-tabs-heading button:first-child {
    font-weight: 600 !important;
    color: #1F3E7C !important;
  }
  .e-n-menu-content .e-n-tabs-heading button:last-child {
    border-bottom: none !important;
  }
  .e-n-menu-title-container::after,
  .e-n-menu-title-container::before,
  .e-n-tabs-heading button[id]::after,
  .e-n-tabs-heading button[id]::before {
    content: none !important;
    display: none !important;
  }
  .e-n-menu-title-container:focus-visible {
    outline: none !important;
    background: rgba(0,0,0,0.03) !important;
  }
  .e-n-menu-content .e-n-tabs-heading button:focus-visible {
    outline: none !important;
    background: rgba(0,0,0,0.03) !important;
  }
}
/* =============================================================
   SMALL PHONES (<= 480px) — tighter spacing
   ============================================================= */
@media (max-width: 480px) {
  .e-n-menu-title-container {
    padding: 14px 16px !important;
    min-height: 50px !important;
  }
  .e-n-menu-title-container .e-n-menu-title {
    font-size: 16px !important;
  }
  .e-n-menu-content .e-n-tabs-heading button {
    padding: 12px 16px 12px 28px !important;
    font-size: 15px !important;
    min-height: 44px !important;
  }
}
ul#wpforms-3550-field_11 { padding: 0; list-style: none;}
/* =================================================================
   1ST-CLASS-FIX-ABOUT-US-SVG-OVERFLOW  (added 2026-05-07)
   Constrains inline Font Awesome SVGs pasted into Text Editor
   widgets on the About Us page (page-id-233) that render oversized.
   Scoped to that page + SVGs with no width attribute only.
   ================================================================= */
.page-id-233 .e-con .elementor-widget-text-editor svg:not([width]),
.page-id-233 .elementor-widget-container svg:not([width]) {
    width: 1.25em !important;
    height: 1.25em !important;
    max-width: 24px !important;
    max-height: 24px !important;
    display: inline-block !important;
    vertical-align: middle !important;
    fill: #C8102E;
    margin-right: 0.4em;
}
.page-id-233 p > svg:not([width]) {
    width: 1.1em !important;
    height: 1.1em !important;
    fill: currentColor;
    color: #0A2A66;
    margin-right: 0.35em;
}
/* END 1ST-CLASS-FIX-ABOUT-US-SVG-OVERFLOW */

/* =============================================================
   MOBILE TYPE SCALE (<= 767px) — readable headings & body
   ============================================================= */
@media (max-width: 767px) {
  h1,
  .elementor-heading-title.elementor-size-xxl,
  .elementor-heading-title.elementor-size-xl {
    font-size: 2rem !important;
    line-height: 1.2;
  }
  h2,
  .elementor-heading-title.elementor-size-large {
    font-size: 1.75rem !important;
    line-height: 1.25;
  }
  h3,
  .elementor-heading-title.elementor-size-medium {
    font-size: 1.375rem !important;
    line-height: 1.3;
  }
  p,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p {
    font-size: 1.25rem !important;
    line-height: 1.7;
  }
}


/* =============================================================
   17. WORDPRESS EMOJI IMAGE CONSTRAINT  (root-cause fix)
   WordPress converts literal emoji in content into
   <img class="emoji"> served from s.w.org. The core inline style
   that pins these to 1em can be stripped by performance plugins
   (e.g. WP Rocket's "remove emoji" option), which lets the SVGs
   balloon to full container width — the giant phone/calendar/siren
   "broken icons". This restores the standard inline sizing so an
   emoji renders as a small inline glyph wherever it appears.
   NOTE: brand guidance is to remove emoji from customer-facing
   copy entirely; this rule keeps the layout from breaking until
   the content itself is cleaned up.
   ============================================================= */
img.emoji,
img.wp-smiley {
  display: inline-block !important;
  width: 1em !important;
  height: 1em !important;
  max-width: 1em !important;
  max-height: 1em !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 0.07em 0 0.1em !important;
  padding: 0 !important;
  vertical-align: -0.1em !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* When an emoji <img> is the icon inside a button/CTA link, keep it
   inline-sized rather than letting it stretch the link box. */
a img.emoji,
.elementor-button img.emoji,
.elementor-icon-list-text img.emoji,
h1 img.emoji, h2 img.emoji, h3 img.emoji, h4 img.emoji {
  width: 1em !important;
  height: 1em !important;
  vertical-align: -0.12em !important;
}


/* =============================================================
   18. HOVER REFINEMENT  (overrides the jumpy defaults)
   Replaces the cheap-feeling motions with calm, professional
   ones. Loads after Section 16 so it wins on the desktop menu.
   ============================================================= */

/* Desktop mega-menu tab buttons: kill the sideways nudge + shrink.
   Hover now = a soft background tint and a navy text shift. */
.e-n-tabs-heading button[id]:hover {
  opacity: 1 !important;
  transform: none !important;
  background-color: rgba(0, 47, 140, 0.05) !important;
  color: var(--navy) !important;
}
.e-n-tabs-heading button[id]:active {
  transform: none !important;
  background-color: rgba(0, 47, 140, 0.09) !important;
}
.e-n-tabs-heading button[id] {
  transition: background-color var(--dur-mid) var(--ease-standard),
              color var(--dur-mid) var(--ease-standard) !important;
}

/* Top-level menu titles: gentle color shift, no opacity dip. */
@media (min-width: 992px) {
  .e-n-menu-title-container:hover { opacity: 1 !important; }
  .e-n-menu-title-container:hover .e-n-menu-title { color: var(--red) !important; }
  .e-n-menu-title-container .e-n-menu-title {
    transition: color var(--dur-mid) var(--ease-standard) !important;
  }
}

/* Hero buttons: glide the trailing icon on hover (button stays still). */
.fc-hero .elementor-button .elementor-button-icon,
.fc-btn--hero .fc-btn__icon,
.fc-btn--hero > svg {
  transition: transform var(--dur-mid) var(--ease-out);
}
.fc-hero .elementor-button:hover .elementor-button-icon,
.fc-btn--hero:hover .fc-btn__icon--right,
.fc-btn--hero:hover > svg:last-child { transform: translateX(3px); }
.fc-btn--hero-outline.fc-btn--phone:hover .fc-btn__icon,
.fc-btn--hero-outline.fc-btn--phone:hover > svg { transform: rotate(-12deg) scale(1.08); }

/* Links: keep the navy→red shift but add a tidy underline offset. */
a:not(.elementor-button):not(.fc-btn):hover { text-underline-offset: 3px; }


/* =============================================================
   19. HERO CTA — GSAP MOTION SUPPORT
   Static layers for the GSAP-driven hero buttons (hero-motion.js):
   a sheen sweep element, GPU hints, and z-index so the label/icon
   always sit above the sheen. The JS adds .fc-cta-ready and the
   .fc-cta-sheen child; everything here degrades gracefully if JS
   or GSAP is absent (buttons simply render as styled pills).
   ============================================================= */
.fc-btn--hero,
.fc-btn--hero-outline,
.fc-hero-actions .elementor-button,
.fc-hero .elementor-button,
.fc-on-navy .elementor-button:not(.fc-btn--accent) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  will-change: transform;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}

/* Sheen tint per button type (navy reads on the white primary;
   white reads on the dark ghost / navy buttons). */
.fc-btn--hero,
.fc-hero-actions .elementor-button:not(.fc-btn--hero-outline) { --sheen: rgba(0, 47, 140, 0.16); }
.fc-btn--hero-outline,
.fc-on-navy .elementor-button:not(.fc-btn--accent):not(.fc-btn--hero) { --sheen: rgba(255, 255, 255, 0.45); }

/* The sweeping sheen the GSAP timeline drives. */
.fc-cta-sheen {
  position: absolute;
  top: 0;
  left: 0;
  width: 55%;
  height: 100%;
  background: linear-gradient(100deg, transparent 0%, var(--sheen, rgba(255,255,255,0.4)) 50%, transparent 100%);
  transform: skewX(-18deg) translateX(-180%);
  pointer-events: none;
  z-index: 1;
}

/* Keep the visible label + icon above the sheen. */
.fc-btn--hero > *,
.fc-btn--hero-outline > *,
.elementor-button .elementor-button-content-wrapper,
.fc-hero-actions .elementor-button > * { position: relative; z-index: 2; }

/* No-JS / GSAP-failed safety: if the enhancer never runs, ensure the
   button is fully visible (the entrance tween starts it at opacity 0). */
.no-js .fc-btn--hero,
.no-js .fc-btn--hero-outline { opacity: 1 !important; }

/* Reduced motion: strip the sheen entirely, leave a clean static pill. */
@media (prefers-reduced-motion: reduce) {
  .fc-cta-sheen { display: none !important; }
}
