@keyframes fadeUp {
    from { opacity: 0; transform: translateY(20px) scale(.95); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.anim-fade-up {
    opacity: 0;
    animation: fadeUp .6s cubic-bezier(.2,.7,.2,1) both;
    will-change: transform, opacity;
    animation-delay: var(--anim-delay, 0s);
}

.hover-scale {
    display: inline-block;
    transition: transform .2s ease-out;
}
.hover-scale:hover { transform: scale(1.1); }

@media (prefers-reduced-motion: reduce) {
    .anim-fade-up { animation: none; opacity: 1; transform: none; }
    .hover-scale:hover { transform: none; }
}

.stagger > .anim-fade-up:nth-child(1) { --anim-delay: .15s; }
.stagger > .anim-fade-up:nth-child(2) { --anim-delay: .30s; }
.stagger > .anim-fade-up:nth-child(3) { --anim-delay: .45s; }
.stagger > .anim-fade-up:nth-child(4) { --anim-delay: .60s; }
