/* ==========================================================================
   WeePrep — animations.css
   Restrained, purposeful motion only. All effects are disabled when the
   user prefers reduced motion, and content is always visible without JS.
   ========================================================================== */

/* Scroll-reveal: elements start slightly offset, then settle once the
   JS IntersectionObserver adds .is-visible. If JS is off, the .reveal
   base state below is neutralised by the .no-js rule so content shows. */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
  will-change: opacity, transform;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* Staggered children (cards in a grid) */
.reveal[data-delay="1"] { transition-delay: 0.06s; }
.reveal[data-delay="2"] { transition-delay: 0.12s; }
.reveal[data-delay="3"] { transition-delay: 0.18s; }
.reveal[data-delay="4"] { transition-delay: 0.24s; }

/* No-JS: never hide content */
.no-js .reveal { opacity: 1; transform: none; }

/* Announcement bar entrance */
@keyframes announce-in {
  from { transform: translateY(-100%); }
  to   { transform: translateY(0); }
}
.announce:not([hidden]) { animation: announce-in 0.4s var(--ease); }

/* Subtle hover lift is defined on components; keep timings consistent here */
@keyframes pulse-soft {
  0%, 100% { box-shadow: 0 0 0 0 rgba(241, 90, 36, 0.45); }
  50%      { box-shadow: 0 0 0 8px rgba(241, 90, 36, 0); }
}
.pulse { animation: pulse-soft 2.4s var(--ease) infinite; }

/* Respect reduced-motion: disable all non-essential motion */
@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;
  }
  .reveal { opacity: 1 !important; transform: none !important; }
  .card:hover, .la-card:hover, .value-card:hover, .btn:hover { transform: none !important; }
}
