/* ============================================================
   HEADER TOP FIXES  (works WITH the native nicepage header)
   1. "Celebrating 40 Years" text reduced ~50% (all breakpoints)
   2. On MOBILE only: stack logo UNDER the 40-year badge so they
      don't crowd/overlap. Desktop keeps the native layout intact.
   3. Hamburger = three clean white lines (never a solid block).
   Loaded LAST so it wins over earlier header CSS.
   ============================================================ */

/* ── 1. HALVE THE "CELEBRATING 40 YEARS" TEXT ─────────────────
   Native sizes: 0.875rem (desktop), 0.75rem (≤991px).
   Halved below. Positioning (margins) left untouched so the
   desktop layout stays exactly where nicepage places it.        */
.u-header .u-text-1 {
  font-size: 0.616rem !important;     /* desktop: enlarged 40% (0.44 -> 0.616) */
}
@media (max-width: 991px) {
  .u-header .u-text-1 {
    font-size: 0.38rem !important;   /* was 0.75rem */
  }
}

/* (Mobile logo/badge ordering is handled in section 4 below.) */

/* ── 3. HAMBURGER — clean three lines, fully clickable ────────
   Just the three-line icon (no button box, no label, no hover
   highlight). Kept fully tappable so the menu opens on click.     */

/* The clickable trigger link — transparent, no box, no hover fill */
.u-header .u-hamburger-link-1,
.u-header .u-hamburger-link-1:hover,
.u-header .u-hamburger-link.u-nav-link,
.u-header .u-hamburger-link-1.u-nav-link,
.u-header .u-hamburger-link-1.u-nav-link:hover,
.u-header .u-hamburger-link-1.u-nav-link.u-active,
.u-header .u-hamburger-link-1.u-nav-link.active,
.u-header .u-hamburger-link-1.u-nav-link.ge-active-menu-page,
.u-nav-container .u-hamburger-link-1.u-nav-link.u-active {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 8px !important;
  box-shadow: none !important;
  cursor: pointer !important;
  pointer-events: auto !important;
  text-decoration: none !important;
  min-width: 44px !important;
  min-height: 44px !important;
}
/* The three-line icon, white */
.u-header .u-hamburger-link-1 svg,
.u-header .u-hamburger-link-1 .u-svg-link {
  width: 28px !important;
  height: 28px !important;
  background: transparent !important;
  pointer-events: none !important;       /* clicks pass to the link */
}
.u-header .u-hamburger-link-1 svg rect,
.u-header .u-hamburger-link-1 .u-svg-content rect,
.u-header .u-hamburger-link-1 .u-svg-link use {
  fill: #ffffff !important;              /* white bars */
  stroke: none !important;
}
/* Ensure the trigger and its container can receive taps */
.u-header .menu-collapse,
.u-header .u-menu-1 .menu-collapse {
  pointer-events: auto !important;
  z-index: 50 !important;
  cursor: pointer !important;
}

/* ── 4. MOBILE (VERTICAL) HEADER ORDER ───────────────────────
   MOBILE ONLY (≤991px). Desktop layout is left completely alone.
   Stack the header content vertically, centered, in this order:
     1) Social icons (Facebook, YouTube, Google)
     2) "Celebrating 40 Years" text
     3) CALL TODAY button
     4) 40-year badge
     5) Logo (under the badge)
   The hamburger menu stays pinned top-right, out of the way.     */
@media (max-width: 991px) {
  #header.u-header {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 8px 12px 0 !important;
    position: relative !important;
    overflow-x: clip !important;
  }
  /* Nav stays in flow (so its offcanvas popup can slide out full-screen);
     only the small hamburger TRIGGER is pinned top-right. */
  #header .u-menu-1 {
    order: 0 !important;
    position: static !important;   /* do NOT constrain the offcanvas panel */
    width: auto !important;
    margin: 0 !important;
    z-index: 40 !important;
  }
  /* Pin just the hamburger button (the collapsed trigger) top-right */
  #header .u-menu-1 .menu-collapse {
    position: absolute !important;
    top: 10px !important;
    right: 14px !important;
    margin: 0 !important;
    z-index: 41 !important;
  }
  /* 1) Social icons centered first */
  #header .u-social-icons-1 {
    order: 1 !important;
    position: static !important;
    float: none !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 6px auto 10px !important;
    width: 100% !important;
    left: auto !important; right: auto !important; top: auto !important;
  }
  /* 2) "Celebrating 40 Years" text — larger & readable on mobile */
  #header .u-text-1 {
    order: 2 !important;
    position: static !important;
    float: none !important;
    text-align: center !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 2px auto 10px !important;
    padding: 0 12px !important;
    font-size: 1rem !important;          /* enlarged from 0.38rem */
    line-height: 1.35 !important;
    font-weight: 700 !important;
    left: auto !important; right: auto !important; top: auto !important;
  }
  /* 3) CALL TODAY button */
  #header .u-btn-1 {
    order: 3 !important;
    position: static !important;
    float: none !important;
    display: inline-block !important;
    margin: 0 auto 12px !important;
    left: auto !important; right: auto !important; top: auto !important;
  }
  /* 4) 40-year badge */
  #header .u-image-2 {
    order: 4 !important;
    position: static !important;
    float: none !important;
    display: block !important;
    width: 110px !important;
    height: auto !important;
    margin: 0 auto 6px !important;
    left: auto !important; right: auto !important; top: auto !important;
  }
  /* 5) Logo, under the badge — FULL WIDTH edge-to-edge.
     The header has side padding; the negative margins below let the
     logo escape it so the yellow reaches the far LEFT edge and the
     white side reaches the far RIGHT edge of the screen.            */
  #header .u-image-1 {
    order: 5 !important;
    position: static !important;
    float: none !important;
    display: block !important;
    width: 100vw !important;
    max-width: 100vw !important;
    height: auto !important;
    margin: 6px 0 0 !important;            /* no side margins */
    margin-left: -12px !important;          /* cancel header left padding */
    margin-right: -12px !important;         /* cancel header right padding */
    object-fit: contain !important;         /* keep aspect ratio, no distortion */
    object-position: center !important;
    left: auto !important; right: auto !important; top: auto !important;
  }
}
@media (max-width: 480px) {
  #header .u-image-2 { width: 92px !important; }
  /* keep logo full-bleed on small phones; cancel the tighter padding */
  #header .u-image-1 {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left: -12px !important;
    margin-right: -12px !important;
  }
}

/* ── 5. MOBILE: HIDE REDUNDANT BOTTOM CALL BAR ───────────────
   The fixed full-width yellow ".call-bar" at the bottom duplicates
   the floating click-to-call button (which shows the same number),
   so hide the bar on mobile. Desktop is unchanged.               */
@media (max-width: 991px) {
  .call-bar {
    display: none !important;
  }
}

/* ── 6. "$99/Month" ON ITS OWN LINE (mobile only) ────────────
   The price break only appears on mobile; desktop keeps the
   heading on one line as before.                                */
.price-mobile-br { display: none; }
@media (max-width: 991px) {
  .price-mobile-br { display: block; }
}

/* ── 7. KILL EXCESS EMPTY SPACE ON SERVICE PAGES (mobile/tablet) ──
   The remodeling/ADU service pages set a very tall fixed min-height
   on the left gallery cell/group (sized for desktop). On phones and
   tablets this leaves a big blank gap below the content. Let these
   containers size to their actual content instead.                  */
@media (max-width: 991px) {
  .u-section-2 .u-layout-cell-1,
  .u-section-2 .u-group-1,
  .u-section-2 .u-sheet-1 {
    min-height: 0 !important;
    height: auto !important;
  }
  /* keep the gallery itself a sensible height so it's still visible */
  .u-section-2 .u-gallery-1 {
    min-height: 0 !important;
    height: auto !important;
  }
}
@media (max-width: 575px) {
  .u-section-2 .u-layout-cell-1,
  .u-section-2 .u-group-1,
  .u-section-2 .u-sheet-1 {
    min-height: 0 !important;
    height: auto !important;
  }
}

/* ── 8. FINANCING IMAGE + CIRCLE IMAGES (ALL breakpoints) ─────
   (a) "We offer financing / $99/M NEW ROOF" image (Financing.png,
       u-image-10) was given fixed heights + expanded width, cropping
       it on the right/bottom. Force full image, correct aspect ratio,
       on every screen size — desktop, tablet, and phone.
   (b) The two round images must be centered and the same size
       everywhere.                                                   */

/* (a) Financing banner image — never crop, keep whole image visible */
.u-image-10.u-expanded-width,
.u-image.u-image-10 {
  height: auto !important;
  max-width: 100% !important;
  width: auto !important;
  max-height: none !important;
  object-fit: contain !important;
  background-size: contain !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* (b) Both circle images: same size + centered, all breakpoints */
.u-image-circle {
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
  display: block !important;
  width: 340px !important;
  height: 340px !important;
  max-width: 90vw !important;
  max-height: 90vw !important;
  object-fit: cover !important;
}
@media (max-width: 991px) {
  .u-image-circle {
    width: 300px !important;
    height: 300px !important;
  }
  /* let the financing image's container size to content (no big gap) */
  .u-image-10.u-expanded-width,
  .u-image.u-image-10 { height: auto !important; }
}
@media (max-width: 575px) {
  .u-image-circle {
    width: 240px !important;
    height: 240px !important;
  }
}

/* ── 9. STOP HORIZONTAL OVERFLOW / IMAGE CUTOFF (mobile/tablet) ──
   The financing image's container (.u-section-2 .u-group-1) was set
   to a fixed 1128px width with a big negative right margin, pushing
   content off-screen and cropping the "$99/M NEW ROOF" image. Clamp
   it to the viewport so the whole image shows.                       */
@media (max-width: 991px) {
  .u-section-2 .u-group-1 {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  .u-section-2 .u-sheet-1,
  .u-section-2 .u-layout-cell-1,
  .u-section-2 .u-layout-cell-2 {
    min-height: 0 !important;
    height: auto !important;
  }
  /* prevent any sideways scroll from the section */
  .u-section-2 { overflow-x: clip !important; }
}
@media (max-width: 575px) {
  .u-section-2 .u-group-1 {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 auto !important;
    min-height: 0 !important;
  }
}

/* ── 2. YELLOW ACCENT LINE UNDER THE HEADER/LOGO (every page) ──
   A thin yellow line directly under the header bar, on ALL pages.
   Half the previous height (was 6px → now 3px).                  */
#header.u-header,
header#header,
header.u-header,
.u-header.u-sticky {
  border-bottom: 3px solid #f2b705 !important;
}

/* ── 12. TESTIMONIALS VIDEO BOX — yellow border (not blue) ─────
   Force the border around each testimonial / video box to the brand
   yellow (#f2b705) instead of blue. High-specificity selectors so
   it overrides the theme's custom-color border.                    */
#header ~ * .u-video.u-border-custom-color-1,
.u-section-5 .u-video,
.u-section-5 .u-video.u-border-custom-color-1,
.u-section-5 .u-border-custom-color-1.u-video,
.u-video.u-border-custom-color-1,
.u-video.u-border-10,
.u-border-custom-color-1.u-video,
div.u-video {
  border-color: #f2b705 !important;
  border-style: solid !important;
}
/* Testimonial cards (Testimonials.html) that use the same blue border */
.u-testimonial.u-border-custom-color-1,
.u-testimonial-card.u-border-custom-color-1,
.u-border-custom-color-1.u-testimonial {
  border-color: #f2b705 !important;
}

/* ── 13. NAV STRETCH + YELLOW HOVER — spaced menu, rollover ────
   Spread the menu items evenly across the bar with comfortable
   spacing, and give each item a yellow (#f2b705) rollover highlight
   on hover with dark text. Blog sits at the end before the social
   icons. Desktop only.                                              */
@media (min-width: 992px) {
  #header .u-menu-1 .u-nav-container,
  #header .u-menu-1 .u-custom-menu {
    width: 100% !important;
  }
  #header .u-menu-1 .u-nav.u-unstyled {
    display: flex !important;
    flex-wrap: nowrap !important;
    width: 100% !important;
    justify-content: space-between !important;
    align-items: center !important;
    gap: 2px !important;
  }
  #header .u-menu-1 .u-nav.u-unstyled > .u-nav-item {
    flex: 0 1 auto !important;
  }
  #header .u-menu-1 .u-nav.u-unstyled > .u-nav-item > .u-nav-link {
    padding: 8px 11px !important;
    font-size: 0.9rem !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    border-radius: 0 !important;
    transition: background-color .15s ease, color .15s ease !important;
  }
  /* Yellow rollover highlight over each menu item */
  #header .u-menu-1 .u-nav.u-unstyled > .u-nav-item > .u-nav-link:hover,
  #header .u-menu-1 .u-nav.u-unstyled > .u-nav-item > .u-nav-link:focus,
  #header .u-menu-1 .u-nav.u-unstyled > .u-nav-item:hover > .u-nav-link {
    background-color: #f2b705 !important;
    color: #0d1b30 !important;
  }
}

