/* Deliberately no typography, color, spacing or background overrides.
   Source entrance animations must never hide SSR content, even if an extension
   or delayed library re-adds its visibility class. */
.elementor.elementor-1335 .elementor-invisible,
.elementor.elementor-2077 .elementor-invisible {
  visibility: visible;
}

/* Original grid is positioned by Isotope after loading. Before then (including
   no-JS) render the same columns/gutters instead of a 12-image single column. */
.elementor-element-a84edd9 .wpr-grid:not(.grid-images-loaded) {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.elementor-element-a84edd9 .wpr-grid:not(.grid-images-loaded) .wpr-grid-item {
  width: auto;
}
@media (max-width: 1366px) {
  .elementor-element-a84edd9 .wpr-grid:not(.grid-images-loaded) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 767px) {
  .elementor-element-a84edd9 .wpr-grid:not(.grid-images-loaded) {
    grid-template-columns: minmax(0, 1fr);
  }
}
/* Swiper enhancement keeps the first original image visible before ready. */
.elementor-image-carousel-wrapper:not(.swiper-initialized) .swiper-slide {
  max-width: 100%;
  flex: 0 0 100%;
}

/* Gallery photos must stay visible if the widget JS hides them
   (wpr-grid-cache) but never finishes the reveal. */
.elementor-element-a84edd9 .wpr-grid:not(.grid-images-loaded) .wpr-grid-item {
  opacity: 1;
}

/* Timeline copy must be readable even if AOS never runs or scroll events
   never fire. JS dead: no .aos-init, show immediately. JS alive but the
   element was never revealed: timed failsafe reaches the same end state. */
.wpr-data-wrap[data-aos]:not(.aos-init) {
  opacity: 1;
  transform: none;
}
@keyframes wpr-aos-failsafe {
  to {
    opacity: 1;
    transform: none;
  }
}
.wpr-data-wrap[data-aos].aos-init:not(.aos-animate) {
  animation: wpr-aos-failsafe 0s 2.5s forwards;
}

/*
 * Mobile-only horizontal containment for the original Elementor replica.
 * Keep the desktop CSS and original section order intact. Large absolutely
 * positioned Elementor decorations may extend past the device edge; clip only
 * their out-of-viewport portion, while allowing normal vertical scrolling.
 */
@media (max-width: 767px) {
  body.elementor-page-1335 {
    max-width: 100%;
    overflow-x: clip;
  }

  .elementor.elementor-1335,
  .elementor.elementor-2077 {
    width: 100%;
    max-width: 100%;
    overflow-x: clip;
  }

  .elementor-1335 .e-con,
  .elementor-1335 .elementor-container,
  .elementor-2077 .e-con,
  .elementor-2077 .elementor-container {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
  }

  .elementor-1335 .elementor-widget-wrap,
  .elementor-2077 .elementor-widget-wrap,
  .elementor-1335 .wpr-grid,
  .elementor-1335 .elementor-image-carousel-wrapper {
    min-width: 0;
    max-width: 100%;
  }

  .elementor-1335 .elementor-widget-image img,
  .elementor-2077 .elementor-widget-image img {
    max-width: 100%;
  }
}
