/* Base Styles */
[class*="fade-in"] {
    opacity: 0;
    transition: opacity 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94), 
                transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: opacity, transform;
}

/* Visible State */
[class*="fade-in"].is-visible {
    opacity: 1;
    transform: none;
}

/* Variations */
.fade-in-up {
    transform: translateY(30px);
}

.fade-in-down {
    transform: translateY(-30px);
}

.fade-in-left {
    transform: translateX(-30px);
}

.fade-in-right {
    transform: translateX(30px);
}

/* Stagger Support */
.fade-in-stagger > * {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.fade-in-stagger.is-visible > * {
    opacity: 1;
    transform: none;
}