/* ── 13c. DROPDOWN STAYS VERTICAL — submenus list down, not across ── */
@media (min-width: 992px) {
  /* The dropdown popup's ul also has .u-nav.u-unstyled; force it vertical */
  #header .u-menu-1 .u-nav-popup .u-nav.u-unstyled {
    display: block !important;
    width: auto !important;
  }
  #header .u-menu-1 .u-nav-popup .u-nav.u-unstyled > .u-nav-item {
    display: block !important;
    width: 100% !important;
  }
  #header .u-menu-1 .u-nav-popup .u-nav.u-unstyled > .u-nav-item > .u-nav-link {
    display: block !important;
    width: 100% !important;
    white-space: nowrap !important;
  }
}

/* ── 13d. SUBMENU LEFT-ALIGN (desktop dropdown) ─────────────── */
@media (min-width: 992px) {
  #header .u-menu-1 .u-nav-popup .u-nav.u-unstyled {
    text-align: left !important;
  }
  #header .u-menu-1 .u-nav-popup .u-nav-item {
    text-align: left !important;
    width: 100% !important;
  }
  #header .u-menu-1 .u-nav-popup .u-nav-link {
    text-align: left !important;
    justify-content: flex-start !important;
    display: block !important;
    width: 100% !important;
    border-radius: 0 !important;
  }
}

/* ── 14. SIDEBAR FORM — yellow border on every field (always shown) ──────
   The Get-In-Touch / contact form fields show a yellow outline at all times. */
#phone-ea48,
#name-5485,
#street-1ab3,
#message-5485 {
  border: 2px solid #f2b705 !important;
  border-radius: 8px !important;
  transition: border-color .15s ease, box-shadow .15s ease !important;
}
#phone-ea48:focus,
#name-5485:focus,
#street-1ab3:focus,
#message-5485:focus {
  border: 2px solid #ffc61a !important;
  box-shadow: 0 0 0 3px rgba(242,183,5,.25) !important;
  outline: none !important;
}

/* ── 15. ROOF TOOL — center 'Select Roof Type' boxes on mobile ──
   Many stacked rules left the roof-type cards off-center on phones.
   This final rule (loaded last) centers the grid and cards cleanly. */
#stepRoofType .roof-type-grid {
  margin-left: auto !important;
  margin-right: auto !important;
  justify-items: center !important;
  justify-content: center !important;
}
#stepRoofType .roof-type-card {
  margin-left: auto !important;
  margin-right: auto !important;
  width: 100% !important;
}
@media (max-width: 800px) {
  #stepRoofType.roof-type-section {
    max-width: 520px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  #stepRoofType .roof-type-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 14px !important;
    max-width: 100% !important;
    width: 100% !important;
  }
  #stepRoofType .roof-type-card {
    max-width: 100% !important;
  }
}
@media (max-width: 480px) {
  #stepRoofType .roof-type-grid {
    grid-template-columns: 1fr !important;
    max-width: 340px !important;
  }
  #stepRoofType .roof-type-card {
    max-width: 340px !important;
  }
}

/* ── 16. ROOF TYPE CARDS — even yellow border, centered label ──
   Each card: clean photo on top, label below, an EVEN yellow border
   all the way around, everything centered. Consistent desktop+mobile. */
#stepRoofType .roof-type-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0,1fr)) !important;
  gap: 18px !important;
  max-width: 960px !important;
  width: 100% !important;
  margin: 0 auto !important;
  justify-items: center !important;
  justify-content: center !important;
}
#stepRoofType .roof-type-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto !important;
  background: #ffffff !important;
  border: 4px solid #f2b705 !important;   /* even yellow border all around */
  border-radius: 16px !important;
  overflow: hidden !important;
  box-shadow: 0 6px 16px rgba(0,0,0,.12) !important;
  padding: 0 !important;
  cursor: pointer !important;
  text-align: center !important;
}
#stepRoofType .roof-type-card img {
  display: block !important;
  width: 100% !important;
  aspect-ratio: 750 / 468 !important;
  height: auto !important;
  object-fit: cover !important;
  object-position: center !important;
  border: 0 !important;
  border-radius: 0 !important;
  margin: 0 auto !important;
  background: #f2b705 !important;
}
#stepRoofType .roof-type-label {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  width: 100% !important;
  min-height: 56px !important;
  padding: 12px 10px !important;
  margin: 0 auto !important;
  box-sizing: border-box !important;
  background: #f2b705 !important;
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-family: Arial, Helvetica, sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: .02em !important;
  text-transform: uppercase !important;
  line-height: 1.1 !important;
  font-size: clamp(1rem, 1.7vw, 1.35rem) !important;
  border: 0 !important;
  border-top: 3px solid #f2b705 !important;
}
#stepRoofType .roof-type-card.selected {
  outline: 4px solid #051f3d !important;
  outline-offset: 2px !important;
}
@media (max-width: 900px) {
  #stepRoofType .roof-type-grid { grid-template-columns: repeat(2, minmax(0,1fr)) !important; max-width: 560px !important; }
}
@media (max-width: 520px) {
  #stepRoofType .roof-type-grid { grid-template-columns: 1fr !important; max-width: 340px !important; gap: 16px !important; }
  #stepRoofType .roof-type-label { font-size: 1.25rem !important; }
}

/* ── 17. MOBILE HAMBURGER MENU (clean vertical + accordion) ────
   JS (hamburger-menu-fix.js) toggles .ge-menu-open on the nav.
   Shows a vertical white-text menu in a dark slide-out panel with
   accordion dropdowns (SERVICES / REMODELING), like most websites.  */

/* overlay behind the panel — MUST be below the panel's z-index (2147483000)
   so the menu links stay tappable; otherwise it covers them and swallows taps */
#ge-menu-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 2147481000; pointer-events: none !important; }

