/* ===== Helpers ===== */
*, *::before, *::after { box-sizing: border-box; }
img { max-width: 100%; -webkit-user-drag: none; user-select: none; }
button { font: inherit; color: inherit; }
html, body { margin: 0; padding: 0; }

/* Elements animated in by GSAP start hidden only while the intro is pending.
   main.js removes .is-intro-pending if GSAP is unavailable, so nothing stays hidden. */
.is-intro-pending [data-intro] { opacity: 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
  .is-intro-pending [data-intro] { opacity: 1; }
}

/* Fallback in case Bootstrap CSS fails to load */
.visually-hidden {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important;
  overflow: hidden !important; clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important; border: 0 !important;
}
.modal:not(.show) { display: none; }
