/* Restore Squarespace full-bleed banner behaviour without the JS image loader.
   The Squarespace ImageLoader baked fixed pixel width/height onto fill ("content-fill"
   / section-background) images at capture time. Without the loader those baked sizes
   leave grey gutters on wide screens and clip/hide the image on narrow screens.
   Force every fill image to cover its container at all viewports. */
.content-fill > img,
.content-fill img,
.section-background > img,
.section-background img {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover !important;
}

/* ── Subtle scroll fade-in (replaces Squarespace's load animations that the
   JS strip removed). Gated on html.js-reveal so no-JS still shows everything.
   The js-reveal class is set by an inline <head> script before paint, so the
   initial hidden state applies with no flash of content. ── */
html.js-reveal .main-content .sqs-block,
html.js-reveal [data-section-id] .fe-block {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .85s cubic-bezier(.22,.61,.36,1),
              transform .85s cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
}
html.js-reveal .main-content .sqs-block.reveal-in,
html.js-reveal [data-section-id] .fe-block.reveal-in {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  html.js-reveal .main-content .sqs-block,
  html.js-reveal [data-section-id] .fe-block {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

