/* Public map interactions, filters, geolocation and embedded-map states. */
/* Imported SVG paths may carry presentation attributes, so geometry state wins explicitly. */
.land-svg-overlay .zf-map-plot > .zf-rounded-polygon {
    stroke-linejoin: round !important;
    stroke-linecap: round !important;
}

.zf-map-number-marker.is-too-small {
    opacity: 0 !important;
    visibility: hidden !important;
}

.map-filter-range {
    display: grid;
    gap: 9px;
    padding: 12px;
    border: 1px solid rgba(16,59,45,.11);
    border-radius: 13px;
    background: rgba(255,255,255,.48);
}

.map-filter-range .range-head {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    align-items: baseline;
}

.map-filter-range .range-head strong {
    font-size: 12px;
}

.map-filter-range .range-head span {
    color: rgba(23,35,27,.58);
    font-size: 10px;
    white-space: nowrap;
}

.map-side-filters .dual-range-ui {
    min-height: 24px;
}

.map-price-auth-prompt {
    width: 100%;
    min-height: 44px;
    padding: 0 14px;
    border: 1px solid #7d1d25;
    border-radius: 12px;
    background: #8f232b;
    color: #fff;
    font: inherit;
    font-size: 12px;
    font-weight: 850;
    cursor: pointer;
}

.map-side-filters > .map-label-mode {
    display: grid;
    gap: 7px;
    padding: 12px;
    border: 1px solid rgba(16,59,45,.11);
    border-radius: 13px;
    background: rgba(255,255,255,.48);
    color: rgba(23,35,27,.72);
    font-size: 11px;
    font-weight: 800;
}

.map-label-mode select {
    width: 100%;
    min-height: 40px;
    padding: 0 34px 0 10px;
    border: 1px solid rgba(16,59,45,.14);
    border-radius: 10px;
    background: rgba(255,255,255,.9);
    color: #17231b;
    font: 700 12px/1.2 Manrope, Arial, sans-serif;
}

.public-map-embed .zf-map-plot,
.public-map-embed .zf-map-plot > * {
    cursor: default !important;
}

.map-side-list-item[hidden] {
    display: none !important;
}

.map-side-list-top {
    width: 100%;
    justify-content: flex-start;
    gap: 7px;
}

.map-side-list-top > strong,
.map-side-list-top > .map-status-chip {
    order: initial;
    flex: 0 0 auto;
}

.map-side-list-top > strong {
    margin-left: 0;
    text-align: left;
}

.map-side-list-meta {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    align-items: baseline;
    gap: 10px;
}

.map-side-list-area {
    justify-self: start;
    text-align: left;
}

.map-side-list-price {
    justify-self: end;
}

.map-location-button svg {
    width: 20px;
    height: 20px;
    display: block;
    fill: currentColor;
}

.map-zoom-control .map-location-button {
    color: #2563eb;
}

.map-zoom-control .map-location-button:hover:not(:disabled) {
    background: rgba(37,99,235,.10);
}

.map-zoom-control .map-location-button:disabled,
.map-zoom-control .map-location-button.is-disabled {
    color: rgba(16,59,45,.28);
    background: rgba(16,59,45,.035);
    cursor: not-allowed;
}

.map-zoom-control .map-location-button.is-active {
    color: #1d4ed8;
    background: rgba(37,99,235,.12);
}

.map-zoom-control .map-location-button.is-error {
    color: #9f1239;
    background: rgba(159,18,57,.08);
}

.map-zoom-control .map-location-button.is-locating svg,
.map-location-control .map-location-button.is-locating svg {
    animation: map-location-pulse .9s ease-in-out infinite alternate;
}

@keyframes map-location-pulse {
    from { opacity: .42; transform: scale(.90); }
    to { opacity: 1; transform: scale(1.08); }
}

