.fade-in-hidden { opacity: 0; transform: translateY(1.5rem); transition: opacity 0.5s ease-out, transform 0.5s ease-out; } .fade-in-visible { opacity: 1; transform: translateY(0); } /* Respect prefers-reduced-motion: reduce (for accessibility). If user prefers reduced motion, override transitions. */ @media (prefers-reduced-motion: reduce) { .fade-in-hidden { opacity: 1; transform: none; transition: none; } }