/* Static-site helpers (loaded after the original Elementor/WordPress CSS) */
.elementor-nav-menu--main .menu-item-has-children:hover > .sub-menu,.elementor-nav-menu--main .menu-item-has-children:focus-within > .sub-menu{display:block!important;position:absolute;width:auto;min-width:220px;z-index:100}
.elementor-nav-menu--main .sub-menu{display:none}
.elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown{max-height:100vh!important;transform:scaleY(1)!important;overflow:auto}
.elementor-nav-menu--dropdown .sub-menu{display:none}
.elementskit-accordion .collapse:not(.show){display:none}
.elementor-gallery__container{display:flex;flex-wrap:wrap;gap:8px}.e-gallery-item{display:block;position:relative;overflow:hidden}.e-gallery-image{background-size:cover;background-position:center;width:100%}
.elementor-gallery__container::after{content:"";flex-grow:999}
.wpforms-container .wpforms-field-text{display:none!important}


/* 2026-11-06 visual HOLD: force /roof-repair/ hero photo (avoid flat gray when bg-attachment:fixed fails without Elementor stretch) */
.elementor-1775 .elementor-element.elementor-element-480fad65:not(.elementor-motion-effects-element-type-background),
.elementor-1775 .elementor-element.elementor-element-480fad65 > .elementor-motion-effects-container > .elementor-motion-effects-layer{
  background-image:url('/images/2025/04/roofer-repair-replace-shingle-that-has-been-damage-2025-03-27-04-59-06-utc-1-scaled.webp')!important;
  background-position:center center!important;
  background-repeat:no-repeat!important;
  background-size:cover!important;
  background-attachment:scroll!important;
}
.elementor-1775 .elementor-element.elementor-element-480fad65{position:relative;}
.elementor-1775 .elementor-element.elementor-element-480fad65 > .elementor-background-overlay{
  background-color:#241F21!important;
  opacity:.6!important;
  position:absolute;inset:0;pointer-events:none;
}
/* Nov 9: project gallery "View all" + lightbox */
.vr-gallery-collapsed .vr-more-photo{display:none!important}
.vr-more-wrap{text-align:center;margin-top:18px}
.vr-more-btn{background:#00838f;color:#fff;border:0;padding:12px 22px;font:600 15px/1.2 inherit;cursor:pointer;border-radius:2px;min-height:44px}
.vr-more-btn:hover,.vr-more-btn:focus-visible{background:#24201f;outline:2px solid #00838f;outline-offset:2px}
.vr-lightbox{position:fixed;inset:0;z-index:100000;background:rgba(0,0,0,.92);display:none;align-items:center;justify-content:center}
.vr-lightbox.open{display:flex}
.vr-lightbox figure{margin:0;max-width:92vw;max-height:88vh;text-align:center}
.vr-lightbox img{max-width:92vw;max-height:80vh;object-fit:contain;display:block;margin:0 auto}
.vr-lightbox figcaption{color:#ddd;font-size:14px;margin-top:8px}
.vr-lightbox button{position:absolute;background:rgba(0,0,0,.4);color:#fff;border:0;font-size:40px;line-height:1;width:48px;height:48px;cursor:pointer}
.vr-lb-close{top:10px;right:10px}.vr-lb-prev{left:6px;top:50%;transform:translateY(-50%)}.vr-lb-next{right:6px;top:50%;transform:translateY(-50%)}
.vr-lightbox button:focus-visible{outline:2px solid #fff}
/* Nov 9: reviews slider wrapper uses -8px side margins; clip so mobile/tablet have no horizontal scroll */
.ti-widget .ti-reviews-container{overflow-x:hidden;overflow-x:clip}
/* Nov 10: Services banner 4-photo background slideshow (matches live Elementor slideshow: 2s slides, 0.5s fade, Ken Burns zoom-in) */
.elementor-element-66ce1e5{position:relative;overflow:hidden}
.vx-slideshow{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.vx-slide{position:absolute;inset:0;background-size:cover;background-position:center center;background-repeat:no-repeat;opacity:0;transition:opacity .5s ease;transform:scale(1)}
.vx-slide.vx-active{opacity:1;animation:vxKen 2.5s linear forwards}
@keyframes vxKen{from{transform:scale(1)}to{transform:scale(1.3)}}
.elementor-element-66ce1e5>.elementor-background-overlay{z-index:1}
.elementor-element-66ce1e5>.elementor-container{position:relative;z-index:2}
/* Nov 10: Homepage hero background video (self-hosted copy of live YouTube hero), still image stays as poster/fallback */
.elementor-element-1c1ada5a{position:relative;overflow:hidden}
.vx-hero-video-wrap{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.vx-hero-video{position:absolute;top:50%;left:50%;min-width:100%;min-height:100%;width:auto;height:auto;transform:translate(-50%,-50%);object-fit:cover}
@supports (object-fit:cover){.vx-hero-video{width:100%;height:100%;top:0;left:0;transform:none}}
.elementor-element-1c1ada5a>.elementor-background-overlay{z-index:1}
.elementor-element-1c1ada5a>.elementor-container{position:relative;z-index:2}
@media (prefers-reduced-motion:reduce){.vx-slide.vx-active{animation:none}}
/* Nov 10: Services "How the Roof Process Works" heading has a -8px right margin from Elementor; cancel on tablet/phone to stop 8px horizontal scroll */
@media (max-width:1024px){.elementor-element-20ae97f>.elementor-widget-container{margin-right:0!important}}
