.map-container {
    position: relative;
    width: 100%;
    max-width: 942px; /* Original SVG width for reference */
    margin: auto;
}

.map-container svg {
    width: 100%;
    height: auto;
}

/* POI Marker Styling */
.map-container .poi-marker {
    opacity: 0;
    transition: opacity 0.7s ease-in-out;
    cursor: pointer;
}

.map-container .poi-marker.visible {
    opacity: 1;
}

.map-container .poi-marker text {
    font-family: sans-serif;
    font-size: 16px;
    fill: #333;
}

.map-container .poi-marker rect {
    fill: white;
    stroke: #ccc;
    stroke-width: 1px;
}

@keyframes pulse {
    0% {
        transform: scale(1);
        opacity: 0.6;
    }
    50% {
        transform: scale(1.5); /* Pulse outwards */
        opacity: 0;
    }
    100% {
        transform: scale(1.5);
        opacity: 0;
    }
}

.map-container .poi-dot {
    fill: #565689;
    cursor: pointer;
}

.map-container .poi-pulse {
    fill: #754491;
    animation: pulse 1.5s infinite ease-out;
    transform-origin: center;
    transform-box: fill-box;
    pointer-events: none;
}


/* Overlay (Sidebar) Styling */
#map-overlay {
    position: fixed;
    top: 0;
    right: 0;
    height: 100%;
    width: 35vw;
    background: #FFF;
    box-shadow: -4px 4px 4px 0 rgba(0, 0, 0, 0.25);
    transform: translateX(140%);
    transition: transform 0.4s ease-in-out;
    z-index: 1030;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

#map-overlay.open {
    transform: translateX(0);
}

#map-overlay .overlay-header {
    padding: 1rem 1.5rem;
    text-align: right;
}

#map-overlay #close-btn {
    background: none;
    border: none;
    font-size: 2rem;
    cursor: pointer;
    line-height: 1;
}

#map-overlay .overlay-content {
    padding: 0 1.5rem 1.5rem;
    flex-grow: 1;
}

#map-overlay .overlay-content h2 {
    margin-top: 0;
}

#map-overlay .info-block {
    border-top: 1px solid #eee;
    padding: 1rem 0;
}

#map-overlay .info-block .label {
    font-weight: bold;
    display: block;
    margin-bottom: 0.25rem;
}

#map-overlay .info-block p {
    margin: 0;
}

#map-overlay .content-image {
    width: 100%;
    height: auto;
    margin-top: 1.5rem;
}

.map-container svg .html-label-wrapper {
    /* These styles apply to the div, not the SVG element */
    box-sizing: border-box; /* Important for consistent sizing */
    width: 100%;
    height: 100%;

    /* Your exact requested styles */
    border-radius: 8px; /* Note: Asymmetrical radius is harder here too */
    background: #FFF;
    box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.10);

    /* And now you can use Flexbox for perfect centering! */
    display: flex;
    justify-content: center;
    align-items: center;

    font-family: 'Open Sans', sans-serif;
    font-size: 17px;
    color: #000;
    transition: all 0.15s cubic-bezier(.46,.03,.52,.96);
    padding: 7px;
}

.map-container svg foreignObject {
    overflow: visible;
}

.map-container svg .poi-marker.hover .html-label-wrapper,
.map-container svg .html-label-wrapper:hover{
    box-shadow: 0 10px 5px 0 rgba(0, 0, 0, 0.2);
    transform: translateY(-3px);
}

.overlay-content img {
    width: 100%;
    max-width: 100%;
    height: auto;
}

.map-container svg .poi-marker:nth-of-type(2) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(3) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(4) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(6) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(8) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(9) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(10) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(12) .html-label-wrapper
{
    border-top-right-radius: 0;
}
.map-container svg .poi-marker:nth-of-type(5) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(7) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(11) .html-label-wrapper,
.map-container svg .poi-marker:nth-of-type(13) .html-label-wrapper
{
    border-top-left-radius: 0;
}

/* Responsive adjustments for mobile */
@media (max-width: 768px) {
    #map-overlay {
        width: 100%;
    }
}

