/* custom-animate.css Freshly authored animation set — no external licensing dependencies. Animations are original and uniquely implemented. */ /* Fade upward with slight scale */ @keyframes ca-fade-rise { 0% { opacity: 0; transform: translateY(20px) scale(0.98); } 60% { opacity: 1; transform: translateY(-4px) scale(1.02); } 100% { opacity: 1; transform: translateY(0) scale(1); } } .ca-fade-rise { animation: ca-fade-rise 0.8s ease-out both; } /* Soft zoom in */ @keyframes ca-soft-zoom { 0% { opacity: 0; transform: scale(0.85); } 70% { opacity: 1; transform: scale(1.03); } 100% { opacity: 1; transform: scale(1); } } .ca-soft-zoom { animation: ca-soft-zoom 0.7s ease-out both; } /* Slide left with overshoot */ @keyframes ca-slide-left { 0% { opacity: 0; transform: translateX(40px); } 70% { opacity: 1; transform: translateX(-6px); } 100% { transform: translateX(0); } } .ca-slide-left { animation: ca-slide-left 0.75s cubic-bezier(0.25, 0.8, 0.4, 1) both; } /* Slide right with overshoot */ @keyframes ca-slide-right { 0% { opacity: 0; transform: translateX(-40px); } 70% { opacity: 1; transform: translateX(6px); } 100% { transform: translateX(0); } } .ca-slide-right { animation: ca-slide-right 0.75s cubic-bezier(0.25, 0.8, 0.4, 1) both; } /* Pop bounce (custom elastic) */ @keyframes ca-pop-bounce { 0% { opacity: 0; transform: scale(0.6); } 50% { opacity: 1; transform: scale(1.15); } 75% { transform: scale(0.92); } 100% { transform: scale(1); } } .ca-pop-bounce { animation: ca-pop-bounce 0.9s cubic-bezier(0.3, 1.4, 0.4, 1) both; } /* Rotate in from corner */ @keyframes ca-rotate-in { 0% { opacity: 0; transform: rotate(-35deg) scale(0.9); transform-origin: bottom left; } 100% { opacity: 1; transform: rotate(0deg) scale(1); transform-origin: bottom left; } } .ca-rotate-in { animation: ca-rotate-in 0.85s ease-out both; } /* Drop and settle */ @keyframes ca-drop-settle { 0% { opacity: 0; transform: translateY(-60px); } 70% { opacity: 1; transform: translateY(10px); } 100% { transform: translateY(0); } } .ca-drop-settle { animation: ca-drop-settle 0.8s cubic-bezier(0.18, 0.8, 0.3, 1) both; } /* Pulse shimmer */ @keyframes ca-pulse-shimmer { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.07); } } .ca-pulse-shimmer { animation: ca-pulse-shimmer 1.2s ease-in-out infinite; } /* Flip up */ @keyframes ca-flip-up { 0% { opacity: 0; transform: rotateX(-80deg); transform-origin: bottom; } 100% { opacity: 1; transform: rotateX(0deg); transform-origin: bottom; } } .ca-flip-up { animation: ca-flip-up 0.7s ease-out both; } /* Ripple out */ @keyframes ca-ripple-out { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.25); } } .ca-ripple-out { animation: ca-ripple-out 0.6s ease-out both; }