.animate-on-scroll {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.animate-on-scroll.animate-visible { opacity: 1; transform: translateY(0); }
.animate-on-scroll.animate-left { transform: translateX(-40px); }
.animate-on-scroll.animate-left.animate-visible { transform: translateX(0); }
.animate-on-scroll.animate-right { transform: translateX(40px); }
.animate-on-scroll.animate-right.animate-visible { transform: translateX(0); }
.animate-on-scroll.animate-scale { transform: scale(0.9); }
.animate-on-scroll.animate-scale.animate-visible { transform: scale(1); }

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 20px rgba(245, 158, 11, 0.2); }
    50% { box-shadow: 0 0 40px rgba(245, 158, 11, 0.4); }
}
.hero-glow {
    animation: pulse-glow 3s ease-in-out infinite;
}

.dark-mode-toggle svg {
    transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
.dark-mode-toggle:hover svg { transform: rotate(30deg); }
html.dark .dark-mode-toggle .sun-icon { display: block; }
html.dark .dark-mode-toggle .moon-icon { display: none; }
html:not(.dark) .dark-mode-toggle .sun-icon { display: none; }
html:not(.dark) .dark-mode-toggle .moon-icon { display: block; }
