*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100vh;width:100vw}.custom-user-marker{background:#ef4444;border:2px solid white;border-radius:50%;box-shadow:0 2px 4px #0000004d}@keyframes wave-slow{0%{transform:translate(0)}to{transform:translate(-400px)}}.animate-wave-slow{animation:wave-slow 10s linear infinite}@keyframes wave-fast{0%{transform:translate(0)}to{transform:translate(-400px)}}.animate-wave-fast{animation:wave-fast 6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .3s ease-in-out}@keyframes slideInFromTop{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-in-from-top{animation:slideInFromTop .3s ease-out}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#1e293b}::-webkit-scrollbar-thumb{background:#475569;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#64748b}.focus\:ring-red-500:focus{--tw-ring-color: #ef4444}.focus\:border-red-500:focus{border-color:#ef4444}.btn-hover-scale:hover{transform:scale(1.05);transition:transform .2s ease-in-out}.leaflet-container{height:100%;width:100%}.leaflet-control-attribution,.leaflet-control-zoom{display:none!important}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-slide-down{animation:slideDown .2s ease-out}.error-message{@apply bg-red-600/20 border border-red-600 rounded-lg text-red-400 text-center p-3;}.success-message{@apply bg-green-600/20 border border-green-600 rounded-lg text-green-400 text-center p-3;}.loading-spinner{@apply inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin;}
