.fade-in-up{opacity:0;transform:translateY(20px);transition:opacity .5s ease-out,transform .5s ease-out}@media (max-width:768px){.fade-in-up{transform:translateY(15px);transition:opacity .4s ease-out,transform .4s ease-out}}.fade-in-up.visible{opacity:1;transform:translateY(0)}.hero-glow{animation:glow 3s ease-in-out infinite alternate}@media (max-width:768px){.hero-glow{animation:glow-mobile 2.5s ease-in-out infinite alternate}}@keyframes glow{0%{box-shadow:0 0 10px rgba(89,237,247,.2)}to{box-shadow:0 0 20px rgba(89,237,247,.4)}}@keyframes glow-mobile{0%{box-shadow:0 0 8px rgba(89,237,247,.15)}to{box-shadow:0 0 15px rgba(89,237,247,.3)}}.button-hover{transition:transform .3s ease,box-shadow .3s ease;touch-action:manipulation}@media (hover:hover){.button-hover:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}}@media (hover:none){.button-hover:active{transform:translateY(1px);transition:transform .1s ease}}.card-hover{transition:transform .3s ease,box-shadow .3s ease;will-change:transform}@media (hover:hover){.card-hover:hover{transform:translateY(-5px);box-shadow:0 8px 24px rgba(0,0,0,.12)}}@media (max-width:768px){.card-hover{transform:none!important;transition:opacity .3s ease}.card-hover:active{opacity:.95}}.gradient-bg{background:linear-gradient(45deg,#6366f1,#8b5cf6,#d946ef);background-size:200% 200%;animation:gradientMove 10s ease infinite}@media (max-width:768px){.gradient-bg{animation:gradientMove 8s ease infinite}}@keyframes gradientMove{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}