/* My Accounting Hub | animations.css | Draft build - not production */
/* Scroll-triggered reveals, keyframes and the animated emblem sweep. */

/* ---- Keyframes ---- */
@keyframes mah-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes mah-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes mah-slide-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes mah-emblem-sweep { to { stroke-dashoffset: -1000; } }

/* ---- Animated emblem: only the light travels, the mark itself is static ---- */
.mah-emblem__sweep {
 animation: mah-emblem-sweep 4.2s linear infinite;
 filter: drop-shadow(0 0 2.5px rgba(150,240,235,.8));
}

/* ---- Scroll reveal ----------------------------------------------------
 A .reveal element is VISIBLE by default. Only once the script has
 confirmed it is below the fold does it get .pre (hidden), then
 .is-visible (fade in) when scrolled to. A broken/slow script therefore
 never hides content - the worst case is simply no animation. */
.reveal { transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.pre { opacity: 0; transform: translateY(24px); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

/* Region panel content swap */
.mah-region__panel.is-swapping { opacity: 0; transform: translateY(8px); }
.mah-region__panel { transition: opacity .2s var(--ease), transform .2s var(--ease); }

@media (prefers-reduced-motion: reduce) {
 .reveal, .reveal.pre { opacity: 1 !important; transform: none !important; transition: none !important; }
}
