/* Small additions for the static clone (Elementor/jQuery JS replaced by /js/site.js). */

/* Turnstile runs in interaction-only mode: keep its empty row from adding a gap above "Send Now". */
.elementor-form .gh-turnstile-group{margin:0!important;padding:0!important}
.elementor-form .gh-turnstile-group .cf-turnstile:empty{display:none}

/* Minimal Swiper layout for the vanilla lightbox (Swiper itself is not loaded). */
.gh-lightbox .swiper{position:relative;overflow:hidden;width:100%;height:100%}
.gh-lightbox .swiper-wrapper{display:flex;width:100%;height:100%}
.gh-lightbox .swiper-slide{flex-shrink:0;width:100%;height:100%}
.gh-lightbox .swiper-zoom-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.gh-lightbox .elementor-lightbox-image{max-width:100%;max-height:100%;object-fit:contain}
.gh-lightbox .elementor-swiper-button{position:absolute;top:50%;transform:translateY(-50%);cursor:pointer;z-index:1;outline:none}
.gh-lightbox .elementor-swiper-button svg{width:1em;height:1em}
.gh-lightbox .dialog-lightbox-close-button svg{fill:var(--lightbox-ui-color)}

/*
 * Design r1 (deliberate departure from live): on desktop the free quote form follows the content.
 * - position:sticky keeps it inside its own column (.elementor-widget-wrap), so it can never cover the
 *   footer or another section; it only applies where the form is the column's last widget, so it never
 *   slides over a sibling. Where the column ends right after the form (contact, services, service pages)
 *   it simply stays put.
 * - top = the fixed header's measured height (--gh-hdr-h from site.js: 78px, or 156px where the phone
 *   number wraps at ~1025-1085px) + 20px gap. Without JS the header isn't fixed and the 78px fallback applies.
 * - Desktop only (Elementor's desktop breakpoint, min-width 1025px); below that it stays static.
 * - min-height 700px: the form is ~433px (plus validation/result messages), so even with the tallest
 *   offset (156px wrapped header + 20px = 176px, 609px total) it
 *   always fits in the viewport. Shorter viewports fall back to static so every field stays reachable
 *   (no nested scroll area inside the form).
 */
@media (min-width: 1025px) and (min-height: 700px) {
  .elementor-widget-wrap > .elementor-widget-form:last-child {
    position: sticky;
    top: calc(var(--gh-hdr-h, 78px) + 20px); /* r2b: follows the real header height, set by site.js */
    align-self: flex-start;
    z-index: 1;
  }
}
