/* Animation Styles for Homepage Components */ /* Base animation classes */ .animate-fade-in { opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .animate-fade-in.animate-visible { opacity: 1; transform: translateY(0); } /* Slide in from left */ .animate-slide-left { opacity: 0; transform: translateX(-50px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .animate-slide-left.animate-visible { opacity: 1; transform: translateX(0); } /* Slide in from right */ .animate-slide-right { opacity: 0; transform: translateX(50px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .animate-slide-right.animate-visible { opacity: 1; transform: translateX(0); } /* Scale up animation */ .animate-scale-up { opacity: 0; transform: scale(0.9); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .animate-scale-up.animate-visible { opacity: 1; transform: scale(1); } /* Staggered animations for multiple elements */ .animate-stagger-1 { transition-delay: 0.1s; } .animate-stagger-2 { transition-delay: 0.2s; } .animate-stagger-3 { transition-delay: 0.3s; } .animate-stagger-4 { transition-delay: 0.4s; } .animate-stagger-5 { transition-delay: 0.5s; } /* Hero section specific animations */ .hero-title { opacity: 0; transform: translateY(40px); transition: opacity 1s ease-out, transform 1s ease-out; } .hero-title.animate-visible { opacity: 1; transform: translateY(0); } .hero-subtitle { opacity: 0; transform: translateY(30px); transition: opacity 1s ease-out 0.3s, transform 1s ease-out 0.3s; } .hero-subtitle.animate-visible { opacity: 1; transform: translateY(0); } .hero-button { opacity: 0; transform: translateY(20px); transition: opacity 0.8s ease-out 0.6s, transform 0.8s ease-out 0.6s; } .hero-button.animate-visible { opacity: 1; transform: translateY(0); } /* Image animations */ .animate-image { opacity: 0; transform: scale(1.1); transition: opacity 1s ease-out, transform 1s ease-out; } .animate-image.animate-visible { opacity: 1; transform: scale(1); } /* Text content animations */ .animate-text-content h1, .animate-text-content h2, .animate-text-content h3, .animate-text-content h4 { opacity: 0; transform: translateY(20px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .animate-text-content.animate-visible h1, .animate-text-content.animate-visible h2, .animate-text-content.animate-visible h3, .animate-text-content.animate-visible h4 { opacity: 1; transform: translateY(0); } .animate-text-content p { opacity: 0; transform: translateY(15px); transition: opacity 0.8s ease-out 0.2s, transform 0.8s ease-out 0.2s; } .animate-text-content.animate-visible p { opacity: 1; transform: translateY(0); } .animate-text-content button, .animate-text-content a[href] { opacity: 0; transform: translateY(10px); transition: opacity 0.8s ease-out 0.4s, transform 0.8s ease-out 0.4s; } .animate-text-content.animate-visible button, .animate-text-content.animate-visible a[href] { opacity: 1; transform: translateY(0); } /* Reduced motion for accessibility */ @media (prefers-reduced-motion: reduce) { .animate-fade-in, .animate-slide-left, .animate-slide-right, .animate-scale-up, .hero-title, .hero-subtitle, .hero-button, .animate-image, .animate-text-content h1, .animate-text-content h2, .animate-text-content h3, .animate-text-content h4, .animate-text-content p, .animate-text-content button, .animate-text-content a[href] { transition: none; opacity: 1; transform: none; } } /* Loading animation for initial page load */ .page-loading .animate-on-load { opacity: 0; transform: translateY(20px); } .page-loaded .animate-on-load { opacity: 1; transform: translateY(0); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }