body { font-family: 'Inter', sans-serif; }

.leaflet-popup-content-wrapper {
    border-radius: 16px;
    padding: 4px;
    box-shadow: 0 15px 30px -5px rgba(0,0,0,.15), 0 10px 15px -6px rgba(0,0,0,.1);
    border: 1px solid #e2e8f0;
}
.leaflet-popup-close-button {
    padding: 12px !important;
    color: #475569 !important;
    font-size: 16px !important;
}

.custom-pin {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    box-shadow: 0 6px 12px -2px rgba(0,0,0,.35);
    border: 3px solid white;
    transition: all .3s cubic-bezier(.175,.885,.32,1.275);
}
.custom-pin:hover {
    transform: rotate(-45deg) scale(1.25) translateY(-4px);
    z-index: 9999 !important;
}
.custom-pin span {
    transform: rotate(45deg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 14px;
}

@media (min-width: 1024px) {
    .app-height { height: calc(100vh - 76px); }
}

@keyframes pulse-ring {
    0% { transform: scale(0.95); opacity: 1; }
    50% { opacity: 0.5; }
    100% { transform: scale(1.3); opacity: 0; }
}
.pulse-active::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    border: 3px solid #d97706;
    animation: pulse-ring 1.8s infinite;
    pointer-events: none;
}

.line-clamp-1 {
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
