/* Static-site additions on top of the original Elementor CSS */

/* Sticky header (Elementor did this with JS + a placeholder; CSS sticky is equivalent) */
.elementor-location-header { position: sticky; top: 0; z-index: 99; }
html { scroll-padding-top: 80px; }

/* Elementor hides animated elements until JS reveals them; never leave content hidden forever */
@media (prefers-reduced-motion: reduce) {
  .elementor-invisible { visibility: visible !important; }
}

/* Background slideshow container (Elementor frontend.css covers the rest) */
.elementor-background-slideshow { pointer-events: none; }

/* Desktop dropdown menus */
.elementor-nav-menu--main .sub-menu { display: none; }
.elementor-nav-menu--main li:hover > .sub-menu,
.elementor-nav-menu--main li:focus-within > .sub-menu { display: block; }
.elementor-nav-menu--main .sub-menu {
  position: absolute; top: 100%; left: 0; min-width: 12em; width: auto !important; white-space: nowrap; z-index: 100;
}
.elementor-nav-menu--dropdown .sub-menu { display: none; position: static; }

/* Honeypot field */
.vpg-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Form messages */
.elementor-form .elementor-message { margin-top: 12px; flex-basis: 100%; }

/* Lightbox */
.vpg-lb-lock, .vpg-lb-lock body { overflow: hidden; }
.vpg-lightbox {
  position: fixed; inset: 0; z-index: 9999; display: none;
  background: rgba(0, 0, 0, .9); align-items: center; justify-content: center;
}
.vpg-lightbox.is-open { display: flex; animation: vpgFade .25s ease; }
.vpg-lightbox figure { margin: 0; max-width: 92vw; max-height: 86vh; display: flex; }
.vpg-lightbox img { max-width: 92vw; max-height: 86vh; object-fit: contain; box-shadow: 0 0 30px rgba(0,0,0,.4); }
.vpg-lightbox button {
  position: absolute; background: none; border: 0; color: #fff; cursor: pointer;
  font-size: 44px; line-height: 1; padding: 16px; opacity: .8;
}
.vpg-lightbox button:hover, .vpg-lightbox button:focus-visible { opacity: 1; }
.vpg-lb-close { top: 8px; right: 12px; }
.vpg-lb-prev { left: 8px; top: 50%; transform: translateY(-50%); font-size: 64px !important; }
.vpg-lb-next { right: 8px; top: 50%; transform: translateY(-50%); font-size: 64px !important; }
.vpg-lb-count { position: absolute; top: 20px; left: 20px; color: #fff; opacity: .8; font-size: 14px; }
@keyframes vpgFade { from { opacity: 0 } to { opacity: 1 } }

/* Client portal gate */
.vpg-gate input.passster-password { width: 100%; }
.vpg-gate .passster-submit { color: #fff; border: 0; cursor: pointer; margin-top: 10px; }
.vpg-gate .passster-error { color: #c0392b; margin-top: 8px; font-weight: 600; }

/* Impact map: size the embed to the map's own shape (1200x1818) and center it.
   The map page scales its artwork to fit but pins it to the left, so any spare
   width in the frame showed up as empty space on the right. */
iframe.vpg-map-embed, .elementor iframe.vpg-map-embed { display: block; border: 0; margin: 0 auto; width: min(100%, 79vh); aspect-ratio: 1200 / 1818; height: auto; }
@supports not (aspect-ratio: 1 / 1) { .elementor iframe.vpg-map-embed { width: 100%; height: 120vh; } }
.vpg-impact-map { display: block; max-width: 800px; margin: 0 auto; }
