| /* Add to globals.css */ | |
| /* Animations */ | |
| @keyframes float { | |
| 0%, 100% { | |
| transform: translateY(0px); | |
| } | |
| 50% { | |
| transform: translateY(-20px); | |
| } | |
| } | |
| @keyframes pulse-glow { | |
| 0%, 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.8; | |
| transform: scale(1.05); | |
| } | |
| } | |
| @keyframes slide-in-up { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes fade-in { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| .animate-float { | |
| animation: float 3s ease-in-out infinite; | |
| } | |
| .animate-pulse-glow { | |
| animation: pulse-glow 2s ease-in-out infinite; | |
| } | |
| .animate-slide-in-up { | |
| animation: slide-in-up 0.6s ease-out forwards; | |
| } | |
| .animate-fade-in { | |
| animation: fade-in 1s ease-out forwards; | |
| } | |
| /* SVG shimmer for hero illustration */ | |
| @keyframes svg-shimmer { | |
| 0% { | |
| transform: translateX(-10px) scale(1); | |
| opacity: 0.9; | |
| } | |
| 50% { | |
| transform: translateX(6px) scale(1.02); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: translateX(-10px) scale(1); | |
| opacity: 0.9; | |
| } | |
| } | |
| .svg-tilt { | |
| transition: transform 0.45s ease, opacity 0.4s ease; | |
| } | |
| .svg-shimmer { | |
| animation: svg-shimmer 4s ease-in-out infinite; | |
| } | |
| /* Stagger animations */ | |
| .stagger-1 { | |
| animation-delay: 0.1s; | |
| } | |
| .stagger-2 { | |
| animation-delay: 0.2s; | |
| } | |
| .stagger-3 { | |
| animation-delay: 0.3s; | |
| } | |
| .stagger-4 { | |
| animation-delay: 0.4s; | |
| } | |