.map-location-control {
    position: relative;
    z-index: 1;
    width: 43px;
    overflow: hidden;
    border: 1px solid rgba(16,59,45,.15);
    border-radius: 14px;
    background: rgba(255,255,255,.92);
    box-shadow: 0 12px 32px rgba(16,59,45,.16);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.map-location-control .map-location-button {
    width: 43px;
    height: 43px;
    display: grid;
    place-items: center;
    border: 0;
    background: transparent;
    color: #2563eb;
    cursor: pointer;
}

.map-location-control .map-location-button:hover:not(:disabled) {
    background: rgba(37,99,235,.10);
}

.map-location-control .map-location-button:disabled,
.map-location-control .map-location-button.is-disabled {
    color: rgba(16,59,45,.28);
    background: rgba(16,59,45,.035);
    cursor: not-allowed;
}

.map-location-control .map-location-button.is-active {
    color: #1d4ed8;
    background: rgba(37,99,235,.12);
}

.map-location-control .map-location-button.is-error {
    color: #9f1239;
    background: rgba(159,18,57,.08);
}

.map-location-consent[hidden] {
    display: none !important;
}

.map-location-consent {
    position: fixed;
    inset: 0;
    z-index: 12000;
    display: grid;
    place-items: center;
    padding: 18px;
}

.map-location-consent-backdrop {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    background: rgba(6,20,14,.58);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    cursor: default;
}

.map-location-consent-dialog {
    position: relative;
    z-index: 1;
    width: min(470px, 100%);
    display: grid;
    justify-items: center;
    gap: 12px;
    padding: 30px 28px 26px;
    border: 1px solid rgba(255,255,255,.65);
    border-radius: 24px;
    background: rgba(255,255,255,.97);
    box-shadow: 0 32px 90px rgba(0,0,0,.30);
    color: #17231b;
    text-align: center;
}

.map-location-consent-close {
    position: absolute;
    top: 10px;
    right: 12px;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #657169;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
}

.map-location-consent-close:hover {
    background: #f0f3f1;
}

.map-location-consent-icon {
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(37,99,235,.10);
    color: #2563eb;
}

.map-location-consent-icon svg {
    width: 28px;
    height: 28px;
    fill: currentColor;
}

.map-location-consent-dialog h2 {
    margin: 0;
    font-family: var(--zf-font-display);
    font-size: 24px;
    line-height: 1.1;
}

.map-location-consent-dialog p,
.map-location-consent-content {
    margin: 0;
    color: #4f5d55;
    font-size: 14px;
    line-height: 1.6;
}

.map-location-consent-content {
    white-space: pre-line;
}

.map-location-consent-content p {
    margin: 0 0 9px;
}

.map-location-consent-content p:last-child {
    margin-bottom: 0;
}

.map-location-consent-content ul,
.map-location-consent-content ol {
    margin: 8px 0 0;
    padding-left: 22px;
    text-align: left;
}

.map-location-consent-content strong {
    color: #17231b;
}

.map-location-consent-confirm {
    min-width: 170px;
    min-height: 46px;
    margin-top: 4px;
    padding: 11px 22px;
    border: 0;
    border-radius: 14px;
    background: #174c37;
    color: #fff;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
    box-shadow: 0 10px 24px rgba(23,76,55,.20);
}

.map-location-consent-confirm:hover {
    background: #103b2d;
}

body.map-location-consent-open {
    overflow: hidden;
}

/* Leaflet and imported map paths may apply presentation styles directly to SVG nodes. */
.public-map-embed .zf-map-plot:not(.is-current-plot) > polygon,
.public-map-embed .zf-map-plot:not(.is-current-plot) > path,
.public-map-embed .zf-map-plot:not(.is-current-plot) > polyline {
    fill-opacity: .20 !important;
    stroke-opacity: .20 !important;
    filter: none !important;
}

.public-map-embed .zf-map-number-marker:not(.is-current-plot-label) {
    opacity: .20 !important;
}

.public-map-embed .zf-map-number-marker.is-current-plot-label {
    opacity: 1 !important;
}

.map-basemap-current [data-map-basemap-current] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.land-leaflet-map path.land-geojson-plot {
    cursor: pointer;
    vector-effect: non-scaling-stroke;
    transition: fill-opacity .16s ease, stroke-width .16s ease, filter .16s ease;
}

.land-leaflet-map path.land-geojson-plot:hover,
.land-leaflet-map path.land-geojson-plot.is-hover {
    fill-opacity: 1 !important;
}

.land-leaflet-map path.land-geojson-plot.is-filter-muted {
    fill: #b7b9b7 !important;
    fill-opacity: .22 !important;
    stroke: #8c8f8c !important;
    stroke-opacity: .35 !important;
    filter: none !important;
}

.land-leaflet-map path.land-geojson-plot.is-list-highlight {
    fill-opacity: 1 !important;
    stroke: #f0b429 !important;
    stroke-width: 3 !important;
    filter: drop-shadow(0 0 8px rgba(240,180,41,.95)) !important;
}

.land-leaflet-map path.land-geojson-plot.is-current-plot {
    fill: #9bf23f !important;
    fill-opacity: 1 !important;
    stroke: #2d7d15 !important;
    stroke-width: 2.4 !important;
    filter: drop-shadow(0 0 7px rgba(155,242,63,.78)) !important;
}

.public-map-embed path.land-geojson-plot:not(.is-current-plot) {
    fill-opacity: .20 !important;
    stroke-opacity: .20 !important;
    filter: none !important;
}

@media (max-width: 780px) {
    .land-map-brandbar {
        top: 8px;
        left: 8px;
        right: 8px;
        width: auto;
        max-width: none;
        min-height: 54px;
        box-sizing: border-box;
    }

    .land-map-title-switch {
        flex: 1 1 auto;
        min-width: 0;
    }

    .land-map-title-switch summary {
        max-width: none;
        width: 100%;
    }

    .land-map-toolbar {
        flex: 0 0 auto;
        margin-left: auto;
    }

    .map-controls-left.map-controls-right {
        top: 72px;
        left: 8px;
        right: 8px;
        width: auto;
        display: flex;
        align-items: flex-start;
        justify-content: flex-end;
        gap: 8px;
    }

    .map-controls-right .map-basemap-select {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        max-width: 170px;
    }

    .map-controls-right .map-zoom-control {
        flex: 0 0 auto;
        width: 86px;
        display: flex;
    }

    .map-controls-right .map-zoom-control button {
        flex: 0 0 43px;
        height: 43px;
    }

    .map-controls-right .map-zoom-control button + button {
        border-top: 0;
        border-left: 1px solid rgba(16,59,45,.12);
    }

    .map-controls-right .map-location-control {
        flex: 0 0 43px;
    }

    .public-map-view .map-align-toggle {
        top: 126px;
    }

    .public-map-view .map-align-panel {
        top: 126px;
        max-height: calc(100dvh - 134px);
    }
}

@media (max-width: 620px) {
    .map-location-consent-dialog {
        padding: 26px 20px 22px;
        border-radius: 20px;
    }

    .map-location-consent-dialog h2 {
        font-size: 22px;
    }

    .map-location-consent-dialog p,
    .map-location-consent-content {
        font-size: 13px;
    }
}
