{"id":1937,"date":"2026-08-10T20:42:56","date_gmt":"2026-08-10T20:42:56","guid":{"rendered":"https:\/\/sauber.com.py\/wordpress\/?page_id=1937"},"modified":"2026-09-11T11:03:05","modified_gmt":"2026-09-11T11:03:05","slug":"los-pinos-loteamientos","status":"publish","type":"page","link":"https:\/\/sauber.com.py\/?page_id=1937","title":{"rendered":"Los Pinos"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1937\" class=\"elementor elementor-1937\">\n\t\t\t\t<div class=\"elementor-element elementor-element-39d9f3f e-con e-atomic-element e-flexbox-base e-39d9f3f-02de6e9 \" data-id=\"39d9f3f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"39d9f3f\">\n    <div class=\"elementor-element elementor-element-228e339 e-con e-atomic-element e-flexbox-base e-228e339-0a4f6e7 \" data-id=\"228e339\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"228e339\">\n    \t\t\t\t  \t<video\n    data-id=\"e622ed4\" data-interaction-id=\"e622ed4\"\n    data-e-type=\"e-self-hosted-video\" data-interactions=\"null\"\n    \n    class=\"e-e622ed4-884af50 e-self-hosted-video-base\"\n    \n\t\tclass=\"e-self-hosted-video-base\"\n\t\tposter=\"https:\/\/sauber.com.py\/wp-content\/plugins\/elementor\/assets\/images\/placeholder-v4.svg\"\t\tautoplay\t\tmuted\t\tloop\t\t\t\tplaysinline\t\tcontrolslist=\"nodownload\"\t\tpreload=\"metadata\"\n\t>\n\t\t<source src=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/SAUBER_BANNER-LOS-PINOS_01-1.mp4#t=0\">\n\t<\/video>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-8a10d4a e-con e-atomic-element e-flexbox-base e-cbe06ac \" data-id=\"8a10d4a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"8a10d4a\">\n    \t\t<div class=\"elementor-element elementor-element-74c7a4f elementor-widget elementor-widget-spacer\" data-id=\"74c7a4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-6f3cb4a e-con e-atomic-element e-flexbox-base e-49cafdc \" data-id=\"6f3cb4a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6f3cb4a\">\n    \t\t<div class=\"elementor-element elementor-element-90b5266 elementor-widget__width-initial elementor-widget elementor-widget-shortcode\" data-id=\"90b5266\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div id=\"grunce-sistema\">\n\n<!-- ======================================================\n     MAPA\n     ====================================================== -->\n\n<div id=\"grunce-mapa\">\n\n\n    <!-- MAPA ORIGINAL GRUNCE -->\n\n    <iframe\n        id=\"grunce-iframe\"\n        src=\"https:\/\/grunce.com.py\/lotes\/mapa\/fraccion\/15677\/token\/b73c1e08-9ad3-405f-b408-4a79eabfbe73\"\n        frameborder=\"0\"\n        allowfullscreen>\n    <\/iframe>\n\n\n    <!-- MAPA INTERACTIVO -->\n\n    <div\n        id=\"grunce-mapa-propio\">\n    <\/div>\n\n\n    <!-- BOT\u00d3N PARA VOLVER AL MAPA ORIGINAL -->\n\n    <button\n        type=\"button\"\n        id=\"btn-mapa-general\">\n\n        MAPA GENERAL\n\n    <\/button>\n\n\n    <!-- AVISO -->\n\n    <div\n        id=\"grunce-mensaje-mapa\">\n\n        Seleccione una manzana para ver sus lotes\n\n    <\/div>\n\n\n<\/div>\n\n\n<!-- ======================================================\n     PANEL IZQUIERDO\n     ====================================================== -->\n\n<aside id=\"grunce-panel\">\n\n\n    <!-- T\u00cdTULO -->\n\n    <div class=\"titulo-superior\">\n\n        RESERV\u00c1 TU LOTE\n\n    <\/div>\n\n\n    <h1>\n\n        LOS PINOS\n\n    <\/h1>\n\n\n    <div class=\"grunce-ciudad\">\n\n        CIUDAD BERNARDINO CABALLERO\n\n    <\/div>\n\n\n    <hr>\n\n\n    <!-- ==================================================\n         MANZANA\n         ================================================== -->\n\n    <label>\n\n        SELECCIONAR MANZANA\n\n    <\/label>\n\n\n    <select\n        id=\"grunce-manzana\">\n\n        <option value=\"\">\n\n            Cargando manzanas...\n\n        <\/option>\n\n    <\/select>\n\n\n    <!-- ==================================================\n         LOTE\n         ================================================== -->\n\n    <label>\n\n        SELECCIONAR LOTE\n\n    <\/label>\n\n\n    <select\n        id=\"grunce-lote\"\n        disabled>\n\n        <option value=\"\">\n\n            Seleccione una manzana\n\n        <\/option>\n\n    <\/select>\n\n\n    <!-- ==================================================\n         DETALLE\n         ================================================== -->\n\n    <div\n        id=\"detalle-lote\"\n        class=\"detalle-lote\">\n\n\n        <div class=\"estado-lote\">\n\n\n            <span\n                id=\"punto-estado\">\n            <\/span>\n\n\n            <strong\n                id=\"texto-estado\">\n\n                Seleccione un lote\n\n            <\/strong>\n\n\n        <\/div>\n\n\n        <div class=\"detalle-grid\">\n\n\n            <div>\n\n                <small>\n                    LOTE\n                <\/small>\n\n                <strong\n                    id=\"detalle-codigo\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n            <div>\n\n                <small>\n                    SUPERFICIE\n                <\/small>\n\n                <strong\n                    id=\"detalle-superficie\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n            <div>\n\n                <small>\n                    CUOTA\n                <\/small>\n\n                <strong\n                    id=\"detalle-cuota\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n            <div>\n\n                <small>\n                    CONTADO\n                <\/small>\n\n                <strong\n                    id=\"detalle-contado\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n        <\/div>\n\n\n    <\/div>\n\n\n    <!-- ==================================================\n         REFERENCIA\n         ================================================== -->\n\n    <div class=\"referencia\">\n\n\n        <strong>\n\n            REFERENCIA\n\n        <\/strong>\n\n\n        <div>\n\n            <i class=\"rojo\"><\/i>\n\n            VENDIDO\n\n        <\/div>\n\n\n        <div>\n\n            <i class=\"gris\"><\/i>\n\n            RESERVADO\n\n        <\/div>\n\n\n        <div>\n\n            <i class=\"verde\"><\/i>\n\n            DISPONIBLE\n\n        <\/div>\n\n\n    <\/div>\n\n\n    <!-- ==================================================\n         RESERVAR\n         ================================================== -->\n\n    <button\n        type=\"button\"\n        id=\"btn-reservar\"\n        disabled>\n\n        RESERVAR LOTE\n\n    <\/button>\n\n\n<\/aside>\n\n\n<!-- ======================================================\n     MODAL\n     ====================================================== -->\n\n<div\n    id=\"grunce-modal\">\n\n\n    <div\n        id=\"formulario\">\n\n\n        <button\n            type=\"button\"\n            id=\"cerrar\">\n\n            \u00d7\n\n        <\/button>\n\n\n        <h2>\n\n            RESERVAR LOTE\n\n        <\/h2>\n\n\n        <p>\n\n            Complete sus datos para solicitar\n            la reserva del terreno.\n\n        <\/p>\n\n\n        <!-- RESUMEN -->\n\n        <div class=\"seleccion\">\n\n\n            <div>\n\n                <small>\n                    FRACCI\u00d3N\n                <\/small>\n\n                <strong>\n                    LOS PINOS\n                <\/strong>\n\n            <\/div>\n\n\n            <div>\n\n                <small>\n                    MANZANA\n                <\/small>\n\n                <strong\n                    id=\"form-manzana\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n            <div>\n\n                <small>\n                    LOTE\n                <\/small>\n\n                <strong\n                    id=\"form-lote\">\n\n                    -\n\n                <\/strong>\n\n            <\/div>\n\n\n        <\/div>\n\n\n        <!-- FORMULARIO -->\n\n        <form\n            id=\"form-reserva\">\n\n\n            <input\n                type=\"hidden\"\n                name=\"id_fraccion\"\n                value=\"15677\">\n\n\n            <input\n                type=\"hidden\"\n                name=\"fraccion\"\n                value=\"LOS PINOS\">\n\n\n            <input\n                type=\"hidden\"\n                name=\"manzana\"\n                id=\"hidden-manzana\">\n\n\n            <input\n                type=\"hidden\"\n                name=\"lote\"\n                id=\"hidden-lote\">\n\n\n            <label>\n\n                NOMBRE Y APELLIDO *\n\n            <\/label>\n\n\n            <input\n                type=\"text\"\n                name=\"nombre\"\n                required>\n\n\n            <label>\n\n                C\u00c9DULA *\n\n            <\/label>\n\n\n            <input\n                type=\"text\"\n                name=\"cedula\"\n                required>\n\n\n            <label>\n\n                WHATSAPP *\n\n            <\/label>\n\n\n            <input\n                type=\"tel\"\n                name=\"telefono\"\n                required>\n\n\n            <label>\n\n                CORREO\n\n            <\/label>\n\n\n            <input\n                type=\"email\"\n                name=\"email\">\n\n\n            <label>\n\n                FORMA DE PAGO *\n\n            <\/label>\n\n\n            <select\n                name=\"forma_pago\"\n                required>\n\n                <option value=\"\">\n\n                    Seleccionar\n\n                <\/option>\n\n                <option value=\"Contado\">\n\n                    Contado\n\n                <\/option>\n\n                <option value=\"Financiado\">\n\n                    Financiado\n\n                <\/option>\n\n            <\/select>\n\n\n            <label>\n\n                M\u00c9TODO DE PAGO\n\n            <\/label>\n\n\n            <select\n                name=\"metodo_pago\">\n\n                <option value=\"\">\n\n                    Seleccionar\n\n                <\/option>\n\n                <option value=\"Transferencia\">\n\n                    Transferencia bancaria\n\n                <\/option>\n\n                <option value=\"Tarjeta\">\n\n                    Tarjeta\n\n                <\/option>\n\n                <option value=\"Efectivo\">\n\n                    Efectivo\n\n                <\/option>\n\n            <\/select>\n\n\n            <label>\n\n                OBSERVACIONES\n\n            <\/label>\n\n\n            <textarea\n                name=\"observaciones\"\n                rows=\"3\"><\/textarea>\n\n\n            <button\n                type=\"submit\"\n                class=\"confirmar\">\n\n              RESERVAR LOTE\n\n            <\/button>\n\n\n            <div\n                id=\"resultado\">\n            <\/div>\n\n\n        <\/form>\n\n\n    <\/div>\n\n<\/div>\n\n<\/div>\n\n<!-- ==========================================================\n     LEAFLET\n     ========================================================== -->\n\n<link\n    rel=\"stylesheet\"\n    href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\">\n\n<script\n    src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\">\n<\/script>\n\n\n<style>\n\n\/* ============================================================\n   GRUNCE - MAPA DE LOTES\n   CSS COMPLETO Y RESPONSIVE\n   ============================================================ *\/\n\n\n\/* ============================================================\n   SISTEMA PRINCIPAL\n   ============================================================ *\/\n\n#grunce-sistema {\n\n    position: relative !important;\n\n    width: 100% !important;\n\n    height: 800px !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    display: grid !important;\n\n    grid-template-columns:\n        360px\n        minmax(0, 1fr) !important;\n\n    gap: 0 !important;\n\n    overflow: hidden !important;\n\n    font-family:\n        Arial,\n        Helvetica,\n        sans-serif !important;\n\n    box-sizing: border-box !important;\n}\n\n\n\/* ============================================================\n   MAPA\n   ============================================================ *\/\n\n#grunce-mapa {\n\n    position: relative !important;\n\n    left: auto !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n\n    width: 100% !important;\n\n    height: 100% !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    grid-column: 2 !important;\n\n    grid-row: 1 !important;\n\n    background: #ddd;\n\n    z-index: 1 !important;\n\n    overflow: hidden !important;\n\n    box-sizing: border-box !important;\n}\n\n\n\/* ============================================================\n   IFRAME\n   ============================================================ *\/\n\n#grunce-iframe {\n\n    position: absolute !important;\n\n    left: 0 !important;\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n\n    width: 100% !important;\n\n    height: 100% !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    border: 0 !important;\n\n    z-index: 5 !important;\n}\n\n\n\/* ============================================================\n   MAPA PROPIO\n   ============================================================ *\/\n\n#grunce-mapa-propio {\n\n    position: absolute !important;\n\n    left: 0 !important;\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n\n    width: 100% !important;\n\n    height: 100% !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    z-index: 4 !important;\n\n    display: none;\n\n    box-sizing: border-box !important;\n}\n\n\n\/* ============================================================\n   PANEL LATERAL\n   ============================================================ *\/\n\n#grunce-panel {\n\n    position: relative !important;\n\n    left: auto !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n\n    grid-column: 1 !important;\n\n    grid-row: 1 !important;\n\n    width: 360px !important;\n\n    min-width: 360px !important;\n\n    max-width: 360px !important;\n\n    height:\n        calc(100% - 40px) !important;\n\n    max-height: none !important;\n\n    margin:\n        20px 0 20px 20px !important;\n\n    padding: 25px !important;\n\n    box-sizing: border-box !important;\n\n    overflow-y: auto !important;\n\n    overflow-x: hidden !important;\n\n    background:\n        rgba(\n            255,\n            255,\n            255,\n            .94\n        ) !important;\n\n    backdrop-filter:\n        blur(12px);\n\n    -webkit-backdrop-filter:\n        blur(12px);\n\n    border:\n        1px solid\n        rgba(\n            255,\n            255,\n            255,\n            .8\n        );\n\n    border-radius: 18px;\n\n    box-shadow:\n        0 15px 45px\n        rgba(\n            0,\n            0,\n            0,\n            .22\n        );\n\n    z-index: 1000 !important;\n\n    flex: none !important;\n}\n\n\n\/* ============================================================\n   T\u00cdTULO SUPERIOR\n   ============================================================ *\/\n\n.titulo-superior {\n\n    font-size: 13px;\n\n    font-weight: 800;\n\n    letter-spacing: 2px;\n\n    color: #222;\n\n    margin-bottom: 8px;\n}\n\n\n#grunce-panel h1 {\n\n    margin:\n        0 0 5px;\n\n    padding: 0;\n\n    font-size: 27px;\n\n    line-height: 1.15;\n\n    font-weight: 800;\n\n    color: #222;\n}\n\n\n.grunce-ciudad {\n\n    font-size: 11px;\n\n    color: #666;\n\n    line-height: 1.4;\n}\n\n\n#grunce-panel hr {\n\n    border: 0;\n\n    border-top:\n        1px solid\n        #ddd;\n\n    margin:\n        18px 0;\n}\n\n\n\/* ============================================================\n   ETIQUETAS\n   ============================================================ *\/\n\n#grunce-panel label {\n\n    display: block;\n\n    margin:\n        13px 0 6px;\n\n    padding: 0;\n\n    font-size: 10px;\n\n    line-height: 1.3;\n\n    font-weight: 800;\n\n    color: #444;\n}\n\n\n\/* ============================================================\n   SELECT\n   ============================================================ *\/\n\n#grunce-panel select {\n\n    display: block;\n\n    width: 100% !important;\n\n    max-width: 100% !important;\n\n    height: 44px;\n\n    padding:\n        0 11px;\n\n    margin: 0;\n\n    border:\n        1px solid\n        #ccc;\n\n    border-radius: 8px;\n\n    background: #fff;\n\n    color: #222;\n\n    font-size: 13px;\n\n    cursor: pointer;\n\n    box-sizing: border-box !important;\n}\n\n\n#grunce-panel select:disabled {\n\n    background: #f1f1f1;\n\n    color: #999;\n\n    cursor: not-allowed;\n}\n\n\n\/* ============================================================\n   DETALLE DEL LOTE\n   ============================================================ *\/\n\n.detalle-lote {\n\n    width: 100% !important;\n\n    margin-top: 16px;\n\n    padding: 14px;\n\n    box-sizing: border-box !important;\n\n    border:\n        1px solid\n        #ddd;\n\n    border-radius: 9px;\n\n    background:\n        rgba(\n            255,\n            255,\n            255,\n            .75\n        );\n}\n\n\n.estado-lote {\n\n    display: flex;\n\n    align-items: center;\n\n    gap: 8px;\n\n    margin-bottom: 13px;\n\n    font-size: 12px;\n\n    color: #555;\n}\n\n\n#punto-estado {\n\n    width: 12px;\n\n    min-width: 12px;\n\n    height: 12px;\n\n    border-radius: 50%;\n\n    background: #aaa;\n\n    display: inline-block;\n}\n\n\n.detalle-grid {\n\n    display: grid;\n\n    grid-template-columns:\n        1fr 1fr;\n\n    gap: 11px;\n\n    width: 100%;\n}\n\n\n.detalle-grid > div {\n\n    min-width: 0;\n}\n\n\n.detalle-grid small {\n\n    display: block;\n\n    font-size: 9px;\n\n    color: #888;\n\n    margin-bottom: 3px;\n}\n\n\n.detalle-grid strong {\n\n    font-size: 12px;\n\n    color: #222;\n\n    word-break: break-word;\n}\n\n\n\/* ============================================================\n   REFERENCIA\n   ============================================================ *\/\n\n.referencia {\n\n    width: 100% !important;\n\n    margin-top: 15px;\n\n    padding: 13px;\n\n    box-sizing: border-box !important;\n\n    background: #f6f6f6;\n\n    border-radius: 8px;\n}\n\n\n.referencia > strong {\n\n    display: block;\n\n    margin-bottom: 9px;\n\n    font-size: 10px;\n}\n\n\n.referencia div {\n\n    display: flex;\n\n    align-items: center;\n\n    gap: 8px;\n\n    font-size: 10px;\n\n    font-weight: bold;\n\n    margin-bottom: 6px;\n}\n\n\n.referencia div:last-child {\n\n    margin-bottom: 0;\n}\n\n\n.referencia i {\n\n    width: 11px;\n\n    min-width: 11px;\n\n    height: 11px;\n\n    border-radius: 50%;\n\n    display: inline-block;\n}\n\n\n.referencia .rojo {\n\n    background: #dc143c;\n}\n\n\n.referencia .gris {\n\n    background: #95a5a6;\n}\n\n\n.referencia .verde {\n\n    background: #2ecc71;\n}\n\n\n\/* ============================================================\n   BOT\u00d3N RESERVAR\n   ============================================================ *\/\n\n#btn-reservar {\n\n    display: block;\n\n    width: 100% !important;\n\n    margin-top: 16px;\n\n    padding: 13px;\n\n    border: 0;\n\n    border-radius: 8px;\n\n    background: #27ae60;\n\n    color: #fff;\n\n    font-weight: 800;\n\n    font-size: 13px;\n\n    cursor: pointer;\n\n    box-sizing: border-box !important;\n}\n\n\n#btn-reservar:disabled {\n\n    background: #aaa;\n\n    cursor: not-allowed;\n}\n\n\n\/* ============================================================\n   BOT\u00d3N MAPA GENERAL\n   ============================================================ *\/\n\n#btn-mapa-general {\n\n    position: absolute !important;\n\n    right: 20px;\n\n    bottom: 20px;\n\n    z-index: 8000;\n\n    display: none;\n\n    padding:\n        10px 15px;\n\n    border: 0;\n\n    border-radius: 8px;\n\n    background: #222;\n\n    color: #fff;\n\n    font-weight: bold;\n\n    cursor: pointer;\n\n    box-shadow:\n        0 4px 15px\n        rgba(\n            0,\n            0,\n            0,\n            .25\n        );\n}\n\n\n\/* ============================================================\n   MENSAJE SOBRE MAPA\n   ============================================================ *\/\n\n#grunce-mensaje-mapa {\n\n    position: absolute !important;\n\n    left: 50%;\n\n    top: 18px;\n\n    transform:\n        translateX(-50%);\n\n    z-index: 9000;\n\n    padding:\n        9px 15px;\n\n    background:\n        rgba(\n            0,\n            0,\n            0,\n            .72\n        );\n\n    color: #fff;\n\n    border-radius: 8px;\n\n    font-size: 11px;\n\n    line-height: 1.4;\n\n    white-space: nowrap;\n\n    box-sizing: border-box;\n}\n\n\n\/* ============================================================\n   N\u00daMERO DEL LOTE\n   ============================================================ *\/\n\n.numero-lote {\n\n    background:\n        rgba(\n            255,\n            255,\n            255,\n            .95\n        );\n\n    border:\n        2px solid\n        #222;\n\n    border-radius: 50%;\n\n    min-width: 28px;\n\n    height: 28px;\n\n    display: flex;\n\n    align-items: center;\n\n    justify-content: center;\n\n    font-size: 11px;\n\n    font-weight: 900;\n\n    color: #111;\n\n    box-shadow:\n        0 2px 8px\n        rgba(\n            0,\n            0,\n            0,\n            .35\n        );\n}\n\n\n\/* ============================================================\n   MODAL\n   ============================================================ *\/\n\n#grunce-modal {\n\n    display: none;\n\n    position: fixed !important;\n\n    left: 0 !important;\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n\n    width: 100vw !important;\n\n    height: 100vh !important;\n\n    z-index: 999999;\n\n    background:\n        rgba(\n            0,\n            0,\n            0,\n            .65\n        );\n\n    justify-content: center;\n\n    align-items: center;\n\n    padding: 20px;\n\n    box-sizing: border-box !important;\n}\n\n\n\/* ============================================================\n   FORMULARIO MODAL\n   ============================================================ *\/\n\n#formulario {\n\n    position: relative;\n\n    width: 100% !important;\n\n    max-width: 470px !important;\n\n    max-height: 90vh;\n\n    overflow-y: auto;\n\n    box-sizing: border-box !important;\n\n    padding: 28px;\n\n    background: #fff;\n\n    border-radius: 14px;\n\n    box-shadow:\n        0 20px 60px\n        rgba(\n            0,\n            0,\n            0,\n            .35\n        );\n}\n\n\n#formulario h2 {\n\n    margin:\n        0 0 5px;\n\n    padding: 0;\n\n    font-size: 21px;\n\n    line-height: 1.3;\n}\n\n\n#formulario p {\n\n    font-size: 12px;\n\n    line-height: 1.5;\n\n    color: #777;\n}\n\n\n\/* ============================================================\n   BOT\u00d3N CERRAR\n   ============================================================ *\/\n\n#cerrar {\n\n    position: absolute;\n\n    right: 14px;\n\n    top: 8px;\n\n    border: 0;\n\n    background: transparent;\n\n    font-size: 30px;\n\n    line-height: 1;\n\n    color: #999;\n\n    cursor: pointer;\n}\n\n\n\/* ============================================================\n   RESUMEN DE RESERVA\n   ============================================================ *\/\n\n.seleccion {\n\n    display: grid;\n\n    grid-template-columns:\n        1fr 1fr 1fr;\n\n    gap: 8px;\n\n    margin:\n        16px 0;\n}\n\n\n.seleccion div {\n\n    padding: 10px;\n\n    background: #f5f5f5;\n\n    border-radius: 7px;\n\n    min-width: 0;\n\n    box-sizing: border-box;\n}\n\n\n.seleccion small {\n\n    display: block;\n\n    font-size: 8px;\n\n    color: #888;\n\n    margin-bottom: 3px;\n}\n\n\n.seleccion strong {\n\n    font-size: 11px;\n\n    word-break: break-word;\n}\n\n\n\/* ============================================================\n   CAMPOS DEL FORMULARIO\n   ============================================================ *\/\n\n#formulario label {\n\n    display: block;\n\n    margin:\n        10px 0 5px;\n\n    font-size: 10px;\n\n    font-weight: bold;\n\n    color: #444;\n}\n\n\n#formulario input,\n#formulario select,\n#formulario textarea {\n\n    display: block;\n\n    width: 100% !important;\n\n    max-width: 100% !important;\n\n    box-sizing: border-box !important;\n\n    padding: 10px;\n\n    border:\n        1px solid\n        #ccc;\n\n    border-radius: 7px;\n\n    background: #fff;\n\n    font-size: 13px;\n}\n\n\n#formulario textarea {\n\n    min-height: 75px;\n\n    resize: vertical;\n}\n\n\n\/* ============================================================\n   BOT\u00d3N CONFIRMAR \/ WHATSAPP\n   ============================================================ *\/\n\n.confirmar {\n\n    display: block;\n\n    width: 100% !important;\n\n    margin-top: 18px;\n\n    padding: 13px;\n\n    border: 0;\n\n    border-radius: 7px;\n\n    background: #27ae60;\n\n    color: white;\n\n    font-weight: bold;\n\n    font-size: 13px;\n\n    cursor: pointer;\n\n    box-sizing: border-box !important;\n}\n\n\n\/* ============================================================\n   RESULTADO\n   ============================================================ *\/\n\n#resultado {\n\n    margin-top: 10px;\n\n    font-size: 12px;\n\n    line-height: 1.4;\n\n    text-align: center;\n}\n\n\n\/* ============================================================\n   CELULAR\n   ============================================================ *\/\n\n@media (max-width: 700px) {\n\n    \/* --------------------------------------------------------\n       SISTEMA\n       -------------------------------------------------------- *\/\n\n    #grunce-sistema {\n\n        display: flex !important;\n\n        flex-direction: column !important;\n\n        width: 100% !important;\n\n        height: auto !important;\n\n        min-height: 0 !important;\n\n        margin: 0 !important;\n\n        padding: 0 !important;\n\n        overflow: visible !important;\n    }\n\n\n    \/* --------------------------------------------------------\n       PANEL\n       -------------------------------------------------------- *\/\n\n    #grunce-panel {\n\n        position: relative !important;\n\n        left: auto !important;\n        right: auto !important;\n        top: auto !important;\n        bottom: auto !important;\n\n        order: 1 !important;\n\n        width:\n            calc(100% - 20px) !important;\n\n        min-width: 0 !important;\n\n        max-width: none !important;\n\n        height: auto !important;\n\n        max-height: none !important;\n\n        margin:\n            10px !important;\n\n        padding:\n            20px !important;\n\n        overflow: visible !important;\n\n        box-sizing: border-box !important;\n\n        flex:\n            0 0 auto !important;\n\n        z-index: 1000 !important;\n\n        border-radius: 15px;\n    }\n\n\n    \/* --------------------------------------------------------\n       MAPA DEBAJO DEL PANEL\n       -------------------------------------------------------- *\/\n\n    #grunce-mapa {\n\n        position: relative !important;\n\n        left: auto !important;\n        right: auto !important;\n        top: auto !important;\n        bottom: auto !important;\n\n        order: 2 !important;\n\n        width: 100% !important;\n\n        height: 550px !important;\n\n        min-height: 550px !important;\n\n        max-height: 550px !important;\n\n        margin: 0 !important;\n\n        padding: 0 !important;\n\n        flex:\n            0 0 550px !important;\n\n        overflow: hidden !important;\n\n        box-sizing: border-box !important;\n\n        z-index: 1 !important;\n    }\n\n\n    \/* --------------------------------------------------------\n       IFRAME\n       -------------------------------------------------------- *\/\n\n    #grunce-iframe {\n\n        position: absolute !important;\n\n        left: 0 !important;\n\n        top: 0 !important;\n\n        width: 100% !important;\n\n        height: 100% !important;\n\n        border: 0 !important;\n    }\n\n\n    \/* --------------------------------------------------------\n       MAPA PROPIO\n       -------------------------------------------------------- *\/\n\n    #grunce-mapa-propio {\n\n        position: absolute !important;\n\n        left: 0 !important;\n\n        top: 0 !important;\n\n        width: 100% !important;\n\n        height: 100% !important;\n    }\n\n\n    \/* --------------------------------------------------------\n       T\u00cdTULO\n       -------------------------------------------------------- *\/\n\n    #grunce-panel h1 {\n\n        font-size: 24px;\n\n        line-height: 1.15;\n    }\n\n\n    .titulo-superior {\n\n        font-size: 12px;\n    }\n\n\n    .grunce-ciudad {\n\n        font-size: 10px;\n    }\n\n\n    \/* --------------------------------------------------------\n       SELECT\n       -------------------------------------------------------- *\/\n\n    #grunce-panel select {\n\n        width: 100% !important;\n\n        max-width: 100% !important;\n\n        height: 46px;\n\n        font-size: 14px;\n    }\n\n\n    \/* --------------------------------------------------------\n       DETALLE\n       -------------------------------------------------------- *\/\n\n    .detalle-grid {\n\n        grid-template-columns:\n            1fr 1fr;\n\n        gap: 10px;\n    }\n\n\n    \/* --------------------------------------------------------\n       RESERVAR\n       -------------------------------------------------------- *\/\n\n    #btn-reservar {\n\n        width: 100% !important;\n\n        padding: 14px;\n\n        font-size: 14px;\n    }\n\n\n    \/* --------------------------------------------------------\n       MENSAJE MAPA\n       -------------------------------------------------------- *\/\n\n    #grunce-mensaje-mapa {\n\n        max-width:\n            calc(100% - 30px);\n\n        white-space: normal;\n\n        text-align: center;\n\n        font-size: 10px;\n\n        box-sizing: border-box;\n    }\n\n\n    \/* --------------------------------------------------------\n       BOT\u00d3N MAPA\n       -------------------------------------------------------- *\/\n\n    #btn-mapa-general {\n\n        right: 15px;\n\n        bottom: 15px;\n\n        z-index: 8000;\n    }\n\n\n    \/* --------------------------------------------------------\n       MODAL\n       -------------------------------------------------------- *\/\n\n    #grunce-modal {\n\n        padding: 10px !important;\n\n        align-items: flex-start;\n\n        overflow-y: auto;\n    }\n\n\n    #formulario {\n\n        width: 100% !important;\n\n        max-width: 100% !important;\n\n        max-height:\n            calc(100vh - 20px);\n\n        margin-top: 10px;\n\n        padding: 20px;\n\n        border-radius: 12px;\n    }\n\n\n    #formulario h2 {\n\n        font-size: 20px;\n\n        padding-right: 25px;\n    }\n\n\n    #formulario input,\n    #formulario select,\n    #formulario textarea {\n\n        width: 100% !important;\n\n        max-width: 100% !important;\n\n        font-size: 16px;\n\n        min-height: 44px;\n    }\n\n\n    \/* --------------------------------------------------------\n       RESUMEN\n       -------------------------------------------------------- *\/\n\n    .seleccion {\n\n        grid-template-columns:\n            1fr 1fr 1fr;\n\n        gap: 6px;\n    }\n\n\n    .seleccion div {\n\n        padding: 8px;\n\n        min-width: 0;\n    }\n\n\n    .seleccion strong {\n\n        font-size: 10px;\n\n        word-break: break-word;\n    }\n}\n\n\n\/* ============================================================\n   CELULARES PEQUE\u00d1OS\n   ============================================================ *\/\n\n@media (max-width: 400px) {\n\n    #grunce-panel {\n\n        width:\n            calc(100% - 14px) !important;\n\n        min-width: 0 !important;\n\n        max-width: none !important;\n\n        margin: 7px !important;\n\n        padding: 16px !important;\n    }\n\n\n    #grunce-mapa {\n\n        width: 100% !important;\n\n        height: 480px !important;\n\n        min-height: 480px !important;\n\n        max-height: 480px !important;\n\n        flex-basis: 480px !important;\n    }\n\n\n    #grunce-panel h1 {\n\n        font-size: 21px;\n    }\n\n\n    .detalle-grid {\n\n        grid-template-columns:\n            1fr 1fr;\n    }\n\n\n    .seleccion {\n\n        grid-template-columns:\n            1fr;\n    }\n}\n\n<\/style>\n<script>\n\ndocument.addEventListener(\n    'DOMContentLoaded',\n    function() {\n\n\n        \/* =====================================================\n           CONFIGURACI\u00d3N\n           ===================================================== *\/\n\n        const AJAX_URL =\n            \"https:\\\/\\\/sauber.com.py\\\/wp-admin\\\/admin-ajax.php\";\n\n\n        const NONCE =\n            \"0840988c68\";\n\n\n        \/* =====================================================\n           ELEMENTOS\n           ===================================================== *\/\n\n        const selectManzana =\n            document.getElementById(\n                'grunce-manzana'\n            );\n\n\n        const selectLote =\n            document.getElementById(\n                'grunce-lote'\n            );\n\n\n        const btnReservar =\n            document.getElementById(\n                'btn-reservar'\n            );\n\n\n        const iframe =\n            document.getElementById(\n                'grunce-iframe'\n            );\n\n\n        const mapaPropio =\n            document.getElementById(\n                'grunce-mapa-propio'\n            );\n\n\n        const mensajeMapa =\n            document.getElementById(\n                'grunce-mensaje-mapa'\n            );\n\n\n        const btnMapaGeneral =\n            document.getElementById(\n                'btn-mapa-general'\n            );\n\n\n        let mapa = null;\n\n        let grupoPoligonos = null;\n\n        let grupoNumeros = null;\n\n        let lotesActuales = [];\n\n\n        \/* =====================================================\n           INICIALIZAR LEAFLET\n           ===================================================== *\/\n\n        function iniciarMapa() {\n\n\n            if (mapa) {\n\n                return;\n\n            }\n\n\n            mapa =\n                L.map(\n                    mapaPropio\n                );\n\n\n            L.tileLayer(\n\n                'https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png',\n\n                {\n\n                    maxZoom:22,\n\n                    attribution:\n                        '&copy; OpenStreetMap'\n\n                }\n\n            ).addTo(\n                mapa\n            );\n\n\n            mapa.setView(\n                [\n                    -25.7247,\n                    -55.0344\n                ],\n                16\n            );\n\n\n            grupoPoligonos =\n                L.layerGroup()\n                .addTo(\n                    mapa\n                );\n\n\n            grupoNumeros =\n                L.layerGroup()\n                .addTo(\n                    mapa\n                );\n\n        }\n\n\n        \/* =====================================================\n           MOSTRAR MAPA ORIGINAL\n           ===================================================== *\/\n\n        function mostrarMapaOriginal() {\n\n\n            iframe.style.display =\n                'block';\n\n\n            mapaPropio.style.display =\n                'none';\n\n\n            btnMapaGeneral.style.display =\n                'none';\n\n\n            mensajeMapa.style.display =\n                'block';\n\n\n            mensajeMapa.textContent =\n                'Seleccione una manzana para ver sus lotes';\n\n        }\n\n\n        \/* =====================================================\n           MOSTRAR MAPA DE LOTES\n           ===================================================== *\/\n\n        function mostrarMapaLotes() {\n\n\n            iniciarMapa();\n\n\n            iframe.style.display =\n                'none';\n\n\n            mapaPropio.style.display =\n                'block';\n\n\n            btnMapaGeneral.style.display =\n                'block';\n\n\n            mensajeMapa.style.display =\n                'none';\n\n\n            setTimeout(\n                function() {\n\n                    mapa.invalidateSize();\n\n                },\n                200\n            );\n\n        }\n\n\n        \/* =====================================================\n           BOT\u00d3N MAPA GENERAL\n           ===================================================== *\/\n\n        btnMapaGeneral.addEventListener(\n            'click',\n            function() {\n\n\n                \/*\n                 * Volvemos a mostrar\n                 * el mapa general.\n                 *\/\n\n                selectManzana.value =\n                    '';\n\n\n                selectLote.innerHTML =\n                    '<option value=\"\">Seleccione una manzana<\/option>';\n\n\n                selectLote.disabled =\n                    true;\n\n\n                btnReservar.disabled =\n                    true;\n\n\n                limpiarDetalle();\n\n\n                limpiarMapaLotes();\n\n\n                mostrarMapaOriginal();\n\n            }\n        );\n\n\n        \/* =====================================================\n           LIMPIAR MAPA DE LOTES\n           ===================================================== *\/\n\n        function limpiarMapaLotes() {\n\n\n            if (\n                grupoPoligonos\n            ) {\n\n                grupoPoligonos.clearLayers();\n\n            }\n\n\n            if (\n                grupoNumeros\n            ) {\n\n                grupoNumeros.clearLayers();\n\n            }\n\n        }\n\n\n        \/* =====================================================\n           AJAX\n           ===================================================== *\/\n\n        async function consultar(\n            action,\n            datos = {}\n        ) {\n\n\n            const formData =\n                new FormData();\n\n\n            formData.append(\n                'action',\n                action\n            );\n\n\n            formData.append(\n                'nonce',\n                NONCE\n            );\n\n\n            Object.keys(\n                datos\n            ).forEach(\n                function(key) {\n\n                    formData.append(\n                        key,\n                        datos[key]\n                    );\n\n                }\n            );\n\n\n            const response =\n                await fetch(\n                    AJAX_URL,\n                    {\n\n                        method:\n                            'POST',\n\n                        body:\n                            formData\n\n                    }\n                );\n\n\n            return await response.json();\n\n        }\n\n\n        \/* =====================================================\n           CARGAR MANZANAS\n           ===================================================== *\/\n\n        async function cargarManzanas() {\n\n\n            selectManzana.innerHTML =\n                '<option value=\"\">Cargando manzanas...<\/option>';\n\n\n            try {\n\n\n                const respuesta =\n                    await consultar(\n                        'grunce_manzanas'\n                    );\n\n\n                if (\n                    !respuesta.success\n                ) {\n\n                    throw new Error(\n                        respuesta.message ||\n                        'No se pudieron cargar las manzanas.'\n                    );\n\n                }\n\n\n                const manzanas =\n                    Array.isArray(\n                        respuesta.data\n                    )\n                    ? respuesta.data\n                    : [];\n\n\n                selectManzana.innerHTML =\n                    '<option value=\"\">Seleccione una manzana<\/option>';\n\n\n                manzanas.forEach(\n                    function(item) {\n\n\n                        const option =\n                            document.createElement(\n                                'option'\n                            );\n\n\n                        option.value =\n                            item.id_manzana;\n\n\n                        option.textContent =\n                            'Manzana ' +\n                            item.id_manzana;\n\n\n                        \/*\n                         * Guardamos las coordenadas\n                         * para poder volver a centrar\n                         * el mapa.\n                         *\/\n\n                        option.dataset.lat =\n                            item.latitud ||\n                            '';\n\n\n                        option.dataset.lng =\n                            item.longitud ||\n                            '';\n\n\n                        option.dataset.cantidad =\n                            item.cantidad_lotes ||\n                            '';\n\n\n                        selectManzana.appendChild(\n                            option\n                        );\n\n                    }\n                );\n\n\n            }\n            catch(error) {\n\n\n                console.error(\n                    error\n                );\n\n\n                selectManzana.innerHTML =\n                    '<option value=\"\">Error cargando manzanas<\/option>';\n\n            }\n\n        }\n\n\n        \/* =====================================================\n           CAMBIO DE MANZANA\n           ===================================================== *\/\n\n        selectManzana.addEventListener(\n            'change',\n            async function() {\n\n\n                const idManzana =\n                    this.value;\n\n\n                \/*\n                 * SI SE VUELVE A\n                 * \"SELECCIONE UNA MANZANA\"\n                 *\/\n\n                if (\n                    !idManzana\n                ) {\n\n\n                    selectLote.innerHTML =\n                        '<option value=\"\">Seleccione una manzana<\/option>';\n\n\n                    selectLote.disabled =\n                        true;\n\n\n                    btnReservar.disabled =\n                        true;\n\n\n                    limpiarDetalle();\n\n\n                    limpiarMapaLotes();\n\n\n                    \/*\n                     * IMPORTANTE:\n                     * vuelve al mapa completo.\n                     *\/\n\n                    mostrarMapaOriginal();\n\n\n                    return;\n\n                }\n\n\n                \/*\n                 * Cargando\n                 *\/\n\n                selectLote.disabled =\n                    true;\n\n\n                selectLote.innerHTML =\n                    '<option value=\"\">Cargando lotes...<\/option>';\n\n\n                btnReservar.disabled =\n                    true;\n\n\n                limpiarDetalle();\n\n\n                mostrarMapaLotes();\n\n\n                try {\n\n\n                    const respuesta =\n                        await consultar(\n                            'grunce_lotes',\n                            {\n\n                                id_manzana:\n                                    idManzana\n\n                            }\n                        );\n\n\n                    if (\n                        !respuesta.success\n                    ) {\n\n                        throw new Error(\n                            respuesta.message ||\n                            'No se pudieron cargar los lotes.'\n                        );\n\n                    }\n\n\n                    lotesActuales =\n                        Array.isArray(\n                            respuesta.data\n                        )\n                        ? respuesta.data\n                        : [];\n\n\n                    selectLote.innerHTML =\n                        '<option value=\"\">Seleccione un lote<\/option>';\n\n\n                    \/*\n                     * Crear opciones.\n                     *\/\n\n                    lotesActuales.forEach(\n                        function(item) {\n\n\n                            const option =\n                                document.createElement(\n                                    'option'\n                                );\n\n\n                            option.value =\n                                item.codigo;\n\n\n                            option.textContent =\n                                'Lote ' +\n                                item.codigo +\n                                ' \u2014 ' +\n                                (\n                                    item.estado ||\n                                    ''\n                                );\n\n\n                            option.dataset.estado =\n                                item.estado ||\n                                '';\n\n\n                            option.dataset.color =\n                                item.color ||\n                                '';\n\n\n                            option.dataset.superficie =\n                                item.superficie ||\n                                '-';\n\n\n                            option.dataset.cuota =\n                                item.importe_cuota ||\n                                '0';\n\n\n                            option.dataset.contado =\n                                item.precio_contado ||\n                                '0';\n\n\n                            selectLote.appendChild(\n                                option\n                            );\n\n                        }\n                    );\n\n\n                    selectLote.disabled =\n                        false;\n\n\n                    \/*\n                     * Dibujar lotes.\n                     *\/\n\n                    dibujarLotes(\n                        lotesActuales\n                    );\n\n\n                }\n                catch(error) {\n\n\n                    console.error(\n                        error\n                    );\n\n\n                    selectLote.innerHTML =\n                        '<option value=\"\">Error cargando lotes<\/option>';\n\n\n                    limpiarMapaLotes();\n\n                }\n\n            }\n        );\n\n\n        \/* =====================================================\n           OBTENER COLOR\n           ===================================================== *\/\n\n        function colorEstado(\n            estado,\n            colorAPI\n        ) {\n\n\n            const estadoMayus =\n                String(\n                    estado ||\n                    ''\n                ).toUpperCase();\n\n\n            if (\n                estadoMayus ===\n                'VENDIDO'\n            ) {\n\n                return '#DC143C';\n\n            }\n\n\n            if (\n                estadoMayus ===\n                'RESERVADO'\n            ) {\n\n                return '#95A5A6';\n\n            }\n\n\n            if (\n                estadoMayus ===\n                'DISPONIBLE'\n            ) {\n\n                return '#2ECC71';\n\n            }\n\n\n            return colorAPI ||\n                '#999999';\n\n        }\n\n\n        \/* =====================================================\n           CALCULAR CENTRO DEL POL\u00cdGONO\n           ===================================================== *\/\n\n        function centroPoligono(\n            puntos\n        ) {\n\n\n            let lat = 0;\n\n            let lng = 0;\n\n\n            puntos.forEach(\n                function(p) {\n\n                    lat +=\n                        p[0];\n\n                    lng +=\n                        p[1];\n\n                }\n            );\n\n\n            return [\n\n                lat \/\n                    puntos.length,\n\n                lng \/\n                    puntos.length\n\n            ];\n\n        }\n\n\n        \/* =====================================================\n           DIBUJAR LOTES\n           ===================================================== *\/\n\n        function dibujarLotes(\n            lotes\n        ) {\n\n\n            iniciarMapa();\n\n\n            mostrarMapaLotes();\n\n\n            limpiarMapaLotes();\n\n\n            const bounds = [];\n\n\n            lotes.forEach(\n                function(item) {\n\n\n                    \/*\n                     * La API entrega geo.\n                     *\/\n\n                    if (\n                        !Array.isArray(\n                            item.geo\n                        )\n                    ) {\n\n                        return;\n\n                    }\n\n\n                    const puntos =\n                        item.geo\n                        .map(\n                            function(\n                                punto\n                            ) {\n\n\n                                const lat =\n                                    parseFloat(\n                                        punto.latitud\n                                    );\n\n\n                                const lng =\n                                    parseFloat(\n                                        punto.longitud\n                                    );\n\n\n                                if (\n                                    isNaN(lat) ||\n                                    isNaN(lng)\n                                ) {\n\n                                    return null;\n\n                                }\n\n\n                                return [\n                                    lat,\n                                    lng\n                                ];\n\n                            }\n                        )\n                        .filter(\n                            Boolean\n                        );\n\n\n                    if (\n                        puntos.length <\n                        3\n                    ) {\n\n                        return;\n\n                    }\n\n\n                    \/*\n                     * Guardar bounds.\n                     *\/\n\n                    puntos.forEach(\n                        function(p) {\n\n                            bounds.push(\n                                p\n                            );\n\n                        }\n                    );\n\n\n                    const color =\n                        colorEstado(\n                            item.estado,\n                            item.color\n                        );\n\n\n                    \/*\n                     * POL\u00cdGONO\n                     *\/\n\n                    const poligono =\n                        L.polygon(\n                            puntos,\n                            {\n\n                                color:\n                                    color,\n\n                                fillColor:\n                                    color,\n\n                                fillOpacity:\n                                    .55,\n\n                                weight:\n                                    2\n\n                            }\n                        );\n\n\n                    \/*\n                     * Tooltip.\n                     *\/\n\n                    poligono.bindTooltip(\n\n                        'LOTE ' +\n                        item.codigo +\n                        '<br>' +\n                        (\n                            item.estado ||\n                            ''\n                        ),\n\n                        {\n\n                            sticky:true\n\n                        }\n\n                    );\n\n\n                    \/*\n                     * Click.\n                     *\/\n\n                    poligono.on(\n                        'click',\n                        function() {\n\n                            seleccionarLote(\n                                item\n                            );\n\n                        }\n                    );\n\n\n                    poligono.addTo(\n                        grupoPoligonos\n                    );\n\n\n                    \/*\n                     * CENTRO\n                     *\/\n\n                    const centro =\n                        centroPoligono(\n                            puntos\n                        );\n\n\n                    \/*\n                     * N\u00daMERO DEL LOTE\n                     *\/\n\n                    const icono =\n                        L.divIcon(\n                            {\n\n                                className:\n                                    '',\n\n                                html:\n                                    '<div class=\"numero-lote\">' +\n                                    item.codigo +\n                                    '<\/div>',\n\n                                iconSize:\n                                    [\n                                        32,\n                                        32\n                                    ],\n\n                                iconAnchor:\n                                    [\n                                        16,\n                                        16\n                                    ]\n\n                            }\n                        );\n\n\n                    const marcador =\n                        L.marker(\n                            centro,\n                            {\n\n                                icon:\n                                    icono,\n\n                                interactive:\n                                    true\n\n                            }\n                        );\n\n\n                    marcador.bindTooltip(\n\n                        'Lote ' +\n                        item.codigo,\n\n                        {\n\n                            direction:\n                                'top'\n\n                        }\n\n                    );\n\n\n                    marcador.on(\n                        'click',\n                        function() {\n\n                            seleccionarLote(\n                                item\n                            );\n\n                        }\n                    );\n\n\n                    marcador.addTo(\n                        grupoNumeros\n                    );\n\n                }\n            );\n\n\n            \/*\n             * Ajustar mapa a los lotes.\n             *\/\n\n            if (\n                bounds.length >\n                0\n            ) {\n\n                mapa.fitBounds(\n                    bounds,\n                    {\n\n                        padding:\n                            [\n                                50,\n                                50\n                            ],\n\n                        maxZoom:\n                            20\n\n                    }\n                );\n\n            }\n\n        }\n\n\n        \/* =====================================================\n           SELECCIONAR LOTE\n           ===================================================== *\/\n\n        function seleccionarLote(\n            item\n        ) {\n\n\n            \/*\n             * Seleccionamos tambi\u00e9n\n             * el lote en el desplegable.\n             *\/\n\n            selectLote.value =\n                item.codigo;\n\n\n            mostrarDetalle(\n                item\n            );\n\n\n            \/*\n             * Llevar el mapa al lote.\n             *\/\n\n            if (\n                Array.isArray(\n                    item.geo\n                ) &&\n                item.geo.length\n            ) {\n\n\n                const puntos =\n                    item.geo\n                    .map(\n                        function(p) {\n\n                            return [\n\n                                parseFloat(\n                                    p.latitud\n                                ),\n\n                                parseFloat(\n                                    p.longitud\n                                )\n\n                            ];\n\n                        }\n                    );\n\n\n                const validos =\n                    puntos.filter(\n                        function(p) {\n\n                            return !isNaN(\n                                p[0]\n                            ) &&\n                            !isNaN(\n                                p[1]\n                            );\n\n                        }\n                    );\n\n\n                if (\n                    validos.length\n                ) {\n\n                    mapa.fitBounds(\n                        validos,\n                        {\n\n                            padding:\n                                [\n                                    100,\n                                    100\n                                ],\n\n                            maxZoom:\n                                21\n\n                        }\n                    );\n\n                }\n\n            }\n\n        }\n\n\n        \/* =====================================================\n           CAMBIO DE LOTE\n           ===================================================== *\/\n\n        selectLote.addEventListener(\n            'change',\n            function() {\n\n\n                const codigo =\n                    this.value;\n\n\n                if (\n                    !codigo\n                ) {\n\n                    limpiarDetalle();\n\n                    btnReservar.disabled =\n                        true;\n\n                    return;\n\n                }\n\n\n                const item =\n                    lotesActuales.find(\n                        function(lote) {\n\n                            return String(\n                                lote.codigo\n                            ) ===\n                            String(\n                                codigo\n                            );\n\n                        }\n                    );\n\n\n                if (\n                    item\n                ) {\n\n                    seleccionarLote(\n                        item\n                    );\n\n                }\n\n            }\n        );\n\n\n        \/* =====================================================\n           MOSTRAR DETALLE\n           ===================================================== *\/\n\n        function mostrarDetalle(\n            item\n        ) {\n\n\n            const estado =\n                String(\n                    item.estado ||\n                    ''\n                ).toUpperCase();\n\n\n            const color =\n                colorEstado(\n                    estado,\n                    item.color\n                );\n\n\n            document.getElementById(\n                'punto-estado'\n            ).style.background =\n                color;\n\n\n            document.getElementById(\n                'texto-estado'\n            ).textContent =\n                item.estado ||\n                'SIN ESTADO';\n\n\n            document.getElementById(\n                'detalle-codigo'\n            ).textContent =\n                item.codigo ||\n                '-';\n\n\n            document.getElementById(\n                'detalle-superficie'\n            ).textContent =\n                item.superficie ||\n                '-';\n\n\n            document.getElementById(\n                'detalle-cuota'\n            ).textContent =\n                item.importe_cuota ||\n                '0';\n\n\n            document.getElementById(\n                'detalle-contado'\n            ).textContent =\n                item.precio_contado ||\n                '0';\n\n\n            \/*\n             * Solo disponible.\n             *\/\n\n            btnReservar.disabled =\n                estado !==\n                'DISPONIBLE';\n\n        }\n\n\n        \/* =====================================================\n           LIMPIAR DETALLE\n           ===================================================== *\/\n\n        function limpiarDetalle() {\n\n\n            document.getElementById(\n                'punto-estado'\n            ).style.background =\n                '#aaa';\n\n\n            document.getElementById(\n                'texto-estado'\n            ).textContent =\n                'Seleccione un lote';\n\n\n            document.getElementById(\n                'detalle-codigo'\n            ).textContent =\n                '-';\n\n\n            document.getElementById(\n                'detalle-superficie'\n            ).textContent =\n                '-';\n\n\n            document.getElementById(\n                'detalle-cuota'\n            ).textContent =\n                '-';\n\n\n            document.getElementById(\n                'detalle-contado'\n            ).textContent =\n                '-';\n\n        }\n\n\n        \/* =====================================================\n           ABRIR FORMULARIO\n           ===================================================== *\/\n\n        btnReservar.addEventListener(\n            'click',\n            function() {\n\n\n                const manzana =\n                    selectManzana.value;\n\n\n                const lote =\n                    selectLote.value;\n\n\n                if (\n                    !manzana ||\n                    !lote\n                ) {\n\n                    return;\n\n                }\n\n\n                document.getElementById(\n                    'form-manzana'\n                ).textContent =\n                    manzana;\n\n\n                document.getElementById(\n                    'form-lote'\n                ).textContent =\n                    lote;\n\n\n                document.getElementById(\n                    'hidden-manzana'\n                ).value =\n                    manzana;\n\n\n                document.getElementById(\n                    'hidden-lote'\n                ).value =\n                    lote;\n\n\n                document.getElementById(\n                    'grunce-modal'\n                ).style.display =\n                    'flex';\n\n            }\n        );\n\n\n        \/* =====================================================\n           CERRAR FORMULARIO\n           ===================================================== *\/\n\n        document.getElementById(\n            'cerrar'\n        ).addEventListener(\n            'click',\n            function() {\n\n\n                document.getElementById(\n                    'grunce-modal'\n                ).style.display =\n                    'none';\n\n            }\n        );\n\n\n        document.getElementById(\n            'grunce-modal'\n        ).addEventListener(\n            'click',\n            function(e) {\n\n\n                if (\n                    e.target ===\n                    this\n                ) {\n\n                    this.style.display =\n                        'none';\n\n                }\n\n            }\n        );\n\n\n        \/* =====================================================\n           ENVIAR RESERVA POR WHATSAPP\n           ===================================================== *\/\n\n        const GRUNCE_WHATSAPP_EMPRESA = '595971504362';\n\n        document.getElementById('form-reserva').addEventListener(\n            'submit',\n            function(e) {\n\n                e.preventDefault();\n\n                const form = new FormData(this);\n\n                const fraccion = form.get('fraccion') || '';\n                const manzana = form.get('manzana') || '';\n                const lote = form.get('lote') || '';\n                const nombre = form.get('nombre') || '';\n                const cedula = form.get('cedula') || '';\n                const telefono = form.get('telefono') || '';\n                const email = form.get('email') || '';\n                const formaPago = form.get('forma_pago') || '';\n                const metodoPago = form.get('metodo_pago') || '';\n                const observaciones = form.get('observaciones') || '';\n\n                let mensaje =\n                    'NUEVA SOLICITUD DE RESERVA DE LOTE\\n\\n';\n\n                mensaje += 'FRACCI\u00d3N: ' + fraccion + '\\n';\n                mensaje += 'MANZANA: ' + manzana + '\\n';\n                mensaje += 'LOTE: ' + lote + '\\n\\n';\n\n                mensaje += 'DATOS DEL CLIENTE\\n';\n                mensaje += 'NOMBRE Y APELLIDO: ' + nombre + '\\n';\n                mensaje += 'C\u00c9DULA: ' + cedula + '\\n';\n                mensaje += 'WHATSAPP: ' + telefono + '\\n';\n\n                if (email) {\n                    mensaje += 'CORREO: ' + email + '\\n';\n                }\n\n                mensaje += '\\nFORMA DE PAGO: ' + formaPago + '\\n';\n\n                if (metodoPago) {\n                    mensaje += 'M\u00c9TODO DE PAGO: ' + metodoPago + '\\n';\n                }\n\n                if (observaciones) {\n                    mensaje += '\\nOBSERVACIONES:\\n' +\n                               observaciones + '\\n';\n                }\n\n                const urlWhatsApp =\n                    'https:\/\/wa.me\/' +\n                    GRUNCE_WHATSAPP_EMPRESA +\n                    '?text=' +\n                    encodeURIComponent(mensaje);\n\n                window.open(urlWhatsApp, '_blank');\n            }\n        );\n\n\n        \/* =====================================================\n           INICIO\n           ===================================================== *\/\n\n        \/*\n         * Al entrar:\n         * - Los Pinos\n         * - Mapa general\n         * - Carga las manzanas\n         *\/\n\n        mostrarMapaOriginal();\n\n\n        cargarManzanas();\n\n\n    }\n);\n\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-91eff4e e-con e-atomic-element e-flexbox-base e-91eff4e-5a243ae \" data-id=\"91eff4e\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"91eff4e\">\n    <div class=\"elementor-element elementor-element-e1285a4 e-grid e-con-boxed e-con e-parent\" data-id=\"e1285a4\" 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-9f1fb0c animated-slow elementor-position-top elementor-invisible elementor-widget elementor-widget-image-box\" data-id=\"9f1fb0c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;_animation_delay&quot;:500}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/sauber.com.py\/?page_id=1937\" tabindex=\"-1\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1526\" height=\"1207\" src=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/360-lotes.png\" class=\"elementor-animation-shrink attachment-full size-full wp-image-1256\" alt=\"\" srcset=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/360-lotes.png 1526w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/360-lotes-300x237.png 300w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/360-lotes-1024x810.png 1024w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/360-lotes-768x607.png 768w\" sizes=\"(max-width: 1526px) 100vw, 1526px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><p class=\"elementor-image-box-description\"><b>360 lotes disponibles.<\/b><\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dda4212 animated-slow elementor-position-top elementor-invisible elementor-widget elementor-widget-image-box\" data-id=\"dda4212\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;_animation_delay&quot;:500}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/maps.app.goo.gl\/WsGtnvEe2cn1CZAj6?g_st=am\" target=\"_blank\" tabindex=\"-1\"><img decoding=\"async\" width=\"831\" height=\"1181\" src=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/Nuevo-Casco-Urbano.png\" class=\"elementor-animation-shrink attachment-full size-full wp-image-1248\" alt=\"\" srcset=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/Nuevo-Casco-Urbano.png 831w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/Nuevo-Casco-Urbano-211x300.png 211w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/Nuevo-Casco-Urbano-721x1024.png 721w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/Nuevo-Casco-Urbano-768x1091.png 768w\" sizes=\"(max-width: 831px) 100vw, 831px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><p class=\"elementor-image-box-description\"><b>Ubicacion del Fraccionamiento.<\/b><\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ea6ed8 animated-slow elementor-position-top elementor-invisible elementor-widget elementor-widget-image-box\" data-id=\"9ea6ed8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;_animation_delay&quot;:500}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/sauber.com.py\/?page_id=1937\" tabindex=\"-1\"><img decoding=\"async\" width=\"1182\" height=\"1182\" src=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO.png\" class=\"elementor-animation-shrink attachment-full size-full wp-image-1247\" alt=\"\" srcset=\"https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO.png 1182w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO-300x300.png 300w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO-1024x1024.png 1024w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO-150x150.png 150w, https:\/\/sauber.com.py\/wp-content\/uploads\/2026\/08\/PRECIO-768x768.png 768w\" sizes=\"(max-width: 1182px) 100vw, 1182px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><p class=\"elementor-image-box-description\"><b>Desde 220.000Gs.<\/b>\n<br><b> mensuales.<\/b><\/br><\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>360 lotes disponibles. Ubicacion del Fraccionamiento. Desde 220.000Gs. mensuales.<\/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":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-1937","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/sauber.com.py\/?page_id=1937\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"sauber -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Los Pinos - sauber\" \/>\n\t\t<meta property=\"og:description\" content=\"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/sauber.com.py\/?page_id=1937\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-10T20:42:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-11T11:03:05+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Los Pinos - sauber\" \/>\n\t\t<meta name=\"twitter:description\" content=\"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sauber.com.py#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sauber.com.py\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937#listItem\",\"name\":\"Los Pinos\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937#listItem\",\"position\":2,\"name\":\"Los Pinos\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sauber.com.py#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/#organization\",\"name\":\"sauber\",\"url\":\"https:\\\/\\\/sauber.com.py\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937#webpage\",\"url\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937\",\"name\":\"Los Pinos - sauber\",\"description\":\"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \\u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sauber.com.py\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sauber.com.py\\\/?page_id=1937#breadcrumblist\"},\"datePublished\":\"2026-08-10T20:42:56+00:00\",\"dateModified\":\"2026-09-11T11:03:05+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sauber.com.py\\\/#website\",\"url\":\"https:\\\/\\\/sauber.com.py\\\/\",\"name\":\"sauber\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/sauber.com.py\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Los Pinos - sauber","description":"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.","canonical_url":"https:\/\/sauber.com.py\/?page_id=1937","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/sauber.com.py\/?page_id=1937#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/sauber.com.py#listItem","position":1,"name":"Home","item":"https:\/\/sauber.com.py","nextItem":{"@type":"ListItem","@id":"https:\/\/sauber.com.py\/?page_id=1937#listItem","name":"Los Pinos"}},{"@type":"ListItem","@id":"https:\/\/sauber.com.py\/?page_id=1937#listItem","position":2,"name":"Los Pinos","previousItem":{"@type":"ListItem","@id":"https:\/\/sauber.com.py#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/sauber.com.py\/#organization","name":"sauber","url":"https:\/\/sauber.com.py\/"},{"@type":"WebPage","@id":"https:\/\/sauber.com.py\/?page_id=1937#webpage","url":"https:\/\/sauber.com.py\/?page_id=1937","name":"Los Pinos - sauber","description":"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/sauber.com.py\/#website"},"breadcrumb":{"@id":"https:\/\/sauber.com.py\/?page_id=1937#breadcrumblist"},"datePublished":"2026-08-10T20:42:56+00:00","dateModified":"2026-09-11T11:03:05+00:00"},{"@type":"WebSite","@id":"https:\/\/sauber.com.py\/#website","url":"https:\/\/sauber.com.py\/","name":"sauber","inLanguage":"es-ES","publisher":{"@id":"https:\/\/sauber.com.py\/#organization"}}]},"og:locale":"es_ES","og:site_name":"sauber -","og:type":"article","og:title":"Los Pinos - sauber","og:description":"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno.","og:url":"https:\/\/sauber.com.py\/?page_id=1937","article:published_time":"2026-08-10T20:42:56+00:00","article:modified_time":"2026-09-11T11:03:05+00:00","twitter:card":"summary_large_image","twitter:title":"Los Pinos - sauber","twitter:description":"MAPA GENERAL Seleccione una manzana para ver sus lotes RESERV\u00c1 TU LOTE LOS PINOS CIUDAD BERNARDINO CABALLERO SELECCIONAR MANZANA Cargando manzanas... SELECCIONAR LOTE Seleccione una manzana Seleccione un lote LOTE - SUPERFICIE - CUOTA - CONTADO - REFERENCIA VENDIDO RESERVADO DISPONIBLE RESERVAR LOTE \u00d7 RESERVAR LOTE Complete sus datos para solicitar la reserva del terreno."},"aioseo_meta_data":{"post_id":"1937","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-08-10 20:39:08","updated":"2026-09-11 12:04:14"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sauber.com.py\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tLos Pinos\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/sauber.com.py"},{"label":"Los Pinos","link":"https:\/\/sauber.com.py\/?page_id=1937"}],"_links":{"self":[{"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/pages\/1937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sauber.com.py\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1937"}],"version-history":[{"count":239,"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/pages\/1937\/revisions"}],"predecessor-version":[{"id":2386,"href":"https:\/\/sauber.com.py\/index.php?rest_route=\/wp\/v2\/pages\/1937\/revisions\/2386"}],"wp:attachment":[{"href":"https:\/\/sauber.com.py\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}