{"id":33943,"date":"2026-01-15T15:18:22","date_gmt":"2026-01-15T14:18:22","guid":{"rendered":"https:\/\/plexoproperties.com\/kortsoegning\/"},"modified":"2026-06-08T07:00:35","modified_gmt":"2026-06-08T06:00:35","slug":"kortsoegning","status":"publish","type":"page","link":"https:\/\/plexoproperties.com\/da\/kortsoegning\/","title":{"rendered":"Korts\u00f8gning"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"33943\" class=\"elementor elementor-33943 elementor-33906\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1e181e e-flex e-con-boxed e-con e-parent\" data-id=\"c1e181e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9185fe6 elementor-widget elementor-widget-heading\" data-id=\"9185fe6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Korts\u00f8gning<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d5ab691 e-con-full e-flex e-con e-parent\" data-id=\"d5ab691\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a9c313 elementor-widget elementor-widget-shortcode\" data-id=\"5a9c313\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<style>\n\/* =============================================================================\n * MAP SEARCH - NEW DEVELOPMENTS v2.5.9\n * Houzez-styled interactive map search page with CLICKABLE POPUPS\n * ============================================================================= *\/\n\n:root {\n    --roh-primary: #153965;\n    --roh-primary-hover: #1e4a7d;\n    --roh-link: #a58a56;\n    --roh-link-hover: #c4a066;\n    --roh-text: #2e3e49;\n    --roh-text-muted: #8b9898;\n    --roh-border: #dce0e0;\n    --roh-bg: #f8f9fa;\n    --roh-white: #ffffff;\n    --roh-shadow: 0 2px 15px rgba(0, 0, 0, 0.08);\n    --roh-shadow-lg: 0 10px 40px rgba(0, 0, 0, 0.15);\n    --roh-green: #00a854;\n    --roh-radius: 8px;\n}\n\n\/* Reset & Base *\/\n.roh-map-search * { box-sizing: border-box; }\n.roh-map-search {\n    font-family: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    display: flex;\n    flex-direction: column;\n    height: calc(100vh - 80px);\n    min-height: 600px;\n    background: var(--roh-bg);\n}\n\n\/* =============================================================================\n * TOP SECTION - MAP & FILTERS SIDE BY SIDE\n * ============================================================================= *\/\n.roh-map-container {\n    display: flex;\n    flex: 1;\n    min-height: 450px;\n    position: relative;\n}\n\n\/* Map Area *\/\n.roh-map-area {\n    flex: 1;\n    position: relative;\n    background: #e8e8e8;\n}\n\n#roh-property-map {\n    width: 100%;\n    height: 100%;\n    z-index: 1;\n}\n\n\/* Map Controls *\/\n.roh-map-controls {\n    position: absolute;\n    top: 15px;\n    left: 15px;\n    z-index: 1000;\n    display: flex;\n    gap: 8px;\n}\n\n.roh-map-btn {\n    background: var(--roh-white);\n    border: none;\n    padding: 10px 15px;\n    border-radius: var(--roh-radius);\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--roh-text);\n    cursor: pointer;\n    box-shadow: var(--roh-shadow);\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    transition: all 0.2s ease;\n}\n\n.roh-map-btn:hover {\n    background: var(--roh-primary);\n    color: var(--roh-white);\n}\n\n.roh-map-btn svg {\n    width: 16px;\n    height: 16px;\n}\n\n\/* Navigation Arrows *\/\n.roh-map-nav {\n    position: absolute;\n    top: 15px;\n    right: 15px;\n    z-index: 1000;\n    display: flex;\n    gap: 5px;\n}\n\n.roh-nav-btn {\n    background: var(--roh-primary);\n    color: var(--roh-white);\n    border: none;\n    padding: 10px 18px;\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    transition: background 0.2s ease;\n}\n\n.roh-nav-btn:first-child {\n    border-radius: var(--roh-radius) 0 0 var(--roh-radius);\n}\n\n.roh-nav-btn:last-child {\n    border-radius: 0 var(--roh-radius) var(--roh-radius) 0;\n}\n\n.roh-nav-btn:hover {\n    background: var(--roh-primary-hover);\n}\n\n.roh-nav-btn:disabled {\n    background: #ccc;\n    cursor: not-allowed;\n}\n\n.roh-nav-btn svg {\n    width: 14px;\n    height: 14px;\n}\n\n\/* Fullscreen Button *\/\n.roh-fullscreen-btn {\n    position: absolute;\n    bottom: 15px;\n    right: 15px;\n    z-index: 1000;\n    background: rgba(0, 0, 0, 0.7);\n    color: var(--roh-white);\n    border: none;\n    padding: 10px 16px;\n    border-radius: var(--roh-radius);\n    font-size: 12px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    transition: background 0.2s ease;\n}\n\n.roh-fullscreen-btn:hover {\n    background: rgba(0, 0, 0, 0.85);\n}\n\n.roh-fullscreen-btn svg {\n    width: 14px;\n    height: 14px;\n}\n\n\/* =============================================================================\n * FILTER SIDEBAR\n * ============================================================================= *\/\n.roh-filter-sidebar {\n    width: 420px;\n    background: var(--roh-white);\n    border-left: 1px solid var(--roh-border);\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n}\n\n.roh-filter-scroll {\n    flex: 1;\n    overflow-y: auto;\n    padding: 25px;\n}\n\n\/* Search Input *\/\n.roh-search-input-wrap {\n    position: relative;\n    margin-bottom: 20px;\n}\n\n.roh-search-input-wrap input {\n    width: 100%;\n    padding: 14px 15px 14px 45px;\n    border: 1px solid var(--roh-border);\n    border-radius: var(--roh-radius);\n    font-size: 14px;\n    color: var(--roh-text);\n    transition: border-color 0.2s ease;\n}\n\n.roh-search-input-wrap input:focus {\n    outline: none;\n    border-color: var(--roh-primary);\n}\n\n.roh-search-input-wrap input::placeholder {\n    color: var(--roh-text-muted);\n}\n\n.roh-search-input-wrap svg {\n    position: absolute;\n    left: 15px;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 18px;\n    height: 18px;\n    fill: var(--roh-text-muted);\n}\n\n\/* Filter Grid *\/\n.roh-filter-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 15px;\n    margin-bottom: 20px;\n}\n\n.roh-filter-group {\n    position: relative;\n}\n\n.roh-filter-group.full-width {\n    grid-column: span 2;\n}\n\n.roh-filter-group label {\n    display: none;\n}\n\n.roh-filter-group select,\n.roh-filter-group input {\n    width: 100%;\n    padding: 12px 15px;\n    border: 1px solid var(--roh-border);\n    border-radius: var(--roh-radius);\n    font-size: 14px;\n    color: var(--roh-text);\n    background: var(--roh-white);\n    cursor: pointer;\n    appearance: none;\n    transition: border-color 0.2s ease;\n}\n\n.roh-filter-group select {\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238b9898' d='M6 8L1 3h10z'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: right 15px center;\n    padding-right: 40px;\n}\n\n.roh-filter-group select:focus,\n.roh-filter-group input:focus {\n    outline: none;\n    border-color: var(--roh-primary);\n}\n\n\/* Other Features Toggle *\/\n.roh-features-toggle {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 12px 0;\n    font-size: 14px;\n    font-weight: 500;\n    color: var(--roh-text);\n    cursor: pointer;\n    border: none;\n    background: none;\n    width: 100%;\n    text-align: left;\n}\n\n.roh-features-toggle svg {\n    width: 16px;\n    height: 16px;\n    transition: transform 0.2s ease;\n}\n\n.roh-features-toggle.open svg {\n    transform: rotate(45deg);\n}\n\n.roh-features-panel {\n    display: none;\n    padding: 15px 0;\n    border-top: 1px solid var(--roh-border);\n}\n\n.roh-features-panel.open {\n    display: block;\n}\n\n.roh-features-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 10px;\n}\n\n.roh-feature-checkbox {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 13px;\n    color: var(--roh-text);\n    cursor: pointer;\n}\n\n.roh-feature-checkbox input {\n    width: 16px;\n    height: 16px;\n    accent-color: var(--roh-primary);\n}\n\n\/* Filter Actions *\/\n.roh-filter-actions {\n    display: flex;\n    gap: 10px;\n    margin-top: 20px;\n    padding-top: 20px;\n    border-top: 1px solid var(--roh-border);\n}\n\n.roh-btn-search {\n    flex: 1;\n    background: var(--roh-green);\n    color: var(--roh-white);\n    border: none;\n    padding: 14px 20px;\n    border-radius: var(--roh-radius);\n    font-size: 15px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: background 0.2s ease;\n}\n\n.roh-btn-search:hover {\n    background: #00b862;\n}\n\n.roh-btn-save {\n    background: var(--roh-white);\n    color: var(--roh-text);\n    border: 1px solid var(--roh-border);\n    padding: 14px 20px;\n    border-radius: var(--roh-radius);\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    transition: all 0.2s ease;\n}\n\n.roh-btn-save:hover {\n    border-color: var(--roh-primary);\n    color: var(--roh-primary);\n}\n\n.roh-btn-save svg {\n    width: 16px;\n    height: 16px;\n}\n\n.roh-btn-clear {\n    background: none;\n    border: none;\n    color: var(--roh-text-muted);\n    font-size: 14px;\n    cursor: pointer;\n    padding: 14px 15px;\n}\n\n.roh-btn-clear:hover {\n    color: var(--roh-text);\n}\n\n\/* =============================================================================\n * RESULTS COUNT & SORT\n * ============================================================================= *\/\n.roh-results-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 15px 25px;\n    background: var(--roh-white);\n    border-top: 1px solid var(--roh-border);\n    flex-wrap: wrap;\n    gap: 10px;\n}\n\n.roh-results-count {\n    font-size: 15px;\n    font-weight: 600;\n    color: var(--roh-text);\n}\n\n.roh-results-sort {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n}\n\n.roh-results-sort label {\n    font-size: 13px;\n    color: var(--roh-text-muted);\n}\n\n.roh-results-sort select {\n    padding: 8px 30px 8px 12px;\n    border: 1px solid var(--roh-border);\n    border-radius: 5px;\n    font-size: 13px;\n    color: var(--roh-text);\n    background: var(--roh-white);\n    cursor: pointer;\n    appearance: none;\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%238b9898' d='M5 7L1 3h8z'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: right 10px center;\n}\n\n.roh-view-toggle {\n    display: flex;\n    gap: 5px;\n}\n\n.roh-view-btn {\n    background: none;\n    border: 1px solid var(--roh-border);\n    padding: 8px 10px;\n    cursor: pointer;\n    border-radius: 5px;\n    transition: all 0.2s ease;\n}\n\n.roh-view-btn:hover,\n.roh-view-btn.active {\n    background: var(--roh-primary);\n    border-color: var(--roh-primary);\n}\n\n.roh-view-btn:hover svg,\n.roh-view-btn.active svg {\n    fill: var(--roh-white);\n}\n\n.roh-view-btn svg {\n    width: 16px;\n    height: 16px;\n    fill: var(--roh-text-muted);\n    display: block;\n}\n\n\/* =============================================================================\n * PROPERTY LISTINGS (SIDEBAR)\n * ============================================================================= *\/\n.roh-listings-sidebar {\n    flex: 1;\n    overflow-y: auto;\n    padding: 0 25px 25px;\n}\n\n.roh-property-card {\n    background: var(--roh-white);\n    border: 1px solid var(--roh-border);\n    border-radius: var(--roh-radius);\n    overflow: hidden;\n    margin-bottom: 15px;\n    transition: all 0.3s ease;\n    cursor: pointer;\n}\n\n.roh-property-card:hover {\n    box-shadow: var(--roh-shadow-lg);\n    transform: translateY(-2px);\n}\n\n.roh-property-card.highlighted {\n    border-color: var(--roh-primary);\n    box-shadow: 0 0 0 2px rgba(21, 57, 101, 0.2);\n}\n\n.roh-card-image {\n    position: relative;\n    height: 180px;\n    overflow: hidden;\n}\n\n.roh-card-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform 0.3s ease;\n}\n\n.roh-property-card:hover .roh-card-image img {\n    transform: scale(1.05);\n}\n\n.roh-card-badge {\n    position: absolute;\n    top: 12px;\n    left: 12px;\n    background: var(--roh-green);\n    color: var(--roh-white);\n    padding: 5px 10px;\n    border-radius: 4px;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n}\n\n.roh-card-badge.new-dev {\n    background: var(--roh-primary);\n}\n\n.roh-card-price {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    background: var(--roh-white);\n    color: var(--roh-text);\n    padding: 6px 12px;\n    border-radius: 4px;\n    font-size: 16px;\n    font-weight: 700;\n}\n\n.roh-card-actions {\n    position: absolute;\n    bottom: 12px;\n    left: 12px;\n    right: 12px;\n    display: flex;\n    justify-content: flex-end;\n    gap: 8px;\n    opacity: 0;\n    transition: opacity 0.2s ease;\n}\n\n.roh-property-card:hover .roh-card-actions {\n    opacity: 1;\n}\n\n.roh-card-action-btn {\n    background: rgba(255, 255, 255, 0.9);\n    border: none;\n    width: 32px;\n    height: 32px;\n    border-radius: 50%;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.2s ease;\n}\n\n.roh-card-action-btn:hover {\n    background: var(--roh-white);\n    transform: scale(1.1);\n}\n\n.roh-card-action-btn svg {\n    width: 16px;\n    height: 16px;\n    fill: var(--roh-text);\n}\n\n.roh-card-content {\n    padding: 15px;\n}\n\n.roh-card-title {\n    font-size: 16px;\n    font-weight: 600;\n    color: var(--roh-text);\n    margin: 0 0 8px;\n    line-height: 1.3;\n}\n\n.roh-card-title a {\n    color: inherit;\n    text-decoration: none;\n}\n\n.roh-card-title a:hover {\n    color: var(--roh-link);\n}\n\n.roh-card-location {\n    font-size: 13px;\n    color: var(--roh-text-muted);\n    margin-bottom: 12px;\n    display: flex;\n    align-items: center;\n    gap: 5px;\n}\n\n.roh-card-location svg {\n    width: 14px;\n    height: 14px;\n    fill: var(--roh-link);\n    flex-shrink: 0;\n}\n\n.roh-card-meta {\n    display: flex;\n    gap: 15px;\n    padding-top: 12px;\n    border-top: 1px solid var(--roh-border);\n    flex-wrap: wrap;\n}\n\n.roh-card-meta-item {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 13px;\n    color: var(--roh-text);\n}\n\n.roh-card-meta-item svg {\n    width: 16px;\n    height: 16px;\n    fill: var(--roh-text-muted);\n}\n\n.roh-card-type {\n    font-size: 11px;\n    color: var(--roh-text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin-top: 10px;\n}\n\n.roh-card-footer {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 12px 15px;\n    background: var(--roh-bg);\n    border-top: 1px solid var(--roh-border);\n}\n\n.roh-card-agent {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.roh-card-agent-avatar {\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    background: var(--roh-primary);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.roh-card-agent-avatar svg {\n    width: 16px;\n    height: 16px;\n    fill: var(--roh-white);\n}\n\n.roh-card-agent-name {\n    font-size: 12px;\n    color: var(--roh-text-muted);\n}\n\n.roh-card-date {\n    font-size: 12px;\n    color: var(--roh-text-muted);\n    display: flex;\n    align-items: center;\n    gap: 5px;\n}\n\n.roh-card-date svg {\n    width: 14px;\n    height: 14px;\n}\n\n\/* No Results *\/\n.roh-no-results {\n    text-align: center;\n    padding: 40px 20px;\n    color: var(--roh-text-muted);\n}\n\n.roh-no-results svg {\n    width: 48px;\n    height: 48px;\n    fill: var(--roh-border);\n    margin-bottom: 15px;\n}\n\n.roh-no-results h3 {\n    font-size: 18px;\n    color: var(--roh-text);\n    margin: 0 0 10px;\n}\n\n.roh-no-results p {\n    margin: 0;\n    font-size: 14px;\n}\n\n\/* =============================================================================\n * MAP MARKER POPUP\n * ============================================================================= *\/\n.roh-map-popup {\n    min-width: 280px;\n    max-width: 320px;\n}\n\n.roh-popup-image {\n    position: relative;\n    height: 160px;\n    overflow: hidden;\n    margin: -14px -14px 12px -14px;\n    border-radius: 8px 8px 0 0;\n}\n\n.roh-popup-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n}\n\n.roh-popup-price {\n    font-size: 20px;\n    font-weight: 700;\n    color: var(--roh-text);\n    margin-bottom: 10px;\n}\n\n.roh-popup-meta {\n    display: flex;\n    gap: 12px;\n    margin-bottom: 8px;\n}\n\n.roh-popup-meta-item {\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 13px;\n    color: var(--roh-text);\n}\n\n.roh-popup-meta-item svg {\n    width: 15px;\n    height: 15px;\n    fill: var(--roh-text-muted);\n}\n\n.roh-popup-type {\n    font-size: 12px;\n    color: var(--roh-text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n}\n\n.roh-popup-location {\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 13px;\n    color: var(--roh-text-muted);\n    margin-top: 8px;\n}\n\n.roh-popup-location svg {\n    width: 14px;\n    height: 14px;\n    fill: var(--roh-link);\n}\n\n\/* Clickable Popup Image *\/\n.roh-popup-image-link {\n    display: block;\n    position: relative;\n    height: 160px;\n    overflow: hidden;\n    margin: -14px -14px 12px -14px;\n    border-radius: 8px 8px 0 0;\n    cursor: pointer;\n    transition: opacity 0.2s ease;\n}\n\n.roh-popup-image-link:hover {\n    opacity: 0.9;\n}\n\n.roh-popup-image-link .roh-popup-image {\n    margin: 0;\n    height: 100%;\n    border-radius: 0;\n}\n\n\/* View Details Button in Popup *\/\n.roh-popup-details-btn {\n    display: block;\n    width: 100%;\n    margin-top: 12px;\n    padding: 10px 16px;\n    background: var(--roh-primary);\n    color: var(--roh-white) !important;\n    text-align: center;\n    text-decoration: none !important;\n    font-size: 13px;\n    font-weight: 600;\n    border-radius: var(--roh-radius);\n    transition: background 0.2s ease;\n    cursor: pointer;\n}\n\n.roh-popup-details-btn:hover {\n    background: var(--roh-primary-hover);\n    color: var(--roh-white) !important;\n    text-decoration: none !important;\n}\n\n\/* Leaflet Popup Overrides *\/\n.leaflet-popup-content-wrapper {\n    border-radius: var(--roh-radius) !important;\n    box-shadow: var(--roh-shadow-lg) !important;\n    padding: 0 !important;\n}\n\n.leaflet-popup-content {\n    margin: 14px !important;\n    line-height: 1.4 !important;\n}\n\n.leaflet-popup-tip {\n    box-shadow: none !important;\n}\n\n\/* =============================================================================\n * CUSTOM MAP MARKERS\n * ============================================================================= *\/\n.roh-marker-icon {\n    background: var(--roh-primary);\n    border: 3px solid var(--roh-white);\n    border-radius: 50% 50% 50% 0;\n    transform: rotate(-45deg);\n    width: 36px;\n    height: 36px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3);\n}\n\n.roh-marker-icon svg {\n    transform: rotate(45deg);\n    width: 18px;\n    height: 18px;\n    fill: var(--roh-white);\n}\n\n\/* Cluster Markers *\/\n.roh-cluster-icon {\n    background: var(--roh-primary);\n    border: 3px solid var(--roh-white);\n    border-radius: 50%;\n    color: var(--roh-white);\n    font-size: 14px;\n    font-weight: 700;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3);\n}\n\n.roh-cluster-small {\n    width: 40px;\n    height: 40px;\n}\n\n.roh-cluster-medium {\n    width: 50px;\n    height: 50px;\n    font-size: 15px;\n}\n\n.roh-cluster-large {\n    width: 60px;\n    height: 60px;\n    font-size: 16px;\n}\n\n\/* =============================================================================\n * LOADING STATE\n * ============================================================================= *\/\n.roh-loading-overlay {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background: rgba(255, 255, 255, 0.85);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 2000;\n}\n\n.roh-spinner {\n    width: 50px;\n    height: 50px;\n    border: 4px solid var(--roh-border);\n    border-top-color: var(--roh-primary);\n    border-radius: 50%;\n    animation: roh-spin 0.8s linear infinite;\n}\n\n@keyframes roh-spin {\n    to { transform: rotate(360deg); }\n}\n\n\/* =============================================================================\n * RESPONSIVE DESIGN\n * ============================================================================= *\/\n@media (max-width: 1200px) {\n    .roh-filter-sidebar {\n        width: 380px;\n    }\n}\n\n@media (max-width: 992px) {\n    .roh-map-search {\n        flex-direction: column;\n        height: auto;\n    }\n    \n    .roh-map-container {\n        flex-direction: column;\n        height: auto;\n    }\n    \n    .roh-map-area {\n        height: 450px;\n    }\n    \n    .roh-filter-sidebar {\n        width: 100%;\n        border-left: none;\n        border-top: 1px solid var(--roh-border);\n        max-height: none;\n    }\n    \n    .roh-filter-grid {\n        grid-template-columns: repeat(4, 1fr);\n    }\n    \n    .roh-filter-actions {\n        flex-wrap: nowrap;\n    }\n    \n    .roh-listings-sidebar {\n        max-height: 500px;\n    }\n}\n\n@media (max-width: 768px) {\n    .roh-filter-grid {\n        grid-template-columns: repeat(2, 1fr);\n    }\n    \n    .roh-map-area {\n        height: 350px;\n    }\n    \n    .roh-map-nav {\n        top: auto;\n        bottom: 60px;\n        right: 15px;\n    }\n    \n    .roh-results-header {\n        flex-direction: column;\n        align-items: flex-start;\n    }\n}\n\n@media (max-width: 480px) {\n    .roh-filter-grid {\n        grid-template-columns: 1fr;\n    }\n    \n    .roh-filter-group.full-width {\n        grid-column: span 1;\n    }\n    \n    .roh-filter-actions {\n        flex-direction: column;\n    }\n    \n    .roh-btn-search,\n    .roh-btn-save {\n        width: 100%;\n        justify-content: center;\n    }\n    \n    .roh-card-meta {\n        gap: 10px;\n    }\n}\n<\/style>\n\n<div class=\"roh-map-search\">\n    <!-- Map & Filters Container -->\n    <div class=\"roh-map-container\">\n        <!-- Map Area -->\n        <div class=\"roh-map-area\">\n            <!-- Debug box for Sandbox mode -->\n            <div id=\"roh-map-debug\" style=\"display:none; position:absolute; top:70px; left:15px; right:15px; z-index:2000; background:rgba(255,243,205,0.95); border:1px solid #ffc107; padding:10px; border-radius:8px; font-family:monospace; font-size:11px; max-height:150px; overflow:auto;\">\n                <strong>\ud83d\udd27 MAP DEBUG (Sandbox):<\/strong> <span id=\"roh-map-debug-url\" style=\"word-break:break-all;\"><\/span>\n            <\/div>\n            \n            <div id=\"roh-property-map\"><\/div>\n            \n            <!-- Map Controls -->\n            <div class=\"roh-map-controls\">\n                <button type=\"button\" class=\"roh-map-btn\" onclick=\"rohMapSearch.zoomIn()\" title=\"Zoom In\">\n                    <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\/><\/svg>\n                <\/button>\n                <button type=\"button\" class=\"roh-map-btn\" onclick=\"rohMapSearch.zoomOut()\" title=\"Zoom Out\">\n                    <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M19 13H5v-2h14v2z\"\/><\/svg>\n                <\/button>\n            <\/div>\n            \n            <!-- Navigation Arrows -->\n            <div class=\"roh-map-nav\">\n                <button type=\"button\" class=\"roh-nav-btn\" id=\"roh-prev-btn\" onclick=\"rohMapSearch.prevProperty()\">\n                    <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\/><\/svg>\n                    PREV                <\/button>\n                <button type=\"button\" class=\"roh-nav-btn\" id=\"roh-next-btn\" onclick=\"rohMapSearch.nextProperty()\">\n                    NEXT                    <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\/><\/svg>\n                <\/button>\n            <\/div>\n            \n            <!-- Fullscreen Button -->\n            <button type=\"button\" class=\"roh-fullscreen-btn\" onclick=\"rohMapSearch.toggleFullscreen()\">\n                <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\/><\/svg>\n                FULLSCREEN            <\/button>\n            \n            <!-- Loading Overlay -->\n            <div class=\"roh-loading-overlay\" id=\"roh-loading\" style=\"display: none;\">\n                <div class=\"roh-spinner\"><\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Filter Sidebar -->\n        <div class=\"roh-filter-sidebar\">\n            <div class=\"roh-filter-scroll\">\n                <!-- Search Input -->\n                <div class=\"roh-search-input-wrap\">\n                    <svg viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\/><\/svg>\n                    <input type=\"text\" id=\"roh-search-ref\" placeholder=\"Enter an address, town, street, zip or property ID\">\n                <\/div>\n                \n                <!-- Filter Grid -->\n                <div class=\"roh-filter-grid\">\n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-location\">\n                            <option value=\"\">All Cities<\/option>\n                                                            <option value=\"Algeciras\">Algeciras<\/option>\n                                                            <option value=\"Alhaurin Golf\">Alhaurin Golf<\/option>\n                                                            <option value=\"Alhaur\u00edn de la Torre\">Alhaur\u00edn de la Torre<\/option>\n                                                            <option value=\"Alhaur\u00edn el Grande\">Alhaur\u00edn el Grande<\/option>\n                                                            <option value=\"Almog\u00eda\">Almog\u00eda<\/option>\n                                                            <option value=\"Aloha\">Aloha<\/option>\n                                                            <option value=\"Alora\">Alora<\/option>\n                                                            <option value=\"Alozaina\">Alozaina<\/option>\n                                                            <option value=\"Altos de los Monteros\">Altos de los Monteros<\/option>\n                                                            <option value=\"Antequera\">Antequera<\/option>\n                                                            <option value=\"Archidona\">Archidona<\/option>\n                                                            <option value=\"Ardales\">Ardales<\/option>\n                                                            <option value=\"Arriate\">Arriate<\/option>\n                                                            <option value=\"Arroyo de la Miel\">Arroyo de la Miel<\/option>\n                                                            <option value=\"Artola\">Artola<\/option>\n                                                            <option value=\"Atalaya\">Atalaya<\/option>\n                                                            <option value=\"Bah\u00eda de Marbella\">Bah\u00eda de Marbella<\/option>\n                                                            <option value=\"Bailen Miraflores\">Bailen Miraflores<\/option>\n                                                            <option value=\"Bajondillo\">Bajondillo<\/option>\n                                                            <option value=\"Bel Air\">Bel Air<\/option>\n                                                            <option value=\"Benahav\u00eds\">Benahav\u00eds<\/option>\n                                                            <option value=\"Benalmadena\">Benalmadena<\/option>\n                                                            <option value=\"Benalmadena Costa\">Benalmadena Costa<\/option>\n                                                            <option value=\"Benalmadena Pueblo\">Benalmadena Pueblo<\/option>\n                                                            <option value=\"Benamara\">Benamara<\/option>\n                                                            <option value=\"Benaoj\u00e1n\">Benaoj\u00e1n<\/option>\n                                                            <option value=\"Benarrab\u00e1\">Benarrab\u00e1<\/option>\n                                                            <option value=\"Cabopino\">Cabopino<\/option>\n                                                            <option value=\"Calahonda\">Calahonda<\/option>\n                                                            <option value=\"Calanova Golf\">Calanova Golf<\/option>\n                                                            <option value=\"Calypso\">Calypso<\/option>\n                                                            <option value=\"Campo Mijas\">Campo Mijas<\/option>\n                                                            <option value=\"Cancelada\">Cancelada<\/option>\n                                                            <option value=\"Carib Playa\">Carib Playa<\/option>\n                                                            <option value=\"Cartajima\">Cartajima<\/option>\n                                                            <option value=\"Carvajal\">Carvajal<\/option>\n                                                            <option value=\"Casabermeja\">Casabermeja<\/option>\n                                                            <option value=\"Casarabonela\">Casarabonela<\/option>\n                                                            <option value=\"Casares\">Casares<\/option>\n                                                            <option value=\"Casares Playa\">Casares Playa<\/option>\n                                                            <option value=\"Casares Pueblo\">Casares Pueblo<\/option>\n                                                            <option value=\"Ca\u00f1ete la Real\">Ca\u00f1ete la Real<\/option>\n                                                            <option value=\"Cerros del Aguila\">Cerros del Aguila<\/option>\n                                                            <option value=\"Cortes de la Frontera\">Cortes de la Frontera<\/option>\n                                                            <option value=\"Cortijo Blanco\">Cortijo Blanco<\/option>\n                                                            <option value=\"Costabella\">Costabella<\/option>\n                                                            <option value=\"Costalita\">Costalita<\/option>\n                                                            <option value=\"Co\u00edn\">Co\u00edn<\/option>\n                                                            <option value=\"Cuevas Bajas\">Cuevas Bajas<\/option>\n                                                            <option value=\"Cuevas De San Marcos\">Cuevas De San Marcos<\/option>\n                                                            <option value=\"Cuevas del Becerro\">Cuevas del Becerro<\/option>\n                                                            <option value=\"C\u00e1rtama\">C\u00e1rtama<\/option>\n                                                            <option value=\"Do\u00f1a Julia\">Do\u00f1a Julia<\/option>\n                                                            <option value=\"El Burgo\">El Burgo<\/option>\n                                                            <option value=\"El Chaparral\">El Chaparral<\/option>\n                                                            <option value=\"El Coto\">El Coto<\/option>\n                                                            <option value=\"El Faro\">El Faro<\/option>\n                                                            <option value=\"El Madro\u00f1al\">El Madro\u00f1al<\/option>\n                                                            <option value=\"El Padron\">El Padron<\/option>\n                                                            <option value=\"El Paraiso\">El Paraiso<\/option>\n                                                            <option value=\"El Pinillo\">El Pinillo<\/option>\n                                                            <option value=\"El Presidente\">El Presidente<\/option>\n                                                            <option value=\"El Rosario\">El Rosario<\/option>\n                                                            <option value=\"Elviria\">Elviria<\/option>\n                                                            <option value=\"Estacion de Cartama\">Estacion de Cartama<\/option>\n                                                            <option value=\"Estaci\u00f3n de Gaucin\">Estaci\u00f3n de Gaucin<\/option>\n                                                            <option value=\"Estepona\">Estepona<\/option>\n                                                            <option value=\"Fuengirola\">Fuengirola<\/option>\n                                                            <option value=\"Fuente de Piedra\">Fuente de Piedra<\/option>\n                                                            <option value=\"Gauc\u00edn\">Gauc\u00edn<\/option>\n                                                            <option value=\"Genalguacil\">Genalguacil<\/option>\n                                                            <option value=\"Gibralgalia\">Gibralgalia<\/option>\n                                                            <option value=\"Guadalmina Alta\">Guadalmina Alta<\/option>\n                                                            <option value=\"Guadalmina Baja\">Guadalmina Baja<\/option>\n                                                            <option value=\"Guadiaro\">Guadiaro<\/option>\n                                                            <option value=\"Guaro\">Guaro<\/option>\n                                                            <option value=\"Hacienda del Sol\">Hacienda del Sol<\/option>\n                                                            <option value=\"Hacienda Las Chapas\">Hacienda Las Chapas<\/option>\n                                                            <option value=\"Higueron\">Higueron<\/option>\n                                                            <option value=\"Ist\u00e1n\">Ist\u00e1n<\/option>\n                                                            <option value=\"Jubrique\">Jubrique<\/option>\n                                                            <option value=\"J\u00fazcar\">J\u00fazcar<\/option>\n                                                            <option value=\"La Alcaidesa\">La Alcaidesa<\/option>\n                                                            <option value=\"La Cala\">La Cala<\/option>\n                                                            <option value=\"La Cala de Mijas\">La Cala de Mijas<\/option>\n                                                            <option value=\"La Cala Golf\">La Cala Golf<\/option>\n                                                            <option value=\"La Cala Hills\">La Cala Hills<\/option>\n                                                            <option value=\"La Campana\">La Campana<\/option>\n                                                            <option value=\"La Capellania\">La Capellania<\/option>\n                                                            <option value=\"La Carihuela\">La Carihuela<\/option>\n                                                            <option value=\"La Colina\">La Colina<\/option>\n                                                            <option value=\"La Duquesa\">La Duquesa<\/option>\n                                                            <option value=\"La Heredia\">La Heredia<\/option>\n                                                            <option value=\"La L\u00ednea\">La L\u00ednea<\/option>\n                                                            <option value=\"La Mairena\">La Mairena<\/option>\n                                                            <option value=\"La Quinta\">La Quinta<\/option>\n                                                            <option value=\"La Zagaleta\">La Zagaleta<\/option>\n                                                            <option value=\"Las Brisas\">Las Brisas<\/option>\n                                                            <option value=\"Las Chapas\">Las Chapas<\/option>\n                                                            <option value=\"Las Lagunas\">Las Lagunas<\/option>\n                                                            <option value=\"Lauro Golf\">Lauro Golf<\/option>\n                                                            <option value=\"Los Alamos\">Los Alamos<\/option>\n                                                            <option value=\"Los Almendros\">Los Almendros<\/option>\n                                                            <option value=\"Los Arqueros\">Los Arqueros<\/option>\n                                                            <option value=\"Los Barrios\">Los Barrios<\/option>\n                                                            <option value=\"Los Boliches\">Los Boliches<\/option>\n                                                            <option value=\"Los Flamingos\">Los Flamingos<\/option>\n                                                            <option value=\"Los Monteros\">Los Monteros<\/option>\n                                                            <option value=\"Los Pacos\">Los Pacos<\/option>\n                                                            <option value=\"Los Prados\">Los Prados<\/option>\n                                                            <option value=\"Manilva\">Manilva<\/option>\n                                                            <option value=\"Marbella\">Marbella<\/option>\n                                                            <option value=\"Marbesa\">Marbesa<\/option>\n                                                            <option value=\"Mijas\">Mijas<\/option>\n                                                            <option value=\"Mijas Costa\">Mijas Costa<\/option>\n                                                            <option value=\"Mijas Golf\">Mijas Golf<\/option>\n                                                            <option value=\"Miraflores\">Miraflores<\/option>\n                                                            <option value=\"Mollina\">Mollina<\/option>\n                                                            <option value=\"Monda\">Monda<\/option>\n                                                            <option value=\"Monte Halcones\">Monte Halcones<\/option>\n                                                            <option value=\"Montejaque\">Montejaque<\/option>\n                                                            <option value=\"Montemar\">Montemar<\/option>\n                                                            <option value=\"M\u00e1laga\">M\u00e1laga<\/option>\n                                                            <option value=\"M\u00e1laga Centro\">M\u00e1laga Centro<\/option>\n                                                            <option value=\"M\u00e1laga Este\">M\u00e1laga Este<\/option>\n                                                            <option value=\"Nag\u00fceles\">Nag\u00fceles<\/option>\n                                                            <option value=\"New Golden Mile\">New Golden Mile<\/option>\n                                                            <option value=\"Nueva Andaluc\u00eda\">Nueva Andaluc\u00eda<\/option>\n                                                            <option value=\"Oj\u00e9n\">Oj\u00e9n<\/option>\n                                                            <option value=\"Pizarra\">Pizarra<\/option>\n                                                            <option value=\"Playamar\">Playamar<\/option>\n                                                            <option value=\"Pueblo Nuevo de Guadiaro\">Pueblo Nuevo de Guadiaro<\/option>\n                                                            <option value=\"Puerto Ban\u00fas\">Puerto Ban\u00fas<\/option>\n                                                            <option value=\"Puerto de Cabopino\">Puerto de Cabopino<\/option>\n                                                            <option value=\"Puerto de la Torre\">Puerto de la Torre<\/option>\n                                                            <option value=\"Punta Chullera\">Punta Chullera<\/option>\n                                                            <option value=\"Reserva de Marbella\">Reserva de Marbella<\/option>\n                                                            <option value=\"Riviera del Sol\">Riviera del Sol<\/option>\n                                                            <option value=\"Ronda\">Ronda<\/option>\n                                                            <option value=\"R\u00edo Real\">R\u00edo Real<\/option>\n                                                            <option value=\"San Diego\">San Diego<\/option>\n                                                            <option value=\"San Enrique\">San Enrique<\/option>\n                                                            <option value=\"San Luis de Sabinillas\">San Luis de Sabinillas<\/option>\n                                                            <option value=\"San Mart\u00edn de Tesorillo\">San Mart\u00edn de Tesorillo<\/option>\n                                                            <option value=\"San Pedro de Alc\u00e1ntara\">San Pedro de Alc\u00e1ntara<\/option>\n                                                            <option value=\"San Roque\">San Roque<\/option>\n                                                            <option value=\"San Roque Club\">San Roque Club<\/option>\n                                                            <option value=\"Santa Clara\">Santa Clara<\/option>\n                                                            <option value=\"Selwo\">Selwo<\/option>\n                                                            <option value=\"Sierra Blanca\">Sierra Blanca<\/option>\n                                                            <option value=\"Sierrezuela\">Sierrezuela<\/option>\n                                                            <option value=\"Sotogrande\">Sotogrande<\/option>\n                                                            <option value=\"Sotogrande Alto\">Sotogrande Alto<\/option>\n                                                            <option value=\"Sotogrande Costa\">Sotogrande Costa<\/option>\n                                                            <option value=\"Sotogrande Marina\">Sotogrande Marina<\/option>\n                                                            <option value=\"Sotogrande Puerto\">Sotogrande Puerto<\/option>\n                                                            <option value=\"Teba\">Teba<\/option>\n                                                            <option value=\"The Golden Mile\">The Golden Mile<\/option>\n                                                            <option value=\"Tolox\">Tolox<\/option>\n                                                            <option value=\"Torre Real\">Torre Real<\/option>\n                                                            <option value=\"Torreblanca\">Torreblanca<\/option>\n                                                            <option value=\"Torreguadiaro\">Torreguadiaro<\/option>\n                                                            <option value=\"Torremolinos\">Torremolinos<\/option>\n                                                            <option value=\"Torremolinos Centro\">Torremolinos Centro<\/option>\n                                                            <option value=\"Torremuelle\">Torremuelle<\/option>\n                                                            <option value=\"Torrenueva\">Torrenueva<\/option>\n                                                            <option value=\"Torrequebrada\">Torrequebrada<\/option>\n                                                            <option value=\"Valle de Abdalajis\">Valle de Abdalajis<\/option>\n                                                            <option value=\"Valle Romano\">Valle Romano<\/option>\n                                                            <option value=\"Valtocado\">Valtocado<\/option>\n                                                            <option value=\"Villanueva de Algaidas\">Villanueva de Algaidas<\/option>\n                                                            <option value=\"Villanueva De La Concepcion\">Villanueva De La Concepcion<\/option>\n                                                            <option value=\"Villanueva del Rosario\">Villanueva del Rosario<\/option>\n                                                            <option value=\"Villanueva del Trabuco\">Villanueva del Trabuco<\/option>\n                                                    <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-completion\">\n                            <option value=\"\">Completion Year<\/option>\n                            <option value=\"completed\">Completed<\/option>\n                                                            <option value=\"2020\">2020<\/option>\n                                                            <option value=\"2023\">2023<\/option>\n                                                            <option value=\"2024\">2024<\/option>\n                                                            <option value=\"2025\">2025<\/option>\n                                                            <option value=\"2026\">2026<\/option>\n                                                            <option value=\"2027\">2027<\/option>\n                                                            <option value=\"2028\">2028<\/option>\n                                                            <option value=\"2029\">2029<\/option>\n                                                    <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-type\">\n                            <option value=\"\">Type<\/option>\n                            <option value=\"apartment\">Apartment<\/option>\n                            <option value=\"penthouse\">Penthouse<\/option>\n                            <option value=\"villa\">Villa<\/option>\n                            <option value=\"townhouse\">Townhouse<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-beds\">\n                            <option value=\"\">Bedrooms<\/option>\n                            <option value=\"1\">1<\/option>\n                            <option value=\"1+\">1+<\/option>\n                            <option value=\"2\">2<\/option>\n                            <option value=\"2+\">2+<\/option>\n                            <option value=\"3\">3<\/option>\n                            <option value=\"3+\">3+<\/option>\n                            <option value=\"4\">4<\/option>\n                            <option value=\"4+\">4+<\/option>\n                            <option value=\"5\">5<\/option>\n                            <option value=\"5+\">5+<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-baths\">\n                            <option value=\"\">Bathrooms<\/option>\n                            <option value=\"1\">1<\/option>\n                            <option value=\"1+\">1+<\/option>\n                            <option value=\"2\">2<\/option>\n                            <option value=\"2+\">2+<\/option>\n                            <option value=\"3\">3<\/option>\n                            <option value=\"3+\">3+<\/option>\n                            <option value=\"4\">4<\/option>\n                            <option value=\"4+\">4+<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <input type=\"number\" id=\"roh-filter-min-area\" placeholder=\"Min. Area (m\u00b2)\">\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-min-price\">\n                            <option value=\"\">Min. Price<\/option>\n                            <option value=\"100000\">\u20ac100,000<\/option>\n                            <option value=\"200000\">\u20ac200,000<\/option>\n                            <option value=\"300000\">\u20ac300,000<\/option>\n                            <option value=\"500000\">\u20ac500,000<\/option>\n                            <option value=\"750000\">\u20ac750,000<\/option>\n                            <option value=\"1000000\">\u20ac1,000,000<\/option>\n                            <option value=\"2000000\">\u20ac2,000,000<\/option>\n                            <option value=\"3000000\">\u20ac3,000,000<\/option>\n                            <option value=\"5000000\">\u20ac5,000,000<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-max-price\">\n                            <option value=\"\">Max. Price<\/option>\n                            <option value=\"200000\">\u20ac200,000<\/option>\n                            <option value=\"300000\">\u20ac300,000<\/option>\n                            <option value=\"500000\">\u20ac500,000<\/option>\n                            <option value=\"750000\">\u20ac750,000<\/option>\n                            <option value=\"1000000\">\u20ac1,000,000<\/option>\n                            <option value=\"2000000\">\u20ac2,000,000<\/option>\n                            <option value=\"3000000\">\u20ac3,000,000<\/option>\n                            <option value=\"5000000\">\u20ac5,000,000<\/option>\n                            <option value=\"10000000\">\u20ac10,000,000+<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <input type=\"text\" id=\"roh-filter-property-id\" placeholder=\"Property ID\">\n                    <\/div>\n                    \n                    <div class=\"roh-filter-group\">\n                        <select id=\"roh-filter-label\">\n                            <option value=\"\">Label<\/option>\n                            <option value=\"featured\">Featured<\/option>\n                            <option value=\"new\">New<\/option>\n                            <option value=\"reduced\">Reduced<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n                \n                <!-- Other Features Toggle -->\n                <button type=\"button\" class=\"roh-features-toggle\" onclick=\"this.classList.toggle('open'); document.getElementById('roh-features-panel').classList.toggle('open');\">\n                    <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\/><\/svg>\n                    Other Features                <\/button>\n                \n                <div class=\"roh-features-panel\" id=\"roh-features-panel\">\n                    <div class=\"roh-features-grid\">\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-pool\">\n                            Pool                        <\/label>\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-seaview\">\n                            Sea View                        <\/label>\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-golf\">\n                            Golf                        <\/label>\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-garden\">\n                            Garden                        <\/label>\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-garage\">\n                            Garage                        <\/label>\n                        <label class=\"roh-feature-checkbox\">\n                            <input type=\"checkbox\" id=\"roh-feature-terrace\">\n                            Terrace                        <\/label>\n                    <\/div>\n                <\/div>\n                \n                <!-- Filter Actions -->\n                <div class=\"roh-filter-actions\">\n                    <button type=\"button\" class=\"roh-btn-search\" onclick=\"rohMapSearch.search()\">\n                        Search                    <\/button>\n                    <button type=\"button\" class=\"roh-btn-save\" onclick=\"rohMapSearch.saveSearch()\">\n                        <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z\"\/><\/svg>\n                        Save Search                    <\/button>\n                    <button type=\"button\" class=\"roh-btn-clear\" onclick=\"rohMapSearch.clearFilters()\">\n                        Clear                    <\/button>\n                <\/div>\n            <\/div>\n            \n            <!-- Results Header -->\n            <div class=\"roh-results-header\">\n                <div class=\"roh-results-count\" id=\"roh-results-count\">0 Results Found<\/div>\n                <div class=\"roh-results-sort\">\n                    <label>Sort by:<\/label>\n                    <select id=\"roh-sort\" onchange=\"rohMapSearch.search()\">\n                        <option value=\"date_desc\">Date - New to Old<\/option>\n                        <option value=\"date_asc\">Date - Old to New<\/option>\n                        <option value=\"price_asc\">Price - Low to High<\/option>\n                        <option value=\"price_desc\">Price - High to Low<\/option>\n                    <\/select>\n                    <div class=\"roh-view-toggle\">\n                        <button type=\"button\" class=\"roh-view-btn active\" onclick=\"rohMapSearch.setView('list', this)\" title=\"List View\">\n                            <svg viewBox=\"0 0 24 24\"><path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\"\/><\/svg>\n                        <\/button>\n                        <button type=\"button\" class=\"roh-view-btn\" onclick=\"rohMapSearch.setView('grid', this)\" title=\"Grid View\">\n                            <svg viewBox=\"0 0 24 24\"><path d=\"M4 11h5V5H4v6zm0 7h5v-6H4v6zm6 0h5v-6h-5v6zm6 0h5v-6h-5v6zm-6-7h5V5h-5v6zm6-6v6h5V5h-5z\"\/><\/svg>\n                        <\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- Property Listings -->\n            <div class=\"roh-listings-sidebar\" id=\"roh-listings\">\n                <!-- Property cards will be inserted here dynamically -->\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Leaflet CSS -->\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" crossorigin=\"\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet.markercluster@1.4.1\/dist\/MarkerCluster.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet.markercluster@1.4.1\/dist\/MarkerCluster.Default.css\" \/>\n\n<!-- Leaflet JS -->\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\" crossorigin=\"\"><\/script>\n<script src=\"https:\/\/unpkg.com\/leaflet.markercluster@1.4.1\/dist\/leaflet.markercluster.js\"><\/script>\n\n<script>\n\/**\n * ROH Map Search - New Developments v2.5.1\n * Interactive map-based property search\n *\/\nconst rohMapSearch = {\n    map: null,\n    markers: null,\n    properties: [],\n    currentIndex: 0,\n    ajaxUrl: 'https:\/\/plexoproperties.com\/wp-admin\/admin-ajax.php',\n    nonce: null, \/\/ Will be fetched dynamically (cache-safe)\n    nonceReady: false,\n    centerLat: 36.5,\n    centerLng: -4.8,\n    defaultZoom: 10,\n    \/\/ Shortcode attributes to pass to AJAX\n    filterId: '',\n    propertyBase: 'new-development',\n    \n    \/**\n     * Fetch a fresh nonce from the server (cache-safe)\n     * This ensures the nonce is always valid even when the page is cached\n     *\/\n    fetchNonce: function() {\n        return fetch(this.ajaxUrl, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/x-www-form-urlencoded',\n            },\n            body: new URLSearchParams({\n                action: 'roh_get_nonce'\n            })\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.success && data.data.nonce) {\n                this.nonce = data.data.nonce;\n                this.nonceReady = true;\n                return true;\n            }\n            throw new Error('Failed to get security token');\n        });\n    },\n    \n    \/**\n     * Initialize the map and load properties\n     *\/\n    init: function() {\n        \/\/ Initialize Leaflet map centered on Costa del Sol\n        this.map = L.map('roh-property-map', {\n            center: [this.centerLat, this.centerLng],\n            zoom: this.defaultZoom,\n            zoomControl: false\n        });\n        \n        \/\/ Add tile layer (OpenStreetMap)\n        L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n            attribution: '&copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>',\n            maxZoom: 19\n        }).addTo(this.map);\n        \n        \/\/ Initialize marker cluster group\n        this.markers = L.markerClusterGroup({\n            chunkedLoading: true,\n            maxClusterRadius: 60,\n            spiderfyOnMaxZoom: true,\n            showCoverageOnHover: false,\n            iconCreateFunction: function(cluster) {\n                const count = cluster.getChildCount();\n                let size = 'small';\n                if (count > 20) size = 'large';\n                else if (count > 10) size = 'medium';\n                \n                return L.divIcon({\n                    html: '<div class=\"roh-cluster-icon roh-cluster-' + size + '\">' + count + '<\/div>',\n                    className: 'roh-cluster-marker',\n                    iconSize: null\n                });\n            }\n        });\n        \n        this.map.addLayer(this.markers);\n        \n        \/\/ Fetch fresh nonce then load initial properties (cache-safe)\n        this.fetchNonce()\n            .then(() => {\n                this.search();\n            })\n            .catch(error => {\n                console.error('Search failed:', error.message);\n                this.showLoading(false);\n            });\n        \n        \/\/ Bind filter change events\n        this.bindEvents();\n    },\n    \n    \/**\n     * Bind filter change events\n     *\/\n    bindEvents: function() {\n        \/\/ Enter key on search input\n        document.getElementById('roh-search-ref').addEventListener('keypress', function(e) {\n            if (e.key === 'Enter') {\n                e.preventDefault();\n                rohMapSearch.search();\n            }\n        });\n        \n        \/\/ Handle fullscreen change\n        document.addEventListener('fullscreenchange', function() {\n            setTimeout(function() {\n                rohMapSearch.map.invalidateSize();\n            }, 100);\n        });\n    },\n    \n    \/**\n     * Search properties with current filters\n     *\/\n    search: function() {\n        \/\/ Ensure nonce is ready (re-fetch if needed)\n        if (!this.nonceReady) {\n            this.showLoading(true);\n            this.fetchNonce()\n                .then(() => this.doSearch())\n                .catch(error => {\n                    console.error('Search failed:', error.message);\n                    this.showLoading(false);\n                });\n            return;\n        }\n        this.doSearch();\n    },\n    \n    \/**\n     * Execute the actual search (internal)\n     *\/\n    doSearch: function() {\n        this.showLoading(true);\n        \n        const filters = this.getFilters();\n        \n        \/\/ AJAX request to get properties\n        fetch(this.ajaxUrl, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/x-www-form-urlencoded',\n            },\n            body: new URLSearchParams({\n                action: 'roh_map_search',\n                nonce: this.nonce,\n                filters: JSON.stringify(filters),\n                filter_id: this.filterId,\n                property_base: this.propertyBase\n            })\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.success) {\n                this.properties = data.data.properties;\n                this.currentIndex = 0;\n\n                \/\/ v2.5.56: Client-side completion year\/status filtering\n                const completionFilter = filters.completion;\n                if (completionFilter) {\n                    const now = new Date();\n                    const curYear  = now.getFullYear();\n                    const curMonth = now.getMonth() + 1; \/\/ 1-12\n                    this.properties = this.properties.filter(function(p) {\n                        \/\/ Properties without a completion date are excluded when filter is active\n                        if (!p.completion_year) return false;\n                        if (completionFilter === 'completed') {\n                            \/\/ Completed = final month of completion quarter has passed\n                            const completionEndMonth = p.completion_quarter * 3;\n                            return p.completion_year < curYear ||\n                                   (p.completion_year === curYear && completionEndMonth <= curMonth);\n                        }\n                        \/\/ Filter by specific year e.g. \"2026\"\n                        return p.completion_year === parseInt(completionFilter, 10);\n                    });\n                }\n\n                this.updateMap();\n                this.updateListings();\n                \/\/ Use filtered count when completion filter is active\n                this.updateResultsCount(completionFilter ? this.properties.length : data.data.total);\n\n                \/\/ --- START SANDBOX LOGIC ---\n                const debugBox = document.getElementById('roh-map-debug');\n                const debugUrl = document.getElementById('roh-map-debug-url');\n                if (data.data.debug && data.data.debug.last_api_url) {\n                    let debugHtml = data.data.debug.last_api_url;\n                    \n                    \/\/ Add coordinate info\n                    if (data.data.debug.coords_found !== undefined) {\n                        debugHtml += '<br><br><strong>\ud83d\udccd Coordinates:<\/strong> ' + data.data.debug.coords_found + ' of ' + data.data.debug.coords_total + ' properties have GPS coordinates';\n                        \n                        if (data.data.debug.coords_found === 0) {\n                            debugHtml += '<br><span style=\"color:#dc3545;\">\u26a0\ufe0f No coordinates found! Enable \"Return Coordinates\" in Resales Online WebAPI filter settings.<\/span>';\n                        }\n                        \n                        if (data.data.debug.coord_fields_in_first_property) {\n                            debugHtml += '<br><strong>Coord fields in first property:<\/strong> ' + JSON.stringify(data.data.debug.coord_fields_in_first_property);\n                        }\n                    }\n                    \n                    debugBox.style.display = 'block';\n                    debugUrl.innerHTML = debugHtml;\n                    console.log(\"ROH Map API URL:\", data.data.debug.last_api_url);\n                    console.log(\"ROH Map Debug:\", data.data.debug);\n                }\n                \/\/ --- END SANDBOX LOGIC ---\n            } else {\n                \/\/ If nonce error, try to refresh and retry once\n                if (data.data && data.data.message && data.data.message.includes('security token')) {\n                    console.log('Security token expired, refreshing...');\n                    this.nonceReady = false;\n                    this.fetchNonce()\n                        .then(() => this.doSearch())\n                        .catch(error => {\n                            console.error('Search failed after nonce refresh:', error.message);\n                            this.showNoResults();\n                        });\n                    return;\n                }\n                console.error('Search failed:', data.data ? data.data.message : 'Unknown error');\n                this.showNoResults();\n            }\n            this.showLoading(false);\n        })\n        .catch(error => {\n            console.error('Search error:', error);\n            this.showLoading(false);\n            this.showNoResults();\n        });\n    },\n    \n    \/**\n     * Get current filter values\n     *\/\n    getFilters: function() {\n        return {\n            search: document.getElementById('roh-search-ref').value,\n            location: document.getElementById('roh-filter-location').value,\n            completion: document.getElementById('roh-filter-completion').value,\n            type: document.getElementById('roh-filter-type').value,\n            beds: document.getElementById('roh-filter-beds').value,\n            baths: document.getElementById('roh-filter-baths').value,\n            min_area: document.getElementById('roh-filter-min-area').value,\n            min_price: document.getElementById('roh-filter-min-price').value,\n            max_price: document.getElementById('roh-filter-max-price').value,\n            property_id: document.getElementById('roh-filter-property-id').value,\n            label: document.getElementById('roh-filter-label').value,\n            sort: document.getElementById('roh-sort').value,\n            features: {\n                pool: document.getElementById('roh-feature-pool').checked,\n                seaview: document.getElementById('roh-feature-seaview').checked,\n                golf: document.getElementById('roh-feature-golf').checked,\n                garden: document.getElementById('roh-feature-garden').checked,\n                garage: document.getElementById('roh-feature-garage').checked,\n                terrace: document.getElementById('roh-feature-terrace').checked\n            }\n        };\n    },\n    \n    \/**\n     * Update map markers\n     *\/\n    updateMap: function() {\n        this.markers.clearLayers();\n        \n        const bounds = [];\n        \n        this.properties.forEach((property, index) => {\n            if (property.lat && property.lng && property.lat !== 0 && property.lng !== 0) {\n                const marker = this.createMarker(property, index);\n                this.markers.addLayer(marker);\n                bounds.push([property.lat, property.lng]);\n            }\n        });\n        \n        \/\/ Fit map to markers\n        if (bounds.length > 0) {\n            this.map.fitBounds(bounds, { padding: [50, 50], maxZoom: 14 });\n        }\n    },\n    \n    \/**\n     * Create a marker for a property\n     *\/\n    createMarker: function(property, index) {\n        const icon = L.divIcon({\n            html: `<div class=\"roh-marker-icon\">\n                <svg viewBox=\"0 0 24 24\"><path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"\/><\/svg>\n            <\/div>`,\n            className: 'roh-marker',\n            iconSize: [36, 36],\n            iconAnchor: [18, 36],\n            popupAnchor: [0, -36]\n        });\n        \n        const marker = L.marker([property.lat, property.lng], { icon: icon });\n        \n        \/\/ Popup content\n        const popupContent = this.createPopupContent(property);\n        marker.bindPopup(popupContent, {\n            maxWidth: 320,\n            className: 'roh-popup-container'\n        });\n        \n        \/\/ Click event\n        marker.on('click', () => {\n            this.currentIndex = index;\n            this.highlightCard(property.ref);\n        });\n        \n        return marker;\n    },\n    \n    \/**\n     * Create popup content for a marker - CLICKABLE VERSION v2.5.9\n     *\/\n    createPopupContent: function(property) {\n        const bedsIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M7 13c1.66 0 3-1.34 3-3S8.66 7 7 7s-3 1.34-3 3 1.34 3 3 3zm12-6h-8v7H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4z\"\/><\/svg>';\n        const bathsIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M7 7c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zm13 13H4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zM20 6c0-.55-.45-1-1-1h-2v2h1v7H6V7h1V5H5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6z\"\/><\/svg>';\n        const areaIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"\/><\/svg>';\n        const locationIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"\/><\/svg>';\n        \n        \/\/ Clickable image with link to property page\n        const imageHtml = property.image \n            ? `<a href=\"${property.url}\" class=\"roh-popup-image-link\" target=\"_blank\" title=\"View Property Details\">\n                 <div class=\"roh-popup-image\"><img decoding=\"async\" src=\"${property.image}\" alt=\"${property.title}\" loading=\"lazy\"><\/div>\n               <\/a>` \n            : '';\n        \n        return `\n            <div class=\"roh-map-popup\">\n                ${imageHtml}\n                <div class=\"roh-popup-price\">${property.price}<\/div>\n                <div class=\"roh-popup-meta\">\n                    ${property.beds ? `<span class=\"roh-popup-meta-item\">${bedsIcon} ${property.beds}<\/span>` : ''}\n                    ${property.baths ? `<span class=\"roh-popup-meta-item\">${bathsIcon} ${property.baths}<\/span>` : ''}\n                    ${property.area ? `<span class=\"roh-popup-meta-item\">${areaIcon} ${property.area} m\u00b2<\/span>` : ''}\n                <\/div>\n                <div class=\"roh-popup-type\">${property.type || 'Property'}<\/div>\n                ${property.location ? `<div class=\"roh-popup-location\">${locationIcon} ${property.location}<\/div>` : ''}\n                <a href=\"${property.url}\" class=\"roh-popup-details-btn\" target=\"_blank\">View Details<\/a>\n            <\/div>\n        `;\n    },\n    \n    \/**\n     * Update property listings sidebar\n     *\/\n    updateListings: function() {\n        const container = document.getElementById('roh-listings');\n        container.innerHTML = '';\n        \n        if (this.properties.length === 0) {\n            this.showNoResults();\n            return;\n        }\n        \n        this.properties.forEach((property, index) => {\n            const card = this.createPropertyCard(property, index);\n            container.appendChild(card);\n        });\n    },\n    \n    \/**\n     * Show no results message\n     *\/\n    showNoResults: function() {\n        const container = document.getElementById('roh-listings');\n        container.innerHTML = `\n            <div class=\"roh-no-results\">\n                <svg viewBox=\"0 0 24 24\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\/><\/svg>\n                <h3>No properties found<\/h3>\n                <p>Try adjusting your search filters<\/p>\n            <\/div>\n        `;\n    },\n    \n    \/**\n     * Create a property card element\n     *\/\n    createPropertyCard: function(property, index) {\n        const card = document.createElement('div');\n        card.className = 'roh-property-card';\n        card.dataset.ref = property.ref;\n        card.dataset.index = index;\n        \n        const bedsIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M7 13c1.66 0 3-1.34 3-3S8.66 7 7 7s-3 1.34-3 3 1.34 3 3 3zm12-6h-8v7H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4z\"\/><\/svg>';\n        const bathsIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M7 7c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zm13 13H4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zM20 6c0-.55-.45-1-1-1h-2v2h1v7H6V7h1V5H5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6z\"\/><\/svg>';\n        const areaIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"\/><\/svg>';\n        const locationIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"\/><\/svg>';\n        const heartIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\"\/><\/svg>';\n        const expandIcon = '<svg viewBox=\"0 0 24 24\"><path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10z\"\/><\/svg>';\n        \n        const imageUrl = property.image || 'data:image\/svg+xml,%3Csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"%3E%3Cpath fill=\"%23ddd\" d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\"\/%3E%3C\/svg%3E';\n        \n        card.innerHTML = `\n            <div class=\"roh-card-image\">\n                <img decoding=\"async\" src=\"${imageUrl}\" alt=\"${property.title}\" loading=\"lazy\">\n                <span class=\"roh-card-badge new-dev\">NEW DEVELOPMENT<\/span>\n                <span class=\"roh-card-price\">${property.price}<\/span>\n                <div class=\"roh-card-actions\">\n                    <button type=\"button\" class=\"roh-card-action-btn\" title=\"Add to Favorites\">${heartIcon}<\/button>\n                    <button type=\"button\" class=\"roh-card-action-btn\" title=\"View Details\">${expandIcon}<\/button>\n                <\/div>\n            <\/div>\n            <div class=\"roh-card-content\">\n                <h3 class=\"roh-card-title\">\n                    <a href=\"${property.url}\" target=\"_blank\">${property.title || 'New Development'}<\/a>\n                <\/h3>\n                ${property.location ? `<div class=\"roh-card-location\">${locationIcon} ${property.location}<\/div>` : ''}\n                <div class=\"roh-card-meta\">\n                    ${property.beds ? `<span class=\"roh-card-meta-item\">${bedsIcon} ${property.beds}<\/span>` : ''}\n                    ${property.baths ? `<span class=\"roh-card-meta-item\">${bathsIcon} ${property.baths}<\/span>` : ''}\n                    ${property.area ? `<span class=\"roh-card-meta-item\">${areaIcon} ${property.area} m\u00b2<\/span>` : ''}\n                <\/div>\n                ${property.type ? `<div class=\"roh-card-type\">${property.type}<\/div>` : ''}\n            <\/div>\n            <div class=\"roh-card-footer\">\n                <div class=\"roh-card-agent\">\n                    <div class=\"roh-card-agent-avatar\">\n                        <svg viewBox=\"0 0 24 24\"><path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\/><\/svg>\n                    <\/div>\n                    <span class=\"roh-card-agent-name\">Sales Team<\/span>\n                <\/div>\n                <span class=\"roh-card-date\">\n                    <svg viewBox=\"0 0 24 24\"><path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\/><\/svg>\n                    ${property.date || 'Recently Added'}\n                <\/span>\n            <\/div>\n        `;\n        \n        \/\/ Click event to show on map\n        card.addEventListener('click', (e) => {\n            if (!e.target.closest('.roh-card-action-btn') && !e.target.closest('a')) {\n                this.currentIndex = index;\n                this.focusProperty(property);\n            }\n        });\n        \n        return card;\n    },\n    \n    \/**\n     * Focus map on a specific property\n     *\/\n    focusProperty: function(property) {\n        if (property.lat && property.lng) {\n            this.map.setView([property.lat, property.lng], 15);\n            \n            \/\/ Find and open the marker popup\n            this.markers.eachLayer((layer) => {\n                const latlng = layer.getLatLng();\n                if (Math.abs(latlng.lat - property.lat) < 0.0001 && Math.abs(latlng.lng - property.lng) < 0.0001) {\n                    layer.openPopup();\n                }\n            });\n            \n            this.highlightCard(property.ref);\n        }\n    },\n    \n    \/**\n     * Highlight a property card\n     *\/\n    highlightCard: function(ref) {\n        \/\/ Remove previous highlight\n        document.querySelectorAll('.roh-property-card.highlighted').forEach(el => {\n            el.classList.remove('highlighted');\n        });\n        \n        \/\/ Add highlight to current card\n        const card = document.querySelector(`.roh-property-card[data-ref=\"${ref}\"]`);\n        if (card) {\n            card.classList.add('highlighted');\n            card.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        }\n    },\n    \n    \/**\n     * Navigate to previous property\n     *\/\n    prevProperty: function() {\n        if (this.properties.length === 0) return;\n        \n        if (this.currentIndex > 0) {\n            this.currentIndex--;\n        } else {\n            this.currentIndex = this.properties.length - 1;\n        }\n        this.focusProperty(this.properties[this.currentIndex]);\n    },\n    \n    \/**\n     * Navigate to next property\n     *\/\n    nextProperty: function() {\n        if (this.properties.length === 0) return;\n        \n        if (this.currentIndex < this.properties.length - 1) {\n            this.currentIndex++;\n        } else {\n            this.currentIndex = 0;\n        }\n        this.focusProperty(this.properties[this.currentIndex]);\n    },\n    \n    \/**\n     * Update results count display\n     *\/\n    updateResultsCount: function(total) {\n        document.getElementById('roh-results-count').textContent = total + ' Results Found';\n    },\n    \n    \/**\n     * Clear all filters\n     *\/\n    clearFilters: function() {\n        document.getElementById('roh-search-ref').value = '';\n        document.getElementById('roh-filter-location').value = '';\n        document.getElementById('roh-filter-completion').value = '';\n        document.getElementById('roh-filter-type').value = '';\n        document.getElementById('roh-filter-beds').value = '';\n        document.getElementById('roh-filter-baths').value = '';\n        document.getElementById('roh-filter-min-area').value = '';\n        document.getElementById('roh-filter-min-price').value = '';\n        document.getElementById('roh-filter-max-price').value = '';\n        document.getElementById('roh-filter-property-id').value = '';\n        document.getElementById('roh-filter-label').value = '';\n        document.getElementById('roh-sort').value = 'date_desc';\n        \n        \/\/ Clear feature checkboxes\n        document.getElementById('roh-feature-pool').checked = false;\n        document.getElementById('roh-feature-seaview').checked = false;\n        document.getElementById('roh-feature-golf').checked = false;\n        document.getElementById('roh-feature-garden').checked = false;\n        document.getElementById('roh-feature-garage').checked = false;\n        document.getElementById('roh-feature-terrace').checked = false;\n        \n        this.search();\n    },\n    \n    \/**\n     * Save current search\n     *\/\n    saveSearch: function() {\n        const filters = this.getFilters();\n        const saved = JSON.parse(localStorage.getItem('roh_saved_searches') || '[]');\n        saved.push({\n            filters: filters,\n            date: new Date().toISOString(),\n            count: this.properties.length\n        });\n        localStorage.setItem('roh_saved_searches', JSON.stringify(saved));\n        alert('Search saved successfully!');\n    },\n    \n    \/**\n     * Toggle fullscreen mode\n     *\/\n    toggleFullscreen: function() {\n        const mapArea = document.querySelector('.roh-map-area');\n        if (!document.fullscreenElement) {\n            mapArea.requestFullscreen().catch(err => {\n                console.log('Fullscreen not supported:', err);\n            });\n        } else {\n            document.exitFullscreen();\n        }\n    },\n    \n    \/**\n     * Zoom controls\n     *\/\n    zoomIn: function() {\n        this.map.zoomIn();\n    },\n    \n    zoomOut: function() {\n        this.map.zoomOut();\n    },\n    \n    \/**\n     * Set view mode (list\/grid)\n     *\/\n    setView: function(mode, btn) {\n        document.querySelectorAll('.roh-view-btn').forEach(b => b.classList.remove('active'));\n        if (btn) btn.classList.add('active');\n        \/\/ Could implement grid vs list view toggle here\n    },\n    \n    \/**\n     * Show\/hide loading overlay\n     *\/\n    showLoading: function(show) {\n        document.getElementById('roh-loading').style.display = show ? 'flex' : 'none';\n    },\n    \n    \/**\n     * Show debug info panel when sandbox mode is enabled\n     *\/\n    showDebugInfo: function(debug, total) {\n        \/\/ Remove existing debug panel\n        const existingPanel = document.getElementById('roh-map-debug-panel');\n        if (existingPanel) existingPanel.remove();\n        \n        \/\/ Create debug panel\n        const panel = document.createElement('div');\n        panel.id = 'roh-map-debug-panel';\n        panel.style.cssText = 'background:#fff3cd;border:1px solid #ffc107;padding:15px;margin:15px 0;border-radius:8px;font-family:monospace;font-size:11px;overflow-x:auto;';\n        \n        let html = '<strong style=\"color:#856404;font-size:14px;\">\ud83d\udd27 DEBUG MODE (Sandbox Enabled)<\/strong><br><br>';\n        html += '<strong>API URL Called:<\/strong><br>';\n        html += '<div style=\"background:#f8f9fa;padding:8px;border-radius:4px;word-break:break-all;margin:5px 0;\">' + (debug.api_url || 'N\/A') + '<\/div><br>';\n        html += '<strong>Filter ID:<\/strong> ' + (debug.filter_id || 'Default') + '<br>';\n        html += '<strong>Property Base:<\/strong> ' + (debug.property_base || 'new-development') + '<br>';\n        html += '<strong>Results:<\/strong> ' + total + ' properties<br>';\n        \n        if (debug.transaction) {\n            html += '<br><strong>Transaction Info:<\/strong><br>';\n            html += '<div style=\"background:#f8f9fa;padding:8px;border-radius:4px;word-break:break-all;margin:5px 0;max-height:150px;overflow:auto;\">';\n            html += JSON.stringify(debug.transaction, null, 2).replace(\/\\n\/g, '<br>').replace(\/ \/g, '&nbsp;');\n            html += '<\/div>';\n        }\n        \n        panel.innerHTML = html;\n        \n        \/\/ Insert at top of results section\n        const resultsSection = document.querySelector('.roh-results-section');\n        if (resultsSection) {\n            resultsSection.insertBefore(panel, resultsSection.firstChild);\n        }\n    }\n};\n\n\/\/ Initialize when DOM is ready\ndocument.addEventListener('DOMContentLoaded', function() {\n    rohMapSearch.init();\n});\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Korts\u00f8gning<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-33943","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/pages\/33943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/comments?post=33943"}],"version-history":[{"count":7,"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/pages\/33943\/revisions"}],"predecessor-version":[{"id":37229,"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/pages\/33943\/revisions\/37229"}],"wp:attachment":[{"href":"https:\/\/plexoproperties.com\/da\/wp-json\/wp\/v2\/media?parent=33943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}