/* Landing Page Keyframes — lazy-loaded, not needed for first paint */
@keyframes plix-fade-up { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } }
@keyframes plix-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes plix-scale-in { from { opacity: 0; transform: scale(0.92); } to { opacity: 1; transform: scale(1); } }
@keyframes plix-slide-right { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes plix-slide-left { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes plix-slide-up { from { opacity: 0; transform: translateY(100%); } to { opacity: 1; transform: translateY(0); } }
@keyframes plix-pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(139,92,246,0.2); } 50% { box-shadow: 0 0 40px rgba(249,83,11,0.35); } }
@keyframes plix-dash { to { stroke-dashoffset: 0; } }
@keyframes plix-counter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes plix-gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
@keyframes plix-float-subtle { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes plix-orbit { from { transform: rotate(0deg) translateX(160px) rotate(0deg); } to { transform: rotate(360deg) translateX(160px) rotate(-360deg); } }
@keyframes plix-flight-trail { from { stroke-dashoffset: 1200; } to { stroke-dashoffset: 0; } }
@keyframes plix-city-ping { 0%, 100% { transform: scale(1); opacity: 0.5; } 50% { transform: scale(2.2); opacity: 0; } }
@keyframes plix-cloud-drift-1 { 0% { transform: translateX(0); } 100% { transform: translateX(40px); } }
@keyframes plix-cloud-drift-2 { 0% { transform: translateX(0); } 100% { transform: translateX(-30px); } }
@keyframes plix-package-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes plix-coin-rise { 0% { opacity: 0; transform: translateY(0) scale(0.5); } 15% { opacity: 0.9; transform: translateY(-8px) scale(1); } 70% { opacity: 0.7; transform: translateY(-28px) scale(1); } 100% { opacity: 0; transform: translateY(-40px) scale(0.6); } }
@keyframes plix-earnings-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.08); } }
@keyframes plix-match-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.04); } }
@keyframes plix-match-glow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.7; } }
@keyframes plix-check-pop { 0% { transform: scale(0) rotate(-45deg); opacity: 0; } 60% { transform: scale(1.2) rotate(0deg); opacity: 1; } 100% { transform: scale(1) rotate(0deg); opacity: 1; } }
@keyframes plix-card-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes plix-beam-flow { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
@keyframes plix-confetti-1 { 0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } 100% { transform: translateY(-70px) rotate(360deg) scale(0); opacity: 0; } }
@keyframes plix-confetti-2 { 0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } 100% { transform: translateY(-55px) translateX(35px) rotate(-270deg) scale(0); opacity: 0; } }
@keyframes plix-confetti-3 { 0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } 100% { transform: translateY(-65px) translateX(-30px) rotate(200deg) scale(0); opacity: 0; } }
@keyframes plix-leaf-float { 0% { transform: translateY(0) rotate(0deg); opacity: 0; } 10% { opacity: 1; } 50% { transform: translateY(-20px) rotate(15deg); opacity: 0.9; } 100% { transform: translateY(-40px) rotate(-10deg); opacity: 0; } }
@keyframes plix-leaf-sway { 0%, 100% { transform: rotate(-5deg); } 50% { transform: rotate(8deg); } }
@keyframes plix-co2-pulse { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(34,197,94,0.3); } 50% { transform: scale(1.03); box-shadow: 0 0 20px 4px rgba(34,197,94,0.15); } }
@keyframes plix-receipt-appear { 0% { opacity: 0; transform: translateY(10px) scale(0.9); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes plix-slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }

/* App Keyframes */
@keyframes portaplix-spin { to { transform: rotate(360deg); } }
@keyframes portaplix-slideUp { from { transform: translate(-50%, 40px); opacity: 0; } to { transform: translate(-50%, 0); opacity: 1; } }
@keyframes portaplix-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes portaplix-marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
@keyframes portaplix-fadeIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes portaplix-logoPulse { 0%, 100% { filter: drop-shadow(0 0 8px rgba(255,85,10,0.3)); transform: scale(1); } 50% { filter: drop-shadow(0 0 24px rgba(255,85,10,0.6)); transform: scale(1.03); } }
@keyframes portaplix-logoReveal { 0% { opacity: 0; transform: scale(0.7) rotate(-8deg); filter: blur(8px); } 60% { opacity: 1; transform: scale(1.05) rotate(1deg); filter: blur(0); } 100% { opacity: 1; transform: scale(1) rotate(0deg); filter: blur(0); } }
@keyframes portaplix-logoBounce { 0% { transform: scale(1); } 20% { transform: scale(1.15); } 40% { transform: scale(0.95); } 60% { transform: scale(1.05); } 80% { transform: scale(0.98); } 100% { transform: scale(1); } }
@keyframes portaplix-logoShine { 0% { background-position: -200% center; } 100% { background-position: 200% center; } }
@keyframes portaplix-glowRing { 0%, 100% { box-shadow: 0 0 0 0 rgba(255,85,10,0.4); } 50% { box-shadow: 0 0 0 12px rgba(255,85,10,0); } }
@keyframes portaplix-stagger { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } }
@keyframes portaplix-routeGrow { from { width: 0%; opacity: 0; } to { width: 100%; opacity: 1; } }
@keyframes portaplix-countUp { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: scale(1); } }
@keyframes portaplix-dot { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } }

/* Stagger utility classes */
.plix-stagger-1 { animation: plix-fade-up 0.7s ease-out 0.1s both; }
.plix-stagger-2 { animation: plix-fade-up 0.7s ease-out 0.22s both; }
.plix-stagger-3 { animation: plix-fade-up 0.7s ease-out 0.34s both; }
.plix-stagger-4 { animation: plix-fade-up 0.7s ease-out 0.46s both; }
.plix-stagger-5 { animation: plix-fade-up 0.7s ease-out 0.58s both; }
