{"id":2157,"date":"2026-06-01T03:07:30","date_gmt":"2026-06-01T03:07:30","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=2157"},"modified":"2026-06-24T04:25:56","modified_gmt":"2026-06-24T04:25:56","slug":"calculadora-indice-saturacion-piscina","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/es\/calculadora-indice-saturacion-piscina\/","title":{"rendered":"Calculadora del \u00edndice de saturaci\u00f3n de piscina (LSI)"},"content":{"rendered":"\n<div class=\"pool-calc-container\">\n\n    <form id=\"pool-calc-form\" onsubmit=\"event.preventDefault();\">\n        <!-- Step 1: Water Parameters -->\n        <div class=\"pool-calc-step\">\n            <div class=\"step-badge\">Paso 1<\/div>\n            <h3 class=\"step-title\">Introduce los par\u00e1metros del agua<\/h3>\n\n            <div class=\"pool-calc-grid\">\n                <div class=\"input-group\">\n                    <label for=\"pool-ph\">Nivel de pH<\/label>\n                    <input type=\"number\" id=\"pool-ph\" step=\"0.1\" value=\"7.5\" min=\"6.0\" max=\"9.0\">\n                    <span class=\"input-hint\">Ideal: 7.2 &#8211; 7.8<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                    <label for=\"pool-alk\">Alcalinidad total (ppm)<\/label>\n                    <input type=\"number\" id=\"pool-alk\" step=\"1\" value=\"100\" min=\"0\" max=\"500\">\n                    <span class=\"input-hint\">Ideal: 80 &#8211; 120 ppm<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                    <label for=\"pool-cal\">Dureza c\u00e1lcica (ppm)<\/label>\n                    <input type=\"number\" id=\"pool-cal\" step=\"1\" value=\"300\" min=\"0\" max=\"1000\">\n                    <span class=\"input-hint\">Ideal: 200 &#8211; 400 ppm<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                    <label for=\"pool-cya\">\u00c1cido cian\u00farico (ppm)<\/label>\n                    <input type=\"number\" id=\"pool-cya\" step=\"1\" value=\"40\" min=\"0\" max=\"200\">\n                    <span class=\"input-hint\">Ideal: 30 &#8211; 50 ppm<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                    <label for=\"pool-tds\">Sal \/ TDS (ppm)<\/label>\n                    <input type=\"number\" id=\"pool-tds\" step=\"1\" value=\"1000\" min=\"0\" max=\"6000\">\n                    <span class=\"input-hint\">Sin sal: &lt; 1500 | Sal: ~3200<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                    <label for=\"pool-borate\">Boratos (ppm)<\/label>\n                    <input type=\"number\" id=\"pool-borate\" step=\"1\" value=\"0\" min=\"0\" max=\"100\">\n                    <span class=\"input-hint\">Opcional: 0 &#8211; 50 ppm<\/span>\n                <\/div>\n\n                <div class=\"input-group full-width\">\n                    <label>Temperatura del agua<\/label>\n                    <div class=\"temp-control-wrapper\">\n                        <input type=\"number\" id=\"pool-temp\" step=\"1\" value=\"80\" style=\"flex: 1;\">\n                        <div class=\"temp-toggle-container\">\n                            <button type=\"button\" class=\"temp-toggle-btn active\" id=\"btn-f\" onclick=\"setTempUnit('F')\">\u00b0F<\/button>\n                            <button type=\"button\" class=\"temp-toggle-btn\" id=\"btn-c\" onclick=\"setTempUnit('C')\">\u00b0C<\/button>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Step 2: Calculation & Action Buttons -->\n        <div class=\"pool-calc-step\" style=\"border-bottom: none; margin-bottom: 0; padding-bottom: 10px;\">\n            <div class=\"step-badge\">Paso 2<\/div>\n            <h3 class=\"step-title\">Ejecutar el an\u00e1lisis<\/h3>\n            <div class=\"btn-group\">\n                <button type=\"button\" class=\"calculate-btn\" onclick=\"calculateLSI()\">Calcular<\/button>\n                <button type=\"button\" class=\"reset-btn\" onclick=\"resetCalculator()\">Restablecer<\/button>\n            <\/div>\n        <\/div>\n    <\/form>\n\n    <!-- Dashboard Results Section -->\n    <div id=\"results-dashboard\" class=\"results-dashboard\" style=\"display: none;\">\n        <div class=\"dashboard-header\">\n            <h4>Resultados del c\u00e1lculo<\/h4>\n        <\/div>\n        <div class=\"dashboard-body\">\n            <div class=\"result-score-block\">\n                <div class=\"score-label\">Tu puntuaci\u00f3n LSI<\/div>\n                <div id=\"lsi-value\" class=\"score-number\">0.00<\/div>\n                <div id=\"lsi-status\" class=\"score-status\">Equilibrada<\/div>\n            <\/div>\n            <div class=\"result-meta-block\">\n                <div class=\"target-range-box\">\n                    <strong>Rango objetivo:<\/strong> <span class=\"highlight-text\">-0.30 a +0.30<\/span>\n                <\/div>\n                <p id=\"lsi-description\" class=\"explanation-text\">\n                    Se est\u00e1n analizando los par\u00e1metros de tu agua\u2026\n                <\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* Custom WordPress CSS Wrapper with #1ecad3 thematic color *\/\n.pool-calc-container {\n    background: #ffffff;\n    border: 1px solid #e2e8f0;\n    border-radius: 12px;\n    padding: 25px;\n    max-width: 650px;\n    margin: 20px auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n    box-sizing: border-box;\n}\n.pool-calc-container * {\n    box-sizing: border-box;\n}\n.pool-calc-title {\n    color: #1a202c;\n    font-size: 24px;\n    font-weight: 700;\n    margin-top: 0;\n    margin-bottom: 25px;\n    border-bottom: 2px solid #f1f5f9;\n    padding-bottom: 15px;\n}\n.pool-calc-step {\n    margin-bottom: 25px;\n    border-bottom: 1px dashed #e2e8f0;\n    padding-bottom: 25px;\n}\n\/* Block-level normal flow layout (prevents overlap) *\/\n.step-badge {\n    display: inline-block;\n    background-color: #1ecad3;\n    color: #ffffff;\n    font-size: 11px;\n    font-weight: 700;\n    padding: 4px 8px;\n    border-radius: 6px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin-bottom: 8px;\n}\n.step-title {\n    font-size: 18px;\n    color: #2d3748;\n    margin-top: 0;\n    margin-bottom: 20px;\n    font-weight: 600;\n}\n.pool-calc-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 15px;\n}\n@media (max-width: 480px) {\n    .pool-calc-grid {\n        grid-template-columns: 1fr;\n    }\n}\n.input-group {\n    display: flex;\n    flex-direction: column;\n}\n.input-group.full-width {\n    grid-column: span 2;\n}\n@media (max-width: 480px) {\n    .input-group.full-width {\n        grid-column: span 1;\n    }\n}\n.input-group label {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4a5568;\n    margin-bottom: 6px;\n}\n.input-group input {\n    padding: 10px 12px;\n    border: 1px solid #cbd5e1;\n    border-radius: 6px;\n    font-size: 15px;\n    color: #334155;\n    outline: none;\n    transition: border-color 0.2s ease;\n}\n.input-group input:focus {\n    border-color: #1ecad3;\n    box-shadow: 0 0 0 3px rgba(30, 202, 211, 0.15);\n}\n.input-hint {\n    font-size: 11px;\n    color: #94a3b8;\n    margin-top: 4px;\n}\n.temp-control-wrapper {\n    display: flex;\n    gap: 8px;\n}\n.temp-toggle-container {\n    display: flex;\n    border: 1px solid #cbd5e1;\n    border-radius: 6px;\n    overflow: hidden;\n}\n.temp-toggle-btn {\n    background: #f8fafc;\n    border: none;\n    padding: 0 14px;\n    font-size: 14px;\n    font-weight: 600;\n    color: #64748b;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n.temp-toggle-btn.active {\n    background-color: #1ecad3;\n    color: #ffffff;\n}\n\n\/* Button group flexbox layout *\/\n.btn-group {\n    display: flex;\n    gap: 12px;\n    width: 100%;\n}\n@media (max-width: 480px) {\n    .btn-group {\n        flex-direction: column;\n    }\n}\n.calculate-btn {\n    background-color: #1ecad3;\n    color: #ffffff;\n    border: none;\n    padding: 12px 24px;\n    font-size: 16px;\n    font-weight: 700;\n    border-radius: 6px;\n    cursor: pointer;\n    flex: 3;\n    transition: background-color 0.2s, transform 0.1s;\n}\n.calculate-btn:hover {\n    background-color: #16b3bb;\n}\n.calculate-btn:active {\n    transform: scale(0.99);\n}\n\/* Reset button style *\/\n.reset-btn {\n    background-color: #f8fafc;\n    color: #64748b;\n    border: 1px solid #cbd5e1;\n    padding: 12px 24px;\n    font-size: 16px;\n    font-weight: 600;\n    border-radius: 6px;\n    cursor: pointer;\n    flex: 1;\n    transition: all 0.2s;\n}\n.reset-btn:hover {\n    background-color: #f1f5f9;\n    color: #334155;\n    border-color: #94a3b8;\n}\n.reset-btn:active {\n    transform: scale(0.99);\n}\n\n\/* Dashboard styles *\/\n.results-dashboard {\n    margin-top: 25px;\n    border: 2px solid #1ecad3;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fcfdfd;\n    animation: fadeIn 0.4s ease-out;\n}\n.dashboard-header {\n    background-color: #1ecad3;\n    padding: 12px 15px;\n}\n.dashboard-header h4 {\n    margin: 0;\n    color: #ffffff;\n    font-size: 16px;\n    font-weight: 600;\n}\n.dashboard-body {\n    display: flex;\n    padding: 20px;\n    gap: 20px;\n    align-items: center;\n}\n@media (max-width: 550px) {\n    .dashboard-body {\n        flex-direction: column;\n        text-align: center;\n    }\n}\n.result-score-block {\n    flex: 0 0 140px;\n    text-align: center;\n    background: #ffffff;\n    padding: 15px;\n    border-radius: 8px;\n    border: 1px solid #e2e8f0;\n}\n.score-label {\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    color: #64748b;\n    font-weight: 600;\n}\n.score-number {\n    font-size: 32px;\n    font-weight: 800;\n    color: #1a202c;\n    margin: 5px 0;\n}\n.score-status {\n    font-size: 12px;\n    font-weight: 700;\n    padding: 3px 8px;\n    border-radius: 12px;\n    display: inline-block;\n}\n.status-balanced { background: #dcfce7; color: #166534; }\n.status-corrosive { background: #fee2e2; color: #991b1b; }\n.status-scaling { background: #fef3c7; color: #92400e; }\n\n.result-meta-block {\n    flex: 1;\n}\n.target-range-box {\n    font-size: 14px;\n    color: #334155;\n    margin-bottom: 10px;\n    background: #f1f5f9;\n    padding: 6px 12px;\n    border-radius: 4px;\n    display: inline-block;\n}\n.highlight-text {\n    color: #16b3bb;\n    font-weight: 700;\n}\n.explanation-text {\n    font-size: 14px;\n    line-height: 1.5;\n    color: #475569;\n    margin: 0;\n}\n\n@keyframes fadeIn {\n    from { opacity: 0; transform: translateY(10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n<\/style>\n\n<script>\nlet currentTempUnit = 'F';\n\nfunction setTempUnit(unit) {\n    if (currentTempUnit === unit) return;\n\n    currentTempUnit = unit;\n    document.getElementById('btn-f').classList.toggle('active', unit === 'F');\n    document.getElementById('btn-c').classList.toggle('active', unit === 'C');\n\n    let tempInput = document.getElementById('pool-temp');\n    let currentVal = parseFloat(tempInput.value);\n    if (!isNaN(currentVal)) {\n        if (unit === 'C') {\n            tempInput.value = Math.round((currentVal - 32) * 5 \/ 9);\n        } else {\n            tempInput.value = Math.round((currentVal * 9 \/ 5) + 32);\n        }\n    }\n}\n\nfunction resetCalculator() {\n    \/\/ Restore default values\n    document.getElementById('pool-ph').value = \"7.5\";\n    document.getElementById('pool-alk').value = \"100\";\n    document.getElementById('pool-cal').value = \"300\";\n    document.getElementById('pool-cya').value = \"40\";\n    document.getElementById('pool-tds').value = \"1000\";\n    document.getElementById('pool-borate').value = \"0\";\n\n    \/\/ Reset temperature to Fahrenheit default\n    currentTempUnit = 'C';\n    setTempUnit('F');\n    document.getElementById('pool-temp').value = \"80\";\n\n    \/\/ Hide dashboard\n    document.getElementById('results-dashboard').style.display = 'none';\n}\n\nfunction calculateLSI() {\n    const ph = parseFloat(document.getElementById('pool-ph').value) || 0;\n    const alk = parseFloat(document.getElementById('pool-alk').value) || 0;\n    const cal = parseFloat(document.getElementById('pool-cal').value) || 0;\n    const cya = parseFloat(document.getElementById('pool-cya').value) || 0;\n    const tds = parseFloat(document.getElementById('pool-tds').value) || 0;\n    const borate = parseFloat(document.getElementById('pool-borate').value) || 0;\n    let tempF = parseFloat(document.getElementById('pool-temp').value) || 0;\n\n    if (currentTempUnit === 'C') {\n        tempF = (tempF * 9 \/ 5) + 32;\n    }\n\n    \/\/ Temperature factor (TF)\n    let tf = 0;\n    if (tempF < 32) tf = 0.0;\n    else if (tempF <= 50) tf = 0.1;\n    else if (tempF <= 65) tf = 0.3;\n    else if (tempF <= 76) tf = 0.5;\n    else if (tempF <= 84) tf = 0.6;\n    else if (tempF <= 94) tf = 0.7;\n    else if (tempF <= 105) tf = 0.8;\n    else tf = 0.9;\n\n    \/\/ Calcium hardness factor (CF)\n    let cf = Math.log10(cal || 1) - 0.7;\n\n    \/\/ Corrected alkalinity (after CYA & borate)\n    let cyaCorrection = cya * 0.33;\n    let borateCorrection = borate * 0.11;\n    let correctedAlk = alk - cyaCorrection - borateCorrection;\n    if (correctedAlk < 1) correctedAlk = 1;\n\n    \/\/ Alkalinity factor (AF)\n    let af = Math.log10(correctedAlk);\n\n    \/\/ TDS factor (TDSF)\n    let tdsf = (tds > 1000) ? 12.2 : 12.1;\n\n    \/\/ LSI formula\n    let lsi = ph + tf + cf + af - tdsf;\n    lsi = Math.round(lsi * 100) \/ 100;\n\n    \/\/ Update dashboard\n    const lsiValEl = document.getElementById('lsi-value');\n    const lsiStatusEl = document.getElementById('lsi-status');\n    const lsiDescEl = document.getElementById('lsi-description');\n\n    lsiValEl.innerText = (lsi >= 0 ? \"+\" : \"\") + lsi.toFixed(2);\n    lsiStatusEl.className = \"score-status\";\n\n    if (lsi >= -0.30 && lsi <= 0.30) {\n        lsiStatusEl.innerText = \"Equilibrada\";\n        lsiStatusEl.classList.add(\"status-balanced\");\n        lsiDescEl.innerText = \"\u00a1Excelente! Tu agua est\u00e1 qu\u00edmicamente equilibrada. Este estado ideal protege los equipos de la piscina frente a la corrosi\u00f3n y evita las incrustaciones de cal en las superficies.\";\n    } else if (lsi < -0.30) {\n        lsiStatusEl.innerText = \"Corrosiva\";\n        lsiStatusEl.classList.add(\"status-corrosive\");\n        lsiDescEl.innerText = \"Advertencia: el agua est\u00e1 infrasaturada y es corrosiva. Disuelve agresivamente el calcio del yeso, las juntas de los azulejos y los componentes met\u00e1licos. Considera subir el pH, la alcalinidad o la dureza c\u00e1lcica.\";\n    } else {\n        lsiStatusEl.innerText = \"Incrustante\";\n        lsiStatusEl.classList.add(\"status-scaling\");\n        lsiDescEl.innerText = \"Advertencia: el agua est\u00e1 sobresaturada y forma incrustaciones. El exceso de minerales de calcio puede depositarse en las l\u00edneas de agua, obstruir el medio filtrante y enturbiar el agua. Se recomienda bajar el pH o la alcalinidad.\";\n    }\n\n    document.getElementById('results-dashboard').style.display = 'block';\n}\n<\/script>\n\n\n\n<div class=\"lsi-chart-container\">\n    <h3 class=\"lsi-chart-title\">Tabla de referencia del \u00edndice LSI<\/h3>\n    <p class=\"lsi-chart-subtitle\">Usa esta gu\u00eda visual para entender c\u00f3mo la puntuaci\u00f3n del \u00edndice de saturaci\u00f3n de tu piscina afecta al equilibrio del agua y a la durabilidad del vaso.<\/p>\n\n    <!-- Color bar -->\n    <div class=\"lsi-bar-wrapper\">\n        <div class=\"lsi-bar\">\n            <div class=\"lsi-zone corrosive-dark\"><\/div>\n            <div class=\"lsi-zone corrosive-light\"><\/div>\n            <div class=\"lsi-zone balanced-zone\">\n                <span class=\"balanced-label\">IDEAL<\/span>\n            <\/div>\n            <div class=\"lsi-zone scaling-light\"><\/div>\n            <div class=\"lsi-zone scaling-dark\"><\/div>\n        <\/div>\n        <div class=\"lsi-scale-labels\">\n            <span>-0.5 y menos<\/span>\n            <span>-0.3<\/span>\n            <span>0.0<\/span>\n            <span>+0.3<\/span>\n            <span>+0.5 y m\u00e1s<\/span>\n        <\/div>\n    <\/div>\n\n    <!-- Status detail grid -->\n    <div class=\"lsi-status-grid\">\n        <!-- Corrosive -->\n        <div class=\"status-card status-corrosive-card\">\n            <div class=\"status-card-header\">\n                <span class=\"status-dot dot-corrosive\"><\/span>\n                <strong>-0.31 a -0.50+ (zona corrosiva)<\/strong>\n            <\/div>\n            <p>El agua est\u00e1 infrasaturada. Act\u00faa como una esponja l\u00edquida que intenta disolver minerales para equilibrarse. Esto provoca un grabado permanente del yeso, disuelve las juntas y corroe r\u00e1pidamente los equipos met\u00e1licos, como calentadores o escaleras.<\/p>\n        <\/div>\n\n        <!-- Balanced -->\n        <div class=\"status-card status-balanced-card\">\n            <div class=\"status-card-header\">\n                <span class=\"status-dot dot-balanced\"><\/span>\n                <strong>-0.30 a +0.30 (equilibrio perfecto)<\/strong>\n            <\/div>\n            <p>El agua est\u00e1 perfectamente saturada y estable. Ni disuelve las superficies ni deposita incrustaciones. Mantener tu piscina en este punto \u00f3ptimo maximiza la vida \u00fatil de las tuber\u00edas, los materiales de superficie y los equipos.<\/p>\n        <\/div>\n\n        <!-- Scaling -->\n        <div class=\"status-card status-scaling-card\">\n            <div class=\"status-card-header\">\n                <span class=\"status-dot dot-scaling\"><\/span>\n                <strong>+0.31 a +0.50+ (zona incrustante)<\/strong>\n            <\/div>\n            <p>El agua est\u00e1 sobresaturada de minerales de calcio. Expulsa activamente el calcio de la soluci\u00f3n, lo que provoca dep\u00f3sitos de cal blancos y rugosos a lo largo de la l\u00ednea de agua, agua turbia y la calcificaci\u00f3n u obstrucci\u00f3n del elemento filtrante de tu piscina.<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* Standalone chart container *\/\n.lsi-chart-container {\n    background: #ffffff;\n    border: 1px solid #e2e8f0;\n    border-radius: 12px;\n    padding: 25px;\n    max-width: 650px;\n    margin: 20px auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n    box-sizing: border-box;\n}\n.lsi-chart-container * {\n    box-sizing: border-box;\n}\n.lsi-chart-title {\n    color: #1a202c;\n    font-size: 20px;\n    font-weight: 700;\n    margin-top: 0;\n    margin-bottom: 8px;\n}\n.lsi-chart-subtitle {\n    color: #64748b;\n    font-size: 14px;\n    line-height: 1.4;\n    margin-top: 0;\n    margin-bottom: 25px;\n}\n\n\/* Gradient bar layout *\/\n.lsi-bar-wrapper {\n    margin-bottom: 30px;\n}\n.lsi-bar {\n    display: flex;\n    height: 35px;\n    border-radius: 6px;\n    overflow: hidden;\n    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);\n}\n.lsi-zone {\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\/* Bar segment weights *\/\n.corrosive-dark  { background-color: #ef4444; flex: 2; } \/* severe corrosion - red *\/\n.corrosive-light { background-color: #fca5a5; flex: 1; } \/* mild corrosion - light red *\/\n.balanced-zone   { background-color: #1ecad3; flex: 3; } \/* perfect balance - brand color *\/\n.scaling-light   { background-color: #fde047; flex: 1; } \/* mild scaling - light yellow *\/\n.scaling-dark    { background-color: #eab308; flex: 2; } \/* severe scaling - yellow\/orange *\/\n\n.balanced-label {\n    color: #ffffff;\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 1px;\n}\n\n\/* Scale labels *\/\n.lsi-scale-labels {\n    display: flex;\n    justify-content: space-between;\n    padding: 6px 4px 0 4px;\n    font-size: 12px;\n    color: #64748b;\n    font-weight: 600;\n}\n\n\/* Status cards *\/\n.lsi-status-grid {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n}\n.status-card {\n    border-radius: 8px;\n    padding: 15px;\n    border: 1px solid #e2e8f0;\n    background-color: #f8fafc;\n}\n.status-card-header {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 14px;\n    color: #1a202c;\n    margin-bottom: 6px;\n}\n.status-card p {\n    margin: 0;\n    font-size: 13px;\n    line-height: 1.5;\n    color: #475569;\n}\n\n\/* Status dots *\/\n.status-dot {\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    display: inline-block;\n}\n.dot-corrosive { background-color: #ef4444; }\n.dot-balanced  { background-color: #1ecad3; }\n.dot-scaling   { background-color: #eab308; }\n\n\/* Per-card background tweaks *\/\n.status-corrosive-card { border-left: 4px solid #ef4444; }\n.status-balanced-card  { border-left: 4px solid #1ecad3; background-color: #fcfdfd; }\n.status-scaling-card   { border-left: 4px solid #eab308; }\n<\/style>\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-tiempo-llenado-piscina\/\" class=\"aiper-tl-tag\">Calculadora de tiempo de llenado de piscina<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-tasa-recambio-piscina\/\" class=\"aiper-tl-tag\">Calculadora de tasa de recambio de piscina<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-borax-piscina\/\" class=\"aiper-tl-tag\">Calculadora de b\u00f3rax para piscina<\/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\/robot-piscina-atascado-desague-principal\/\" class=\"aiper-tl-tag\">\u00bfPor qu\u00e9 el robot de piscina se queda atascado en el desag\u00fce principal?<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/preparar-piscina-para-invierno\/\" class=\"aiper-tl-tag\">C\u00f3mo preparar una piscina enterrada para el invierno: gu\u00eda paso a paso<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/es\/dejar-robot-limpiapiscinas-en-el-agua\/\" class=\"aiper-tl-tag\">\u00bfSe puede dejar el robot limpiapiscinas en el agua?<\/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>Paso 1 Introduce los par\u00e1metros del agua Nivel de pH Ideal: 7.2 &#8211; 7.8 Alcalinidad total (ppm) Ideal: 80 &#8211; 120 ppm Dureza c\u00e1lcica (ppm) Ideal: 200 &#8211; 400 ppm \u00c1cido cian\u00farico (ppm) Ideal: 30 &#8211; 50 ppm Sal \/ TDS (ppm) Sin sal: &lt; 1500 | Sal: ~3200 Boratos (ppm) Opcional: 0 &#8211; 50 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":2,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-2157","page","type-page","status-publish","hentry"],"lang":"es","translations":{"es":2157,"de":2155,"en":1841,"fr":2156},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2157","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=2157"}],"version-history":[{"count":3,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2157\/revisions"}],"predecessor-version":[{"id":4389,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/2157\/revisions\/4389"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=2157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}