/* ---------------------------------------------------------------------------
   Static-migration overrides for saveproxy.org
   The original site's client-side runtime (removed for static hosting) used to reveal
   scroll-animated blocks by adding an `.animation-loaded` class. Without that JS
   those blocks stay at opacity:0. We add the class in the HTML AND force the
   final (revealed) visual state here as a safety net.
   --------------------------------------------------------------------------- */

/* Guard against stray horizontal overflow (e.g. the clipped marquee track). */
html, body { overflow-x: hidden; }

.image-block-outer-wrapper,
.image-block-outer-wrapper .image-block-wrapper,
.image-block-outer-wrapper .image-caption-wrapper,
.image-block-outer-wrapper .image-inset,
.image-block-outer-wrapper .sqs-image-content,
.image-block-outer-wrapper .sqs-dynamic-text-container,
.fluid-image-animation-wrapper,
.fluid-image-animation-wrapper .sqs-image-content,
.fluid-image-animation-wrapper img,
[data-animation-role] {
  opacity: 1 !important;
  transform: none !important;
  clip-path: none !important;
  -webkit-clip-path: none !important;
  visibility: visible !important;
}

/* ---------------------------------------------------------------------------
   Grid gallery. The original runtime positioned each item absolutely (JS masonry).
   Without that JS the items collapse into one tall column, so we restore a static
   responsive CSS grid that mirrors the original 3-column grid layout.
   --------------------------------------------------------------------------- */
.gallery-grid--layout-grid,
.gallery-grid--layout-grid .gallery-grid-wrapper {
  position: static !important;
  height: auto !important;
}
.gallery-grid--layout-grid .gallery-grid-wrapper {
  display: grid !important;
  /* minmax(0,1fr) keeps large images from forcing tracks wider than the row */
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.gallery-grid--layout-grid .gallery-grid-item {
  position: static !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
}
.gallery-grid--layout-grid .gallery-grid-item-wrapper,
.gallery-grid--layout-grid .gallery-grid-lightbox-link {
  position: static !important;
  top: auto !important;
  left: auto !important;
  width: 100% !important;
  height: 100% !important;
  transform: none !important;
  display: block !important;
}
.gallery-grid--layout-grid .gallery-grid-lightbox-link {
  aspect-ratio: 3 / 2;
  overflow: hidden;
}
.gallery-grid--layout-grid .gallery-grid-lightbox-link img {
  position: static !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
@media (max-width: 767px) {
  .gallery-grid--layout-grid .gallery-grid-wrapper { grid-template-columns: repeat(2, 1fr); }
}

/* ---------------------------------------------------------------------------
   Gallery "reel" rebuilt as a clean static image grid (the original was a
   JS-sized horizontal slideshow that collapses to 0x0 without JS).
   --------------------------------------------------------------------------- */
.static-reel {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: 12px;
  width: 100%;
  padding: 0 4vw;
  height: auto !important;
  position: static !important;
  box-sizing: border-box;
}
.static-reel-item {
  margin: 0;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-radius: 2px;
}
.static-reel-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* JS-driven prev/next reel controls do nothing statically */
.gallery-arrows, .gallery-reel-controls, [class*="gallery-reel-control"] { display: none !important; }

/* CSS-only scrolling marquee (replaces the JS/SVG-rendered original marquee) */
.static-marquee { display: flex; overflow: hidden; width: 100%; white-space: nowrap; }
.static-marquee-track {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  text-decoration: none;
  color: inherit;
  font-family: 'Poppins', sans-serif;
  animation: static-marquee-scroll 40s linear infinite;
}
.static-marquee-track span { padding-right: 0.75em; }
.static-marquee:hover .static-marquee-track { animation-play-state: paused; }
@keyframes static-marquee-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .static-marquee-track { animation: none; } }

/* Newsletter/contact block: revealed by JS via a `.rendered` class
   (`.newsletter-block:not(.rendered){opacity:0}`). Force visible. */
.newsletter-block { opacity: 1 !important; }

/* Simple note shown by the stubbed contact form */
.static-form-note { color: inherit; }
