.slate-animate {
    opacity: 0;
    will-change: opacity, transform;
}
.slate-animate.is-visible {
    opacity: 1;
}
[data-animation="fadeIn"] {
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="fadeUp"] {
    transform: translateY(30px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="fadeUp"].is-visible {
    transform: translateY(0);
}
[data-animation="fadeDown"] {
    transform: translateY(-30px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="fadeDown"].is-visible {
    transform: translateY(0);
}
[data-animation="fadeLeft"] {
    transform: translateX(30px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="fadeLeft"].is-visible {
    transform: translateX(0);
}
[data-animation="fadeRight"] {
    transform: translateX(-30px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="fadeRight"].is-visible {
    transform: translateX(0);
}
[data-animation="scaleUp"] {
    transform: scale(0.9);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="scaleUp"].is-visible {
    transform: scale(1);
}
[data-animation="scaleDown"] {
    transform: scale(1.1);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="scaleDown"].is-visible {
    transform: scale(1);
}
[data-animation="zoomIn"] {
    transform: scale(0.5);
    transition: opacity var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.34, 1.56, 0.64, 1)),
                transform var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.34, 1.56, 0.64, 1));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="zoomIn"].is-visible {
    transform: scale(1);
}
[data-animation="slideUp"] {
    opacity: 1;
    transform: translateY(100%);
    transition: transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="slideUp"].is-visible {
    transform: translateY(0);
}
[data-animation="slideDown"] {
    opacity: 1;
    transform: translateY(-100%);
    transition: transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="slideDown"].is-visible {
    transform: translateY(0);
}
[data-animation="flipUp"] {
    transform: perspective(1000px) rotateX(90deg);
    transform-origin: bottom;
    transition: opacity var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="flipUp"].is-visible {
    transform: perspective(1000px) rotateX(0);
}
[data-animation="flipLeft"] {
    transform: perspective(1000px) rotateY(-90deg);
    transform-origin: right;
    transition: opacity var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 800ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="flipLeft"].is-visible {
    transform: perspective(1000px) rotateY(0);
}
[data-animation="blurIn"] {
    filter: blur(10px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                filter var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="blurIn"].is-visible {
    filter: blur(0);
}
[data-animation="blurUp"] {
    filter: blur(10px);
    transform: translateY(30px);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                filter var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="blurUp"].is-visible {
    filter: blur(0);
    transform: translateY(0);
}
[data-animation="rotateIn"] {
    transform: rotate(-15deg) scale(0.9);
    transition: opacity var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94)),
                transform var(--aurora-duration, 600ms) var(--aurora-easing, cubic-bezier(0.25, 0.46, 0.45, 0.94));
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="rotateIn"].is-visible {
    transform: rotate(0) scale(1);
}
[data-animation="elegant"] {
    transform: translateY(20px) scale(0.98);
    transition: opacity var(--aurora-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94),
                transform var(--aurora-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="elegant"].is-visible {
    transform: translateY(0) scale(1);
}
[data-animation="reveal"] {
    clip-path: inset(0 100% 0 0);
    transition: clip-path var(--aurora-duration, 800ms) cubic-bezier(0.77, 0, 0.175, 1),
                opacity var(--aurora-duration, 800ms) cubic-bezier(0.77, 0, 0.175, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="reveal"].is-visible {
    clip-path: inset(0 0 0 0);
}
[data-animation="float"] {
    transform: translateY(40px);
    transition: opacity var(--aurora-duration, 1000ms) cubic-bezier(0.23, 1, 0.32, 1),
                transform var(--aurora-duration, 1000ms) cubic-bezier(0.23, 1, 0.32, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="float"].is-visible {
    transform: translateY(0);
}
[data-animation="handwrite"] {
    opacity: 0;
    transform: translateY(30px) scale(0.95);
    filter: blur(4px);
    transition: opacity var(--aurora-duration, 1000ms) cubic-bezier(0.23, 1, 0.32, 1),
                transform var(--aurora-duration, 1000ms) cubic-bezier(0.23, 1, 0.32, 1),
                filter var(--aurora-duration, 1000ms) cubic-bezier(0.23, 1, 0.32, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="handwrite"].is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
}
[data-animation="polaroidDrop"] {
    opacity: 0;
    transform: translateY(-80px) rotate(calc(var(--polaroid-rotation, 0deg) + 15deg));
    transition: opacity var(--aurora-duration, 800ms) ease,
                transform var(--aurora-duration, 1200ms) cubic-bezier(0.34, 1.56, 0.64, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="polaroidDrop"].is-visible {
    opacity: 1;
    transform: translateY(0) rotate(var(--polaroid-rotation, 0deg));
}
[data-animation="garlandReveal"] {
    opacity: 0;
    transform: scaleX(0);
    transition: opacity var(--aurora-duration, 600ms) ease,
                transform var(--aurora-duration, 800ms) cubic-bezier(0.34, 1.56, 0.64, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="garlandReveal"].is-visible {
    opacity: 1;
    transform: scaleX(1);
}
[data-animation="countdownPop"] {
    opacity: 0;
    transform: scale(0.5);
    transition: opacity var(--aurora-duration, 500ms) ease,
                transform var(--aurora-duration, 600ms) cubic-bezier(0.34, 1.56, 0.64, 1);
    transition-delay: var(--aurora-delay, 0ms);
}
[data-animation="countdownPop"].is-visible {
    opacity: 1;
    transform: scale(1);
}
.delay-100 { --aurora-delay: 100ms; }
.delay-200 { --aurora-delay: 200ms; }
.delay-300 { --aurora-delay: 300ms; }
.delay-400 { --aurora-delay: 400ms; }
.delay-500 { --aurora-delay: 500ms; }
.delay-600 { --aurora-delay: 600ms; }
.delay-700 { --aurora-delay: 700ms; }
.delay-800 { --aurora-delay: 800ms; }
.duration-fast { --aurora-duration: 400ms; }
.duration-normal { --aurora-duration: 600ms; }
.duration-slow { --aurora-duration: 800ms; }
.duration-slower { --aurora-duration: 1000ms; }
@media (prefers-reduced-motion: reduce) {
    .slate-animate,
    [data-animation] {
        transition: opacity 0.3s ease !important;
        transform: none !important;
        filter: none !important;
        clip-path: none !important;
    }
    .slate-animate.is-visible {
        opacity: 1 !important;
    }
}
@media (max-width: 768px) {
    [data-animation="fadeUp"],
    [data-animation="fadeDown"] {
        --aurora-translate-y: 20px;
    }
    [data-animation="fadeUp"] {
        transform: translateY(20px);
    }
    [data-animation="fadeDown"] {
        transform: translateY(-20px);
    }
    [data-animation="fadeLeft"],
    [data-animation="fadeRight"] {
        transform: translateX(15px);
    }
    [data-animation="fadeRight"] {
        transform: translateX(-15px);
    }
}
