{"id":61,"date":"2025-11-03T14:54:15","date_gmt":"2025-11-03T14:54:15","guid":{"rendered":"https:\/\/paklogics.online\/mainstreet\/?page_id=61"},"modified":"2026-05-05T20:12:32","modified_gmt":"2026-05-05T20:12:32","slug":"home","status":"publish","type":"page","link":"https:\/\/paklogics.online\/mainstreet\/","title":{"rendered":"Home"},"content":{"rendered":"    <div id=\"property-listings-section\" class=\"property-listings-anchor-wrap\">\n        <div id=\"pls_1\" class=\"property-listings-simple-wrap\"><\/div>\n    <\/div>\n\n    <style>\n#pls_1.property-listings-simple-wrap {\n    --pls-bg: #f8faf7;\n    --pls-card: #ffffff;\n    --pls-text: #1f2937;\n    --pls-muted: #6b7280;\n    --pls-border: #e5e7eb;\n    --pls-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);\n    --pls-shadow-hover: 0 10px 28px rgba(15, 23, 42, 0.08);\n    --pls-green: #80b141;\n    --pls-green-dark: #6f9d37;\n\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n    color: var(--pls-text);\n    margin: 0 auto;\n    padding: 28px 20px 56px;\n    background: var(--pls-bg);\n}\n\n\/* MAP *\/\n#pls_1 .map-wrap-simple {\n    margin-bottom: 32px;\n    border: 1px solid var(--pls-border);\n    border-radius: 18px;\n    overflow: hidden;\n    background: #fff;\n}\n\n#pls_1 .map-toolbar-simple {\n    padding: 14px 16px;\n    border-bottom: 1px solid var(--pls-border);\n}\n\n#pls_1 .map-search-wrap-simple {\n    max-width: 420px;\n}\n\n#pls_1 .map-search-input-simple {\n    width: 100%;\n    height: 44px;\n    padding: 10px 14px 10px 40px;\n    border-radius: 10px;\n    border: 1px solid #d9e4cf;\n    outline: none;\n}\n\n#pls_1 .map-search-input-simple:focus {\n    border-color: var(--pls-green);\n    box-shadow: 0 0 0 2px rgba(128,177,65,0.15);\n}\n\n#pls_1 .map-holder-simple {\n    height: 460px;\n}\n\n\/* TITLE *\/\n#pls_1 .section-title-simple {\n    font-size: 30px;\n    font-weight: 800;\n    margin: 20px 0;\n    color: #16361d;\n}\n\n\/* RESULTS *\/\n#pls_1 .results-meta-simple {\n    font-size: 14px;\n    margin-bottom: 16px;\n    color: var(--pls-muted);\n}\n\n\/* GRID FIX (IMPORTANT) *\/\n#pls_1 .property-grid-simple {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n    gap: 24px;\n}\n\n\/* CARD *\/\n#pls_1 .property-card-simple {\n    background: #fff;\n    border: 1px solid var(--pls-border);\n    border-radius: 14px;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    transition: box-shadow 0.2s ease, transform 0.2s ease;\n    box-shadow: var(--pls-shadow);\n}\n\n#pls_1 .property-card-simple:hover {\n    transform: translateY(-2px);\n    box-shadow: var(--pls-shadow-hover);\n}\n\n\/* IMAGE *\/\n#pls_1 .property-image-container {\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    overflow: hidden;\n    background: #eee;\n}\n\n#pls_1 .property-image-simple {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n}\n\n\/* CONTENT *\/\n#pls_1 .property-content-simple {\n    padding: 16px;\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n}\n\n\/* TITLE *\/\n#pls_1 .property-title-simple {\n    font-size: 16px;\n    font-weight: 700;\n    margin-bottom: 6px;\n    color: #16361d;\n}\n\n\/* LOCATION *\/\n#pls_1 .property-location-simple {\n    font-size: 13px;\n    color: var(--pls-muted);\n    margin-bottom: 10px;\n}\n\n\/* STATUS *\/\n#pls_1 .status-badge-simple {\n    font-size: 11px;\n    font-weight: 600;\n    padding: 4px 10px;\n    border-radius: 999px;\n    margin-bottom: 12px;\n    display: inline-block;\n}\n\n#pls_1 .status-active-simple {\n    background: rgba(128,177,65,0.15);\n    color: #5f862f;\n}\n\n#pls_1 .status-closed-simple {\n    background: #fdecec;\n    color: #c62828;\n}\n\n\/* META *\/\n#pls_1 .property-meta-simple {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 8px;\n    margin-bottom: 14px;\n}\n\n#pls_1 .meta-box-simple {\n    font-size: 12px;\n    background: #f9fbf6;\n    border: 1px solid #e6edd9;\n    padding: 8px 10px;\n    border-radius: 10px;\n}\n\n#pls_1 .meta-box-simple strong {\n    display: block;\n    font-size: 13px;\n    margin-top: 2px;\n    color: #111;\n}\n\n\/* BUTTON *\/\n#pls_1 .view-btn-simple {\n    margin-top: auto;\n    padding: 10px;\n    background: var(--pls-green);\n    color: #fff;\n    text-align: center;\n    border-radius: 10px;\n    font-size: 13px;\n    text-decoration: none;\n}\n\n#pls_1 .view-btn-simple:hover {\n    background: var(--pls-green-dark);\n}\n\n\/* EMPTY *\/\n#pls_1 .empty-box-simple {\n    text-align: center;\n    padding: 30px;\n    background: #fff;\n    border: 1px solid var(--pls-border);\n    border-radius: 14px;\n}\n\n\/* PAGINATION *\/\n#pls_1 .pagination-simple {\n    margin-top: 30px;\n    display: flex;\n    justify-content: center;\n    gap: 8px;\n}\n\n#pls_1 .pagination-simple button {\n    border: 1px solid #d9e4cf;\n    background: #fff;\n    padding: 8px 12px;\n    border-radius: 8px;\n    cursor: pointer;\n}\n\n#pls_1 .pagination-simple button.active,\n#pls_1 .pagination-simple button:hover {\n    background: var(--pls-green);\n    color: #fff;\n}\n\n\/* RESPONSIVE *\/\n@media (max-width: 992px) {\n    #pls_1 .property-grid-simple {\n        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n    }\n}\n\n@media (max-width: 640px) {\n    #pls_1 .property-grid-simple {\n        grid-template-columns: 1fr;\n    }\n}\n<\/style>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            const container = document.getElementById(\"pls_1\");\n            if (!container) return;\n\n            const properties = [{\"id\":\"1560645\",\"title\":\"The Loft Apartments\",\"image\":\"https:\/\/d33y5rc9xva21v.cloudfront.net\/eyJidWNrZXQiOiJidWlsZG91dC1wcm9kdWN0aW9uIiwia2V5IjoiZGF0YXMvMzM0NDQxNzYvOWU3ZmI4YjNmMmI4YWI0NzUwYzg4MGNjOTM5YzdlMmI0MmQ2OGE0MC9vcmlnaW5hbC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImZpdCI6Imluc2lkZSIsIndpdGhvdXRFbmxhcmdlbWVudCI6dHJ1ZX0sInJvdGF0ZSI6bnVsbH0sInVwZGF0ZWRBdCI6MTc1OTQzOTgyMH0=\",\"location\":\"380 Del Medio Ave, Mountain View, CA, 94040\",\"price\":\"$1,200,000\",\"type\":\"Property\",\"status\":\"Active\",\"size\":\"202,581 SF\",\"saleOrLease\":\"SALE\",\"url\":\"https:\/\/buildout.com\/plugins\/cc0263cbb40b82058ec375ddb56d59638d14d020\/inventory\/1560645-sale\",\"lat\":37.4052813,\"lng\":-122.1147568,\"searchText\":\"the loft apartments 380 del medio ave, mountain view, ca, 94040 property active sale $1,200,000 202,581 sf\"},{\"id\":\"1560646\",\"title\":\"Ridgeview Mall\",\"image\":\"https:\/\/d33y5rc9xva21v.cloudfront.net\/eyJidWNrZXQiOiJidWlsZG91dC1wcm9kdWN0aW9uIiwia2V5IjoiZGF0YXMvMzM0NDQxNzgvMmM2YmYxZjg3YjZmN2FkMDM4MTNlMGQzMDcwM2QwOWVjNzJjY2VmYS9vcmlnaW5hbC5qcGVnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJmaXQiOiJpbnNpZGUiLCJ3aXRob3V0RW5sYXJnZW1lbnQiOnRydWV9LCJyb3RhdGUiOm51bGx9LCJ1cGRhdGVkQXQiOjE3NTk0Mzk4MjJ9\",\"location\":\"808 W Wisconsin St, Chicago, IL, 60614\",\"price\":\"$4,900,000\",\"type\":\"Property\",\"status\":\"Active\",\"size\":\"202,581 SF\",\"saleOrLease\":\"BOTH\",\"url\":\"https:\/\/buildout.com\/plugins\/cc0263cbb40b82058ec375ddb56d59638d14d020\/inventory\/1560646-sale\",\"lat\":41.9161237,\"lng\":-87.6486058,\"searchText\":\"ridgeview mall 808 w wisconsin st, chicago, il, 60614 property active both $4,900,000 202,581 sf\"},{\"id\":\"1560647\",\"title\":\"Westgate Shopping Plaza\",\"image\":\"https:\/\/d33y5rc9xva21v.cloudfront.net\/eyJidWNrZXQiOiJidWlsZG91dC1wcm9kdWN0aW9uIiwia2V5IjoiZGF0YXMvMzM0NDQxNzkvN2ZmZWE1NDk0NTQ3YmFkZWJmZWIxN2JiOTEyMTFlYTJkMTRkODUwOC9vcmlnaW5hbC5qcGVnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJmaXQiOiJpbnNpZGUiLCJ3aXRob3V0RW5sYXJnZW1lbnQiOnRydWV9LCJyb3RhdGUiOm51bGx9LCJ1cGRhdGVkQXQiOjE3NTk0Mzk4MjZ9\",\"location\":\"1101 South Canal Street, Chicago, IL, 60607\",\"price\":\"$10,500,000\",\"type\":\"Property\",\"status\":\"Active\",\"size\":\"310,000 SF\",\"saleOrLease\":\"BOTH\",\"url\":\"https:\/\/buildout.com\/plugins\/cc0263cbb40b82058ec375ddb56d59638d14d020\/inventory\/1560647-sale\",\"lat\":41.86750360000001,\"lng\":-87.63880379999999,\"searchText\":\"westgate shopping plaza 1101 south canal street, chicago, il, 60607 property active both $10,500,000 310,000 sf\"},{\"id\":\"1625487\",\"title\":\"1.08 Acres Mixed Use Gall Blvd at Rapid River SE Corner\",\"image\":\"https:\/\/d33y5rc9xva21v.cloudfront.net\/eyJidWNrZXQiOiJidWlsZG91dC1wcm9kdWN0aW9uIiwia2V5IjoiZGF0YXMvMzQ4OTA1NzUvNzhlZjVlZmUwN2M4MTU5YmE3MTY4Y2QyNzg5OGNhNDBlZjY0M2I4My9vcmlnaW5hbC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjUwMCwiaGVpZ2h0Ijo1MDAsImZpdCI6Imluc2lkZSIsIndpdGhvdXRFbmxhcmdlbWVudCI6dHJ1ZX0sInJvdGF0ZSI6bnVsbH0sInVwZGF0ZWRBdCI6MTc3NDQ0OTg2M30=\",\"location\":\"0 Gall Boulevard @ Rapid River Dr (SE Corner), Zephyrhills, FL, 33541\",\"price\":\"$999,500\",\"type\":\"Property\",\"status\":\"Active\",\"size\":\"N\/A\",\"saleOrLease\":\"SALE\",\"url\":\"https:\/\/buildout.com\/plugins\/cc0263cbb40b82058ec375ddb56d59638d14d020\/inventory\/1625487-sale\",\"lat\":28.1777362,\"lng\":-82.2094061,\"searchText\":\"1.08 acres mixed use gall blvd at rapid river se corner 0 gall boulevard @ rapid river dr (se corner), zephyrhills, fl, 33541 property active sale $999,500 n\/a\"},{\"id\":\"1628926\",\"title\":\"Downtown Building w\/3 Megawatts for Sale\",\"image\":\"https:\/\/d33y5rc9xva21v.cloudfront.net\/eyJidWNrZXQiOiJidWlsZG91dC1wcm9kdWN0aW9uIiwia2V5IjoiZGF0YXMvMzQ5NTUwNzQvOTY0YTAwMTQ5NmE1ODUyZDVkMmY3YzJkMDg0NjEzMGU0OWUzNTViYS9vcmlnaW5hbC5KUEVHIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjo1MDAsImhlaWdodCI6NTAwLCJmaXQiOiJpbnNpZGUiLCJ3aXRob3V0RW5sYXJnZW1lbnQiOnRydWV9LCJyb3RhdGUiOm51bGx9LCJ1cGRhdGVkQXQiOjE3NzUxMzU3Mzd9\",\"location\":\"203 North Marion Street, Tampa, FL, 33602\",\"price\":\"$3,149,900\",\"type\":\"Property\",\"status\":\"Active\",\"size\":\"7,748 SF\",\"saleOrLease\":\"SALE\",\"url\":\"https:\/\/buildout.com\/plugins\/cc0263cbb40b82058ec375ddb56d59638d14d020\/inventory\/1628926-sale\",\"lat\":27.9472387,\"lng\":-82.4554524,\"searchText\":\"downtown building w\/3 megawatts for sale 203 north marion street, tampa, fl, 33602 property active sale $3,149,900 7,748 sf\"}];\n            const cardsPerPage = 12;\n            const mapCenter = [\n                27.9506,\n                -82.4572            ];\n            const mapZoom = 8;\n            const markerLogo = \"https:\\\/\\\/paklogics.online\\\/mainstreet\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/cropped-mianstreetlogo-1-270x270.png\";\n            const sectionTitle = \"Available Properties\";\n            const searchParam = \"property_search\";\n\n            let currentPage = 1;\n            let query = '';\n            let filtered = [...properties];\n            let map = null;\n            let markerLayer = null;\n            let markerRefs = [];\n\n            container.innerHTML = `\n                <div class=\"map-wrap-simple\">\n                    <div class=\"map-toolbar-simple\">\n                        \n                        <div class=\"map-search-wrap-simple\">\n                            <span class=\"map-search-icon-simple\" aria-hidden=\"true\">\n                                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n                                    <path d=\"M21 21L16.65 16.65M10.8 18.6C15.108 18.6 18.6 15.108 18.6 10.8C18.6 6.49218 15.108 3 10.8 3C6.49218 3 3 6.49218 3 10.8C3 15.108 6.49218 18.6 10.8 18.6Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/span>\n                            <input\n                                type=\"text\"\n                                class=\"map-search-input-simple\"\n                                placeholder=\"Partial address, Name etc...\"\n                                aria-label=\"Search properties on map\"\n                            \/>\n                        <\/div>\n                    <\/div>\n                    <div class=\"map-holder-simple\">\n                        <div class=\"map-canvas-simple\"><\/div>\n                        <div class=\"map-activate-simple\" aria-hidden=\"true\"><\/div>\n                    <\/div>\n                <\/div>\n\n                <h2 class=\"section-title-simple\">${escapeHtml(sectionTitle)}<\/h2>\n\n            \n\n                <div class=\"grid-or-empty-simple\"><\/div>\n                <div class=\"pagination-simple\"><\/div>\n<div class=\"view-all-properties-wrap\">\n    <a href=\"\/properties\/\" class=\"view-all-properties-btn\">View All Properties<\/a>\n<\/div>\n            `;\n\n            const mapCanvas = container.querySelector('.map-canvas-simple');\n            const searchInput = container.querySelector('.search-input-simple');\n            const mapSearchInput = container.querySelector('.map-search-input-simple');\n            const resultsMeta = container.querySelector('.results-meta-simple');\n            const gridWrap = container.querySelector('.grid-or-empty-simple');\n            const pagination = container.querySelector('.pagination-simple');\n            const mapOverlay = container.querySelector('.map-activate-simple');\n\n            initMap();\n\n            const params = new URLSearchParams(window.location.search);\n            const qsValue = params.get(searchParam);\n\n            if (qsValue) {\n                query = qsValue.trim().toLowerCase();\n                searchInput.value = qsValue;\n                mapSearchInput.value = qsValue;\n            }\n\n            applyFilterAndRender();\n\n            const handleSearchChange = debounce(function (rawValue) {\n                query = String(rawValue || '').trim().toLowerCase();\n                currentPage = 1;\n\n                if (searchInput.value !== rawValue) {\n                    searchInput.value = rawValue;\n                }\n                if (mapSearchInput.value !== rawValue) {\n                    mapSearchInput.value = rawValue;\n                }\n\n                updateUrl(rawValue);\n                applyFilterAndRender();\n            }, 180);\n\n            searchInput.addEventListener('input', function () {\n                handleSearchChange(searchInput.value.trim());\n            });\n\n            mapSearchInput.addEventListener('input', function () {\n                handleSearchChange(mapSearchInput.value.trim());\n            });\n\n            window.addEventListener('propertyHeaderSearch', function (event) {\n                const newQuery = event.detail && event.detail.query ? String(event.detail.query) : '';\n                query = newQuery.trim().toLowerCase();\n                currentPage = 1;\n\n                searchInput.value = newQuery;\n                mapSearchInput.value = newQuery;\n\n                updateUrl(newQuery);\n                applyFilterAndRender();\n\n                const anchorWrap = container.closest('.property-listings-anchor-wrap') || container;\n                window.scrollTo({\n                    top: anchorWrap.getBoundingClientRect().top + window.pageYOffset - 120,\n                    behavior: 'smooth'\n                });\n            });\n\n            if (mapOverlay) {\n                mapOverlay.addEventListener('click', function () {\n                    if (!map) return;\n                    map.scrollWheelZoom.enable();\n                    mapOverlay.style.display = 'none';\n                });\n\n                document.addEventListener('click', function (e) {\n                    if (!container.contains(e.target) && map && mapOverlay) {\n                        map.scrollWheelZoom.disable();\n                        if (window.matchMedia('(hover: hover) and (pointer: fine)').matches) {\n                            mapOverlay.style.display = 'block';\n                        }\n                    }\n                });\n            }\n\n            function updateUrl(searchValue) {\n                const url = new URL(window.location.href);\n\n                if (searchValue && String(searchValue).trim() !== '') {\n                    url.searchParams.set(searchParam, String(searchValue).trim());\n                } else {\n                    url.searchParams.delete(searchParam);\n                }\n\n                window.history.replaceState({}, '', url.toString());\n            }\n\n            function applyFilterAndRender() {\n                filtered = properties.filter(function (item) {\n                    if (!query) return true;\n                    return item.searchText.includes(query);\n                });\n\n                renderCards();\n                renderPagination();\n                renderMeta();\n                refreshMap();\n            }\n\n            function renderMeta() {\n                resultsMeta.textContent = `${filtered.length} of ${properties.length} properties`;\n            }\n\n            function renderCards() {\n                if (!filtered.length) {\n                    gridWrap.innerHTML = `<div class=\"empty-box-simple\">No properties found for your search.<\/div>`;\n                    return;\n                }\n\n                const start = (currentPage - 1) * cardsPerPage;\n                const end = start + cardsPerPage;\n                const pageItems = filtered.slice(start, end);\n\n                let html = '<div class=\"property-grid-simple\">';\n\n                pageItems.forEach(function (p) {\n                    const pStatusClass = getStatusClass(p.status);\n\n                    html += `\n                        <div class=\"property-card-simple\">\n                            <div class=\"property-image-container\">\n                                <img decoding=\"async\"\n                                    class=\"property-image-simple\"\n                                    src=\"${escapeAttr(p.image)}\"\n                                    alt=\"${escapeAttr(p.title)}\"\n                                    loading=\"lazy\"\n                                >\n                            <\/div>\n\n                            <div class=\"property-content-simple\">\n                                <h3 class=\"property-title-simple\">${escapeHtml(p.title)}<\/h3>\n                                <div class=\"property-location-simple\">${escapeHtml(p.location)}<\/div>\n\n                                <span class=\"status-badge-simple ${escapeAttr(pStatusClass)}\">${escapeHtml(p.status)}<\/span>\n\n                                <div class=\"property-meta-simple\">\n                                    <div class=\"meta-box-simple\">\n                                        Price\n                                        <strong>${escapeHtml(p.price)}<\/strong>\n                                    <\/div>\n                                    <div class=\"meta-box-simple\">\n                                        Type\n                                        <strong>${escapeHtml(p.type)}<\/strong>\n                                    <\/div>\n                                    <div class=\"meta-box-simple\">\n                                        Size\n                                        <strong>${escapeHtml(p.size)}<\/strong>\n                                    <\/div>\n                                    <div class=\"meta-box-simple\">\n                                        Sale \/ Lease\n                                        <strong>${escapeHtml(p.saleOrLease)}<\/strong>\n                                    <\/div>\n                                <\/div>\n\n                                <a class=\"view-btn-simple\" href=\"${escapeAttr(p.url)}\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                    View Property\n                                <\/a>\n                            <\/div>\n                        <\/div>\n                    `;\n                });\n\n                html += '<\/div>';\n                gridWrap.innerHTML = html;\n            }\n\n            function renderPagination() {\n                const totalPages = Math.ceil(filtered.length \/ cardsPerPage);\n\n                if (totalPages <= 1) {\n                    pagination.innerHTML = '';\n                    return;\n                }\n\n                let html = '';\n                html += `<button type=\"button\" ${currentPage === 1 ? 'disabled' : ''} data-page=\"${currentPage - 1}\">Prev<\/button>`;\n\n                const pages = buildPageList(totalPages, currentPage);\n\n                pages.forEach(function (page) {\n                    if (page === '...') {\n                        html += `<button type=\"button\" disabled>...<\/button>`;\n                    } else {\n                        html += `<button type=\"button\" class=\"${page === currentPage ? 'active' : ''}\" data-page=\"${page}\">${page}<\/button>`;\n                    }\n                });\n\n                html += `<button type=\"button\" ${currentPage === totalPages ? 'disabled' : ''} data-page=\"${currentPage + 1}\">Next<\/button>`;\n\n                pagination.innerHTML = html;\n\n                pagination.querySelectorAll('button[data-page]').forEach(function (btn) {\n                    btn.addEventListener('click', function () {\n                        currentPage = parseInt(this.getAttribute('data-page'), 10);\n                        renderCards();\n                        renderPagination();\n\n                        const anchorWrap = container.closest('.property-listings-anchor-wrap') || container;\n                        window.scrollTo({\n                            top: anchorWrap.getBoundingClientRect().top + window.pageYOffset - 120,\n                            behavior: 'smooth'\n                        });\n                    });\n                });\n            }\n\n            function initMap() {\n                if (typeof L === 'undefined') return;\n\n                map = L.map(mapCanvas, {\n                    scrollWheelZoom: false,\n                    dragging: true,\n                    tap: true,\n                    touchZoom: true,\n                    doubleClickZoom: true,\n                    boxZoom: false,\n                    keyboard: true\n                }).setView(mapCenter, mapZoom);\n\n                L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n                    maxZoom: 18,\n                    attribution: '&copy; OpenStreetMap contributors'\n                }).addTo(map);\n\n                markerLayer = L.layerGroup().addTo(map);\n\n                if (window.matchMedia('(hover: hover) and (pointer: fine)').matches && mapOverlay) {\n                    mapOverlay.style.display = 'block';\n                }\n\n                setTimeout(function () {\n                    map.invalidateSize();\n                    refreshMap();\n                }, 250);\n\n                window.addEventListener('resize', debounce(function () {\n                    if (map) {\n                        map.invalidateSize();\n                    }\n                }, 120));\n            }\n\n            function refreshMap() {\n                if (!map || !markerLayer) return;\n\n                markerLayer.clearLayers();\n                markerRefs = [];\n\n                const withCoords = filtered.filter(function (item) {\n                    return Number.isFinite(item.lat) && Number.isFinite(item.lng);\n                });\n\n                let markerOptions = {};\n                if (markerLogo) {\n                    markerOptions.icon = L.icon({\n                        iconUrl: markerLogo,\n                        iconSize: [28, 28],\n                        iconAnchor: [14, 28],\n                        popupAnchor: [0, -24]\n                    });\n                }\n\n                withCoords.forEach(function (item) {\n                    const marker = L.marker([item.lat, item.lng], markerOptions).addTo(markerLayer);\n\n                    marker.bindPopup(`\n                        <div style=\"min-width:220px;\">\n                            <strong style=\"font-size:14px;\">${escapeHtml(item.title)}<\/strong><br>\n                            <div style=\"margin:6px 0;color:#666;\">${escapeHtml(item.location)}<\/div>\n                            <div style=\"font-weight:bold;margin-bottom:6px;\">${escapeHtml(item.price)}<\/div>\n                            <div style=\"margin-bottom:4px;\">${escapeHtml(item.type)}<\/div>\n                            <div style=\"margin-bottom:8px;\">Status: ${escapeHtml(item.status)}<\/div>\n                            <a href=\"${escapeAttr(item.url)}\" target=\"_blank\" rel=\"noopener noreferrer\">View Property<\/a>\n                        <\/div>\n                    `);\n\n                    markerRefs.push(marker);\n                });\n\n                if (withCoords.length === 1) {\n                    map.setView([withCoords[0].lat, withCoords[0].lng], 12);\n                } else if (withCoords.length > 1) {\n                    const group = L.featureGroup(markerRefs);\n                    map.fitBounds(group.getBounds().pad(0.12));\n                } else {\n                    map.setView(mapCenter, mapZoom);\n                }\n\n                setTimeout(function () {\n                    map.invalidateSize();\n                }, 100);\n            }\n\n            function buildPageList(totalPages, current) {\n                if (totalPages <= 7) {\n                    return Array.from({ length: totalPages }, (_, i) => i + 1);\n                }\n\n                const pages = [1];\n\n                if (current > 3) pages.push('...');\n\n                const start = Math.max(2, current - 1);\n                const end = Math.min(totalPages - 1, current + 1);\n\n                for (let i = start; i <= end; i++) {\n                    pages.push(i);\n                }\n\n                if (current < totalPages - 2) pages.push('...');\n\n                pages.push(totalPages);\n                return pages;\n            }\n\n            function getStatusClass(status) {\n                const value = String(status || '').toLowerCase();\n                if (value === 'closed') return 'status-closed-simple';\n                if (value === 'proposal') return 'status-proposal-simple';\n                return 'status-active-simple';\n            }\n\n            function debounce(fn, delay) {\n                let timer = null;\n                return function () {\n                    const args = arguments;\n                    clearTimeout(timer);\n                    timer = setTimeout(function () {\n                        fn.apply(null, args);\n                    }, delay);\n                };\n            }\n\n            function escapeHtml(value) {\n                return String(value == null ? '' : value)\n                    .replace(\/&\/g, '&amp;')\n                    .replace(\/<\/g, '&lt;')\n                    .replace(\/>\/g, '&gt;')\n                    .replace(\/\"\/g, '&quot;')\n                    .replace(\/'\/g, '&#039;');\n            }\n\n            function escapeAttr(value) {\n                return escapeHtml(value);\n            }\n        });\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"property-listings.php","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-61","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/pages\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":226,"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/pages\/61\/revisions"}],"predecessor-version":[{"id":1133,"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/pages\/61\/revisions\/1133"}],"wp:attachment":[{"href":"https:\/\/paklogics.online\/mainstreet\/wp-json\/wp\/v2\/media?parent=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}