/* Animations Library - SoftEdge Corporation */ /* Fade In Animations */ .fade-in { animation: fadeIn 0.8s ease-out; } .fade-in-up { animation: fadeInUp 0.8s ease-out; } .fade-in-down { animation: fadeInDown 0.8s ease-out; } .fade-in-left { animation: fadeInLeft 0.8s ease-out; } .fade-in-right { animation: fadeInRight 0.8s ease-out; } /* Staggered 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; } .stagger-5 { animation-delay: 0.5s; } /* Keyframe Definitions */ @keyframes fadeIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInDown { from { opacity: 0; transform: translateY(-30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } } @keyframes fadeInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } /* Typing Animation */ .typing-text { overflow: hidden; border-right: 2px solid rgba(6, 182, 212, 0.8); white-space: nowrap; animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; } @keyframes typing { from { width: 0; } to { width: 100%; } } @keyframes blink-caret { from, to { border-color: transparent; } 50% { border-color: rgba(6, 182, 212, 0.8); } } /* Floating Particles */ .particle { position: absolute; background: rgba(255, 255, 255, 0.1); border-radius: 50%; pointer-events: none; animation: float 8s ease-in-out infinite; } .particle:nth-child(1) { width: 4px; height: 4px; top: 20%; left: 10%; animation-delay: 0s; } .particle:nth-child(2) { width: 6px; height: 6px; top: 60%; left: 80%; animation-delay: 2s; } .particle:nth-child(3) { width: 3px; height: 3px; top: 40%; left: 60%; animation-delay: 4s; } .particle:nth-child(4) { width: 5px; height: 5px; top: 80%; left: 30%; animation-delay: 1s; } .particle:nth-child(5) { width: 4px; height: 4px; top: 10%; left: 70%; animation-delay: 3s; } @keyframes float { 0%, 100% { transform: translateY(0px) rotate(0deg); opacity: 0.1; } 50% { transform: translateY(-20px) rotate(180deg); opacity: 0.3; } } /* Logo Glow Animation */ .logo-glow { animation: logoGlow 4s ease-in-out infinite; } @keyframes logoGlow { 0%, 100% { filter: drop-shadow(0 0 5px rgba(6, 182, 212, 0.3)); } 50% { filter: drop-shadow(0 0 20px rgba(6, 182, 212, 0.6)); } } /* Shimmer Effect */ .shimmer { position: relative; overflow: hidden; } .shimmer::after { content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); animation: shimmer 2s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* Pulse Animation */ .pulse-glow { animation: pulseGlow 2s ease-in-out infinite; } @keyframes pulseGlow { 0%, 100% { box-shadow: 0 0 5px rgba(6, 182, 212, 0.3); } 50% { box-shadow: 0 0 20px rgba(6, 182, 212, 0.6), 0 0 30px rgba(6, 182, 212, 0.4); } } /* Bounce Animation */ .bounce-in { animation: bounceIn 0.8s ease-out; } @keyframes bounceIn { 0% { opacity: 0; transform: scale(0.3); } 50% { opacity: 1; transform: scale(1.05); } 70% { transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } } /* Slide In Animations */ .slide-in-left { animation: slideInLeft 0.8s ease-out; } .slide-in-right { animation: slideInRight 0.8s ease-out; } .slide-in-up { animation: slideInUp 0.8s ease-out; } .slide-in-down { animation: slideInDown 0.8s ease-out; } @keyframes slideInLeft { from { opacity: 0; transform: translateX(-100%); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInUp { from { opacity: 0; transform: translateY(100%); } to { opacity: 1; transform: translateY(0); } } @keyframes slideInDown { from { opacity: 0; transform: translateY(-100%); } to { opacity: 1; transform: translateY(0); } } /* Scale Animations */ .scale-in { animation: scaleIn 0.6s ease-out; } .scale-out { animation: scaleOut 0.6s ease-out; } @keyframes scaleIn { from { opacity: 0; transform: scale(0); } to { opacity: 1; transform: scale(1); } } @keyframes scaleOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0); } } /* Loading Spinner */ .loading-spinner { border: 2px solid rgba(226, 232, 240, 0.3); border-top: 2px solid #06b6d4; border-radius: 50%; width: 20px; height: 20px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Magnetic Effect */ .magnetic { transition: transform 0.3s ease; } .magnetic:hover { transform: scale(1.05); } /* Hover Effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-5px); box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15); } /* Responsive Animations */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Mobile Optimizations */ @media (max-width: 768px) { .particle { display: none; /* Hide particles on mobile for performance */ } .fade-in, .fade-in-up, .fade-in-down, .fade-in-left, .fade-in-right { animation-duration: 0.6s; /* Faster animations on mobile */ } }