/* GSAP sets inline styles for .reveal targets on scroll; this is the pre-JS fallback
   and the reduced-motion escape hatch so content is never invisible without JS/GSAP. */

.reveal {
  opacity: 1;
}

@media (prefers-reduced-motion: no-preference) {
  .js-gsap-ready .reveal {
    opacity: 0;
  }
}

.theme-toggle__icon,
[data-theme] body,
.site-header,
.card,
a {
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
