{"id":2688,"date":"2026-06-15T09:03:19","date_gmt":"2026-06-15T09:03:19","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=2688"},"modified":"2026-06-24T04:25:27","modified_gmt":"2026-06-24T04:25:27","slug":"calculadora-de-adoquines","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/es\/calculadora-de-adoquines\/","title":{"rendered":"Calculadora de Adoquines"},"content":{"rendered":"\n<div class=\"pcalc-wrapper\" id=\"pcalc-root\">\n    <style>\n        :root {\n            --pcalc-bg: #f8f7f4;\n            --pcalc-card: #ffffff;\n            --pcalc-text: #1a1a1a;\n            --pcalc-text-secondary: #5c5c5c;\n            --pcalc-border: #e2e0da;\n            --pcalc-border-focus: #c8c5bd;\n            --pcalc-teal: #1ecad3;\n            --pcalc-teal-deep: #17a8b0;\n            --pcalc-purple: #9486f7;\n            --pcalc-purple-deep: #7b6de0;\n            --pcalc-radius: 10px;\n            --pcalc-radius-sm: 6px;\n            --pcalc-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n            --pcalc-transition: 0.18s ease;\n        }\n\n        .pcalc-wrapper {\n            font-family: var(--pcalc-font);\n            color: var(--pcalc-text);\n            background: var(--pcalc-bg);\n            padding: 32px 28px;\n            border-radius: 14px;\n            max-width: 720px;\n            margin: 0 auto;\n            box-sizing: border-box;\n            line-height: 1.5;\n            -webkit-font-smoothing: antialiased;\n            -moz-osx-font-smoothing: grayscale;\n        }\n        .pcalc-wrapper *,\n        .pcalc-wrapper *::before,\n        .pcalc-wrapper *::after {\n            box-sizing: border-box;\n        }\n\n        \/* Toggle *\/\n        .pcalc-toggle-group {\n            display: flex;\n            align-items: center;\n            gap: 0;\n            background: #eae7e1;\n            border-radius: 28px;\n            padding: 4px;\n            margin-bottom: 28px;\n            width: fit-content;\n        }\n        .pcalc-toggle-btn {\n            font-family: var(--pcalc-font);\n            font-size: 13.5px;\n            font-weight: 600;\n            letter-spacing: 0.01em;\n            padding: 9px 20px;\n            border-radius: 24px;\n            border: none;\n            background: transparent;\n            color: var(--pcalc-text-secondary);\n            cursor: pointer;\n            transition: all var(--pcalc-transition);\n            white-space: nowrap;\n            user-select: none;\n            -webkit-tap-highlight-color: transparent;\n        }\n        .pcalc-toggle-btn.active {\n            background: #ffffff;\n            color: var(--pcalc-text);\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 8px rgba(0, 0, 0, 0.04);\n            cursor: default;\n            border-left: 3px solid var(--pcalc-purple);\n            border-right: 3px solid var(--pcalc-teal);\n            border-radius: 24px;\n            padding: 9px 17px;\n        }\n        .pcalc-toggle-btn:not(.active):hover {\n            color: #3a3a3a;\n        }\n        .pcalc-toggle-btn:focus-visible {\n            outline: 2px solid var(--pcalc-teal);\n            outline-offset: 2px;\n        }\n\n        \/* Section cards *\/\n        .pcalc-section {\n            background: var(--pcalc-card);\n            border: 1px solid var(--pcalc-border);\n            border-radius: var(--pcalc-radius);\n            padding: 22px 24px;\n            margin-bottom: 16px;\n        }\n        .pcalc-section-title {\n            font-size: 13px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 0.06em;\n            color: var(--pcalc-text-secondary);\n            margin: 0 0 14px 0;\n        }\n\n        \/* Form rows *\/\n        .pcalc-row {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 12px 18px;\n            align-items: flex-end;\n            margin-bottom: 10px;\n        }\n        .pcalc-row:last-child {\n            margin-bottom: 0;\n        }\n        .pcalc-field {\n            display: flex;\n            flex-direction: column;\n            gap: 4px;\n            flex: 1;\n            min-width: 70px;\n        }\n        .pcalc-field label {\n            font-size: 12px;\n            font-weight: 600;\n            color: var(--pcalc-text-secondary);\n            letter-spacing: 0.02em;\n            text-transform: uppercase;\n        }\n        .pcalc-field input,\n        .pcalc-field select {\n            font-family: var(--pcalc-font);\n            font-size: 15px;\n            padding: 10px 12px;\n            border: 1px solid var(--pcalc-border);\n            border-radius: var(--pcalc-radius-sm);\n            background: #fcfbf9;\n            color: var(--pcalc-text);\n            transition: border-color var(--pcalc-transition), box-shadow var(--pcalc-transition);\n            width: 100%;\n            -webkit-appearance: none;\n            appearance: none;\n            min-width: 0;\n        }\n        .pcalc-field input:focus,\n        .pcalc-field select:focus {\n            outline: none;\n            border-color: var(--pcalc-teal);\n            box-shadow: 0 0 0 3px rgba(30, 202, 211, 0.10);\n            background: #fff;\n        }\n        .pcalc-field select {\n            background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%235c5c5c' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'\/%3E%3C\/svg%3E\");\n            background-repeat: no-repeat;\n            background-position: right 12px center;\n            padding-right: 34px;\n            cursor: pointer;\n        }\n        .pcalc-unit-suffix {\n            font-size: 12px;\n            font-weight: 600;\n            color: var(--pcalc-text-secondary);\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n            white-space: nowrap;\n            align-self: flex-end;\n            padding-bottom: 12px;\n        }\n        .pcalc-field-dual {\n            display: flex;\n            gap: 6px;\n            align-items: center;\n        }\n        .pcalc-field-dual input {\n            flex: 1;\n            min-width: 40px;\n        }\n        .pcalc-field-dual .pcalc-unit-suffix {\n            padding-bottom: 0;\n            align-self: center;\n            font-size: 11px;\n            min-width: 16px;\n            text-align: center;\n        }\n        .pcalc-field-dual-wrap {\n            display: flex;\n            gap: 10px;\n            flex: 1;\n            min-width: 120px;\n        }\n        .pcalc-field-dual-wrap .pcalc-field-dual {\n            flex: 1;\n            gap: 4px;\n        }\n\n        \/* Add area button *\/\n        .pcalc-add-btn {\n            font-family: var(--pcalc-font);\n            font-size: 13px;\n            font-weight: 600;\n            color: var(--pcalc-purple);\n            background: none;\n            border: 1.5px dashed #d5d0e8;\n            border-radius: var(--pcalc-radius-sm);\n            padding: 10px 16px;\n            cursor: pointer;\n            transition: all var(--pcalc-transition);\n            letter-spacing: 0.02em;\n            margin-top: 4px;\n            width: 100%;\n            text-align: center;\n            -webkit-tap-highlight-color: transparent;\n        }\n        .pcalc-add-btn:hover {\n            border-color: var(--pcalc-purple);\n            background: rgba(148, 134, 247, 0.04);\n            color: var(--pcalc-purple-deep);\n        }\n        .pcalc-add-btn:focus-visible {\n            outline: 2px solid var(--pcalc-purple);\n            outline-offset: 2px;\n        }\n        .pcalc-add-btn.remove-mode {\n            border-style: solid;\n            border-color: #e0d8d8;\n            color: #9e8a8a;\n        }\n        .pcalc-add-btn.remove-mode:hover {\n            border-color: #c9a8a8;\n            color: #7a6060;\n            background: rgba(180, 140, 140, 0.06);\n        }\n\n        \/* Action buttons *\/\n        .pcalc-actions {\n            display: flex;\n            gap: 12px;\n            margin-top: 6px;\n            flex-wrap: wrap;\n        }\n        .pcalc-btn {\n            font-family: var(--pcalc-font);\n            font-size: 15px;\n            font-weight: 650;\n            letter-spacing: 0.02em;\n            padding: 13px 28px;\n            border-radius: var(--pcalc-radius-sm);\n            border: none;\n            cursor: pointer;\n            transition: all var(--pcalc-transition);\n            -webkit-tap-highlight-color: transparent;\n            white-space: nowrap;\n            flex: 1 1 0;\n            min-width: 120px;\n            text-align: center;\n        }\n        .pcalc-btn:focus-visible {\n            outline: 2px solid var(--pcalc-teal);\n            outline-offset: 3px;\n        }\n        .pcalc-btn-calculate {\n            background: linear-gradient(135deg, #1ecad3 0%, #9486f7 100%);\n            color: #ffffff;\n            border: none;\n        }\n        .pcalc-btn-calculate:hover {\n            background: linear-gradient(135deg, #17a8b0 0%, #7b6de0 100%);\n            box-shadow: 0 4px 14px rgba(30, 202, 211, 0.30), 0 2px 8px rgba(148, 134, 247, 0.20);\n            transform: translateY(-1px);\n        }\n        .pcalc-btn-calculate:active {\n            background: linear-gradient(135deg, #14969e 0%, #6a5cc9 100%);\n            transform: translateY(0);\n        }\n        .pcalc-btn-reset {\n            background: transparent;\n            color: var(--pcalc-text-secondary);\n            border: 1.5px solid var(--pcalc-border);\n            border-color: #cfcbe6;\n        }\n        .pcalc-btn-reset:hover {\n            border-color: #b9b3dc;\n            color: var(--pcalc-text);\n            background: #faf8ff;\n            box-shadow: 0 2px 8px rgba(148, 134, 247, 0.08);\n        }\n        .pcalc-btn-reset:active {\n            background: #f0eefb;\n        }\n\n        \/* Results *\/\n        .pcalc-results {\n            display: none;\n            background: var(--pcalc-card);\n            border: 1px solid var(--pcalc-border);\n            border-radius: var(--pcalc-radius);\n            padding: 26px 28px;\n            margin-top: 20px;\n            border-left: 4px solid;\n            border-image: linear-gradient(to bottom, #1ecad3, #9486f7) 1;\n            border-image-slice: 1;\n        }\n        .pcalc-results.visible {\n            display: block;\n            animation: pcalc-fadein 0.3s ease;\n        }\n        @keyframes pcalc-fadein {\n            from {\n                opacity: 0;\n                transform: translateY(8px);\n            }\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n        .pcalc-results-title {\n            font-size: 14px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 0.06em;\n            color: var(--pcalc-text-secondary);\n            margin: 0 0 16px 0;\n        }\n        .pcalc-result-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 14px 20px;\n        }\n        @media (max-width: 480px) {\n            .pcalc-result-grid {\n                grid-template-columns: 1fr;\n            }\n            .pcalc-wrapper {\n                padding: 20px 14px;\n            }\n            .pcalc-section {\n                padding: 16px 14px;\n            }\n            .pcalc-row {\n                gap: 8px 10px;\n            }\n            .pcalc-actions {\n                flex-wrap: nowrap;\n                gap: 8px;\n            }\n            .pcalc-btn {\n                font-size: 13px;\n                padding: 12px 8px;\n                flex: 1 1 auto;\n                min-width: 0;\n                white-space: nowrap;\n            }\n        }\n        .pcalc-result-item {\n            background: #fcfbf9;\n            border-radius: var(--pcalc-radius-sm);\n            padding: 14px 16px;\n            border: 1px solid #eceae4;\n        }\n        .pcalc-result-label {\n            font-size: 11px;\n            font-weight: 600;\n            text-transform: uppercase;\n            letter-spacing: 0.05em;\n            color: var(--pcalc-text-secondary);\n            margin-bottom: 4px;\n        }\n        .pcalc-result-value {\n            font-size: 22px;\n            font-weight: 700;\n            color: var(--pcalc-text);\n            letter-spacing: -0.01em;\n        }\n        .pcalc-result-value.accent-teal {\n            color: var(--pcalc-teal-deep);\n        }\n        .pcalc-result-sub {\n            font-size: 12px;\n            color: var(--pcalc-text-secondary);\n            margin-top: 2px;\n        }\n        .pcalc-result-note {\n            margin-top: 16px;\n            padding: 12px 16px;\n            background: #fdfcfa;\n            border-radius: var(--pcalc-radius-sm);\n            font-size: 12.5px;\n            color: #6b6358;\n            line-height: 1.5;\n            border: 1px solid #ece8df;\n            letter-spacing: 0.01em;\n        }\n        .pcalc-result-note strong {\n            color: #4a3f2f;\n        }\n        .pcalc-divider {\n            border: none;\n            border-top: 1px solid var(--pcalc-border);\n            margin: 14px 0;\n        }\n    <\/style>\n\n    <!-- Sistema de medidas -->\n    <div class=\"pcalc-toggle-group\" role=\"radiogroup\" aria-label=\"Sistema de medida\">\n        <button class=\"pcalc-toggle-btn active\" data-pcalc-system=\"imperial\" id=\"pcalc-toggle-imperial\" aria-pressed=\"true\">Imperial (EE. UU.\/RU)<\/button>\n        <button class=\"pcalc-toggle-btn\" data-pcalc-system=\"metric\" id=\"pcalc-toggle-metric\" aria-pressed=\"false\">M\u00e9trico (AU\/UE)<\/button>\n    <\/div>\n\n    <!-- Especificaciones de los adoquines -->\n    <div class=\"pcalc-section\">\n        <p class=\"pcalc-section-title\">Especificaciones de los adoquines<\/p>\n        <div class=\"pcalc-row\">\n            <div class=\"pcalc-field\" style=\"flex:2; min-width:160px;\">\n                <label for=\"pcalc-preset\">Tama\u00f1o del adoqu\u00edn<\/label>\n                <select id=\"pcalc-preset\">\n                    <option value=\"4x8\">4\u2033 \u00d7 8\u2033 (Ladrillo est\u00e1ndar)<\/option>\n                    <option value=\"6x6\">6\u2033 \u00d7 6\u2033 (Cuadrado)<\/option>\n                    <option value=\"12x12\">12\u2033 \u00d7 12\u2033 (Grande cuadrado)<\/option>\n                    <option value=\"custom\">Tama\u00f1o personalizado<\/option>\n                <\/select>\n            <\/div>\n            <div id=\"pcalc-custom-fields\" style=\"display:none; flex:3; min-width:200px;\">\n                <div class=\"pcalc-field-dual-wrap\">\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-custom-length\" placeholder=\"L\" min=\"0.1\" step=\"any\" aria-label=\"Largo personalizado\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-custom-unit\">in<\/span>\n                    <\/div>\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-custom-width\" placeholder=\"A\" min=\"0.1\" step=\"any\" aria-label=\"Ancho personalizado\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-custom-unit2\">in<\/span>\n                    <\/div>\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-custom-thickness\" placeholder=\"E\" min=\"0.1\" step=\"any\" aria-label=\"Espesor personalizado\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-custom-unit3\">in<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- \u00c1rea del proyecto -->\n    <div class=\"pcalc-section\" id=\"pcalc-area-section\">\n        <p class=\"pcalc-section-title\">\u00c1rea del proyecto<\/p>\n        <!-- \u00c1rea 1 -->\n        <div class=\"pcalc-row\" id=\"pcalc-area1-row\">\n            <div class=\"pcalc-field\" style=\"flex:2; min-width:180px;\">\n                <label>Largo<\/label>\n                <div class=\"pcalc-field-dual-wrap\">\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-a1-len-major\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Largo \u00e1rea 1 (unidad principal)\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-len-major\">ft<\/span>\n                    <\/div>\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-a1-len-minor\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Largo \u00e1rea 1 (subunidad)\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-len-minor\">in<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"pcalc-field\" style=\"flex:2; min-width:180px;\">\n                <label>Ancho<\/label>\n                <div class=\"pcalc-field-dual-wrap\">\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-a1-wid-major\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Ancho \u00e1rea 1 (unidad principal)\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-wid-major\">ft<\/span>\n                    <\/div>\n                    <div class=\"pcalc-field-dual\">\n                        <input type=\"number\" id=\"pcalc-a1-wid-minor\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Ancho \u00e1rea 1 (subunidad)\">\n                        <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-wid-minor\">in<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- \u00c1rea 2 (oculta al inicio) -->\n        <div id=\"pcalc-area2-container\" style=\"display:none;\">\n            <hr class=\"pcalc-divider\">\n            <p style=\"font-size:12px;font-weight:600;color:var(--pcalc-text-secondary);margin:0 0 8px 0;text-transform:uppercase;letter-spacing:0.04em;\">\u00c1rea 2<\/p>\n            <div class=\"pcalc-row\" id=\"pcalc-area2-row\">\n                <div class=\"pcalc-field\" style=\"flex:2; min-width:180px;\">\n                    <label>Largo<\/label>\n                    <div class=\"pcalc-field-dual-wrap\">\n                        <div class=\"pcalc-field-dual\">\n                            <input type=\"number\" id=\"pcalc-a2-len-major\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Largo \u00e1rea 2 (unidad principal)\">\n                            <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-len-major2\">ft<\/span>\n                        <\/div>\n                        <div class=\"pcalc-field-dual\">\n                            <input type=\"number\" id=\"pcalc-a2-len-minor\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Largo \u00e1rea 2 (subunidad)\">\n                            <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-len-minor2\">in<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"pcalc-field\" style=\"flex:2; min-width:180px;\">\n                    <label>Ancho<\/label>\n                    <div class=\"pcalc-field-dual-wrap\">\n                        <div class=\"pcalc-field-dual\">\n                            <input type=\"number\" id=\"pcalc-a2-wid-major\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Ancho \u00e1rea 2 (unidad principal)\">\n                            <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-wid-major2\">ft<\/span>\n                        <\/div>\n                        <div class=\"pcalc-field-dual\">\n                            <input type=\"number\" id=\"pcalc-a2-wid-minor\" placeholder=\"0\" min=\"0\" step=\"any\" aria-label=\"Ancho \u00e1rea 2 (subunidad)\">\n                            <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-wid-minor2\">in<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <button class=\"pcalc-add-btn\" id=\"pcalc-add-area-btn\" type=\"button\">+ Agregar \u00e1rea<\/button>\n    <\/div>\n\n    <!-- Base y capa de asiento -->\n    <div class=\"pcalc-section\">\n        <p class=\"pcalc-section-title\">Base y capa de asiento<\/p>\n        <div class=\"pcalc-row\">\n            <div class=\"pcalc-field\" style=\"flex:1; min-width:100px;\">\n                <label for=\"pcalc-gravel-depth\">Profundidad de grava (sub-base)<\/label>\n                <div class=\"pcalc-field-dual\">\n                    <input type=\"number\" id=\"pcalc-gravel-depth\" value=\"4\" min=\"0.5\" step=\"any\" aria-label=\"Profundidad de grava\">\n                    <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-gravel-depth\">in<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"pcalc-field\" style=\"flex:1; min-width:100px;\">\n                <label for=\"pcalc-sand-depth\">Profundidad de arena de asiento<\/label>\n                <div class=\"pcalc-field-dual\">\n                    <input type=\"number\" id=\"pcalc-sand-depth\" value=\"1\" min=\"0.25\" step=\"any\" aria-label=\"Profundidad de arena\">\n                    <span class=\"pcalc-unit-suffix\" id=\"pcalc-unit-sand-depth\">in<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"pcalc-field\" style=\"flex:1; min-width:90px; max-width:130px;\">\n                <label for=\"pcalc-waste\">Factor de desperdicio (%)<\/label>\n                <input type=\"number\" id=\"pcalc-waste\" value=\"10\" min=\"0\" max=\"50\" step=\"any\" aria-label=\"Porcentaje de desperdicio\">\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Botones de acci\u00f3n -->\n    <div class=\"pcalc-actions\">\n        <button class=\"pcalc-btn pcalc-btn-calculate\" id=\"pcalc-calculate-btn\" type=\"button\">Calcular<\/button>\n        <button class=\"pcalc-btn pcalc-btn-reset\" id=\"pcalc-reset-btn\" type=\"button\">Restablecer<\/button>\n    <\/div>\n\n    <!-- Resultados -->\n    <div class=\"pcalc-results\" id=\"pcalc-results\">\n        <p class=\"pcalc-results-title\">Desglose de materiales<\/p>\n        <div class=\"pcalc-result-grid\" id=\"pcalc-result-grid\">\n            <!-- Llenado por JS -->\n        <\/div>\n        <div class=\"pcalc-result-note\" id=\"pcalc-result-note\">\n            <!-- Llenado por JS -->\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    (function() {\n        const root = document.getElementById('pcalc-root');\n        if (!root) return;\n\n        \/\/ Estado\n        let currentSystem = 'imperial';\n        let area2Visible = false;\n\n        \/\/ Preajustes\n        const imperialPresets = {\n            '4x8': { length: 4, width: 8, thickness: 2.375, label: '4\u2033 \u00d7 8\u2033 (Ladrillo est\u00e1ndar)' },\n            '6x6': { length: 6, width: 6, thickness: 2.375, label: '6\u2033 \u00d7 6\u2033 (Cuadrado)' },\n            '12x12': { length: 12, width: 12, thickness: 2, label: '12\u2033 \u00d7 12\u2033 (Grande cuadrado)' },\n            'custom': { length: null, width: null, thickness: null, label: 'Tama\u00f1o personalizado' }\n        };\n        const metricPresets = {\n            '10x20': { length: 10, width: 20, thickness: 5, label: '10 \u00d7 20 cm (Est\u00e1ndar)' },\n            '15x15': { length: 15, width: 15, thickness: 6, label: '15 \u00d7 15 cm (Cuadrado)' },\n            '30x30': { length: 30, width: 30, thickness: 6, label: '30 \u00d7 30 cm (Grande cuadrado)' },\n            'custom': { length: null, width: null, thickness: null, label: 'Tama\u00f1o personalizado' }\n        };\n\n        \/\/ Referencias DOM\n        const toggleImperial = document.getElementById('pcalc-toggle-imperial');\n        const toggleMetric = document.getElementById('pcalc-toggle-metric');\n        const presetSelect = document.getElementById('pcalc-preset');\n        const customFields = document.getElementById('pcalc-custom-fields');\n        const customLength = document.getElementById('pcalc-custom-length');\n        const customWidth = document.getElementById('pcalc-custom-width');\n        const customThickness = document.getElementById('pcalc-custom-thickness');\n        const customUnitEls = [\n            document.getElementById('pcalc-custom-unit'),\n            document.getElementById('pcalc-custom-unit2'),\n            document.getElementById('pcalc-custom-unit3')\n        ];\n        const area2Container = document.getElementById('pcalc-area2-container');\n        const addAreaBtn = document.getElementById('pcalc-add-area-btn');\n        const gravelDepth = document.getElementById('pcalc-gravel-depth');\n        const sandDepth = document.getElementById('pcalc-sand-depth');\n        const wasteInput = document.getElementById('pcalc-waste');\n        const unitGravelDepth = document.getElementById('pcalc-unit-gravel-depth');\n        const unitSandDepth = document.getElementById('pcalc-unit-sand-depth');\n        const calculateBtn = document.getElementById('pcalc-calculate-btn');\n        const resetBtn = document.getElementById('pcalc-reset-btn');\n        const resultsDiv = document.getElementById('pcalc-results');\n        const resultGrid = document.getElementById('pcalc-result-grid');\n        const resultNote = document.getElementById('pcalc-result-note');\n\n        \/\/ Todos los sufijos de unidad para las \u00e1reas\n        const allMajorUnits = document.querySelectorAll('[id^=\"pcalc-unit-len-major\"], [id^=\"pcalc-unit-wid-major\"]');\n        const allMinorUnits = document.querySelectorAll('[id^=\"pcalc-unit-len-minor\"], [id^=\"pcalc-unit-wid-minor\"]');\n\n        \/\/ IDs de los campos de \u00e1rea\n        const areaInputIds = [\n            'pcalc-a1-len-major', 'pcalc-a1-len-minor', 'pcalc-a1-wid-major', 'pcalc-a1-wid-minor',\n            'pcalc-a2-len-major', 'pcalc-a2-len-minor', 'pcalc-a2-wid-major', 'pcalc-a2-wid-minor'\n        ];\n\n        function getAreaInputVal(id) {\n            const el = document.getElementById(id);\n            if (!el) return 0;\n            const v = parseFloat(el.value);\n            return isNaN(v) || v < 0 ? 0 : v;\n        }\n\n        function getTotalAreaSqBase() {\n            if (currentSystem === 'imperial') {\n                const a1LenFt = getAreaInputVal('pcalc-a1-len-major') + getAreaInputVal('pcalc-a1-len-minor') \/ 12;\n                const a1WidFt = getAreaInputVal('pcalc-a1-wid-major') + getAreaInputVal('pcalc-a1-wid-minor') \/ 12;\n                let totalSqFt = a1LenFt * a1WidFt;\n                if (area2Visible) {\n                    const a2LenFt = getAreaInputVal('pcalc-a2-len-major') + getAreaInputVal('pcalc-a2-len-minor') \/ 12;\n                    const a2WidFt = getAreaInputVal('pcalc-a2-wid-major') + getAreaInputVal('pcalc-a2-wid-minor') \/ 12;\n                    totalSqFt += a2LenFt * a2WidFt;\n                }\n                return totalSqFt;\n            } else {\n                const a1LenM = getAreaInputVal('pcalc-a1-len-major') + getAreaInputVal('pcalc-a1-len-minor') \/ 100;\n                const a1WidM = getAreaInputVal('pcalc-a1-wid-major') + getAreaInputVal('pcalc-a1-wid-minor') \/ 100;\n                let totalSqM = a1LenM * a1WidM;\n                if (area2Visible) {\n                    const a2LenM = getAreaInputVal('pcalc-a2-len-major') + getAreaInputVal('pcalc-a2-len-minor') \/ 100;\n                    const a2WidM = getAreaInputVal('pcalc-a2-wid-major') + getAreaInputVal('pcalc-a2-wid-minor') \/ 100;\n                    totalSqM += a2LenM * a2WidM;\n                }\n                return totalSqM;\n            }\n        }\n\n        function getPaverDimensions() {\n            const presetVal = presetSelect.value;\n            const presets = currentSystem === 'imperial' ? imperialPresets : metricPresets;\n            if (presetVal !== 'custom' &#038;&#038; presets[presetVal]) {\n                const p = presets[presetVal];\n                return { length: p.length, width: p.width, thickness: p.thickness };\n            }\n            const l = parseFloat(customLength.value);\n            const w = parseFloat(customWidth.value);\n            const t = parseFloat(customThickness.value);\n            return {\n                length: isNaN(l) || l <= 0 ? null : l,\n                width: isNaN(w) || w <= 0 ? null : w,\n                thickness: isNaN(t) || t <= 0 ? null : t\n            };\n        }\n\n        function getGravelDepth() {\n            const v = parseFloat(gravelDepth.value);\n            return isNaN(v) || v <= 0 ? (currentSystem === 'imperial' ? 4 : 10) : v;\n        }\n\n        function getSandDepth() {\n            const v = parseFloat(sandDepth.value);\n            return isNaN(v) || v <= 0 ? (currentSystem === 'imperial' ? 1 : 2.5) : v;\n        }\n\n        function getWastePercent() {\n            const v = parseFloat(wasteInput.value);\n            return isNaN(v) || v < 0 ? 10 : Math.min(v, 50);\n        }\n\n        function updateSystemUI() {\n            toggleImperial.classList.toggle('active', currentSystem === 'imperial');\n            toggleMetric.classList.toggle('active', currentSystem === 'metric');\n            toggleImperial.setAttribute('aria-pressed', currentSystem === 'imperial' ? 'true' : 'false');\n            toggleMetric.setAttribute('aria-pressed', currentSystem === 'metric' ? 'true' : 'false');\n\n            const presets = currentSystem === 'imperial' ? imperialPresets : metricPresets;\n            const currentVal = presetSelect.value;\n            presetSelect.innerHTML = '';\n            for (const [key, p] of Object.entries(presets)) {\n                const opt = document.createElement('option');\n                opt.value = key;\n                opt.textContent = p.label;\n                presetSelect.appendChild(opt);\n            }\n            const presetKeys = Object.keys(presets);\n            if (presetKeys.includes(currentVal) &#038;&#038; currentVal !== 'custom') {\n                presetSelect.value = currentVal;\n            } else if (currentVal === 'custom') {\n                presetSelect.value = 'custom';\n            } else {\n                presetSelect.value = presetKeys[0];\n            }\n\n            const unitLabel = currentSystem === 'imperial' ? 'in' : 'cm';\n            customUnitEls.forEach(el => { if (el) el.textContent = unitLabel; });\n\n            toggleCustomFields();\n\n            const majorUnit = currentSystem === 'imperial' ? 'ft' : 'm';\n            const minorUnit = currentSystem === 'imperial' ? 'in' : 'cm';\n            allMajorUnits.forEach(el => { el.textContent = majorUnit; });\n            allMinorUnits.forEach(el => { el.textContent = minorUnit; });\n\n            unitGravelDepth.textContent = currentSystem === 'imperial' ? 'in' : 'cm';\n            unitSandDepth.textContent = currentSystem === 'imperial' ? 'in' : 'cm';\n\n            gravelDepth.value = currentSystem === 'imperial' ? 4 : 10;\n            sandDepth.value = currentSystem === 'imperial' ? 1 : 2.5;\n        }\n\n        function toggleCustomFields() {\n            const isCustom = presetSelect.value === 'custom';\n            customFields.style.display = isCustom ? 'block' : 'none';\n            if (!isCustom) {\n                customLength.value = '';\n                customWidth.value = '';\n                customThickness.value = '';\n            }\n        }\n\n        function toggleArea2() {\n            area2Visible = !area2Visible;\n            area2Container.style.display = area2Visible ? 'block' : 'none';\n            if (area2Visible) {\n                addAreaBtn.textContent = '\u2212 Eliminar \u00e1rea';\n                addAreaBtn.classList.add('remove-mode');\n            } else {\n                addAreaBtn.textContent = '+ Agregar \u00e1rea';\n                addAreaBtn.classList.remove('remove-mode');\n                document.getElementById('pcalc-a2-len-major').value = '';\n                document.getElementById('pcalc-a2-len-minor').value = '';\n                document.getElementById('pcalc-a2-wid-major').value = '';\n                document.getElementById('pcalc-a2-wid-minor').value = '';\n            }\n        }\n\n        function hideResults() {\n            resultsDiv.classList.remove('visible');\n            resultGrid.innerHTML = '';\n            resultNote.innerHTML = '';\n        }\n\n        function resetAll() {\n            currentSystem = 'imperial';\n            area2Visible = false;\n            area2Container.style.display = 'none';\n            addAreaBtn.textContent = '+ Agregar \u00e1rea';\n            addAreaBtn.classList.remove('remove-mode');\n            updateSystemUI();\n            presetSelect.value = '4x8';\n            toggleCustomFields();\n            wasteInput.value = 10;\n            areaInputIds.forEach(id => {\n                const el = document.getElementById(id);\n                if (el) el.value = '';\n            });\n            hideResults();\n        }\n\n        function calculate() {\n            const totalArea = getTotalAreaSqBase();\n            if (totalArea <= 0) {\n                hideResults();\n                resultGrid.innerHTML =\n                    '<div class=\"pcalc-result-item\" style=\"grid-column:1\/-1;\"><div class=\"pcalc-result-label\">Error<\/div><div class=\"pcalc-result-value\" style=\"font-size:15px;\">Por favor, introduzca dimensiones de \u00e1rea v\u00e1lidas antes de calcular.<\/div><\/div>';\n                resultNote.innerHTML = '';\n                resultsDiv.classList.add('visible');\n                return;\n            }\n\n            const paverDims = getPaverDimensions();\n            if (paverDims.length === null || paverDims.width === null || paverDims.thickness === null) {\n                hideResults();\n                resultGrid.innerHTML =\n                    '<div class=\"pcalc-result-item\" style=\"grid-column:1\/-1;\"><div class=\"pcalc-result-label\">Error<\/div><div class=\"pcalc-result-value\" style=\"font-size:15px;\">Por favor, introduzca dimensiones de adoqu\u00edn personalizadas v\u00e1lidas.<\/div><\/div>';\n                resultNote.innerHTML = '';\n                resultsDiv.classList.add('visible');\n                return;\n            }\n\n            const gravelD = getGravelDepth();\n            const sandD = getSandDepth();\n            const wastePct = getWastePercent();\n\n            if (currentSystem === 'imperial') {\n                const totalSqFt = totalArea;\n                const paverSqFt = (paverDims.length * paverDims.width) \/ 144;\n                const basePavers = Math.ceil(totalSqFt \/ paverSqFt);\n                const paversWithWaste = Math.ceil(basePavers * (1 + wastePct \/ 100));\n                const wastePavers = paversWithWaste - basePavers;\n\n                const gravelDepthFt = gravelD \/ 12;\n                const gravelCuYd = totalSqFt * gravelDepthFt \/ 27;\n                const sandDepthFt = sandD \/ 12;\n                const sandCuYd = totalSqFt * sandDepthFt \/ 27;\n\n                const jointWidthIn = 0.125;\n                const jointWidthFt = jointWidthIn \/ 12;\n                const thicknessFt = paverDims.thickness \/ 12;\n                const paverLenIn = paverDims.length;\n                const paverWidIn = paverDims.width;\n                const linearJointsPerSqFt = (12 \/ paverLenIn) + (12 \/ paverWidIn);\n                const jointVolPerSqFt = linearJointsPerSqFt * thicknessFt * jointWidthFt;\n                const totalJointVolCuFt = totalSqFt * jointVolPerSqFt;\n                const sandDensityLbsPerCuFt = 100;\n                const totalSandLbs = totalJointVolCuFt * sandDensityLbsPerCuFt;\n                const bagWeightLbs = 50;\n                const polyBags = Math.ceil(totalSandLbs \/ bagWeightLbs);\n\n                resultGrid.innerHTML = `\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">\u00c1rea total del proyecto<\/div>\n                        <div class=\"pcalc-result-value accent-teal\">${totalSqFt.toFixed(2)} <span style=\"font-size:14px;font-weight:500;\">pies\u00b2<\/span><\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Adoquines necesarios<\/div>\n                        <div class=\"pcalc-result-value accent-teal\">${paversWithWaste.toLocaleString()}<\/div>\n                        <div class=\"pcalc-result-sub\">Base: ${basePavers.toLocaleString()} + ${wastePavers.toLocaleString()} desperdicio (${wastePct}%)<\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Grava sub-base (${gravelD}\u2033 prof.)<\/div>\n                        <div class=\"pcalc-result-value\">${gravelCuYd.toFixed(3)} <span style=\"font-size:14px;font-weight:500;\">yd\u00b3<\/span><\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Arena de asiento (${sandD}\u2033 prof.)<\/div>\n                        <div class=\"pcalc-result-value\">${sandCuYd.toFixed(3)} <span style=\"font-size:14px;font-weight:500;\">yd\u00b3<\/span><\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Arena polim\u00e9rica<\/div>\n                        <div class=\"pcalc-result-value\">${polyBags} <span style=\"font-size:14px;font-weight:500;\">\u00d7 saco de 50 lb<\/span><\/div>\n                        <div class=\"pcalc-result-sub\">Relleno de juntas basado en \u215b\u2033<\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">\u00c1rea unitaria del adoqu\u00edn<\/div>\n                        <div class=\"pcalc-result-value\" style=\"font-size:18px;\">${paverSqFt.toFixed(4)} <span style=\"font-size:13px;font-weight:500;\">pies\u00b2 c\/u<\/span><\/div>\n                    <\/div>\n                `;\n                resultNote.innerHTML = `\n                    <strong>Nota de desperdicio:<\/strong> Los c\u00e1lculos incluyen un ${wastePct}% de margen por cortes y roturas.\n                    Patrones complejos como <strong>espina de pez<\/strong> o <strong>Versailles<\/strong> pueden requerir un <strong>15\u201320%<\/strong> adicional.\n                    Para dise\u00f1os intrincados, solicite siempre un 5\u201310% m\u00e1s de la cantidad calculada.\n                `;\n            } else {\n                const totalSqM = totalArea;\n                const paverSqM = (paverDims.length * paverDims.width) \/ 10000;\n                const basePavers = Math.ceil(totalSqM \/ paverSqM);\n                const paversWithWaste = Math.ceil(basePavers * (1 + wastePct \/ 100));\n                const wastePavers = paversWithWaste - basePavers;\n\n                const gravelDepthM = gravelD \/ 100;\n                const gravelCuM = totalSqM * gravelDepthM;\n                const gravelMetricTons = gravelCuM * 1.7;\n                const sandDepthM = sandD \/ 100;\n                const sandCuM = totalSqM * sandDepthM;\n\n                const jointWidthCm = 0.3;\n                const jointWidthM = jointWidthCm \/ 100;\n                const thicknessM = paverDims.thickness \/ 100;\n                const paverLenCm = paverDims.length;\n                const paverWidCm = paverDims.width;\n                const linearJointsPerSqM = (100 \/ paverLenCm) + (100 \/ paverWidCm);\n                const jointVolPerSqM = linearJointsPerSqM * thicknessM * jointWidthM;\n                const totalJointVolCuM = totalSqM * jointVolPerSqM;\n                const sandDensityKgPerCuM = 1600;\n                const totalSandKg = totalJointVolCuM * sandDensityKgPerCuM;\n                const bagWeightKg = 25;\n                const polyBags = Math.ceil(totalSandKg \/ bagWeightKg);\n\n                resultGrid.innerHTML = `\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">\u00c1rea total del proyecto<\/div>\n                        <div class=\"pcalc-result-value accent-teal\">${totalSqM.toFixed(2)} <span style=\"font-size:14px;font-weight:500;\">m\u00b2<\/span><\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Adoquines necesarios<\/div>\n                        <div class=\"pcalc-result-value accent-teal\">${paversWithWaste.toLocaleString()}<\/div>\n                        <div class=\"pcalc-result-sub\">Base: ${basePavers.toLocaleString()} + ${wastePavers.toLocaleString()} desperdicio (${wastePct}%)<\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Grava sub-base (${gravelD} cm prof.)<\/div>\n                        <div class=\"pcalc-result-value\">${gravelCuM.toFixed(3)} <span style=\"font-size:14px;font-weight:500;\">m\u00b3<\/span><\/div>\n                        <div class=\"pcalc-result-sub\">\u2248 ${gravelMetricTons.toFixed(2)} toneladas<\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Arena de asiento (${sandD} cm prof.)<\/div>\n                        <div class=\"pcalc-result-value\">${sandCuM.toFixed(3)} <span style=\"font-size:14px;font-weight:500;\">m\u00b3<\/span><\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">Arena polim\u00e9rica<\/div>\n                        <div class=\"pcalc-result-value\">${polyBags} <span style=\"font-size:14px;font-weight:500;\">\u00d7 saco de 25 kg<\/span><\/div>\n                        <div class=\"pcalc-result-sub\">Relleno de juntas basado en 3 mm<\/div>\n                    <\/div>\n                    <div class=\"pcalc-result-item\">\n                        <div class=\"pcalc-result-label\">\u00c1rea unitaria del adoqu\u00edn<\/div>\n                        <div class=\"pcalc-result-value\" style=\"font-size:18px;\">${paverSqM.toFixed(4)} <span style=\"font-size:13px;font-weight:500;\">m\u00b2 c\/u<\/span><\/div>\n                    <\/div>\n                `;\n                resultNote.innerHTML = `\n                    <strong>Nota de desperdicio:<\/strong> Los c\u00e1lculos incluyen un ${wastePct}% de margen por cortes y roturas.\n                    Patrones complejos como <strong>espina de pez<\/strong> o <strong>Versailles<\/strong> pueden requerir un <strong>15\u201320%<\/strong> adicional.\n                    Para dise\u00f1os intrincados, solicite siempre un 5\u201310% m\u00e1s de la cantidad calculada.\n                `;\n            }\n\n            resultsDiv.classList.add('visible');\n            resultsDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n        }\n\n        \/\/ Event listeners\n        toggleImperial.addEventListener('click', function() {\n            if (currentSystem === 'imperial') return;\n            currentSystem = 'imperial';\n            updateSystemUI();\n            hideResults();\n        });\n        toggleMetric.addEventListener('click', function() {\n            if (currentSystem === 'metric') return;\n            currentSystem = 'metric';\n            updateSystemUI();\n            hideResults();\n        });\n        presetSelect.addEventListener('change', function() {\n            toggleCustomFields();\n            hideResults();\n        });\n        addAreaBtn.addEventListener('click', function() {\n            toggleArea2();\n            hideResults();\n        });\n        calculateBtn.addEventListener('click', calculate);\n        resetBtn.addEventListener('click', resetAll);\n\n        const allInputs = root.querySelectorAll('input, select');\n        allInputs.forEach(inp => {\n            inp.addEventListener('input', function() {\n                hideResults();\n            });\n            inp.addEventListener('change', function() {\n                hideResults();\n            });\n        });\n\n        \/\/ Inicializaci\u00f3n\n        updateSystemUI();\n        hideResults();\n        area2Container.style.display = 'none';\n        addAreaBtn.textContent = '+ Agregar \u00e1rea';\n        addAreaBtn.classList.remove('remove-mode');\n        area2Visible = false;\n        presetSelect.value = '4x8';\n        toggleCustomFields();\n        wasteInput.value = 10;\n    })();\n<\/script>\n\n\n<!-- aiper-tool-links -->\n<div class=\"aiper-tool-links\">\n  <div class=\"aiper-tl-section\">\n    <div class=\"aiper-tl-heading\">M\u00e1s herramientas<\/div>\n    <div class=\"aiper-tl-tags\">\n      <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-cercas\/\" class=\"aiper-tl-tag\">Calculadora de materiales para cercas<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-de-terrazas\/\" class=\"aiper-tl-tag\">Calculadora de Terrazas<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-muro-de-contencion\/\" class=\"aiper-tl-tag\">Calculadora De Muro De Contenci\u00f3n<\/a>\n    <\/div>\n  <\/div>\n  <div class=\"aiper-tl-section\">\n    <div class=\"aiper-tl-heading\">Art\u00edculos relacionados<\/div>\n    <div class=\"aiper-tl-tags\">\n      <a href=\"https:\/\/aiper.com\/blogs\/es\/bajar-alcalinidad-piscina\/\" class=\"aiper-tl-tag\">C\u00f3mo bajar la alcalinidad de la piscina<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/ahuyentar-gansos-canadienses-cesped\/\" class=\"aiper-tl-tag\">C\u00f3mo ahuyentar los gansos canadienses del c\u00e9sped<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/como-eliminar-setas-del-cesped\/\" class=\"aiper-tl-tag\">C\u00f3mo eliminar las setas del c\u00e9sped<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/escarificar-cesped-detectar-eliminar-fieltro\/\" class=\"aiper-tl-tag\">Escarificar el c\u00e9sped: c\u00f3mo detectar y eliminar el fieltro<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n.aiper-tool-links{margin:2.5rem 0 1.5rem;padding:1.5rem 1.75rem;background:linear-gradient(135deg,rgba(148,134,247,.04),rgba(30,202,211,.04));border-radius:12px;border:1px solid rgba(148,134,247,.10)}\n.aiper-tl-section{margin-bottom:1.25rem}\n.aiper-tl-section:last-child{margin-bottom:0}\n.aiper-tl-heading{font-size:.75rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8899aa;margin:0 0 .65rem}\n.aiper-tl-tags{display:flex;flex-wrap:wrap;gap:.5rem}\n.aiper-tl-tag{display:inline-block;padding:.4rem .95rem;font-size:.82rem;font-weight:500;line-height:1.35;color:#9486f7;background:rgba(148,134,247,.055);border:1px solid rgba(30,202,211,.25);border-radius:22px;text-decoration:none;transition:all .18s}\n.aiper-tl-tag:hover{background:#1ecad3;color:#fff;border-color:#1ecad3;box-shadow:0 2px 10px rgba(30,202,211,.22)}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>Imperial (EE. UU.\/RU) M\u00e9trico (AU\/UE) Especificaciones de los adoquines Tama\u00f1o del adoqu\u00edn 4\u2033 \u00d7 8\u2033 (Ladrillo est\u00e1ndar)6\u2033 \u00d7 6\u2033 (Cuadrado)12\u2033 \u00d7 12\u2033 (Grande cuadrado)Tama\u00f1o personalizado in in in \u00c1rea del proyecto Largo ft in Ancho ft in \u00c1rea 2 Largo ft in Ancho ft in + Agregar \u00e1rea Base y capa de asiento Profundidad de&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-2688","page","type-page","status-publish","hentry"],"lang":"es","translations":{"es":2688,"en":2608,"de":2682,"fr":2685},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=2688"}],"version-history":[{"count":3,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2688\/revisions"}],"predecessor-version":[{"id":4377,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2688\/revisions\/4377"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=2688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}