@keyframes app-fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.animate-app-fade-up{animation:app-fade-up .55s cubic-bezier(.22,.61,.36,1) both}@keyframes app-gradient-pan{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.animate-app-gradient-pan{animation:app-gradient-pan 7s ease-in-out infinite}@keyframes app-shimmer-slide{0%{transform:translateX(-150%)}to{transform:translateX(450%)}}.animate-app-shimmer-slide{animation:app-shimmer-slide 2.4s cubic-bezier(.4,0,.2,1) infinite}@keyframes app-orb-drift{0%{transform:translate(0) scale(1)}25%{transform:translate(40px,-30px) scale(1.05)}50%{transform:translate(-20px,40px) scale(.97)}75%{transform:translate(-40px,-10px) scale(1.03)}to{transform:translate(0) scale(1)}}.animate-app-orb-drift{animation:app-orb-drift 18s ease-in-out infinite}@keyframes app-pulse-glow{0%,to{box-shadow:0 0 0 0 hsl(351 81% 49%/.35)}50%{box-shadow:0 0 0 14px hsl(351 81% 49%/0)}}.animate-app-pulse-glow{animation:app-pulse-glow 2.4s ease-out infinite}.app-grain{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.6'/></svg>");background-size:180px 180px}@media (prefers-reduced-motion:reduce){.animate-app-fade-up,.animate-app-gradient-pan,.animate-app-orb-drift,.animate-app-pulse-glow,.animate-app-shimmer-slide{animation:none!important}}