@media (max-width: 991px) {
  /* hamburger trigger always tappable */
  .u-menu-1 .u-hamburger-link-1, .u-menu-1 .menu-collapse {
    pointer-events: auto !important; cursor: pointer !important; z-index: 60 !important;
  }

  /* THE PANEL — slide-out dark box */
  nav.ge-menu-open .u-nav-container-collapse {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: fixed !important;
    top: 0 !important; right: 0 !important; left: auto !important; bottom: 0 !important;
    width: 86% !important; max-width: 340px !important;
    height: 100% !important; min-height: 100vh !important;
    z-index: 2147483000 !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    transform: none !important;
    margin: 0 !important; padding: 0 !important;
      pointer-events: auto !important;
  }
  /* inner wrappers solid dark, full height */
  nav.ge-menu-open .u-nav-container-collapse .u-sidenav,
  nav.ge-menu-open .u-nav-container-collapse .u-inner-container-layout,
  nav.ge-menu-open .u-nav-container-collapse > div {
    background: #051f3d !important;
    opacity: 1 !important;
    height: auto !important; min-height: 100vh !important;
    width: 100% !important; display: block !important;
    padding: 0 !important; margin: 0 !important;
  }

  /* THE MENU LIST — vertical */
  nav.ge-menu-open .u-nav-container-collapse .u-nav,
  nav.ge-menu-open .u-nav-container-collapse .u-nav-4 {
    display: block !important;
    width: 100% !important;
    list-style: none !important;
    margin: 0 !important;
    padding: 64px 0 30px !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item {
    display: block !important;
    width: 100% !important;
    border-bottom: 1px solid rgba(255,255,255,.10) !important;
    position: relative !important;
  }

  /* MENU LINKS — white text, full width */
  nav.ge-menu-open .u-nav-container-collapse .u-nav-link,
  nav.ge-menu-open .u-nav-container-collapse a.u-nav-link {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    display: block !important;
    width: 100% !important;
    padding: 15px 44px 15px 22px !important;
    font-size: 1.05rem !important;
    font-weight: 600 !important;
    letter-spacing: .02em !important;
    text-align: left !important;
    text-transform: uppercase !important;
    background: transparent !important;
    text-decoration: none !important;
    box-sizing: border-box !important;
    pointer-events: auto !important;
    opacity: 1 !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-link:hover {
    color: #f2b705 !important; -webkit-text-fill-color: #f2b705 !important;
    background: rgba(255,255,255,.05) !important;
  }

  /* DROPDOWN PARENTS — caret indicator */
  nav.ge-menu-open .u-nav-container-collapse .u-nav-link.ge-has-dropdown::after {
    content: "\25B8" !important;            /* ▸ */
    position: absolute !important; right: 20px !important; top: 15px !important;
    color: #f2b705 !important; -webkit-text-fill-color: #f2b705 !important;
    font-size: 1rem !important; transition: transform .18s ease !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-link.ge-has-dropdown::after {
    transform: rotate(90deg) !important;
  }

  /* SUBMENU (dropdown) — collapsed by default, vertical when open */
  nav.ge-menu-open .u-nav-container-collapse .u-nav-popup {
    display: none !important;
    position: static !important;
    width: 100% !important;
    box-shadow: none !important;
    transform: none !important;
    left: auto !important; top: auto !important;
    background: rgba(0,0,0,.25) !important;
    padding: 0 !important; margin: 0 !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup {
    display: block !important;
    position: static !important;
    left: auto !important; right: auto !important; top: auto !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    box-shadow: none !important;
    max-height: 2000px !important;
    visibility: visible !important;
    opacity: 1 !important;
    overflow: visible !important;
    height: auto !important;
  }
  /* the inner UL and each item: full width, stacked, no float/absolute */
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup > ul,
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup .u-nav-popup-content {
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
    transform: none !important;
    left: auto !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup .u-nav-item {
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    margin: 0 !important;
    display: block !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup .u-nav-link,
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item.ge-sub-open > .u-nav-popup a {
    visibility: visible !important;
    opacity: 1 !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-popup .u-nav-item {
    border-bottom: 1px solid rgba(255,255,255,.06) !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-popup .u-nav-link {
    padding-left: 38px !important;
    font-size: .98rem !important;
    font-weight: 500 !important;
    text-transform: none !important;
    color: #e8eef6 !important; -webkit-text-fill-color: #e8eef6 !important;
  }

  /* CLOSE (X) button */
  nav.ge-menu-open .u-menu-close {
    display: block !important;
    position: absolute !important; top: 18px !important; right: 18px !important;
    width: 28px !important; height: 28px !important; z-index: 5 !important;
    pointer-events: auto !important; cursor: pointer !important;
  }
  nav.ge-menu-open .u-menu-close::before,
  nav.ge-menu-open .u-menu-close::after {
    content: "" !important; position: absolute !important; top: 13px !important; left: 1px !important;
    width: 26px !important; height: 2px !important; background: #fff !important;
  }
  nav.ge-menu-open .u-menu-close::before { transform: rotate(45deg) !important; }
  nav.ge-menu-open .u-menu-close::after { transform: rotate(-45deg) !important; }
}

/* ── 22. MOBILE/TABLET — remove huge empty gaps before sections ──
   Some content sections had fixed/large min-heights that left big
   white gaps on phones & tablets (e.g. before the Get In Touch box
   and the lower text section). Let these sections size to content.  */
@media (max-width: 991px) {
  .u-section-2, .u-section-3, .u-section-9, .u-section-11 {
    min-height: 0 !important;
    height: auto !important;
  }
  .u-section-2 > .u-container-layout,
  .u-section-3 > .u-container-layout,
  .u-section-11 > .u-container-layout {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
  }
}
@media (max-width: 767px) {
  .u-section-1, .u-section-2, .u-section-3,
  .u-section-4, .u-section-5, .u-section-6,
  .u-section-7, .u-section-8, .u-section-9, .u-section-11 {
    min-height: 0 !important;
    height: auto !important;
  }
}

/* ── 17b. HAMBURGER LINKS ABOVE FADE LAYER (clickable) ────────
   The panel has a .u-opacity / fade inner layer; ensure the menu
   list and links sit above it and receive taps.                    */
@media (max-width: 991px) {
  /* the fade/opacity inner layer must not block taps */
  nav.ge-menu-open .u-nav-container-collapse .u-opacity,
  nav.ge-menu-open .u-nav-container-collapse .u-container-style {
    pointer-events: auto !important;
    opacity: 1 !important;
  }
  /* the menu UL + items lifted above any inner layer */
  nav.ge-menu-open .u-nav-container-collapse .u-nav,
  nav.ge-menu-open .u-nav-container-collapse .u-nav-4,
  nav.ge-menu-open .u-nav-container-collapse .u-sidenav-overflow {
    position: relative !important;
    z-index: 2147483600 !important;
    pointer-events: auto !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-item {
    position: relative !important;
    z-index: 2147483600 !important;
    pointer-events: auto !important;
  }
  nav.ge-menu-open .u-nav-container-collapse .u-nav-link,
  nav.ge-menu-open .u-nav-container-collapse a.u-nav-link {
    position: relative !important;
    z-index: 2147483647 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
  }
  /* close button above everything too */
  nav.ge-menu-open .u-menu-close {
    z-index: 2147483647 !important;
    pointer-events: auto !important;
  }
}

/* ── 23. SERVICES GALLERY — show all photos on mobile ─────────
   The services-page gallery (u-repeater-1, in section 2/3/4 depending
   on page) collapsed to a 1-wide horizontal scroll on phones and
   appeared hidden. Force a visible wrapping grid so all gallery
   photos show on mobile, across every services page.                */

/* ── Mobile: stack the "Safety and Service" cards cell + insurance image cell
   full-width instead of squished side-by-side (they lacked u-size-xs-60) ── */
@media (max-width: 767px) {
  .u-layout-cell.u-size-34,
  .u-layout-cell.u-size-26 {
    flex: 0 0 100% !important;
    max-width: 100% !important;
    width: 100% !important;
  }
}

/* ── Sidebar images: center ALL of them on mobile (insurance circle, family
   circle, instant-quote) at a consistent width, with even spacing between ── */
.ge-clipboard-sidebar,
.ge-family-circle-sidebar,
.ge-instant-quote-sidebar {
  display: block !important;
  width: 340px !important;
  max-width: 100% !important;
  height: auto !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-bottom: 26px !important;   /* spacing between the images */
}
/* Instant Quote (60 SEC) banner matches the Financing ($99/M) banner width:
   full container width instead of a fixed 340px cap. The link wrapper must also
   go full-width or it caps the image at 340px. */
.ge-instant-quote-sidebar,
img[src*="Instant-Quote"],
.ge-instant-quote-sidebar-link,
a:has(> img[src*="Instant-Quote"]) {
  width: 100% !important;
  max-width: 100% !important;
  display: block !important;
}
/* make sure their container centers content on mobile */
@media (max-width: 767px) {
  .ge-clipboard-sidebar,
  .ge-family-circle-sidebar,
  .ge-instant-quote-sidebar {
    margin-left: auto !important;
    margin-right: auto !important;
    float: none !important;
  }
}

/* ── Safety: never let any image or the expanded-width banners overflow the
   screen on mobile (prevents right-edge cut-off anywhere) ── */
html, body { max-width: 100% !important; overflow-x: hidden !important; }
@media (max-width: 991px) {
  .u-image, .u-expanded-width-xs, img {
    max-width: 100% !important;
    height: auto;
  }
  /* expanded-width banners: keep them within the viewport */
  .u-expanded-width-xs {
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* ── Financing ($99/M) banner (u-image-5 on index): never crop + nudge up 10px ── */
.u-image-5,
.u-image.u-image-5,
.u-expanded-width-xs.u-image-5 {
  height: auto !important;
  max-width: 100% !important;
  width: 100% !important;
  max-height: none !important;
  object-fit: contain !important;
  margin-top: -10px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* ── Mobile: make the "Get In Touch" contact form full-width so fields stack
   on top of each other instead of squished into a narrow column ── */
@media (max-width: 767px) {
  .u-form, .u-form-1, .u-form.u-form-1 {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .u-form form, .u-form .u-form-vertical, .u-form .u-inner-form {
    width: 100% !important;
    max-width: 100% !important;
    display: block !important;
  }
  .u-form .u-form-group {
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    display: block !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .u-form .u-form-group input,
  .u-form .u-form-group textarea,
  .u-form .u-form-group select,
  .u-form .u-input {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* ── Mobile: the contact form's flex parent was shrinking the form to content
   width (~120px). Force the form to fill the full cell width. ── */
@media (max-width: 767px) {
  /* target the container that holds the form and make its child (the form) stretch */
  .u-container-layout > .u-form,
  .u-container-layout > .u-expanded-width-xs.u-form,
  .u-form.u-form-1 {
    flex: 0 0 auto !important;   /* fill width but do NOT grow to the tall parent height */
    width: 100% !important;
    max-width: 100% !important;
    align-self: stretch !important;
    height: auto !important;
    min-height: 0 !important;
  }
  /* if the form's parent is a flex row, let items stretch full width */
  .u-container-layout:has(> .u-form) {
    flex-direction: column !important;
    align-items: stretch !important;
  }
}

/* ── Yellow outline on each contact / sidebar form field ── */
.u-form .u-form-group input,
.u-form .u-form-group textarea,
.u-form .u-form-group select,
.u-form .u-input,
.u-form input[type="text"],
.u-form input[type="tel"],
.u-form input[type="email"],
.u-form textarea {
  border: 2px solid #f2b705 !important;
  border-radius: 8px !important;
  outline: none !important;
}
.u-form .u-form-group input:focus,
.u-form .u-form-group textarea:focus,
.u-form .u-input:focus,
.u-form textarea:focus {
  border-color: #ffc61a !important;
  box-shadow: 0 0 0 2px rgba(242,183,5,.25) !important;
}

/* ── Yellow outline: override u-border-none on form inputs (higher specificity) ── */
.u-form .u-input.u-border-none,
.u-form input.u-border-none,
.u-form textarea.u-border-none,
.u-form .u-form-group .u-input,
.u-form .u-form-group input.u-input-rectangle,
.u-form .u-form-group textarea.u-input-rectangle {
  border: 2px solid #f2b705 !important;
  border-radius: 8px !important;
}
.u-form .u-input.u-border-none:focus,
.u-form input.u-border-none:focus,
.u-form textarea.u-border-none:focus {
  border: 2px solid #ffc61a !important;
  box-shadow: 0 0 0 2px rgba(242,183,5,.25) !important;
}

/* ── Financing banner: beat the .u-section-3 .u-image-5 fixed-height rules that
   crop it on About. Force auto height so the whole $99/M image shows. ── */
.u-section-3 .u-image-5,
.u-section-3 .u-image.u-image-5,
.u-section-3 img.u-image-5,
.u-section-2 .u-image-5,
.u-section-11 .u-image-5,
section .u-image-5 {
  height: auto !important;
  max-height: none !important;
  object-fit: contain !important;
}

/* ── Financing banner: override the fixed heights INSIDE each breakpoint so the
   media-scoped Nicepage rule can't win. Full image shows on every phone size. ── */
@media (max-width: 767px) {
  .u-section-3 .u-image-5,
  .u-section-2 .u-image-5,
  .u-section-11 .u-image-5 { height: auto !important; max-height: none !important; object-fit: contain !important; }
}
@media (max-width: 575px) {
  .u-section-3 .u-image-5,
  .u-section-2 .u-image-5,
  .u-section-11 .u-image-5 { height: auto !important; max-height: none !important; object-fit: contain !important; }
}
@media (max-width: 991px) {
  .u-section-3 .u-image-5,
  .u-section-2 .u-image-5,
  .u-section-11 .u-image-5 { height: auto !important; max-height: none !important; object-fit: contain !important; }
}

/* ── Financing banner on About (u-expanded-width variant): force full natural
   aspect ratio so the whole $99/M image shows, not squished to 121px ── */
img.u-image-5[src*="Financing"],
.u-expanded-width.u-image-5,
img.u-expanded-width.u-image-5 {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  width: 100% !important;
  max-width: 100% !important;
  aspect-ratio: 568 / 496 !important;
  object-fit: contain !important;
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* ── Financing banner: it's a flex-item in a column container which mis-sizes
   its height. Take it out of flex sizing and set height from width explicitly. ── */
img.u-image-5[src*="Financing"],
.u-expanded-width.u-image-5 {
  flex: 0 0 auto !important;
  align-self: center !important;
  aspect-ratio: auto !important;
  height: auto !important;
}
/* belt: fix the calculated height using the known 568:496 ratio at 366px wide */
@media (max-width: 991px) {
  img.u-image-5[src*="Financing"],
  .u-expanded-width.u-image-5 {
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    aspect-ratio: auto !important;
  }
}

/* ── Financing banner: universal fix for ALL pages/sections. The image mis-sizes
   as a flex item; force it to size from width with natural ratio everywhere. ── */
img[src*="Financing"] {
  flex: 0 0 auto !important;
  align-self: center !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  object-fit: contain !important;
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
@media (max-width: 991px) {
  img[src*="Financing"] {
    height: auto !important; max-height: none !important; aspect-ratio: auto !important;
    flex: 0 0 auto !important;
  }
}

/* ── 4 roof buttons (MOBILE ONLY): icon on the LEFT, text right of it,
   left-aligned, and a bit taller. Desktop layout stays untouched. ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link .u-container-layout {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    text-align: left !important;
    padding-left: 18px !important;
    padding-top: 7px !important;
    padding-bottom: 7px !important;
  }
  .ge-sidebar-roof-link .u-icon,
  .ge-sidebar-roof-link .u-file-icon {
    position: static !important;
    left: auto !important; right: auto !important; top: auto !important; bottom: auto !important;
    transform: none !important;
    margin-left: 0 !important;
    margin-right: 14px !important;
    float: none !important;
    flex: 0 0 auto !important;
  }
  .ge-sidebar-roof-link .u-text {
    position: static !important;
    text-align: left !important;
    margin-left: 0 !important;
    flex: 1 1 auto !important;
  }
  /* spacing between the 4 buttons block and the next element (insurance image) */
  .ge-sidebar-roof-link:last-of-type {
    margin-bottom: 28px !important;
  }
}

/* ── Contact form: more space between each field line ── */
.u-form .u-form-group {
  margin-bottom: 16px !important;
}
.u-form .u-form-group:last-child {
  margin-bottom: 0 !important;
}


/* ── "Get In Touch" form: show the form.png striped panel on mobile as the
   BACKGROUND of the form (fields sit on top), matching the desktop look.
   The decorative <img> stays hidden; we use it as a CSS background instead. ── */
@media (max-width: 991px) {
  .u-form.u-form-1,
  .u-section-3 .u-form,
  .u-section-2 .u-form,
  section .u-form.u-form-1 {
    background-image: url('images/form.png') !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
    background-position: center top !important;
    padding: 26px 18px !important;
    border-radius: 10px !important;
  }
}

/* ── 4 roof buttons (mobile): force ALL icons to identical size + centering so
   Roof Coating's icon matches the other three exactly ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link .u-icon,
  .ge-sidebar-roof-link .u-file-icon {
    width: 64px !important;
    height: 64px !important;
    min-width: 64px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .ge-sidebar-roof-link .u-icon img,
  .ge-sidebar-roof-link .u-file-icon img {
    width: 64px !important;
    height: 64px !important;
    max-width: 64px !important;
    max-height: 64px !important;
    object-fit: contain !important;
    object-position: center !important;
    margin: 0 auto !important;
    display: block !important;
  }
}

/* ── About page section-3: the round images (LocalRoofing u-border-9 and the
   BOOK NOW u-image-round) overlap the text on mobile via negative margins.
   Neutralize so everything stacks cleanly under each other with spacing. ── */
@media (max-width: 991px) {
  .u-section-3 .u-border-9,
  .u-section-3 .u-image-round,
  .u-section-3 .u-image-6 {
    position: relative !important;
    top: auto !important; bottom: auto !important; left: auto !important; right: auto !important;
    float: none !important;
    margin: 20px auto !important;
    transform: none !important;
    display: block !important;
  }
  /* the text that was overlapped — give it normal flow spacing */
  .u-section-3 .u-text-4,
  .u-section-3 .u-text-5 {
    position: relative !important;
    margin-top: 16px !important;
    margin-bottom: 16px !important;
  }
}

/* ── About form: remove the ~350px of empty space below the Submit button on
   mobile. The form had a tall reserved height from desktop; size to content. ── */
@media (max-width: 991px) {
  .u-section-3 .u-form,
  .u-section-3 .u-form-1 {
    height: auto !important;
    min-height: 0 !important;
  }
  /* the tall cell that reserves extra height on mobile — let it fit content */
  .u-section-3 .u-layout-cell,
  .u-section-3 .u-container-layout {
    height: auto !important;
    min-height: 0 !important;
  }
}

/* ── Roof buttons on About: ROOF COATING text wraps taller and overflowed the
   top of its fixed-height button. Let buttons grow to fit their text so the
   text stays centered and contained like the rest. ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link,
  .ge-sidebar-roof-link .u-list-item,
  .ge-sidebar-roof-link .u-container-style {
    height: auto !important;
    min-height: 90px !important;
  }
  .ge-sidebar-roof-link .u-container-layout {
    height: auto !important;
    min-height: 90px !important;
    align-items: center !important;
    justify-content: flex-start !important;
  }
  .ge-sidebar-roof-link .u-text {
    align-self: center !important;
  }
}

/* ── Roof Coating button text has a -59px top margin (Nicepage) pushing it up
   out of the button. Reset it so it centers like the other 3 buttons. ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link .u-text,
  .ge-sidebar-roof-link .u-text-5,
  .ge-sidebar-roof-link .u-text-6,
  .ge-sidebar-roof-link .u-text-7,
  .ge-sidebar-roof-link .u-text-8 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
}

/* ── 4 roof buttons (mobile): ensure text is truly vertically centered and never
   clipped at the top of the navy box (fixes Roof Coating sitting too high) ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link .u-container-layout {
    align-items: center !important;
    min-height: 92px !important;
  }
  .ge-sidebar-roof-link .u-text {
    align-self: center !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.15 !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }
  .ge-sidebar-roof-link .u-icon,
  .ge-sidebar-roof-link .u-file-icon {
    align-self: center !important;
  }
}

/* ── 4 roof buttons: nudge text to sit dead-center (counter the slight upward
   offset) and add top padding so text never clips at the top of the box ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link .u-container-layout {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
    align-items: center !important;
  }
  .ge-sidebar-roof-link .u-text {
    position: relative !important;
    top: 3px !important;
  }
}

/* ── The striped form.png is now applied as the FORM's background (fields sit on
   it). Hide the standalone u-image-4 copy so it doesn't create a big empty
   striped box above the form. ── */
@media (max-width: 991px) {
  .u-section-3 .u-image-4,
  .u-section-2 .u-image-4,
  section .u-image-4 {
    display: none !important;
  }
}

/* ── Tablet (up to 1199px): apply the same form fixes so 1024px iPads etc. don't
   show the empty striped box and get the form background + no big gap ── */
@media (max-width: 1199px) {
  /* hide the standalone striped image (form has form.png as its own bg) */
  .u-section-3 .u-image-4,
  .u-section-2 .u-image-4,
  section .u-image-4 {
    display: none !important;
  }
  /* form.png as the form's background */
  .u-form.u-form-1,
  .u-section-3 .u-form,
  .u-section-2 .u-form,
  section .u-form.u-form-1 {
    background-image: url('images/form.png') !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
    background-position: center top !important;
    padding: 26px 18px !important;
    border-radius: 10px !important;
  }
  /* form sizes to content, no stretch to the tall column, no big gap */
  .u-section-3 .u-form,
  .u-section-3 .u-form-1 {
    height: auto !important;
    min-height: 0 !important;
    align-self: flex-start !important;
  }
}

/* ── 4 roof buttons: force identical font size on all (Roof Coating was smaller)
   + yellow roll-over (hover) on the whole button ── */
.ge-sidebar-roof-link .u-text,
.ge-sidebar-roof-link .u-text-5,
.ge-sidebar-roof-link .u-text-6,
.ge-sidebar-roof-link .u-text-7,
.ge-sidebar-roof-link .u-text-8 {
  font-size: 22px !important;
  line-height: 1.2 !important;
}
/* roll over the navy button to yellow, text + icon to navy */
.ge-sidebar-roof-link .u-list-item,
.ge-sidebar-roof-link .u-container-style {
  transition: background-color .2s ease, color .2s ease !important;
}
.ge-sidebar-roof-link:hover .u-list-item,
.ge-sidebar-roof-link:hover .u-container-style {
  background-color: #f2b705 !important;
  /* keep the same rounded-right-only shape as the blue button */
  border-top-right-radius: 20px !important;
  border-bottom-right-radius: 20px !important;
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}
.ge-sidebar-roof-link:hover .u-text {
  color: #051f3d !important;
}

/* ── "Get In Touch!" area: keep the HEADING (h4) large, only shrink the
   description paragraph underneath it ── */
.u-section-3 h4.ge-contact-blue,
.u-section-3 h4.u-text-4.ge-contact-blue {
  font-size: 40px !important;
  line-height: 1.15 !important;
  font-weight: 800 !important;
}
.u-section-3 p.ge-contact-blue,
.u-section-3 p.u-text-5.ge-contact-blue {
  font-size: 15px !important;
  line-height: 1.4 !important;
  margin-top: 8px !important;
  margin-bottom: 16px !important;
}

/* ── "Get In Touch!" — put the heading + description + form all together INSIDE
   one striped box (form.png). Apply the background to the parent container that
   holds all three, and remove it from the form alone. All pages, up to 1199px. ── */
@media (max-width: 1199px) {
  /* the striped box now wraps heading + description + form */
  .u-section-3 .u-container-layout-3,
  .u-section-3 .u-layout-cell-2 > .u-container-layout,
  .u-section-2 .u-container-layout:has(> .u-form) {
    background-image: url('images/form.png') !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
    background-position: center top !important;
    padding: 24px 18px !important;
    border-radius: 10px !important;
  }
  /* remove the background from the form itself (parent now carries it) */
  .u-form.u-form-1,
  .u-section-3 .u-form,
  .u-section-2 .u-form,
  section .u-form.u-form-1 {
    background-image: none !important;
    padding: 0 !important;
    border-radius: 0 !important;
  }
  /* heading + description sit on the striped box, above the fields */
  .u-section-3 h4.ge-contact-blue,
  .u-section-3 p.ge-contact-blue {
    position: relative !important;
    z-index: 1 !important;
  }
}

/* ── 4 roof buttons: taller blue buttons. LAST word on height. ── */
@media (max-width: 991px) {
  .ge-sidebar-roof-link,
  .ge-sidebar-roof-link .u-list-item,
  .ge-sidebar-roof-link .u-container-style {
    min-height: 350px !important;
    height: auto !important;
  }
  .ge-sidebar-roof-link .u-container-layout {
    padding-top: 138px !important;
    padding-bottom: 138px !important;
    min-height: 350px !important;
    height: auto !important;
  }
}
/* ── Financing ($99/M) banner: match the blue buttons' width at ALL sizes.
   On tablet the buttons go full-width, so the banner must too (not capped). ── */
@media (max-width: 991px) {
  img[src*="Financing"],
  .u-image-5,
  .u-image.u-image-5 {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    display: block !important;
  }
}

/* ── Get In Touch box: heading + description + form ALL inside one striped box
   (like before). Applies on EVERY page that has the form, regardless of which
   section/container number holds it. Stripe capped so it ends before the
   roof buttons below. ── */
@media (max-width: 1199px) {
  .u-section-3 .u-container-layout-3,
  .u-section-3 .u-layout-cell-2 > .u-container-layout,
  .u-section-2 .u-container-layout:has(> .u-form),
  .u-section-3 .u-container-layout:has(> .u-form),
  section .u-container-layout:has(> .u-form.u-form-1) {
    background-image: url('images/form.png') !important;
    background-size: 100% 722px !important;   /* covers heading+desc+form+submit, ends before roof buttons */
    background-repeat: no-repeat !important;
    background-position: center top !important;
    padding: 44px 18px 26px 18px !important;   /* top pad pushes heading+desc BELOW the yellow bar */
    border-radius: 10px !important;
  }
  /* form itself carries no separate stripe (container has it) */
  .u-form.u-form-1,
  .u-section-3 .u-form.u-form-1,
  .u-section-2 .u-form.u-form-1 {
    background-image: none !important;
    padding: 0 !important;
    border-radius: 0 !important;
  }
  /* Make container-2 pages (index/contact) match About's container-3 sidebar
     exactly: same 722px stripe (was 632px). */
  .u-section-2 .u-container-layout-2:has(> .u-form),
  .u-section-3 .u-container-layout-2:has(> .u-form),
  section .u-container-layout-2:has(> .u-form.u-form-1) {
    background-size: 100% 722px !important;
  }
  /* container-3 pages (About/service like Shingle) also have buttons inside;
     cap the stripe so it ends before the first roof button on short pages */
  .u-section-3 .u-container-layout-3.u-container-layout:has(> .u-form),
  .u-section-3 .u-container-layout-3:has(> .u-form),
  section .u-section-3 .u-container-layout-3 {
    background-size: 100% 722px !important;
  }
  /* heading + description sit ON the striped box (every page) */
  h4.ge-contact-blue,
  .u-section-3 h4.ge-contact-blue,
  .u-section-2 h4.ge-contact-blue {
    position: relative !important;
    z-index: 1 !important;
    margin-bottom: 4px !important;
  }
  p.ge-contact-blue,
  .u-section-3 p.ge-contact-blue,
  .u-section-2 p.ge-contact-blue {
    position: relative !important;
    z-index: 1 !important;
    margin-bottom: 14px !important;
  }
}

/* ── "Safety and Service, Always our Priority" heading: keep it large (revert to
   the larger size) on mobile/tablet ── */
@media (max-width: 991px) {
  section[id="block-19"] h3,
  section[id="block-19"] .u-text-1,
  .ge-safety-banner .u-text-1 {
    font-size: 34px !important;
    line-height: 1.2 !important;
  }
}

/* ── "Safety and Service, Always our Priority": match the HOME page size on
   desktop too (home is 36px; some pages were only 20px) ── */
@media (min-width: 992px) {
  section[id="block-19"] h3,
  section[id="block-19"] .u-text-1,
  .ge-safety-banner .u-text-1 {
    font-size: 36px !important;
    line-height: 1.2 !important;
  }
}

/* ── 4 roof button icons: turn navy/blue on hover to match the text (icons are
   yellow PNGs, so recolor them to navy with a CSS filter on hover) ── */
.ge-sidebar-roof-link .u-icon img,
.ge-sidebar-roof-link .u-file-icon img {
  transition: filter .2s ease !important;
}
.ge-sidebar-roof-link:hover .u-icon img,
.ge-sidebar-roof-link:hover .u-file-icon img {
  /* recolor yellow icon -> navy #051f3d */
  filter: brightness(0) !important;   /* pure dark (navy-black), no green tint */
}

/* ── Instant Quote "60 SEC QUOTE" banner: make it as wide as the $99/M banner
   / blue buttons (full width), not capped at 340px. High specificity to beat
   the base 340px rule. ── */
@media (max-width: 991px) {
  img.ge-instant-quote-sidebar,
  img.u-image.ge-instant-quote-sidebar,
  img[src*="Instant-Quote"],
  img[src*="Quote-Sidebar"],
  .u-section-2 .ge-instant-quote-sidebar,
  .u-section-3 .ge-instant-quote-sidebar {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    display: block !important;
    height: auto !important;
  }
}

/* ── Instant Quote banner: the image is wrapped in an <a> link that's capped at
   340px. Make the link full-width so the banner matches the $99/M width. ── */
@media (max-width: 991px) {
  a:has(> .ge-instant-quote-sidebar),
  a:has(> img[src*="Instant-Quote"]) {
    width: 100% !important;
    max-width: 100% !important;
    display: block !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* ── Ensure the 4 roof buttons and the Instant Quote banner always sit IN FRONT
   (never behind a background/decorative element) and stay clickable ── */
.ge-sidebar-roof-link,
.ge-sidebar-roof-link .u-list-item,
.ge-sidebar-roof-link .u-container-style,
a:has(> .ge-instant-quote-sidebar),
.ge-instant-quote-sidebar {
  position: relative !important;
  z-index: 2 !important;
  pointer-events: auto !important;
}

/* ── Roof tool timeline step: show the choice cards 2-per-row (2x2 grid) on
   MOBILE and TABLET only (desktop keeps the horizontal row) ── */
@media (max-width: 991px) {
  .ge-timeline-row.ge-timeline-cards,
  #projectTimelineRow {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 12px !important;
  }
  .ge-timeline-row.ge-timeline-cards .ge-ticker-btn,
  #projectTimelineRow .ge-ticker-btn,
  .ge-timeline-row .ge-timeline-card {
    flex: 0 0 calc(50% - 6px) !important;
    max-width: calc(50% - 6px) !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }
}

/* ── Get In Touch: force the DESCRIPTION (the <p>, whatever u-text-N it uses) to
   be small on every page. On HOME/CITY it shares u-text-4 with the heading, so
   without this it wrongly renders large. Heading is an <h4>, description a <p>. ── */
@media (max-width: 1199px) {
  p.ge-contact-blue,
  p.u-text-4.ge-contact-blue,
  p.u-text-5.ge-contact-blue,
  .u-section-2 p.ge-contact-blue,
  .u-section-3 p.ge-contact-blue,
  .u-section-3 p.u-text-4.ge-contact-blue,
  .u-section-2 p.u-text-4.ge-contact-blue {
    font-size: 15px !important;
    line-height: 1.4 !important;
    font-weight: 400 !important;
  }
  /* keep the heading (h4) large */
  h4.ge-contact-blue,
  h4.u-text-4.ge-contact-blue {
    font-size: 40px !important;
    line-height: 1.15 !important;
    font-weight: 800 !important;
  }
}

/* ── FIX: the striped form box must never bleed onto the roof buttons. The roof
   buttons (u-list) sit BELOW the form; give the whole roof-buttons list a solid
   opaque backdrop and raise it above the stripe so the form.png bottom edge
   (white + rounded corner + border) can't show over the SHINGLE button. ── */
@media (max-width: 1199px) {
  .u-section-3 .u-list,
  .u-section-2 .u-list,
  section .u-list:has(.ge-sidebar-roof-link) {
    position: relative !important;
    z-index: 3 !important;
    background: transparent !important;
    margin-top: 14px !important;
  }
  /* each roof button navy box is fully opaque and above the stripe */
  .ge-sidebar-roof-link,
  .ge-sidebar-roof-link .u-list-item,
  .ge-sidebar-roof-link .u-container-style {
    position: relative !important;
    z-index: 3 !important;
  }
  .ge-sidebar-roof-link .u-list-item,
  .ge-sidebar-roof-link .u-container-style {
    background-color: #0d1b30 !important;
  }
}

/* ── Roof buttons list sits above the stripe (no backdrop color — the navy
   buttons themselves cover the area; a white backdrop was hiding text) ── */
@media (max-width: 1199px) {
  .u-section-3 .u-list:has(.ge-sidebar-roof-link),
  .u-section-2 .u-list:has(.ge-sidebar-roof-link),
  section .u-list:has(.ge-sidebar-roof-link) {
    background-color: transparent !important;
    position: relative !important;
    z-index: 3 !important;
  }
}

/* ── SERVICES dropdown: force it to open LEFT-aligned (left edge under the
   Services item), never to the right or centered ── */
@media (min-width: 992px) {
  #header .u-nav-container .u-nav-item > .u-nav-popup,
  #header .u-menu-1 .u-nav-item > .u-nav-popup,
  #header .u-nav-popup-1 {
    left: 0 !important;
    right: auto !important;
    transform: none !important;
    margin-left: 0 !important;
  }
  /* the inner popup content also left-anchored */
  #header .u-nav-popup .u-nav-popup-content {
    left: 0 !important;
    right: auto !important;
  }
}

/* ── All sidebar BANNER images (Financing/$99, Instant Quote, Insurance Claim,
   Family Circle, Banner) sized LARGE to match the form/text box width, aligned
   to the same left/right edges — no small left/right-floated banners ── */
@media (max-width: 991px) {
  .u-image-5,
  img[src*="Financing"],
  img[src*="Instant-Quote"],
  .ge-instant-quote-sidebar,
  img[src*="InsuranceClaim"],
  .ge-clipboard-sidebar,
  img[src*="Family-Circle"],
  .ge-family-circle-sidebar,
  img[src*="Banner.png"] {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    display: block !important;
    float: none !important;
  }
  /* the link wrappers around these banners also go full width so the image fills */
  a:has(> .ge-instant-quote-sidebar),
  a:has(> img[src*="Instant-Quote"]),
  a:has(> img[src*="Financing"]),
  a:has(> img[src*="InsuranceClaim"]),
  a:has(> img[src*="Family-Circle"]),
  a:has(> img[src*="Banner.png"]) {
    width: 100% !important;
    max-width: 100% !important;
    display: block !important;
    float: none !important;
  }
}



/* ── The navy "ROOF REPAIR" infographic banner (Roofing.png / ge-free-roof-drop)
   that sits above the form: make it CENTERED and match the text-box width below
   it, on mobile AND desktop. This banner image differs per page but always uses
   the same class. Never crop or cut it off — full image always visible. ── */
img[src*="Roofing.png"]:not(.u-image-circle),
.ge-free-roof-drop {
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  object-fit: contain !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
  float: none !important;
}
/* the banner's parent containers must not clip the image on any side */
.ge-free-roof-drop,
*:has(> .ge-free-roof-drop),
*:has(> img[src*="Roofing.png"]:not(.u-image-circle)) {
  overflow: visible !important;
  max-width: 100% !important;
}

/* ── Circle images (team/company photos in About/section-7) must FILL the
   circular frame — object-fit: cover, never contain (which leaves a gap). This
   overrides any banner rule that matched them by src substring. ── */
.u-image-circle,
img.u-image-circle[src*="Roofing"],
img.u-image-circle[src*="LocalRoofing"] {
  object-fit: cover !important;
}

/* ── Section-7 "Safety and Service" circle (RoofingComany) is covered by the
   yellow box in the NEXT section (section-8). Reserve enough bottom space in
   section-7 so the full circle clears before section-8's yellow box starts. ── */
@media (max-width: 991px) {
  .u-section-7 .u-image-circle,
  .u-section-7 img[src*="RoofingComany"] {
    position: relative !important;
    z-index: 2 !important;
  }
  /* the circle's cell reserves its full height + clearance so nothing overlaps */
  .u-section-7 {
    padding-bottom: 260px !important;
  }
  /* section-8 yellow box starts cleanly below, small gap */
  .u-section-8 {
    margin-top: 20px !important;
  }
}

/* ── Roof Tune-Up (BOOKNOW) banner: same HALF size on EVERY page (index, About,
   ADU, Kitchen, Bathroom, Mold, Remodeling, Contact, Privacy...). Keeps aspect
   ratio (not stretched/cropped). Width 50% halves both dimensions. Centered. ── */
img[src*="BOOKNOW"],
img.u-expanded-width[src*="BOOKNOW"],
.u-section-5 .u-image-1 {
  width: 100% !important;
  max-width: 570px !important;
  height: auto !important;
  object-fit: contain !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
  float: none !important;
}
.u-section-5 .u-container-layout,
a:has(> img[src*="BOOKNOW"]) {
  width: 100% !important;
  max-width: 100% !important;
  overflow: visible !important;
  text-align: center !important;
}

/* ── Circle images (RoofingComany, LocalRoofing, any u-image-circle): the photo
   must FILL the entire circle (clipped round, no white corner gaps), on every
   page and breakpoint. ── */
img.u-image-circle,
.u-image-circle,
img[src*="RoofingComany"],
img[src*="LocalRoofing"] {
  border-radius: 50% !important;
  object-fit: cover !important;
  object-position: center !important;
  overflow: hidden !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   CLEAN REBUILT ROOF BUTTONS (ge-rbtn) — replaces the old repeater buttons.
   Navy card, yellow icon, white text, rounded-right corners, yellow roll-over.
   ══════════════════════════════════════════════════════════════════════════ */
.ge-roofbtns-v2 {
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 0 !important;
}
.ge-rbtn {
  display: flex !important;
  align-items: center !important;
  gap: 22px !important;
  min-height: 350px !important;
  padding: 0 34px !important;
  background: #0d1b30 !important;
  border-radius: 0 26px 26px 0 !important;   /* rounded right edges */
  text-decoration: none !important;
  transition: background-color .18s ease !important;
  cursor: pointer !important;
}
.ge-rbtn .ge-rbtn-icon img {
  width: 74px !important;
  height: 74px !important;
  object-fit: contain !important;
  display: block !important;
}
.ge-rbtn .ge-rbtn-text,
.ge-roofbtns-v2 .ge-rbtn .ge-rbtn-text,
a.ge-rbtn span.ge-rbtn-text {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  -webkit-text-stroke: 0 !important;
  font-weight: 700 !important;
  font-size: 26px !important;
  line-height: 1.15 !important;
  letter-spacing: .3px !important;
}
/* yellow roll-over: card turns yellow, text navy, icon darkened */
.ge-rbtn:hover {
  background: #f2b705 !important;
}
.ge-rbtn:hover .ge-rbtn-text {
  color: #0d1b30 !important;
  -webkit-text-fill-color: #0d1b30 !important;
}
.ge-rbtn:hover .ge-rbtn-icon img {
  filter: brightness(0) !important;   /* dark icon on yellow, no green tint */
}
@media (min-width: 992px) {
  .ge-rbtn { min-height: 150px !important; }
}
/* mobile only: half the button height (was 350px → 175px) */
@media (max-width: 991px) {
  .ge-rbtn { min-height: 175px !important; }
}

/* ── Space out the roof buttons (ends with ROOF COATING) from the $99/M
   Financing banner below them so they don't touch/overlap ── */
.ge-roofbtns-v2 {
  margin-bottom: 40px !important;
}
.u-image-5,
.u-image.u-image-5 {
  margin-top: 30px !important;
}

/* ── Roof tool timeline card icons (Immediately, 1-3 Months, 3-6 Months) were
   turning white (invisible on white cards) because a global svg{fill:#fff} rule
   overrode their yellow attribute fill. Force the yellow back. ── */
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg,
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg path,
span.ge-timeline-icon svg,
span.ge-timeline-icon svg path {
  fill: #f2b705 !important;
}
/* no navy box behind the icons — show just the yellow icon on the white card */
.ge-timeline-icon,
.ge-timeline-icon svg,
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg,
span.ge-timeline-icon svg {
  background: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
}
/* Just Researching uses a stroked magnifier — keep its stroke yellow, no fill */
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg path,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg circle,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg line {
  fill: none !important;
  stroke: #f2b705 !important;
}

/* ── Roof tool: give the "Please choose a timeline" hint and the Continue button
   breathing room so they don't touch the card's yellow border ── */
.ge-timeline-step-hint {
  margin: 16px 20px 8px !important;
  padding: 0 4px !important;
}
/* the nav row holding Back + Continue: keep both off the card's yellow border */
.ge-step-nav {
  padding: 8px 24px !important;
  margin-bottom: 24px !important;
  gap: 14px !important;
}
.ge-step-continue,
#continueToAddress,
.ge-step-back {
  margin: 0 !important;
}
/* ensure the step body/card reserves bottom room so the nav clears the border */
.ge-timeline-step-body,
.ge-step-body,
[class*="ge-step"][class*="body"] {
  padding-bottom: 28px !important;
}
/* make sure the timeline step body itself has inner padding from the border */
.ge-timeline-step-body {
  padding-left: 20px !important;
  padding-right: 20px !important;
  padding-bottom: 20px !important;
}

/* ── Safety yellow box (ge-safety-banner / section-8): half the height on MOBILE
   only. Reduce the tall min-heights and padding so the box is more compact. ── */
@media (max-width: 991px) {
  #block-19.ge-safety-banner,
  #block-19 .u-container-style,
  #block-19 .u-layout-cell,
  #block-19 [class*="u-size-"],
  #block-19 .u-container-layout,
  .ge-safety-banner .u-container-style,
  .ge-safety-banner .u-layout-cell,
  .u-section-8 .u-container-style,
  .u-section-8 .u-layout-cell,
  .u-section-8 .u-size-34,
  .u-section-8 [class*="u-size-"] {
    min-height: 0 !important;
    height: auto !important;
  }
  .ge-safety-banner .u-container-layout,
  .u-section-8 .u-container-layout {
    padding-top: 14px !important;
    padding-bottom: 14px !important;
    min-height: 0 !important;
    height: auto !important;
  }
  .ge-safety-banner,
  .u-section-8 {
    padding-top: 14px !important;
    padding-bottom: 0 !important;
    min-height: 0 !important;
  }
  /* shrink the heading text + tighten its spacing so the box is ~half height */
  .ge-safety-banner .u-text-1,
  .u-section-8 .u-text-1,
  .ge-safety-banner h2,
  .ge-safety-banner h3 {
    font-size: 24px !important;
    line-height: 1.15 !important;
    margin: 0 0 12px !important;
  }
  /* remove extra vertical whitespace inside the yellow cell */
  .ge-safety-banner .u-container-layout,
  .u-section-8 .u-container-layout {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }
}

/* ── Footer: align all content to the RIGHT (was left) ── */
#footer,
footer.u-footer,
#footer .u-text,
#footer p,
#footer h1, #footer h2, #footer h3, #footer h4, #footer h5, #footer h6,
#footer a,
#footer .u-container-layout,
#footer .u-layout-cell,
#footer li,
#footer ul {
  text-align: right !important;
}
/* keep list bullets/menus from shoving content back left */
#footer ul,
#footer li {
  list-style-position: inside !important;
  padding-left: 0 !important;
}

/* ── Desktop SERVICES / REMODELING SERVICES dropdown: force items LEFT-aligned
   (they were rendering centered inside the popup panel) ── */
.u-nav-popup,
.u-nav-popup ul,
.u-nav-popup li,
.u-nav-popup .u-nav-item,
.u-nav-popup .u-nav-link,
.u-nav-popup a {
  text-align: left !important;
  justify-content: flex-start !important;
}
.u-nav-popup a,
.u-nav-popup .u-nav-link {
  display: block !important;
  width: 100% !important;
}
.u-nav-popup ul {
  margin-left: 0 !important;
  padding-left: 0 !important;
  list-style-position: outside !important;
}
/* kill the 21px left indent + 9px top gap on the SERVICES popup so it matches
   REMODELING SERVICES exactly (no space between button and first link) */
.u-nav-popup,
.u-nav-popup-1,
div.u-nav-popup {
  padding: 0 !important;
}
.u-nav-popup .u-h-spacing-21,
.u-nav-popup ul.u-h-spacing-21,
.u-nav-popup li,
.u-nav-popup .u-nav-item {
  margin-left: 0 !important;
  padding-left: 0 !important;
}

/* ── Header underline consistency: on Contact/About/Testimonials/service/city
   pages the page-title section adds a thick 14px yellow border-top directly
   under the header, making the line look much thicker than on index (which
   shows only the header's own 3px line). Remove that extra top border so every
   page has the same thin line. ── */
.u-header + section.u-border-14,
header + section.u-border-14,
.u-header + section[class*="u-border-"],
header + section[class*="u-border-"] {
  border-top: 0 !important;
}

/* ── All navigation links in CAPS (top nav + dropdown items + mobile menu) ── */
.u-nav .u-nav-link,
.u-nav a,
.u-nav-item a,
.u-nav-popup a,
.u-nav-popup .u-nav-link,
nav .u-nav-link,
.u-header .u-nav-link,
.u-menu .u-nav-link {
  text-transform: uppercase !important;
}

/* ── FINANCING BANNER: $99/M CUT OFF AT THE BOTTOM (all pages) ────────
   Root cause: Nicepage sets a FIXED height on the image per page, e.g.
   `.u-section-3 .u-image-5 { height:320px; width:404px }`. Financing.png
   is 568x496 (ratio 0.8732), so at 404px wide the correct height is
   ~353px — the 320px box chopped ~33px off the bottom, cutting the "$99".
   The section number differs per page (u-section-2 / -3 / -9 ...), so we
   target the image itself and lock its true aspect ratio. Loaded last =
   beats the Nicepage rules. Width-based scaling only, never cropped.   */
img[src*="Financing"],
img[src*="Financing"].u-image,
img.u-image-5[src*="Financing"],
img.u-image.u-image-5[src*="Financing"],
img.u-expanded-width-xs[src*="Financing"] {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: 568 / 496 !important;
  object-fit: contain !important;
  max-width: 100% !important;
  display: block !important;
}

/* ── ROOF ESTIMATE TOOL — FINAL FORM ("A Few Quick Details" / "Finish Your
   Estimate"): white-on-white text. The <label>s and fields in .estimate-fields
   sit on a white .estimate-submit background but never get an explicit color,
   so they inherit white (and -webkit-text-fill-color silently wins over
   `color`). Pin both properties to navy on a light field background.        */
.estimate-submit .estimate-fields label,
.estimate-submit .estimate-fields > label,
#stepDetails label,
#stepDetails .estimate-fields label {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-weight: 800 !important;
}

.estimate-submit .estimate-fields input,
.estimate-submit .estimate-fields textarea,
.estimate-submit .estimate-fields select,
#stepDetails input[type="text"],
#stepDetails input[type="number"],
#stepDetails input[type="tel"],
#stepDetails textarea,
#stepDetails select,
#roofSqft,
#roofNotes {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  background: #f4f4f4 !important;
  background-color: #f4f4f4 !important;
  opacity: 1 !important;
}

/* placeholders must be visible too (grey, not white) */
#stepDetails input::placeholder,
#stepDetails textarea::placeholder,
#roofSqft::placeholder,
#roofNotes::placeholder {
  color: #5a6472 !important;
  -webkit-text-fill-color: #5a6472 !important;
  opacity: 1 !important;
}

/* the Yes/No radio labels in the same step */
#stepDetails .choice-row label {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  background: #ffffff !important;
}

/* ── "Get A Instant Quote / Within 60 Sec" button: two centered lines ──
   The <br/> splits it; Nicepage's .u-btn is a flex/inline-block that can
   letter-center the first line only, so force block centering + a sane
   line-height and let the height grow to fit both lines.                */
a.u-btn-1[href*="Roof-Estimate-Tool"],
.u-btn.u-btn-1[href*="Roof-Estimate-Tool"] {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.25 !important;
  height: auto !important;
  min-height: 0 !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  white-space: normal !important;
}

/* ── Roof Tune-Up (BOOKNOW) banner: same HALF size on EVERY page (index, About,
   ADU, Kitchen, Bathroom, Mold, Remodeling, Contact, Privacy...). Keeps aspect
   ratio (not stretched/cropped). Width 50% halves both dimensions. Centered. ── */
img[src*="BOOKNOW"],
img.u-expanded-width[src*="BOOKNOW"],
.u-section-5 .u-image-1 {
  width: 100% !important;
  max-width: 570px !important;
  height: auto !important;
  object-fit: contain !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
  float: none !important;
}
.u-section-5 .u-container-layout,
a:has(> img[src*="BOOKNOW"]) {
  width: 100% !important;
  max-width: 100% !important;
  overflow: visible !important;
  text-align: center !important;
}

/* ── Circle images (RoofingComany, LocalRoofing, any u-image-circle): the photo
   must FILL the entire circle (clipped round, no white corner gaps), on every
   page and breakpoint. ── */
img.u-image-circle,
.u-image-circle,
img[src*="RoofingComany"],
img[src*="LocalRoofing"] {
  border-radius: 50% !important;
  object-fit: cover !important;
  object-position: center !important;
  overflow: hidden !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   CLEAN REBUILT ROOF BUTTONS (ge-rbtn) — replaces the old repeater buttons.
   Navy card, yellow icon, white text, rounded-right corners, yellow roll-over.
   ══════════════════════════════════════════════════════════════════════════ */
.ge-roofbtns-v2 {
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 0 !important;
}
.ge-rbtn {
  display: flex !important;
  align-items: center !important;
  gap: 22px !important;
  min-height: 350px !important;
  padding: 0 34px !important;
  background: #0d1b30 !important;
  border-radius: 0 26px 26px 0 !important;   /* rounded right edges */
  text-decoration: none !important;
  transition: background-color .18s ease !important;
  cursor: pointer !important;
}
.ge-rbtn .ge-rbtn-icon img {
  width: 74px !important;
  height: 74px !important;
  object-fit: contain !important;
  display: block !important;
}
.ge-rbtn .ge-rbtn-text,
.ge-roofbtns-v2 .ge-rbtn .ge-rbtn-text,
a.ge-rbtn span.ge-rbtn-text {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  -webkit-text-stroke: 0 !important;
  font-weight: 700 !important;
  font-size: 26px !important;
  line-height: 1.15 !important;
  letter-spacing: .3px !important;
}
/* yellow roll-over: card turns yellow, text navy, icon darkened */
.ge-rbtn:hover {
  background: #f2b705 !important;
}
.ge-rbtn:hover .ge-rbtn-text {
  color: #0d1b30 !important;
  -webkit-text-fill-color: #0d1b30 !important;
}
.ge-rbtn:hover .ge-rbtn-icon img {
  filter: brightness(0) !important;   /* dark icon on yellow, no green tint */
}
@media (min-width: 992px) {
  .ge-rbtn { min-height: 150px !important; }
}
/* mobile only: half the button height (was 350px → 175px) */
@media (max-width: 991px) {
  .ge-rbtn { min-height: 175px !important; }
}

/* ── Space out the roof buttons (ends with ROOF COATING) from the $99/M
   Financing banner below them so they don't touch/overlap ── */
.ge-roofbtns-v2 {
  margin-bottom: 40px !important;
}
.u-image-5,
.u-image.u-image-5 {
  margin-top: 30px !important;
}

/* ── Roof tool timeline card icons (Immediately, 1-3 Months, 3-6 Months) were
   turning white (invisible on white cards) because a global svg{fill:#fff} rule
   overrode their yellow attribute fill. Force the yellow back. ── */
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg,
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg path,
span.ge-timeline-icon svg,
span.ge-timeline-icon svg path {
  fill: #f2b705 !important;
}
/* no navy box behind the icons — show just the yellow icon on the white card */
.ge-timeline-icon,
.ge-timeline-icon svg,
.ge-timeline-cards .ge-timeline-card .ge-timeline-icon svg,
span.ge-timeline-icon svg {
  background: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
}
/* Just Researching uses a stroked magnifier — keep its stroke yellow, no fill */
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg path,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg circle,
.ge-timeline-card[data-val="Just Researching"] .ge-timeline-icon svg line {
  fill: none !important;
  stroke: #f2b705 !important;
}

/* ── Roof tool: give the "Please choose a timeline" hint and the Continue button
   breathing room so they don't touch the card's yellow border ── */
.ge-timeline-step-hint {
  margin: 16px 20px 8px !important;
  padding: 0 4px !important;
}
/* the nav row holding Back + Continue: keep both off the card's yellow border */
.ge-step-nav {
  padding: 8px 24px !important;
  margin-bottom: 24px !important;
  gap: 14px !important;
}
.ge-step-continue,
#continueToAddress,
.ge-step-back {
  margin: 0 !important;
}
/* ensure the step body/card reserves bottom room so the nav clears the border */
.ge-timeline-step-body,
.ge-step-body,
[class*="ge-step"][class*="body"] {
  padding-bottom: 28px !important;
}
/* make sure the timeline step body itself has inner padding from the border */
.ge-timeline-step-body {
  padding-left: 20px !important;
  padding-right: 20px !important;
  padding-bottom: 20px !important;
}

/* ── Safety yellow box (ge-safety-banner / section-8): half the height on MOBILE
   only. Reduce the tall min-heights and padding so the box is more compact. ── */
@media (max-width: 991px) {
  #block-19.ge-safety-banner,
  #block-19 .u-container-style,
  #block-19 .u-layout-cell,
  #block-19 [class*="u-size-"],
  #block-19 .u-container-layout,
  .ge-safety-banner .u-container-style,
  .ge-safety-banner .u-layout-cell,
  .u-section-8 .u-container-style,
  .u-section-8 .u-layout-cell,
  .u-section-8 .u-size-34,
  .u-section-8 [class*="u-size-"] {
    min-height: 0 !important;
    height: auto !important;
  }
  .ge-safety-banner .u-container-layout,
  .u-section-8 .u-container-layout {
    padding-top: 14px !important;
    padding-bottom: 14px !important;
    min-height: 0 !important;
    height: auto !important;
  }
  .ge-safety-banner,
  .u-section-8 {
    padding-top: 14px !important;
    padding-bottom: 0 !important;
    min-height: 0 !important;
  }
  /* shrink the heading text + tighten its spacing so the box is ~half height */
  .ge-safety-banner .u-text-1,
  .u-section-8 .u-text-1,
  .ge-safety-banner h2,
  .ge-safety-banner h3 {
    font-size: 24px !important;
    line-height: 1.15 !important;
    margin: 0 0 12px !important;
  }
  /* remove extra vertical whitespace inside the yellow cell */
  .ge-safety-banner .u-container-layout,
  .u-section-8 .u-container-layout {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }
}

/* ── Footer: align all content to the RIGHT (was left) ── */
#footer,
footer.u-footer,
#footer .u-text,
#footer p,
#footer h1, #footer h2, #footer h3, #footer h4, #footer h5, #footer h6,
#footer a,
#footer .u-container-layout,
#footer .u-layout-cell,
#footer li,
#footer ul {
  text-align: right !important;
}
/* keep list bullets/menus from shoving content back left */
#footer ul,
#footer li {
  list-style-position: inside !important;
  padding-left: 0 !important;
}

/* ── Desktop SERVICES / REMODELING SERVICES dropdown: force items LEFT-aligned
   (they were rendering centered inside the popup panel) ── */
.u-nav-popup,
.u-nav-popup ul,
.u-nav-popup li,
.u-nav-popup .u-nav-item,
.u-nav-popup .u-nav-link,
.u-nav-popup a {
  text-align: left !important;
  justify-content: flex-start !important;
}
.u-nav-popup a,
.u-nav-popup .u-nav-link {
  display: block !important;
  width: 100% !important;
}
.u-nav-popup ul {
  margin-left: 0 !important;
  padding-left: 0 !important;
  list-style-position: outside !important;
}
/* kill the 21px left indent + 9px top gap on the SERVICES popup so it matches
   REMODELING SERVICES exactly (no space between button and first link) */
.u-nav-popup,
.u-nav-popup-1,
div.u-nav-popup {
  padding: 0 !important;
}
.u-nav-popup .u-h-spacing-21,
.u-nav-popup ul.u-h-spacing-21,
.u-nav-popup li,
.u-nav-popup .u-nav-item {
  margin-left: 0 !important;
  padding-left: 0 !important;
}

/* ── Header underline consistency: on Contact/About/Testimonials/service/city
   pages the page-title section adds a thick 14px yellow border-top directly
   under the header, making the line look much thicker than on index (which
   shows only the header's own 3px line). Remove that extra top border so every
   page has the same thin line. ── */
.u-header + section.u-border-14,
header + section.u-border-14,
.u-header + section[class*="u-border-"],
header + section[class*="u-border-"] {
  border-top: 0 !important;
}

/* ── All navigation links in CAPS (top nav + dropdown items + mobile menu) ── */
.u-nav .u-nav-link,
.u-nav a,
.u-nav-item a,
.u-nav-popup a,
.u-nav-popup .u-nav-link,
nav .u-nav-link,
.u-header .u-nav-link,
.u-menu .u-nav-link {
  text-transform: uppercase !important;
}

/* ── FINANCING BANNER: $99/M CUT OFF AT THE BOTTOM (all pages) ────────
   Root cause: Nicepage sets a FIXED height on the image per page, e.g.
   `.u-section-3 .u-image-5 { height:320px; width:404px }`. Financing.png
   is 568x496 (ratio 0.8732), so at 404px wide the correct height is
   ~353px — the 320px box chopped ~33px off the bottom, cutting the "$99".
   The section number differs per page (u-section-2 / -3 / -9 ...), so we
   target the image itself and lock its true aspect ratio. Loaded last =
   beats the Nicepage rules. Width-based scaling only, never cropped.   */
img[src*="Financing"],
img[src*="Financing"].u-image,
img.u-image-5[src*="Financing"],
img.u-image.u-image-5[src*="Financing"],
img.u-expanded-width-xs[src*="Financing"] {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: 568 / 496 !important;
  object-fit: contain !important;
  max-width: 100% !important;
  display: block !important;
}

/* ── ROOF ESTIMATE TOOL — FINAL FORM ("A Few Quick Details" / "Finish Your
   Estimate"): white-on-white text. The <label>s and fields in .estimate-fields
   sit on a white .estimate-submit background but never get an explicit color,
   so they inherit white (and -webkit-text-fill-color silently wins over
   `color`). Pin both properties to navy on a light field background.        */
.estimate-submit .estimate-fields label,
.estimate-submit .estimate-fields > label,
#stepDetails label,
#stepDetails .estimate-fields label {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-weight: 800 !important;
}

.estimate-submit .estimate-fields input,
.estimate-submit .estimate-fields textarea,
.estimate-submit .estimate-fields select,
#stepDetails input[type="text"],
#stepDetails input[type="number"],
#stepDetails input[type="tel"],
#stepDetails textarea,
#stepDetails select,
#roofSqft,
#roofNotes {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  background: #f4f4f4 !important;
  background-color: #f4f4f4 !important;
  opacity: 1 !important;
}

/* placeholders must be visible too (grey, not white) */
#stepDetails input::placeholder,
#stepDetails textarea::placeholder,
#roofSqft::placeholder,
#roofNotes::placeholder {
  color: #5a6472 !important;
  -webkit-text-fill-color: #5a6472 !important;
  opacity: 1 !important;
}

/* the Yes/No radio labels in the same step */
#stepDetails .choice-row label {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  background: #ffffff !important;
}

/* ── "Get A Instant Quote / Within 60 Sec" button: two centered lines ──
   The <br/> splits it; Nicepage's .u-btn is a flex/inline-block that can
   letter-center the first line only, so force block centering + a sane
   line-height and let the height grow to fit both lines.                */
a.u-btn-1[href*="Roof-Estimate-Tool"],
.u-btn.u-btn-1[href*="Roof-Estimate-Tool"] {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.25 !important;
  height: auto !important;
  min-height: 0 !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  white-space: normal !important;
}

/* ── Roof Tune-Up (BOOKNOW) banner: 30% smaller, ratio locked ──
   Was capped at 570px. 570 x 0.70 = 399px. The image is 1400x588
   (ratio 2.381); aspect-ratio + height:auto keep it exact, so a 30%
   narrower cap gives 30% less height. Centered, never cropped.
   NOTE: the old rule also targeted `.u-section-5 .u-image-1`, which is
   the "Looking for a New Roof" banner's selector — that one is handled
   separately above and must NOT be capped at this width.            */
img[src*="BOOKNOW"],
img.u-expanded-width[src*="BOOKNOW"],
a:has(> img[src*="BOOKNOW"]) > img {
  width: 100% !important;
  max-width: 399px !important;
  height: auto !important;
  aspect-ratio: 1400 / 588 !important;
  object-fit: contain !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
  float: none !important;
}
@media (max-width: 991px) {
  img[src*="BOOKNOW"],
  img.u-expanded-width[src*="BOOKNOW"] {
    max-width: 399px !important;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 1400 / 588 !important;
    object-fit: contain !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* ── CIRCLE IMAGES: RESTORE PERFECT CIRCLE (must be LAST) ──────────────
   Regression guard: the "Looking for a New Roof" banner rules target
   .u-section-5/-6/-7 .u-image-1, and on some pages that same selector is
   the yellow-truck / family circle <img>. The banner's aspect-ratio
   (1400/863) + width:70% stretched those circles into ovals. The banner
   selectors are now guarded with :not(.u-image-circle):not(img):not(.u-sheet), and this
   block re-asserts a true 1:1 circle afterwards so nothing can flatten it.

   Sizing is RESPONSIVE (min/clamp), never a hard px width, so the circle
   can't force its container wider than a phone screen and push the page
   sideways. aspect-ratio 1/1 keeps it round at any size.               */
img.u-image-circle,
.u-image-circle,
img[src*="RoofingComany"],
img[src*="LocalRoofing"] {
  aspect-ratio: 1 / 1 !important;
  border-radius: 50% !important;
  object-fit: cover !important;
  object-position: center !important;
  width: clamp(200px, 80vw, 340px) !important;
  height: auto !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
  display: block !important;
  box-sizing: border-box !important;
}

/* ── Yellow "Get A Instant Quote / Within 60 Sec" button: 50% WIDTH, CENTERED ──
   Making it `display:flex` (to get two centered lines) also made the anchor a
   block-level box that stretched to the full container width — the too-wide
   yellow bar over the hero. Cap it at 50% and center it with auto margins.
   Same size and position on every slide/page. Text stays two centered lines. */
a.u-btn-1[href*="Roof-Estimate-Tool"],
.u-btn.u-btn-1[href*="Roof-Estimate-Tool"] {
  width: 50% !important;
  max-width: 50% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.25 !important;
  height: auto !important;
  min-height: 0 !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  white-space: normal !important;
  box-sizing: border-box !important;
}
*:has(> a.u-btn-1[href*="Roof-Estimate-Tool"]) {
  text-align: center !important;
}
@media (max-width: 767px) {
  a.u-btn-1[href*="Roof-Estimate-Tool"],
  .u-btn.u-btn-1[href*="Roof-Estimate-Tool"] {
    width: 80% !important;
    max-width: 80% !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* ── MOBILE OVERFLOW GUARD: nothing may exceed the viewport ────────────
   The sideways-scrolling / shifted-left index on phones comes from fixed
   px widths inside narrow cells. Belt-and-braces: no image or layout cell
   may be wider than its container on small screens.                    */
@media (max-width: 767px) {
  img, .u-image, .u-layout-cell, .u-container-layout, .u-sheet {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* ── 4 ROOF BUTTONS: ALWAYS SIT CLEARLY BELOW THE STRIPE GRAPHIC ───────
   The stripe/chevron graphic (RoofingBGContent.png) sits above the 4
   ge-rbtn buttons. Give the graphic breathing room underneath and keep
   the buttons evenly spaced from each other, on mobile AND desktop, so
   they never crowd or overlap it. Buttons stay full-width in a single
   column with an even gap.                                             */
img[src*="RoofingBGContent"] {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  margin: 0 auto 36px !important;   /* clear space under the stripe */
  object-fit: contain !important;
}
.ge-roofbtns-v2 {
  display: flex !important;
  flex-direction: column !important;
  gap: 24px !important;             /* even spacing between the 4 buttons */
  width: 100% !important;
  max-width: 100% !important;
  margin: 36px auto 48px !important; /* clear of the graphic above + below */
  padding: 0 !important;
  box-sizing: border-box !important;
}
.ge-rbtn {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  margin: 0 !important;             /* gap handles the spacing, not margins */
}
@media (max-width: 991px) {
  img[src*="RoofingBGContent"] {
    margin-bottom: 28px !important;
  }
  .ge-roofbtns-v2 {
    gap: 20px !important;
    margin: 28px auto 40px !important;
  }
}

/* ── ROOF ESTIMATE TOOL — "💳 Estimated Monthly Payment Options" ────────
   This whole payment block is injected by Roof-Estimate-Tool.js and has
   NO css anywhere, so every ge-pay-* element inherits white text on the
   white result card — invisible. Give the title (next to the 💳 icon)
   navy, and make the rest of the block readable while we're here.
   -webkit-text-fill-color must be pinned too or it silently wins.     */
.ge-pay-title,
.ge-payment-section .ge-pay-title {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-weight: 800 !important;
  font-size: 1.15rem !important;
  margin: 18px 0 12px !important;
  text-align: center !important;
}

/* the payment cards + note in the same block */
.ge-payment-section,
.ge-pay-grid,
.ge-pay-card,
.ge-pay-term,
.ge-pay-per,
.ge-pay-note {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
}

/* the badges (Fastest Payoff / Best Balance / Lowest Payment) — were
   rendering white-on-white. Give them a navy pill with WHITE text so they
   read clearly on the white card. */
.ge-pay-badge,
.ge-pay-card .ge-pay-badge,
.ge-payment-section .ge-pay-badge {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  background: #051f3d !important;
  display: inline-block !important;
  padding: 4px 12px !important;
  border-radius: 999px !important;
  font-size: .8rem !important;
  font-weight: 700 !important;
  margin-top: 8px !important;
}
/* the featured card's badge (Best Balance ★) in gold to stand out */
.pay-card-featured .ge-pay-badge {
  background: #f0a500 !important;
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
}


/* the monthly PRICE itself in RED, like the main estimate price */
.ge-pay-amt,
.ge-pay-card .ge-pay-amt,
.ge-payment-section .ge-pay-amt {
  color: #d60000 !important;
  -webkit-text-fill-color: #d60000 !important;
  font-weight: 900 !important;
  font-size: 1.9rem !important;
  font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif !important;
  letter-spacing: .3px !important;
}
/* the small "/mo est." suffix stays navy so the number pops */
.ge-pay-amt .ge-pay-per,
.ge-pay-per {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-size: .85rem !important;
  font-weight: 700 !important;
  font-family: inherit !important;
  letter-spacing: 0 !important;
}
.ge-pay-note {
  color: #555 !important;
  -webkit-text-fill-color: #555 !important;
  font-size: .85rem !important;
  text-align: center !important;
  margin-top: 12px !important;
}

/* ── FAQ ACCORDION: BORDER ONLY WHEN EXPANDED ──────────────────────────
   Default state: no border at all on the "Frequently Asked Questions"
   rows — clean, borderless list. When a question is OPENED (Nicepage adds
   `.active` to the link and `.u-accordion-active` to the pane), that item
   gets a border so the expanded answer is visually framed.
   Scoped strictly to .ge-faq-section so nothing else on the page is hit. */

/* 1) default: strip Nicepage's u-border-* styling */
.ge-faq-section .u-accordion,
.ge-faq-section .u-accordion-item,
.ge-faq-section .u-accordion-link,
.ge-faq-section .u-accordion-pane,
.ge-faq-section .u-accordion-link:hover,
.ge-faq-section .u-accordion-link:focus {
  border: 0 !important;
  border-width: 0 !important;
  border-style: none !important;
  outline: 0 !important;
  box-shadow: none !important;
}

/* 2) expanded: border appears on the open question + its answer pane */
.ge-faq-section .u-accordion-link.active,
.ge-faq-section .u-accordion-link[aria-selected="true"] {
  border: 2px solid #f2b705 !important;
  border-bottom: 0 !important;
  border-radius: 6px 6px 0 0 !important;
}
.ge-faq-section .u-accordion-pane.u-accordion-active {
  border: 2px solid #f2b705 !important;
  border-top: 0 !important;
  border-radius: 0 0 6px 6px !important;
}

/* the "Frequently Asked Questions" heading: navy, NOT yellow */
.ge-faq-section h2,
.ge-faq-section .u-text-1 {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
}

/* ── ROOF-COST CARD: RESTORE THE WHITE PILL/CARD ON MOBILE & TABLET ────
   BUG: an earlier "remove huge empty gaps" rule in this file collapses
   .u-section-11 with `min-height:0 !important; height:auto !important`
   at <=991px. But .u-section-11 IS the roof-cost banner, and
   roof-cost-html.css holds its card open with `min-height:670px`.
   Because header-top-fixes.css loads LAST, the collapse won.

   The section has `overflow:hidden`, so at zero height the white card
   ("YOUR NEW ROOF" pill + "Shouldn't Cost An Arm And A Leg" + copy) was
   clipped out of existence on phones and tablets.

   Give the section and its card-wrap their height back and force the
   card visible. This runs after the collapse rule, so it wins.        */
@media (max-width: 991px) {
  .ge-roof-cost-html-section,
  .ge-roof-cost-html-section.u-section-11 {
    min-height: 560px !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ge-roof-cost-card-wrap {
    min-height: 560px !important;
    display: flex !important;
    align-items: center !important;
    padding: 36px 18px !important;
  }
  .ge-roof-cost-card,
  .ge-roof-cost-yellow-shape {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
  }
  .ge-roof-cost-pill {
    display: inline-block !important;
    visibility: visible !important;
    opacity: 1 !important;
  }
}
@media (max-width: 767px) {
  .ge-roof-cost-html-section,
  .ge-roof-cost-html-section.u-section-11,
  .ge-roof-cost-card-wrap {
    min-height: 520px !important;
    height: auto !important;
    overflow: visible !important;
  }
}
/* ── PAYMENT CARDS: EXPLICIT, READABLE STYLING (override any inherited grey) ─
   The JS renders .ge-pay-card > (.ge-pay-term, .ge-pay-amt, .ge-pay-badge).
   Nothing gave the card a real background, so it inherited a grey bubble and
   the badge text was hard to read. Define the whole component cleanly:
   white card, navy term, RED price, navy (or gold) badge pill.            */
.ge-pay-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 14px !important;
  margin-top: 12px !important;
}
.ge-pay-card {
  background: #ffffff !important;
  border: 3px solid #f2b705 !important;
  border-radius: 14px !important;
  padding: 18px 12px !important;
  text-align: center !important;
  box-shadow: 0 6px 16px rgba(0,0,0,.10) !important;
}
.pay-card-featured {
  border-color: #051f3d !important;
  box-shadow: 0 8px 22px rgba(5,31,61,.20) !important;
}
.ge-pay-term {
  color: #051f3d !important;
  -webkit-text-fill-color: #051f3d !important;
  font-weight: 800 !important;
  font-size: 1rem !important;
  margin-bottom: 6px !important;
}
@media (max-width: 800px) {
  .ge-pay-grid { grid-template-columns: 1fr !important; }
}
/* ── ROOF TOOL — "Message on Facebook" CTA: white circle + FB "f" icon ──
   The button renders <span class="ge-fb-icon">f</span> with no styling, so
   the "f" was bare text. Make it a WHITE CIRCLE with the Facebook-blue "f"
   inside, sitting on the blue FB button. Also give the CTA row/buttons a
   clean layout so the Facebook and Contact buttons read properly.        */
.ge-cta-row {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  justify-content: center !important;
  margin-top: 18px !important;
}
.ge-cta-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  padding: 14px 22px !important;
  border-radius: 8px !important;
  font-weight: 800 !important;
  font-size: 1.05rem !important;
  text-decoration: none !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
.ge-btn-red  { background: #c62828 !important; }
.ge-btn-fb   { background: #1877f2 !important; }

/* the white circle holding the Facebook "f" */
.ge-fb-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 26px !important;
  height: 26px !important;
  background: #ffffff !important;
  color: #1877f2 !important;
  -webkit-text-fill-color: #1877f2 !important;
  border-radius: 50% !important;
  font-family: Georgia, "Times New Roman", serif !important;
  font-weight: 900 !important;
  font-size: 18px !important;
  line-height: 1 !important;
  flex: 0 0 26px !important;
}
