/* ==========================================================================
   ANIMATIONS — reveal utility hooks (GSAP toggles these) + reduced motion
   ========================================================================== */

[data-reveal] {
  opacity: 0;
}

.no-js [data-reveal],
.reduced-motion [data-reveal] {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }
  * {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .marquee__track {
    animation: none !important;
  }
}

.js-loading {
  overflow: hidden;
}

.preloader {
  position: fixed;
  inset: 0;
  z-index: var(--z-toast);
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 600ms var(--ease-out), visibility 600ms;
}

.preloader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.preloader-mark {
  font-family: var(--font-display);
  font-style: italic;
  font-size: var(--fs-2xl);
  color: var(--color-fg-faint);
}

.preloader-mark .dot {
  color: var(--color-accent);
}
