@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}@keyframes markerBounce{0%{transform:translateY(-100px) scale(0);opacity:0}50%{transform:translateY(10px) scale(1.1);opacity:1}70%{transform:translateY(-5px) scale(.95)}85%{transform:translateY(2px) scale(1.02)}to{transform:translateY(0) scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes swing{0%,to{transform:rotate(0deg)}25%{transform:rotate(5deg)}75%{transform:rotate(-5deg)}}.map-marker-hover:hover{animation:pulse .5s ease-in-out;cursor:pointer}.map-marker-animated{animation:markerBounce .6s cubic-bezier(.68,-.55,.265,1.55)}.map-marker-highlighted{animation:pulse 2s infinite;filter:drop-shadow(0 0 10px rgba(220,38,38,.6))}.map-balloon-enter{animation:fadeIn .3s ease-out}.map-marker-shadow{animation:pulse 2s infinite;opacity:.3}@media (max-width:768px){.map-marker-mobile{transform:scale(.9)}.map-marker-mobile.highlighted{transform:scale(1)}}.map-marker-touch{padding:10px;margin:-10px}@keyframes clusterPulse{0%,to{transform:scale(1);box-shadow:0 0 0 0 rgba(59,130,246,.7)}50%{transform:scale(1.05);box-shadow:0 0 0 10px rgba(59,130,246,0)}}.map-cluster{animation:clusterPulse 2s infinite}@keyframes mapLoading{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.map-loading-skeleton{background:linear-gradient(90deg,#f0f0f0,#f8f8f8 40px,#f0f0f0 80px);background-size:200px 100%;animation:mapLoading 1.5s infinite}