/**
 * Portfolio Scroll Animations
 *
 * GPU-accelerated entrance animations using only opacity and transform.
 * No layout-triggering properties (width, height, margin, padding) are animated.
 */

/* Initial hidden state for elements awaiting scroll reveal */
[data-animate] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 300ms ease, transform 300ms ease;
}

/* Visible state applied by Intersection Observer */
[data-animate].animate-in {
    opacity: 1;
    transform: translateY(0);
}

/* Respect user motion preferences */
@media (prefers-reduced-motion: reduce) {
    [data-animate] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
