@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 8px #0ea5e94d}50%{box-shadow:0 0 20px #0ea5e999}}.animate-fade-in{animation:.5s ease-out forwards fadeIn}.animate-slide-up{animation:.6s ease-out forwards slideUp}.animate-pulse-glow{animation:2s ease-in-out infinite pulse-glow}@keyframes revealUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes revealLeft{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}@keyframes revealRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes revealNone{0%{opacity:0}to{opacity:1}}.scroll-hidden{opacity:0}.scroll-reveal-up{animation:.7s ease-out forwards revealUp}.scroll-reveal-left{animation:.7s ease-out forwards revealLeft}.scroll-reveal-right{animation:.7s ease-out forwards revealRight}.scroll-reveal-none{animation:.7s ease-out forwards revealNone}.hover-scale{transition:transform .2s,box-shadow .2s}.hover-scale:hover{transform:scale(1.02);box-shadow:0 4px 20px #00000014}.city-card{transition:transform .25s,box-shadow .25s,border-color .25s}.city-card:hover{border-color:#0ea5e94d;transform:translateY(-3px);box-shadow:0 12px 24px #0ea5e91f}@keyframes ctaPulse{0%,to{box-shadow:0 0 #0ea5e966}50%{box-shadow:0 0 0 8px #0ea5e900}}.cta-pulse{animation:2.5s infinite ctaPulse}.transition-smooth{transition:all .2s}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.animate-fade-in-left{animation:.5s ease-out forwards fadeInLeft}.animate-fade-in-right{animation:.5s ease-out forwards fadeInRight}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.animate-blink{animation:.8s ease-in-out infinite blink}@keyframes heroPan{0%{transform:scale(1.1)translate(0)}25%{transform:scale(1.15)translate(-1%,-.5%)}50%{transform:scale(1.12)translate(-.5%,.5%)}75%{transform:scale(1.18)translate(.5%,-.3%)}to{transform:scale(1.1)translate(0)}}.animate-hero-pan{animation:30s ease-in-out infinite heroPan}@keyframes float{0%,to{transform:translate(0)}33%{transform:translate(10px,-15px)}66%{transform:translate(-8px,8px)}}@keyframes floatDelayed{0%,to{transform:translate(0)}33%{transform:translate(-12px,10px)}66%{transform:translate(6px,-12px)}}@keyframes floatSlow{0%,to{transform:translate(0)}50%{transform:translate(8px,-8px)}}.animate-float{animation:8s ease-in-out infinite float}.animate-float-delayed{animation:10s ease-in-out infinite floatDelayed}.animate-float-slow{animation:12s ease-in-out infinite floatSlow}.hero-stagger-1{opacity:0;animation:.6s ease-out .1s forwards fadeIn}.hero-stagger-2{opacity:0;animation:.6s ease-out .25s forwards fadeIn}.hero-stagger-3{opacity:0;animation:.6s ease-out .4s forwards fadeIn}.hero-stagger-4{opacity:0;animation:.6s ease-out .55s forwards fadeIn}.hero-stagger-5{opacity:0;animation:.6s ease-out .7s forwards fadeIn}.hero-stagger-6{opacity:0;animation:.6s ease-out .85s forwards fadeIn}@media (prefers-reduced-motion:reduce){.animate-hero-pan,.animate-float,.animate-float-delayed,.animate-float-slow,.animate-blink,.hero-stagger-1,.hero-stagger-2,.hero-stagger-3,.hero-stagger-4,.hero-stagger-5,.hero-stagger-6{opacity:1;animation:none}}