/* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-up { animation: fadeInUp 0.6s cubic-bezier(0.23, 1, 0.32, 1) forwards; } /* Edge Flow Animation */ @keyframes drawnet-flow { from { stroke-dashoffset: 20; } to { stroke-dashoffset: 0; } } .flow-animation path { stroke-dasharray: 5, 5; animation: drawnet-flow 1s linear infinite; } /* Modal Animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } @keyframes scaleUp { from { opacity: 0; transform: scale(0.9) translateY(20px); } to { opacity: 1; transform: scale(1) translateY(0); } } @keyframes scaleDown { from { opacity: 1; transform: scale(1) translateY(0); } to { opacity: 0; transform: scale(0.9) translateY(20px); } } .animate-fade-in { animation: fadeIn 0.3s ease forwards; } .animate-fade-out { animation: fadeOut 0.2s ease forwards; } .animate-scale-up { animation: scaleUp 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards; } .animate-scale-down { animation: scaleDown 0.3s ease forwards; }