.animate-in{opacity:0;transform:translateY(30px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.animate-in.visible{opacity:1;transform:translateY(0)}.stagger-child{opacity:0;transform:translateY(30px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.stagger-child.visible{opacity:1;transform:translateY(0)}.animate-scale{opacity:0;transform:scale(.95);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.animate-scale.visible{opacity:1;transform:scale(1)}.animate-slide-left{opacity:0;transform:translate(-20px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.animate-slide-left.visible{opacity:1;transform:translate(0)}.animate-slide-right{opacity:0;transform:translate(20px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.animate-slide-right.visible{opacity:1;transform:translate(0)}@keyframes gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes pulseGlow{0%,to{box-shadow:0 0 20px #2563eb33}50%{box-shadow:0 0 40px #2563eb66}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes drawRoute{to{stroke-dashoffset:0}}@keyframes countUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.animate-in,.stagger-child,.animate-scale,.animate-slide-left,.animate-slide-right{opacity:1;transform:none}}
