{"id":2677,"date":"2024-11-16T10:56:43","date_gmt":"2024-11-16T09:56:43","guid":{"rendered":"https:\/\/www.gfima.es\/?page_id=2677"},"modified":"2026-01-10T13:48:00","modified_gmt":"2026-01-10T12:48:00","slug":"calculadoras","status":"publish","type":"page","link":"https:\/\/www.gfima.es\/?page_id=2677","title":{"rendered":"Calculadoras"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2677\" class=\"elementor elementor-2677\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-152f979 e-con-full e-flex e-con e-child\" data-id=\"152f979\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-5a27bef e-con-full e-flex e-con e-child\" data-id=\"5a27bef\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ceb2610 elementor-widget elementor-widget-heading\" data-id=\"ceb2610\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Calculadoras<br>inmobiliarias<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0557c55 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"0557c55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: var( --e-global-color-text ); text-align: var(--text-align);\">Descubre nuestras calculadoras inmobiliarias dise\u00f1adas para facilitar tus decisiones. Desde calcular la hipoteca ideal hasta estimar los costos asociados a la compra o venta de una propiedad, nuestras herramientas te ofrecen claridad y confianza. \u00a1Empieza a planificar con precisi\u00f3n y asegura el \u00e9xito de tu pr\u00f3xima operaci\u00f3n inmobiliaria!<\/span>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a1c5c46 e-con-full elementor-hidden-mobile e-flex e-con e-child\" data-id=\"a1c5c46\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12ff6af elementor-widget elementor-widget-spacer\" data-id=\"12ff6af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\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\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0fcbfda e-flex e-con-boxed e-con e-parent\" data-id=\"0fcbfda\" 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-7a6e220 elementor-widget elementor-widget-heading\" data-id=\"7a6e220\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Comprador<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d888fa8 e-con-full e-flex e-con e-child\" data-id=\"d888fa8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-462a87a e-con-full e-flex e-con e-child\" data-id=\"462a87a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9af3ee6 elementor-widget elementor-widget-html\" data-id=\"9af3ee6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Calculadora Hipotecaria<\/title>\r\n    <!-- Agregamos la librer\u00eda jsPDF -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf-autotable\/3.5.25\/jspdf.plugin.autotable.min.js\"><\/script>\r\n    <style>\r\n        body {\r\n            font-family: Arial, sans-serif;\r\n            background-color: #f4f4f4;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n        #calculatorContainer {\r\n            max-width: 300px;\r\n            background: #ffffff;\r\n            border-radius: 8px;\r\n            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\r\n            padding: 20px;\r\n            margin: auto;\r\n        }\r\n        h2 {\r\n            text-align: center;\r\n            font-size: 28px;\r\n            font-weight: bold;\r\n            color: #333;\r\n            margin-bottom: 20px;\r\n        }\r\n        label {\r\n            font-weight: bold;\r\n            margin-bottom: 5px;\r\n            display: block;\r\n        }\r\n        input[type=\"number\"],\r\n        input[type=\"range\"],\r\n        button {\r\n            width: 100%;\r\n            padding: 10px;\r\n            margin-bottom: 15px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 4px;\r\n            box-sizing: border-box;\r\n            text-align: center;\r\n        }\r\n        input[type=\"number\"]:focus,\r\n        input[type=\"range\"]:focus,\r\n        button:hover {\r\n            border-color: #4CAF50;\r\n        }\r\n        button {\r\n            background-color: #4CAF50;\r\n            color: white;\r\n            border: none;\r\n            cursor: pointer;\r\n            font-size: 16px;\r\n        }\r\n        button:hover {\r\n            background-color: #45a049;\r\n        }\r\n        #monthlyPayment {\r\n            font-size: 20px;\r\n            color: #d9534f;\r\n            font-weight: bold;\r\n        }\r\n        #amortizationTableModal {\r\n            display: none;\r\n            position: fixed;\r\n            z-index: 1000;\r\n            left: 0;\r\n            top: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background-color: rgba(0, 0, 0, 0.4);\r\n            justify-content: center;\r\n            align-items: center;\r\n        }\r\n        #amortizationTableContent {\r\n            background-color: #fff;\r\n            padding: 20px;\r\n            border-radius: 8px;\r\n            width: 90%;\r\n            max-width: 700px;\r\n            max-height: 80%;\r\n            overflow-y: auto;\r\n        }\r\n        .closeBtn {\r\n            color: #333;\r\n            float: right;\r\n            font-size: 20px;\r\n            font-weight: bold;\r\n            cursor: pointer;\r\n        }\r\n        table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n        }\r\n        th, td {\r\n            padding: 8px;\r\n            border: 1px solid #ddd;\r\n            text-align: center;\r\n        }\r\n        .button-group {\r\n            display: flex;\r\n            gap: 10px;\r\n            margin-bottom: 15px;\r\n        }\r\n        .button-group button {\r\n            flex: 1;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div id=\"calculatorContainer\">\r\n        <h2>Calculadora Hipotecaria<\/h2>\r\n        <label for=\"loanAmount\">Importe de la hipoteca (\u20ac):<\/label>\r\n        <input type=\"number\" id=\"loanAmount\" value=\"100000\" min=\"0\" max=\"1000000\">\r\n        <input type=\"range\" id=\"loanAmountSlider\" min=\"0\" max=\"500000\" value=\"100000\" step=\"1000\" oninput=\"updateInput('loanAmount', this.value)\">\r\n        \r\n        <label for=\"loanTerm\">A\u00f1os de la hipoteca:<\/label>\r\n        <input type=\"number\" id=\"loanTerm\" name=\"loanTerm\" value=\"30\" min=\"5\" max=\"40\" required oninput=\"updateSlider('loanTermSlider', this.value)\">\r\n        <input type=\"range\" id=\"loanTermSlider\" min=\"5\" max=\"40\" value=\"30\" step=\"1\" oninput=\"updateInput('loanTerm', this.value)\">\r\n        \r\n        <label for=\"interestRate\">Tipo de inter\u00e9s (% anual):<\/label>\r\n        <input type=\"number\" id=\"interestRate\" name=\"interestRate\" step=\"0.01\" value=\"2\" required>\r\n        \r\n        <button type=\"button\" onclick=\"calculateMortgage()\">Calcular cuota mensual<\/button>\r\n        <p>Cuota mensual estimada: <span id=\"monthlyPayment\">369,62 \u20ac<\/span><\/p>\r\n        <button type=\"button\" onclick=\"showAmortizationTable()\">Ver tabla de amortizaci\u00f3n<\/button>\r\n    <\/div>\r\n\r\n    <div id=\"amortizationTableModal\">\r\n        <div id=\"amortizationTableContent\">\r\n            <span class=\"closeBtn\" onclick=\"closeAmortizationTable()\">&times;<\/span>\r\n            \r\n            <h4>Resumen del Pr\u00e9stamo<\/h4>\r\n            <p>Importe del pr\u00e9stamo: <span id=\"summaryLoanAmount\"><\/span> \u20ac<\/p>\r\n            <p>Tipo de inter\u00e9s: <span id=\"summaryInterestRate\"><\/span>%<\/p>\r\n            <p>Plazo: <span id=\"summaryLoanTerm\"><\/span> a\u00f1os<\/p>\r\n            <p>Cuota mensual: <span id=\"summaryMonthlyPayment\"><\/span> \u20ac<\/p>\r\n            <p>Total intereses pagados: <span id=\"summaryTotalInterest\"><\/span> \u20ac<\/p>\r\n            <p>Total (Capital + Intereses): <span id=\"summaryTotalCost\"><\/span> \u20ac<\/p>\r\n            \r\n            <div class=\"button-group\">\r\n                <button onclick=\"generatePDF()\">Generar PDF<\/button>\r\n                <button onclick=\"printAmortizationTable()\">Imprimir<\/button>\r\n            <\/div>\r\n            \r\n            <h3>Tabla de Amortizaci\u00f3n<\/h3>\r\n            <table id=\"amortizationTable\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Cuota<\/th>\r\n                        <th>Capital Pendiente (\u20ac)<\/th>\r\n                        <th>Cuota Capital (\u20ac)<\/th>\r\n                        <th>Cuota Inter\u00e9s (\u20ac)<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody><\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        \/\/ Inicializar jsPDF\r\n        const { jsPDF } = window.jspdf;\r\n        \r\n        function updateSlider(sliderId, value) {\r\n            document.getElementById(sliderId).value = value;\r\n        }\r\n\r\n        function updateInput(inputId, value) {\r\n            document.getElementById(inputId).value = value;\r\n        }\r\n\r\n        function formatCurrency(value) {\r\n            return value.toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n        }\r\n\r\n        function calculateMortgage() {\r\n            let loanAmount = parseFloat(document.getElementById('loanAmount').value.replace(\/,\/g, '')) || 100000;\r\n            let loanTerm = parseInt(document.getElementById('loanTerm').value) * 12;\r\n            let interestRate = parseFloat(document.getElementById('interestRate').value) \/ 100 \/ 12;\r\n\r\n            if (isNaN(loanAmount) || isNaN(loanTerm) || isNaN(interestRate)) {\r\n                alert(\"Por favor, complete todos los campos.\");\r\n                return;\r\n            }\r\n\r\n            let monthlyPayment = loanAmount * (interestRate * Math.pow(1 + interestRate, loanTerm)) \/ (Math.pow(1 + interestRate, loanTerm) - 1);\r\n            document.getElementById('monthlyPayment').textContent = formatCurrency(monthlyPayment) + ' \u20ac';\r\n        }\r\n\r\n        function showAmortizationTable() {\r\n            const loanAmount = parseFloat(document.getElementById('loanAmount').value.replace(\/,\/g, '')) || 100000;\r\n            const loanTermYears = parseInt(document.getElementById('loanTerm').value);\r\n            const loanTerm = loanTermYears * 12;\r\n            const interestRate = parseFloat(document.getElementById('interestRate').value) \/ 100 \/ 12;\r\n\r\n            let balance = loanAmount;\r\n            let monthlyPayment = loanAmount * (interestRate * Math.pow(1 + interestRate, loanTerm)) \/ (Math.pow(1 + interestRate, loanTerm) - 1);\r\n            let tableBody = document.querySelector(\"#amortizationTable tbody\");\r\n            tableBody.innerHTML = '';\r\n            let totalInterest = 0;\r\n\r\n            for (let i = 1; i <= loanTerm; i++) {\r\n                let interestPayment = balance * interestRate;\r\n                let principalPayment = monthlyPayment - interestPayment;\r\n                balance -= principalPayment;\r\n                totalInterest += interestPayment;\r\n\r\n                let row = tableBody.insertRow();\r\n                row.insertCell(0).textContent = i;\r\n                row.insertCell(1).textContent = formatCurrency(balance) + ' \u20ac';\r\n                row.insertCell(2).textContent = formatCurrency(principalPayment) + ' \u20ac';\r\n                row.insertCell(3).textContent = formatCurrency(interestPayment) + ' \u20ac';\r\n            }\r\n\r\n            const totalCost = loanAmount + totalInterest;\r\n\r\n            document.getElementById('summaryLoanAmount').textContent = formatCurrency(loanAmount);\r\n            document.getElementById('summaryInterestRate').textContent = (interestRate * 12 * 100).toFixed(2);\r\n            document.getElementById('summaryLoanTerm').textContent = loanTermYears;\r\n            document.getElementById('summaryMonthlyPayment').textContent = formatCurrency(monthlyPayment);\r\n            document.getElementById('summaryTotalInterest').textContent = formatCurrency(totalInterest);\r\n            document.getElementById('summaryTotalCost').textContent = formatCurrency(totalCost);\r\n\r\n            document.getElementById('amortizationTableModal').style.display = 'flex';\r\n        }\r\n\r\n        function closeAmortizationTable() {\r\n            document.getElementById('amortizationTableModal').style.display = 'none';\r\n        }\r\n\r\n        function printAmortizationTable() {\r\n            const printContent = document.getElementById('amortizationTableContent').innerHTML;\r\n            const originalContent = document.body.innerHTML;\r\n            document.body.innerHTML = printContent;\r\n            window.print();\r\n            document.body.innerHTML = originalContent;\r\n        }\r\n\r\n        function generatePDF() {\r\n            const doc = new jsPDF();\r\n            \r\n            \/\/ T\u00edtulo del documento\r\n            doc.setFontSize(18);\r\n            doc.text(\"Tabla de Amortizaci\u00f3n - Calculadora Hipotecaria\", 105, 15, null, null, 'center');\r\n            \r\n            \/\/ Resumen del pr\u00e9stamo\r\n            doc.setFontSize(12);\r\n            const summaryData = [\r\n                [\"Importe del pr\u00e9stamo:\", document.getElementById('summaryLoanAmount').textContent + \" \u20ac\"],\r\n                [\"Tipo de inter\u00e9s:\", document.getElementById('summaryInterestRate').textContent + \"%\"],\r\n                [\"Plazo:\", document.getElementById('summaryLoanTerm').textContent + \" a\u00f1os\"],\r\n                [\"Cuota mensual:\", document.getElementById('summaryMonthlyPayment').textContent + \" \u20ac\"],\r\n                [\"Total intereses:\", document.getElementById('summaryTotalInterest').textContent + \" \u20ac\"],\r\n                [\"Total a pagar:\", document.getElementById('summaryTotalCost').textContent + \" \u20ac\"]\r\n            ];\r\n            \r\n            doc.autoTable({\r\n                startY: 25,\r\n                head: [['Resumen del Pr\u00e9stamo', '']],\r\n                body: summaryData,\r\n                theme: 'grid',\r\n                headStyles: { fillColor: [76, 175, 80] },\r\n                margin: { top: 20 }\r\n            });\r\n            \r\n            \/\/ Preparar datos de la tabla de amortizaci\u00f3n\r\n            const table = document.getElementById('amortizationTable');\r\n            const headers = [];\r\n            const rows = [];\r\n            \r\n            \/\/ Obtener encabezados\r\n            for (let i = 0; i < table.rows[0].cells.length; i++) {\r\n                headers.push(table.rows[0].cells[i].textContent);\r\n            }\r\n            \r\n            \/\/ Obtener filas (limitamos a 100 filas para no hacer el PDF demasiado grande)\r\n            const rowCount = Math.min(table.rows.length, 100);\r\n            for (let i = 1; i < rowCount; i++) {\r\n                const row = table.rows[i];\r\n                const rowData = [];\r\n                for (let j = 0; j < row.cells.length; j++) {\r\n                    rowData.push(row.cells[j].textContent);\r\n                }\r\n                rows.push(rowData);\r\n            }\r\n            \r\n            \/\/ A\u00f1adir tabla de amortizaci\u00f3n al PDF\r\n            doc.autoTable({\r\n                startY: doc.lastAutoTable.finalY + 10,\r\n                head: [headers],\r\n                body: rows,\r\n                theme: 'grid',\r\n                headStyles: { fillColor: [76, 175, 80] },\r\n                pageBreak: 'auto',\r\n                margin: { top: 10 }\r\n            });\r\n            \r\n            \/\/ Pie de p\u00e1gina\r\n            const pageCount = doc.internal.getNumberOfPages();\r\n            for (let i = 1; i <= pageCount; i++) {\r\n                doc.setPage(i);\r\n                doc.setFontSize(10);\r\n                doc.text(`P\u00e1gina ${i} de ${pageCount}`, 105, 285, null, null, 'center');\r\n                doc.text(\"Generado por Calculadora Hipotecaria\", 105, 290, null, null, 'center');\r\n            }\r\n            \r\n            \/\/ Guardar el PDF\r\n            doc.save('tabla_amortizacion_hipoteca.pdf');\r\n        }\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c3f9ef e-con-full e-flex e-con e-child\" data-id=\"3c3f9ef\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3f87643 elementor-widget elementor-widget-html\" data-id=\"3f87643\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\" \/>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n    <title>Calculadora Hipotecaria Mejorada<\/title>\r\n    <style>\r\n        body {\r\n            font-family: Arial, sans-serif;\r\n            background-color: #f4f4f4;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n        #calculatorContainer {\r\n            max-width: 400px;\r\n            background: #ffffff;\r\n            border-radius: 15px;\r\n            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\r\n            padding: 15px;\r\n            margin: auto;\r\n        }\r\n        h2 {\r\n            text-align: center;\r\n            font-size: 24px;\r\n            font-weight: bold;\r\n            color: #333;\r\n        }\r\n        label {\r\n            font-weight: bold;\r\n            margin-bottom: 3px;\r\n            display: block;\r\n        }\r\n        label:hover::after {\r\n            content: attr(title);\r\n            position: absolute;\r\n            background: #000;\r\n            color: #fff;\r\n            padding: 5px;\r\n            border-radius: 5px;\r\n            font-size: 12px;\r\n        }\r\n        .input-group {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            gap: 10px;\r\n        }\r\n        .input-group div {\r\n            width: 50%;\r\n        }\r\n        input[type=\"number\"], input[type=\"range\"], button {\r\n            width: 100%;\r\n            padding: 6px;\r\n            margin-bottom: 6px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 15px;\r\n            text-align: center;\r\n            box-sizing: border-box;\r\n        }\r\n        button {\r\n            background-color: #4CAF50;\r\n            color: white;\r\n            border: none;\r\n            cursor: pointer;\r\n            font-size: 16px;\r\n        }\r\n        button:hover {\r\n            background-color: #45a049;\r\n        }\r\n        #resultContainer {\r\n            text-align: center;\r\n            margin-top: 5px;\r\n        }\r\n        #resultContainer p {\r\n            margin: 5px 0;\r\n        }\r\n        #maxCuota, #plazoHipoteca, #ImporteCasa {\r\n            font-size: 18px;\r\n            color: #d9534f;\r\n            font-weight: bold;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div id=\"calculatorContainer\">\r\n        <h2>\u00bfQu\u00e9 casa me puedo permitir?<\/h2>\r\n\r\n        <div class=\"input-group\">\r\n            <div>\r\n                <label for=\"ingresos\" title=\"Inserta los ingresos mensuales de todos los intervinientes.\">Ingresos (\u20ac\/mes):<\/label>\r\n                <input type=\"number\" id=\"ingresos\" value=\"1500\" min=\"0\" max=\"100000\" step=\"50\" oninput=\"syncSliderFromInput('ingresos')\">\r\n                <input type=\"range\" id=\"ingresosSlider\" min=\"0\" max=\"10000\" value=\"1500\" step=\"50\" oninput=\"syncInputFromSlider('ingresos')\">\r\n            <\/div>\r\n            <div>\r\n                <label for=\"prestamos\" title=\"Inserta el total de pagos mensuales por pr\u00e9stamos.\">Pr\u00e9stamos (\u20ac\/mes):<\/label>\r\n                <input type=\"number\" id=\"prestamos\" value=\"0\" min=\"0\" max=\"5000\" step=\"10\" oninput=\"syncSliderFromInput('prestamos')\">\r\n                <input type=\"range\" id=\"prestamosSlider\" min=\"0\" max=\"5000\" value=\"0\" step=\"10\" oninput=\"syncInputFromSlider('prestamos')\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-group\">\r\n            <div>\r\n                <label for=\"edad\" title=\"Pon la edad del mayor de los intervinientes.\">Edad:<\/label>\r\n                <input type=\"number\" id=\"edad\" value=\"35\" min=\"18\" max=\"100\" oninput=\"syncSliderFromInput('edad')\">\r\n                <input type=\"range\" id=\"edadSlider\" min=\"18\" max=\"80\" value=\"35\" oninput=\"syncInputFromSlider('edad')\">\r\n            <\/div>\r\n            <div>\r\n                <label for=\"plazoHipoteca\" title=\"Plazo m\u00e1ximo de la hipoteca, basado en la edad.\">Plazo (a\u00f1os):<\/label>\r\n                <input type=\"number\" id=\"plazoHipoteca\" value=\"40\" readonly>\r\n                <input type=\"range\" id=\"plazoHipotecaSlider\" min=\"1\" max=\"40\" value=\"40\" disabled>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-group\">\r\n            <div>\r\n                <label for=\"interes\" title=\"Estimaci\u00f3n del tipo de inter\u00e9s.\">Tipo de inter\u00e9s en %:<\/label>\r\n                <input type=\"number\" id=\"interes\" value=\"2\" min=\"0.1\" max=\"10\" step=\"0.1\">\r\n            <\/div>\r\n            <div>\r\n                <label for=\"porcentaje\" title=\"En algunos casos se puede llegar al 40%.\">% ingresos destinado a pr\u00e9stamo.:<\/label>\r\n                <input type=\"number\" id=\"porcentaje\" value=\"35\" min=\"10\" max=\"50\" step=\"1\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <button type=\"button\" onclick=\"calcular()\">Calcular<\/button>\r\n\r\n        <div id=\"resultContainer\">\r\n            <p>Cuota m\u00e1xima: <span id=\"maxCuota\">525,00 \u20ac<\/span><\/p>\r\n            <p>Importe total de la casa: <span id=\"ImporteCasa\">173.367,09 \u20ac<\/span><\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        function syncSliderFromInput(id) {\r\n            const input = document.getElementById(id);\r\n            const slider = document.getElementById(id + 'Slider');\r\n            slider.value = input.value;\r\n            if (id === 'edad') actualizarPlazoHipoteca();\r\n        }\r\n\r\n        function syncInputFromSlider(id) {\r\n            const slider = document.getElementById(id + 'Slider');\r\n            const input = document.getElementById(id);\r\n            input.value = slider.value;\r\n            if (id === 'edad') actualizarPlazoHipoteca();\r\n        }\r\n\r\n        function actualizarPlazoHipoteca() {\r\n            const edad = parseInt(document.getElementById('edad').value);\r\n            const a\u00f1osRestantes = Math.min(40, 80 - edad);\r\n            document.getElementById('plazoHipoteca').value = a\u00f1osRestantes;\r\n            document.getElementById('plazoHipotecaSlider').value = a\u00f1osRestantes;\r\n        }\r\n\r\n        function calcular() {\r\n            actualizarPlazoHipoteca();\r\n\r\n            const ingresos = parseFloat(document.getElementById('ingresos').value);\r\n            const prestamos = parseFloat(document.getElementById('prestamos').value);\r\n            const porcentaje = parseFloat(document.getElementById('porcentaje').value) \/ 100;\r\n            const interes = parseFloat(document.getElementById('interes').value) \/ 100;\r\n            const plazo = parseInt(document.getElementById('plazoHipoteca').value) * 12;\r\n\r\n            const cuotaMaxima = (ingresos * porcentaje) - prestamos;\r\n            const tasaMensual = interes \/ 12;\r\n            const importeCasa = (cuotaMaxima * (1 - Math.pow(1 + tasaMensual, -plazo))) \/ tasaMensual;\r\n\r\n            document.getElementById('maxCuota').textContent = cuotaMaxima.toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + \" \u20ac\";\r\n            document.getElementById('ImporteCasa').textContent = importeCasa.toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + \" \u20ac\";\r\n        }\r\n\r\n        \/\/ Inicializaci\u00f3n para que los sliders est\u00e9n sincronizados desde el principio\r\n        window.onload = function() {\r\n            syncSliderFromInput('ingresos');\r\n            syncSliderFromInput('prestamos');\r\n            syncSliderFromInput('edad');\r\n            actualizarPlazoHipoteca();\r\n        };\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1f7769d e-con-full e-flex e-con e-child\" data-id=\"1f7769d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97ae39c elementor-widget elementor-widget-html\" data-id=\"97ae39c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Gastos de Compraventa<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f4f4f4;\r\n      padding: 20px;\r\n    }\r\n    .calc-container {\r\n      max-width: 500px;\r\n      background: #fff;\r\n      border-radius: 15px;\r\n      padding: 20px;\r\n      margin: 0px auto;\r\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n    }\r\n    label {\r\n      display: block;\r\n      margin: 10px 0 5px;\r\n      font-weight: bold;\r\n    }\r\n    input, select, button {\r\n      width: 100%;\r\n      padding: 8px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      box-sizing: border-box;\r\n    }\r\n    button {\r\n      background-color: #4CAF50;\r\n      color: white;\r\n      margin-top: 15px;\r\n      border: none;\r\n      cursor: pointer;\r\n      font-size: 16px;\r\n    }\r\n    button:hover {\r\n      background-color: #45a049;\r\n    }\r\n    .resultados {\r\n      margin-top: 20px;\r\n      background: #f9f9f9;\r\n      border-radius: 10px;\r\n      padding: 15px;\r\n    }\r\n    .resultados p {\r\n      margin: 5px 0;\r\n      font-size: 15px;\r\n        color: #d9534f;\r\n        font-weight: bold;\r\n    }\r\n    .nota {\r\n      font-size: 12px;\r\n      color: #555;\r\n      margin-top: 10px;\r\n      font-style: italic;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <!-- Puedes duplicar este bloque para tener m\u00faltiples calculadoras -->\r\n  <div class=\"calc-container\">\r\n    <h2>Gastos de Compraventa<\/h2>\r\n\r\n    <label for=\"precio\">Precio de compra (\u20ac):<\/label>\r\n    <input type=\"number\" class=\"precio\" value=\"100000\" min=\"0\" \/>\r\n\r\n    <label>Tipo de vivienda:<\/label>\r\n    <select class=\"tipo\">\r\n      <option value=\"segunda\">Segunda mano<\/option>\r\n      <option value=\"obraNueva\">Obra nueva<\/option>\r\n    <\/select>\r\n\r\n    <label>Comunidad Aut\u00f3noma:<\/label>\r\n    <select class=\"comunidad\">\r\n      <option value=\"clm\">Castilla-La Mancha<\/option>\r\n    <\/select>\r\n\r\n    <label>\u00bfCumples requisitos para deducci\u00f3n por primera vivienda?<\/label>\r\n    <select class=\"primeraVivienda\">\r\n      <option value=\"no\">No<\/option>\r\n      <option value=\"si\">S\u00ed<\/option>\r\n    <\/select>\r\n\r\n    <button onclick=\"calcularGastos(this)\">Calcular gastos<\/button>\r\n\r\n    <div class=\"resultados\" style=\"display: none;\">\r\n      <p><strong>Impuesto (ITP o IVA):<\/strong> <span class=\"impuestoTipo\">-<\/span><\/p>\r\n      <p class=\"ajdLine\" style=\"display:none;\"><strong>AJD:<\/strong> <span class=\"ajd\">-<\/span><\/p>\r\n      <p><strong>Notar\u00eda:<\/strong> <span class=\"notaria\">-<\/span><\/p>\r\n      <p><strong>Registro:<\/strong> <span class=\"registro\">-<\/span><\/p>\r\n      <p><strong>Total aproximado:<\/strong> <span class=\"total\">-<\/span><\/p>\r\n    <\/div>\r\n\r\n    <div class=\"nota\">\r\n      *Algunas inmobiliarias pueden cobrar honorarios al comprador.<br>\r\n      *El ITP o AJD se paga sobre el mayor valor: compraventa, hacienda o tasaci\u00f3n.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    function calcularGastos(btn) {\r\n      const contenedor = btn.closest(\".calc-container\");\r\n\r\n      const precioInput = contenedor.querySelector(\".precio\");\r\n      const tipo = contenedor.querySelector(\".tipo\").value;\r\n      const primeraVivienda = contenedor.querySelector(\".primeraVivienda\").value === 'si';\r\n\r\n      const precio = parseFloat(precioInput.value.replace(\",\", \".\"));\r\n      if (isNaN(precio) || precio <= 0) {\r\n        alert(\"Por favor, introduce un precio v\u00e1lido mayor que cero.\");\r\n        return;\r\n      }\r\n\r\n      let impuesto = 0;\r\n      let ajd = 0;\r\n\r\n      const ajdLine = contenedor.querySelector(\".ajdLine\");\r\n\r\n      if (tipo === \"segunda\") {\r\n        impuesto = (primeraVivienda && precio <= 180000) ? precio * 0.06 : precio * 0.09;\r\n        ajdLine.style.display = 'none';\r\n      } else if (tipo === \"obraNueva\") {\r\n        impuesto = precio * 0.10;\r\n        ajd = (primeraVivienda && precio <= 180000) ? precio * 0.0075 : precio * 0.015;\r\n        ajdLine.style.display = 'block';\r\n      }\r\n\r\n      const notaria = Math.min(1500, Math.max(700, precio * 0.006));\r\n      const registro = Math.min(600, Math.max(300, precio * 0.003));\r\n      const total = impuesto + ajd + notaria + registro;\r\n\r\n      contenedor.querySelector(\".impuestoTipo\").textContent = impuesto.toLocaleString('es-ES', { minimumFractionDigits: 2 }) + \" \u20ac\";\r\n      contenedor.querySelector(\".ajd\").textContent = ajd.toLocaleString('es-ES', { minimumFractionDigits: 2 }) + \" \u20ac\";\r\n      contenedor.querySelector(\".notaria\").textContent = notaria.toLocaleString('es-ES', { minimumFractionDigits: 2 }) + \" \u20ac\";\r\n      contenedor.querySelector(\".registro\").textContent = registro.toLocaleString('es-ES', { minimumFractionDigits: 2 }) + \" \u20ac\";\r\n      contenedor.querySelector(\".total\").textContent = total.toLocaleString('es-ES', { minimumFractionDigits: 2 }) + \" \u20ac\";\r\n      contenedor.querySelector(\".resultados\").style.display = \"block\";\r\n    }\r\n  <\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3b8693e e-flex e-con-boxed e-con e-parent\" data-id=\"3b8693e\" 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-0224e71 elementor-widget elementor-widget-heading\" data-id=\"0224e71\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Vendedor<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d7578c3 e-con-full e-flex e-con e-child\" data-id=\"d7578c3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ae013f5 e-con-full e-flex e-con e-child\" data-id=\"ae013f5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-859fa3b elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"859fa3b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n  <title>IRPF Venta de Vivienda<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f4f4f4;\r\n      padding: 20px;\r\n    }\r\n    .calc-container {\r\n      max-width: 600px;\r\n      background: #fff;\r\n      border-radius: 15px;\r\n      padding: 20px;\r\n      margin: auto;\r\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n      margin-bottom: 25px;\r\n    }\r\n    label {\r\n      display: block;\r\n      margin: 15px 0 5px;\r\n      font-weight: bold;\r\n    }\r\n    input, button {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      box-sizing: border-box;\r\n      font-size: 16px;\r\n      margin-bottom: 5px;\r\n    }\r\n    button {\r\n      background-color: #4CAF50;\r\n      color: white;\r\n      margin: 20px 0;\r\n      border: none;\r\n      cursor: pointer;\r\n      font-size: 16px;\r\n    }\r\n    button:hover {\r\n      background-color: #45a049;\r\n    }\r\n    .resultado {\r\n      margin: 15px 0;\r\n      padding: 15px;\r\n      border-radius: 8px;\r\n      font-size: 16px;\r\n      background: #f8f9fa;\r\n      border-left: 4px solid #6c757d;\r\n    }\r\n    .destacado {\r\n      background: #e8f5e9;\r\n      border-left: 4px solid #388e3c;\r\n      font-weight: bold;\r\n    }\r\n    .seccion {\r\n      margin-top: 25px;\r\n      padding-top: 15px;\r\n      border-top: 1px dashed #ccc;\r\n    }\r\n    .nota {\r\n      font-size: 13px;\r\n      color: #555;\r\n      margin-top: 20px;\r\n      font-style: italic;\r\n    }\r\n    .tramo {\r\n      color: #0d47a1;\r\n      font-weight: bold;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"calc-container\">\r\n    <h2>IRPF - Venta de Vivienda<\/h2>\r\n\r\n    <label for=\"precioVenta\">Precio de venta (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"precioVenta\" value=\"150000\" step=\"0.01\">\r\n\r\n    <label for=\"precioCompra\">Precio de compra (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"precioCompra\" value=\"120000\" step=\"0.01\">\r\n\r\n    <label for=\"mejoras\">Gastos y mejoras justificadas (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"mejoras\" step=\"0.01\" value=\"0\">\r\n\r\n    <label for=\"fechaAdquisicion\">Fecha de adquisici\u00f3n:<\/label>\r\n    <input type=\"date\" id=\"fechaAdquisicion\">\r\n\r\n    <div class=\"seccion\">\r\n      <label for=\"otrasGanancias\">Otras ganancias patrimoniales este a\u00f1o (\u20ac):<\/label>\r\n      <input type=\"number\" id=\"otrasGanancias\" step=\"0.01\" value=\"0\">\r\n\r\n      <label for=\"perdidasAnteriores\">P\u00e9rdidas acumuladas de a\u00f1os anteriores (\u20ac):<\/label>\r\n      <input type=\"number\" id=\"perdidasAnteriores\" step=\"0.01\" value=\"0\">\r\n    <\/div>\r\n\r\n    <button onclick=\"calcularIRPF()\">Calcular IRPF<\/button>\r\n\r\n    <div id=\"resultadoBase\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n    <div id=\"resultadoCompensacion\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n    <div id=\"resultadoTramos\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n    <div id=\"resultadoFinal\" class=\"resultado destacado\" style=\"display: none;\"><\/div>\r\n\r\n    <div class=\"nota\">\r\n      * Aplica tramos auton\u00f3micos generales de C-LM (2024).<br>\r\n      * L\u00edmite compensaci\u00f3n p\u00e9rdidas: 25% de la ganancia neta y m\u00e1ximo 4 a\u00f1os atr\u00e1s.<br>\r\n      * Para vivienda habitual con reinversi\u00f3n, consulta a un asesor.<br>\r\n      * Si la adquisici\u00f3n fue anterior al 31\/12\/1994, se aplicar\u00e1n coeficientes de abatimiento si procede.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    function calcularIRPF() {\r\n      const precioVenta = parseFloat(document.getElementById(\"precioVenta\").value);\r\n      const precioCompra = parseFloat(document.getElementById(\"precioCompra\").value);\r\n      const mejoras = parseFloat(document.getElementById(\"mejoras\").value) || 0;\r\n      const otrasGanancias = parseFloat(document.getElementById(\"otrasGanancias\").value) || 0;\r\n      const perdidasAnteriores = parseFloat(document.getElementById(\"perdidasAnteriores\").value) || 0;\r\n      const fechaAdquisicion = new Date(document.getElementById(\"fechaAdquisicion\").value);\r\n\r\n      if (isNaN(precioVenta) || isNaN(precioCompra) || isNaN(fechaAdquisicion.getTime())) {\r\n        alert(\"Introduce todos los datos v\u00e1lidos, incluyendo la fecha de adquisici\u00f3n\");\r\n        return;\r\n      }\r\n\r\n      const gananciaBruta = precioVenta - (precioCompra + mejoras);\r\n      let gananciaProporcional = 0;\r\n      let gananciaAbatible = 0;\r\n      let gananciaNoAbatible = gananciaBruta;\r\n\r\n      const fechaLimite = new Date(\"1994-12-31T23:59:59\");\r\n      const fechaCorte = new Date(\"2006-01-20T00:00:00\");\r\n\r\n      if (fechaAdquisicion <= fechaLimite && gananciaBruta > 0) {\r\n        const fechaHoy = new Date(\"2025-01-01\");\r\n        const tiempoTotal = (fechaHoy - fechaAdquisicion) \/ (365.25 * 24 * 60 * 60 * 1000);\r\n        const tiempoAbatible = (fechaCorte - fechaAdquisicion) \/ (365.25 * 24 * 60 * 60 * 1000);\r\n\r\n        if (tiempoAbatible > 0 && tiempoTotal > 0) {\r\n          const proporcionAbatible = tiempoAbatible \/ tiempoTotal;\r\n          gananciaProporcional = gananciaBruta * proporcionAbatible;\r\n          gananciaNoAbatible = gananciaBruta - gananciaProporcional;\r\n\r\n          const aniosReduccion = Math.max(0, Math.floor(tiempoAbatible - 2));\r\n          const coeficiente = Math.min(1, aniosReduccion * 0.1111);\r\n          gananciaAbatible = gananciaProporcional * coeficiente;\r\n        }\r\n      }\r\n\r\n      const gananciaNeta = (gananciaProporcional - gananciaAbatible) + gananciaNoAbatible + otrasGanancias;\r\n      const compensacionPermitida = Math.min(perdidasAnteriores, gananciaNeta * 0.25);\r\n      const baseImponible = Math.max(0, gananciaNeta - compensacionPermitida);\r\n\r\n      let irpf = 0;\r\n      let detalleTramos = \"\";\r\n      const tramos = [\r\n        { limite: 6000, tipo: 0.19 },\r\n        { limite: 50000, tipo: 0.21 },\r\n        { limite: 200000, tipo: 0.23 },\r\n        { limite: 300000, tipo: 0.27 },\r\n        { limite: Infinity, tipo: 0.28 }\r\n      ];\r\n\r\n      let resto = baseImponible;\r\n      let tramoAnterior = 0;\r\n\r\n      for (const tramo of tramos) {\r\n        if (resto <= 0) break;\r\n        const cantidadEnTramo = Math.min(resto, tramo.limite - tramoAnterior);\r\n        if (cantidadEnTramo > 0) {\r\n          const impuestoTramo = cantidadEnTramo * tramo.tipo;\r\n          irpf += impuestoTramo;\r\n          detalleTramos += `\u2022 ${cantidadEnTramo.toLocaleString('es-ES', { minimumFractionDigits: 2 })} \u20ac al ${(tramo.tipo * 100).toFixed(0)}%: <strong>${impuestoTramo.toLocaleString('es-ES', { minimumFractionDigits: 2 })} \u20ac<\/strong><br>`;\r\n        }\r\n        resto -= cantidadEnTramo;\r\n        tramoAnterior = tramo.limite;\r\n      }\r\n\r\n      document.getElementById(\"resultadoBase\").innerHTML = `\r\n        <strong>Ganancia bruta:<\/strong> ${gananciaBruta.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac<br>\r\n        <strong>Parte abatible:<\/strong> ${(gananciaBruta - gananciaNoAbatible).toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac<br>\r\n        <strong>Parte no abatible:<\/strong> ${gananciaNoAbatible.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac\r\n      `;\r\n      document.getElementById(\"resultadoBase\").style.display = \"block\";\r\n\r\n      document.getElementById(\"resultadoCompensacion\").innerHTML = `\r\n        <strong>Compensaciones aplicadas:<\/strong><br>\r\n        \u2022 Otras ganancias este a\u00f1o: ${otrasGanancias.toLocaleString('es-ES', { minimumFractionDigits: 2 })} \u20ac<br>\r\n        \u2022 P\u00e9rdidas anteriores compensadas: ${compensacionPermitida.toLocaleString('es-ES', { minimumFractionDigits: 2 })} \u20ac<br>\r\n        <small>Base imponible final: <span class=\"tramo\">${baseImponible.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac<\/span><\/small>\r\n      `;\r\n      document.getElementById(\"resultadoCompensacion\").style.display = \"block\";\r\n\r\n      document.getElementById(\"resultadoTramos\").innerHTML = `\r\n        <strong>Desglose por tramos IRPF:<\/strong><br>\r\n        ${detalleTramos}\r\n      `;\r\n      document.getElementById(\"resultadoTramos\").style.display = \"block\";\r\n\r\n      document.getElementById(\"resultadoFinal\").innerHTML = `\r\n        <strong>TOTAL IRPF A PAGAR:<\/strong> ${irpf.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac\r\n      `;\r\n      document.getElementById(\"resultadoFinal\").style.display = \"block\";\r\n    }\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9ab4390 e-con-full e-flex e-con e-child\" data-id=\"9ab4390\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-499ea33 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"499ea33\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Calculadora de Plusval\u00eda Municipal<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f4f4f4;\r\n      padding: 20px;\r\n    }\r\n    .calc-container {\r\n      max-width: 600px;\r\n      background: #fff;\r\n      border-radius: 15px;\r\n      padding: 20px;\r\n      margin: auto;\r\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n      margin-bottom: 25px;\r\n    }\r\n    label {\r\n      display: block;\r\n      margin: 15px 0 5px;\r\n      font-weight: bold;\r\n    }\r\n    input, button {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      box-sizing: border-box;\r\n      font-size: 16px;\r\n      margin-bottom: 5px;\r\n    }\r\n    button {\r\n      background-color: #4CAF50;\r\n      color: white;\r\n      margin: 20px 0;\r\n      border: none;\r\n      cursor: pointer;\r\n      font-size: 16px;\r\n    }\r\n    button:hover {\r\n      background-color: #45a049;\r\n    }\r\n    .resultado {\r\n      margin: 15px 0;\r\n      padding: 15px;\r\n      border-radius: 8px;\r\n      font-size: 16px;\r\n      background: #f8f9fa;\r\n      border-left: 4px solid #6c757d;\r\n    }\r\n    .mejor-opcion {\r\n      background: #e8f5e9;\r\n      border-left: 4px solid #388e3c;\r\n    }\r\n    .nota {\r\n      font-size: 13px;\r\n      color: #555;\r\n      margin-top: 20px;\r\n      font-style: italic;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"calc-container\">\r\n    <h2>Plusval\u00eda Municipal<\/h2>\r\n\r\n    <label for=\"pm_valorSuelo\">Valor catastral del suelo (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"pm_valorSuelo\" value=\"10710.20\" step=\"0.01\" \/>\r\n\r\n    <label for=\"pm_valorConstruccion\">Valor catastral de la construcci\u00f3n (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"pm_valorConstruccion\" value=\"45877.32\" step=\"0.01\" \/>\r\n\r\n    <label for=\"pm_anios\">A\u00f1os de posesi\u00f3n:<\/label>\r\n    <input type=\"number\" id=\"pm_anios\" value=\"5\" min=\"1\" max=\"20\" \/>\r\n\r\n    <label for=\"pm_precioVenta\">Precio de venta (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"pm_precioVenta\" value=\"150000\" step=\"0.01\" \/>\r\n\r\n    <label for=\"pm_precioCompra\">Precio de compra (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"pm_precioCompra\" value=\"120000\" step=\"0.01\" \/>\r\n\r\n    <label for=\"pm_tipoImpositivo\">Tipo impositivo (%):<\/label>\r\n    <input type=\"number\" id=\"pm_tipoImpositivo\" value=\"30\" min=\"0\" max=\"100\" step=\"0.1\" \/>\r\n\r\n    <button onclick=\"pm_calcularPlusvalia()\">Calcular plusval\u00eda<\/button>\r\n\r\n    <div id=\"pm_resultadoObjetivo\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n    <div id=\"pm_resultadoReal\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n    <div id=\"pm_porcentajeSuelo\" class=\"nota\" style=\"display: none;\"><\/div>\r\n\r\n    <div class=\"nota\">\r\n      *El porcentaje de suelo se calcula autom\u00e1ticamente.<br>\r\n      *Desde 2022 puedes elegir el m\u00e9todo m\u00e1s favorable.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function() {\r\n    function obtenerCoeficiente(anios) {\r\n      if (anios < 1) return 0;\r\n      if (anios === 1) return 0.15;\r\n      if (anios <= 3) return 0.14;\r\n      if (anios === 4) return 0.16;\r\n      if (anios === 5) return 0.18;\r\n      if (anios === 6) return 0.19;\r\n      if (anios === 7) return 0.20;\r\n      if (anios === 8) return 0.19;\r\n      if (anios === 9) return 0.15;\r\n      if (anios === 10) return 0.12;\r\n      if (anios === 11) return 0.10;\r\n      if (anios === 12) return 0.09;\r\n      if (anios <= 15) return 0.09;\r\n      if (anios === 16) return 0.10;\r\n      if (anios === 17) return 0.13;\r\n      if (anios === 18) return 0.17;\r\n      if (anios === 19) return 0.23;\r\n      if (anios >= 20) return 0.40;\r\n      return 0;\r\n    }\r\n\r\n      function calcularPlusvalia() {\r\n        const valorSuelo = parseFloat(document.getElementById(\"pm_valorSuelo\").value);\r\n        const valorConstruccion = parseFloat(document.getElementById(\"pm_valorConstruccion\").value);\r\n        const valorTotal = valorSuelo + valorConstruccion;\r\n        const porcentajeSuelo = (valorSuelo \/ valorTotal) * 100;\r\n\r\n        document.getElementById(\"pm_porcentajeSuelo\").textContent = \r\n          `* Porcentaje de suelo calculado: ${porcentajeSuelo.toFixed(2)}% (Suelo: ${valorSuelo.toLocaleString('es-ES')}\u20ac \/ Total: ${valorTotal.toLocaleString('es-ES')}\u20ac)`;\r\n        document.getElementById(\"pm_porcentajeSuelo\").style.display = \"block\";\r\n\r\n        const anios = parseInt(document.getElementById(\"pm_anios\").value);\r\n        const precioVenta = parseFloat(document.getElementById(\"pm_precioVenta\").value);\r\n        const precioCompra = parseFloat(document.getElementById(\"pm_precioCompra\").value);\r\n        const tipoImpositivo = parseFloat(document.getElementById(\"pm_tipoImpositivo\").value) \/ 100;\r\n\r\n        if (isNaN(valorSuelo) || isNaN(valorConstruccion)) {\r\n          alert(\"Introduce los valores catastrales correctamente\");\r\n          return;\r\n        }\r\n\r\n        const coeficiente = obtenerCoeficiente(anios);\r\n        const baseObjetivo = valorSuelo * coeficiente;\r\n        const cuotaObjetivo = baseObjetivo * tipoImpositivo;\r\n\r\n        document.getElementById(\"pm_resultadoObjetivo\").innerHTML = `\r\n          <strong>M\u00e9todo Objetivo:<\/strong> ${cuotaObjetivo.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac<br>\r\n          <small>\u2022 Base imponible: ${baseObjetivo.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac (Valor suelo \u00d7 ${coeficiente.toFixed(2)})<\/small>\r\n        `;\r\n        document.getElementById(\"pm_resultadoObjetivo\").style.display = \"block\";\r\n\r\n        if (!isNaN(precioVenta) && !isNaN(precioCompra)) {\r\n          const incremento = precioVenta - precioCompra;\r\n          const baseReal = incremento * (porcentajeSuelo \/ 100);\r\n          const cuotaReal = incremento > 0 ? baseReal * tipoImpositivo : 0;\r\n\r\n          document.getElementById(\"pm_resultadoReal\").innerHTML = `\r\n            <strong>M\u00e9todo Real:<\/strong> ${cuotaReal.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac<br>\r\n            <small>\u2022 Base imponible: ${baseReal.toLocaleString('es-ES', {minimumFractionDigits: 2})} \u20ac (Incremento \u00d7 ${porcentajeSuelo.toFixed(2)}%)<\/small>\r\n          `;\r\n          document.getElementById(\"pm_resultadoReal\").style.display = \"block\";\r\n\r\n          if (cuotaReal < cuotaObjetivo) {\r\n            document.getElementById(\"pm_resultadoReal\").classList.add(\"mejor-opcion\");\r\n            document.getElementById(\"pm_resultadoObjetivo\").classList.remove(\"mejor-opcion\");\r\n          } else {\r\n            document.getElementById(\"pm_resultadoObjetivo\").classList.add(\"mejor-opcion\");\r\n            document.getElementById(\"pm_resultadoReal\").classList.remove(\"mejor-opcion\");\r\n          }\r\n        }\r\n      }\r\n\r\n      \/\/ Exponer funci\u00f3n global para poder llamarla desde HTML\r\n      window.pm_calcularPlusvalia = calcularPlusvalia;\r\n    })();\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1ff3323 e-con-full e-flex e-con e-child\" data-id=\"1ff3323\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b697499 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"b697499\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Ganancia Neta en la Venta<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f4f4f4;\r\n      padding: 20px;\r\n    }\r\n\r\n    .calc-container {\r\n      max-width: 600px;\r\n      background: #fff;\r\n      border-radius: 15px;\r\n      padding: 20px;\r\n      margin: auto;\r\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n    }\r\n\r\n    label {\r\n      display: block;\r\n      margin: 10px 0 5px;\r\n      font-weight: bold;\r\n    }\r\n\r\n    input, button {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      box-sizing: border-box;\r\n      font-size: 16px;\r\n    }\r\n\r\n    button {\r\n      background-color: #4CAF50;\r\n      color: white;\r\n      margin-top: 15px;\r\n      border: none;\r\n      cursor: pointer;\r\n    }\r\n\r\n    button:hover {\r\n      background-color: #45a049;\r\n    }\r\n\r\n    .resultado {\r\n      margin-top: 20px;\r\n      background: #e8f5e9;\r\n      border-left: 5px solid #4CAF50;\r\n      padding: 15px;\r\n      border-radius: 8px;\r\n      font-size: 18px;\r\n      font-weight: bold;\r\n      color: #2e7d32;\r\n    }\r\n\r\n    .nota {\r\n      font-size: 12px;\r\n      color: #555;\r\n      margin-top: 10px;\r\n      font-style: italic;\r\n    }\r\n\r\n    \/* Tooltips *\/\r\n    .tooltip-container {\r\n      position: relative;\r\n      display: inline-block;\r\n      cursor: help;\r\n    }\r\n\r\n    .tooltip-container .tooltip-text {\r\n      visibility: hidden;\r\n      width: 260px;\r\n      background-color: #333;\r\n      color: #fff;\r\n      text-align: left;\r\n      border-radius: 8px;\r\n      padding: 10px;\r\n      position: absolute;\r\n      z-index: 10;\r\n      top: -5px;\r\n      left: 105%;\r\n      opacity: 0;\r\n      transition: opacity 0.3s;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .tooltip-container:hover .tooltip-text {\r\n      visibility: visible;\r\n      opacity: 1;\r\n    }\r\n\r\n    .tooltip-text ul {\r\n      margin: 5px 0;\r\n      padding-left: 18px;\r\n    }\r\n\r\n    .tooltip-text li {\r\n      margin-bottom: 4px;\r\n    }\r\n\r\n    .tooltip-icon {\r\n      font-size: 12px;\r\n      color: blue;\r\n      text-decoration: underline;\r\n      margin-left: 6px;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n\r\n  <div class=\"calc-container\">\r\n    <h2>Ganancia Neta en la Venta<\/h2>\r\n\r\n    <label for=\"venta-precio\">Precio de venta (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"venta-precio\" value=\"150000\" \/>\r\n\r\n    <label for=\"venta-hipoteca\">Hipoteca pendiente (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"venta-hipoteca\" value=\"30000\" \/>\r\n\r\n    <label for=\"venta-gastos\">Gastos de venta (\u20ac): \r\n      <span class=\"tooltip-container\">\r\n        <span class=\"tooltip-icon\">\u00bfQu\u00e9 incluir?<\/span>\r\n        <div class=\"tooltip-text\">\r\n          <strong>Gastos comunes:<\/strong>\r\n          <ul>\r\n            <li>Cancelaci\u00f3n hipotecaria (notar\u00eda, gestor\u00eda)<\/li>\r\n            <li>Honorarios inmobiliaria<\/li>\r\n            <li>Certificados obligatorios (energ\u00e9tico, habitabilidad)<\/li>\r\n            <li>Otros tr\u00e1mites relacionados con la operaci\u00f3n<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      <\/span>\r\n    <\/label>\r\n    <input type=\"number\" id=\"venta-gastos\" value=\"3000\" \/>\r\n\r\n    <label for=\"venta-impuestos\">Impuestos (\u20ac): \r\n      <span class=\"tooltip-container\">\r\n        <span class=\"tooltip-icon\">\u00bfQu\u00e9 incluir?<\/span>\r\n        <div class=\"tooltip-text\">\r\n          <strong>Impuestos habituales:<\/strong>\r\n          <ul>\r\n            <li>Plusval\u00eda municipal<\/li>\r\n            <li>Ganancia patrimonial en IRPF<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      <\/span>\r\n    <\/label>\r\n    <input type=\"number\" id=\"venta-impuestos\" value=\"3000\" \/>\r\n\r\n    <button onclick=\"calcularGanancia()\">Calcular ganancia neta<\/button>\r\n\r\n    <div id=\"venta-resultado\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n\r\n    <div class=\"nota\">\r\n      *Incluye todos los costes relacionados con la venta para obtener un resultado realista.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    function calcularGanancia() {\r\n      const precioVenta = parseFloat(document.getElementById(\"venta-precio\").value);\r\n      const hipoteca = parseFloat(document.getElementById(\"venta-hipoteca\").value);\r\n      const gastos = parseFloat(document.getElementById(\"venta-gastos\").value);\r\n      const impuestos = parseFloat(document.getElementById(\"venta-impuestos\").value);\r\n      const resultadoDiv = document.getElementById(\"venta-resultado\");\r\n\r\n      if (isNaN(precioVenta) || isNaN(hipoteca) || isNaN(gastos) || isNaN(impuestos)) {\r\n        resultadoDiv.textContent = \"Por favor, rellena todos los campos correctamente.\";\r\n        resultadoDiv.style.color = \"#d32f2f\";\r\n        resultadoDiv.style.display = \"block\";\r\n        return;\r\n      }\r\n\r\n      const ganancia = precioVenta - (hipoteca + gastos + impuestos);\r\n      resultadoDiv.textContent = `Ganancia neta: ${ganancia.toLocaleString('es-ES', { minimumFractionDigits: 2 })} \u20ac`;\r\n      resultadoDiv.style.color = \"#2e7d32\";\r\n      resultadoDiv.style.display = \"block\";\r\n    }\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-80a4084 e-flex e-con-boxed e-con e-parent\" data-id=\"80a4084\" 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-b4d45c7 elementor-widget elementor-widget-heading\" data-id=\"b4d45c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Inversor<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0afcf63 e-con-full e-flex e-con e-child\" data-id=\"0afcf63\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-47e3078 e-con-full e-flex e-con e-child\" data-id=\"47e3078\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b169f0 elementor-widget elementor-widget-html\" data-id=\"5b169f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Rentabilidad alquiler<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f3f3f3;\r\n      padding: 20px;\r\n    }\r\n    .rentabilidad-container {\r\n      max-width: 500px;\r\n      margin: auto;\r\n      background: #fff;\r\n      padding: 25px;\r\n      border-radius: 15px;\r\n      box-shadow: 0 0 10px rgba(0,0,0,0.1);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n    }\r\n    label {\r\n      display: block;\r\n      margin-top: 15px;\r\n      font-weight: bold;\r\n    }\r\n    input {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      margin-top: 5px;\r\n      box-sizing: border-box;\r\n    }\r\n    button {\r\n      width: 100%;\r\n      padding: 10px;\r\n      margin-top: 20px;\r\n      background: #4CAF50;\r\n      color: white;\r\n      font-size: 16px;\r\n      border: none;\r\n      border-radius: 8px;\r\n      cursor: pointer;\r\n    }\r\n    button:hover {\r\n      background: #45a049;\r\n    }\r\n    .resultado {\r\n      margin-top: 20px;\r\n      background: #e8f5e9;\r\n      padding: 15px;\r\n      border-radius: 10px;\r\n      text-align: center;\r\n      font-size: 18px;\r\n      color: #2e7d32;\r\n      font-weight: bold;\r\n    }\r\n    .nota {\r\n      font-size: 13px;\r\n      color: #666;\r\n      margin-top: 15px;\r\n      text-align: center;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"rentabilidad-container\">\r\n    <h2>Rentabilidad de Alquiler<\/h2>\r\n    <label for=\"precio-compra\">Precio de Compra (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"precio-compra\" value=\"100000\">\r\n\r\n    <label for=\"gastos-compra\">Gastos de Compraventa (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"gastos-compra\" value=\"10500\">\r\n\r\n    <label for=\"gastos-reforma\">Gastos de Reforma (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"gastos-reforma\" value=\"5000\">\r\n\r\n    <label for=\"gastos-fijos\">Gastos Anuales (IBI, comunidad, seguro,...) (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"gastos-fijos\" value=\"1000\">\r\n\r\n    <label for=\"cuota-hipoteca\">Cuota Mensual de Hipoteca (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"cuota-hipoteca\" value=\"0\">\r\n\r\n    <label for=\"ingresos-alquiler\">Ingresos Mensuales de Alquiler (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"ingresos-alquiler\" value=\"500\">\r\n\r\n    <label for=\"vacantes-meses\">Vacantes Anuales (meses):<\/label>\r\n    <input type=\"number\" id=\"vacantes-meses\" value=\"0\">\r\n\r\n    <button onclick=\"calcularRentabilidad()\">Calcular Rentabilidad<\/button>\r\n\r\n    <div id=\"resultado-rentabilidad\" class=\"resultado\" style=\"display: none; text-align: left;\">\r\n      <strong>Coste Total de Inversi\u00f3n:<\/strong> <span id=\"coste-total\">-<\/span> \u20ac <br>\r\n      <strong>Ingresos Anuales (descontando gastos):<\/strong> <span id=\"ingresos-netos\">-<\/span> \u20ac <br>\r\n      <strong>IRPF Estimado alquiler:<\/strong> <span id=\"irpf\">-<\/span> \u20ac <br>\r\n      <strong>Rentabilidad Bruta:<\/strong> <span id=\"rentabilidad-bruta\">-<\/span>% <br>\r\n      <strong>Rentabilidad Neta:<\/strong> <span id=\"rentabilidad-neta\">-<\/span>% <br>\r\n    <\/div>\r\n  <\/div>\r\n  <script>\r\n    function calcularRentabilidad() {\r\n      const precioCompra = parseFloat(document.getElementById(\"precio-compra\").value) || 0;\r\n      const gastosCompra = parseFloat(document.getElementById(\"gastos-compra\").value) || 0;\r\n      const gastosReforma = parseFloat(document.getElementById(\"gastos-reforma\").value) || 0;\r\n      const gastosFijos = parseFloat(document.getElementById(\"gastos-fijos\").value) || 0;\r\n      const cuotaHipoteca = parseFloat(document.getElementById(\"cuota-hipoteca\").value) || 0;\r\n      const ingresosMensuales = parseFloat(document.getElementById(\"ingresos-alquiler\").value) || 0;\r\n      const vacantes = parseFloat(document.getElementById(\"vacantes-meses\").value) || 0;\r\n\r\n      const costeTotal = precioCompra + gastosCompra + gastosReforma;\r\n      const ingresosAnuales = ingresosMensuales * (12 - vacantes);\r\n      const gastosHipotecaAnuales = cuotaHipoteca * 12;\r\n      const ingresosNetos = ingresosAnuales - gastosFijos - gastosHipotecaAnuales;\r\n      const irpf = ingresosNetos * 0.19;\r\n\r\n      const rentabilidadBruta = (ingresosAnuales \/ costeTotal) * 100;\r\n      const rentabilidadNeta = ((ingresosNetos - irpf) \/ costeTotal) * 100;\r\n\r\n      document.getElementById(\"coste-total\").textContent = costeTotal.toFixed(2);\r\n      document.getElementById(\"ingresos-netos\").textContent = ingresosNetos.toFixed(2);\r\n      document.getElementById(\"irpf\").textContent = irpf.toFixed(2);\r\n      document.getElementById(\"rentabilidad-bruta\").textContent = rentabilidadBruta.toFixed(2);\r\n      document.getElementById(\"rentabilidad-neta\").textContent = rentabilidadNeta.toFixed(2);\r\n      document.getElementById(\"resultado-rentabilidad\").style.display = \"block\";\r\n    }\r\n  <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-421a16a e-con-full e-flex e-con e-child\" data-id=\"421a16a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5264795 elementor-widget elementor-widget-html\" data-id=\"5264795\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Calculadora de ROI Inmobiliario<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f3f3f3;\r\n      padding: 20px;\r\n    }\r\n    .roi-container {\r\n      max-width: 500px;\r\n      margin: auto;\r\n      background: #fff;\r\n      padding: 25px;\r\n      border-radius: 15px;\r\n      box-shadow: 0 0 10px rgba(0,0,0,0.1);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #333;\r\n    }\r\n    label {\r\n      display: block;\r\n      margin-top: 15px;\r\n      font-weight: bold;\r\n    }\r\n    input {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      margin-top: 5px;\r\n      box-sizing: border-box;\r\n    }\r\n    button {\r\n      width: 100%;\r\n      padding: 10px;\r\n      margin-top: 20px;\r\n      background: #4CAF50;\r\n      color: white;\r\n      font-size: 16px;\r\n      border: none;\r\n      border-radius: 8px;\r\n      cursor: pointer;\r\n    }\r\n    button:hover {\r\n      background: #45a049;\r\n    }\r\n    .resultado {\r\n      margin-top: 20px;\r\n      background: #e8f5e9;\r\n      padding: 15px;\r\n      border-radius: 10px;\r\n      text-align: center;\r\n      font-size: 18px;\r\n      color: #2e7d32;\r\n      font-weight: bold;\r\n    }\r\n    .nota {\r\n      font-size: 13px;\r\n      color: #666;\r\n      margin-top: 15px;\r\n      text-align: center;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"roi-container\">\r\n    <h2>ROI Inmobiliario<\/h2>\r\n\r\n    <label for=\"ingresos\">Ingresos netos anuales (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"ingresos\" value=\"5000\" \/>\r\n\r\n    <label for=\"inversion\">Inversi\u00f3n total (\u20ac):<\/label>\r\n    <input type=\"number\" id=\"inversion\" value=\"115500\" \/>\r\n\r\n    <button id=\"calcular\">Calcular ROI<\/button>\r\n\r\n    <div id=\"resultado\" class=\"resultado\" style=\"display: none;\"><\/div>\r\n\r\n    <div class=\"nota\">\r\n      *El ROI se expresa como porcentaje anual y permite comparar distintas propiedades seg\u00fan su rentabilidad.\r\n    <\/div>\r\n    <div class=\"nota\">\r\n      *\u00bfQu\u00e9 es el ROI (Return on Investment)?<br>\r\n      ROI significa \"Retorno de la Inversi\u00f3n\". Es un indicador financiero que se utiliza para medir la rentabilidad de una inversi\u00f3n inmobiliaria.\r\n      <br><br>\r\n      Se calcula con la f\u00f3rmula:<br>\r\n      <strong>ROI = (Ingresos netos anuales \/ Inversi\u00f3n total) \u00d7 100<\/strong>\r\n      <br><br>\r\n      Este porcentaje te dice cu\u00e1nto rendimiento obtienes cada a\u00f1o en relaci\u00f3n con lo que has invertido. Es muy \u00fatil para comparar diferentes propiedades y decidir cu\u00e1l es m\u00e1s rentable.\r\n      <br><br>\r\n      Ejemplo: Si ingresas 9.000\u202f\u20ac\/a\u00f1o y tu inversi\u00f3n total fue 120.000\u202f\u20ac, entonces el ROI es 7,5\u202f% anual.\r\n      <br><br>\r\n      Un ROI m\u00e1s alto indica una inversi\u00f3n m\u00e1s rentable.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n      document.getElementById(\"calcular\").addEventListener(\"click\", function () {\r\n        const ingresos = parseFloat(document.getElementById(\"ingresos\").value);\r\n        const inversion = parseFloat(document.getElementById(\"inversion\").value);\r\n        const resultadoDiv = document.getElementById(\"resultado\");\r\n\r\n        if (isNaN(ingresos) || isNaN(inversion) || inversion <= 0) {\r\n          resultadoDiv.textContent = \"Por favor, introduce valores v\u00e1lidos.\";\r\n          resultadoDiv.style.display = \"block\";\r\n          resultadoDiv.style.color = \"#d32f2f\";\r\n          return;\r\n        }\r\n\r\n        const roi = (ingresos \/ inversion) * 100;\r\n        resultadoDiv.textContent = `ROI: ${roi.toFixed(2)} %`;\r\n        resultadoDiv.style.display = \"block\";\r\n        resultadoDiv.style.color = \"#2e7d32\";\r\n      });\r\n    });\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-997f493 e-con-full e-flex e-con e-child\" data-id=\"997f493\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51f362a elementor-widget elementor-widget-html\" data-id=\"51f362a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Calculadora de Plusval\u00eda Potencial<\/title>\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n  <style>\r\n    body.plusvalia-body {\r\n      font-family: Arial, sans-serif;\r\n      background: #f4f4f4;\r\n      padding: 20px;\r\n    }\r\n    #plusvalia-calc-container {\r\n      max-width: 800px;\r\n      background: #fff;\r\n      border-radius: 15px;\r\n      padding: 20px;\r\n      margin: auto;\r\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n    .plusvalia-h2 {\r\n      text-align: center;\r\n      color: #333;\r\n    }\r\n    .plusvalia-tabs {\r\n      display: flex;\r\n      margin-bottom: 15px;\r\n      border-bottom: 1px solid #ddd;\r\n    }\r\n    .plusvalia-tab {\r\n      padding: 10px 20px;\r\n      cursor: pointer;\r\n      border-bottom: 3px solid transparent;\r\n    }\r\n    .plusvalia-tab.active {\r\n      border-bottom: 3px solid #4CAF50;\r\n      font-weight: bold;\r\n    }\r\n    .plusvalia-tab-content {\r\n      display: none;\r\n    }\r\n    .plusvalia-tab-content.active {\r\n      display: block;\r\n    }\r\n    .plusvalia-label {\r\n      display: block;\r\n      margin: 10px 0 5px;\r\n      font-weight: bold;\r\n    }\r\n    .plusvalia-input, .plusvalia-select, .plusvalia-button {\r\n      width: 100%;\r\n      padding: 8px;\r\n      border-radius: 8px;\r\n      border: 1px solid #ccc;\r\n      box-sizing: border-box;\r\n    }\r\n    .plusvalia-button {\r\n      background-color: #4CAF50;\r\n      color: white;\r\n      margin-top: 15px;\r\n      border: none;\r\n      cursor: pointer;\r\n      font-size: 16px;\r\n    }\r\n    .plusvalia-button:hover {\r\n      background-color: #45a049;\r\n    }\r\n    #plusvalia-resultados {\r\n      margin-top: 20px;\r\n      background: #f9f9f9;\r\n      border-radius: 10px;\r\n      padding: 15px;\r\n      display: none;\r\n    }\r\n    .plusvalia-nota {\r\n      font-size: 12px;\r\n      color: #555;\r\n      margin-top: 10px;\r\n      font-style: italic;\r\n    }\r\n    .plusvalia-checkbox-container {\r\n      margin-top: 10px;\r\n    }\r\n    .plusvalia-chart-container {\r\n      margin-top: 30px;\r\n      height: 300px;\r\n    }\r\n    .plusvalia-result-item {\r\n      margin-bottom: 10px;\r\n      padding-bottom: 10px;\r\n      border-bottom: 1px solid #eee;\r\n    }\r\n    .plusvalia-result-value {\r\n      font-weight: bold;\r\n      float: right;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body class=\"plusvalia-body\">\r\n  <div id=\"plusvalia-calc-container\">\r\n    <h2 class=\"plusvalia-h2\">Plusval\u00eda Potencial<\/h2>\r\n\r\n    <div class=\"plusvalia-tabs\">\r\n      <div class=\"plusvalia-tab active\" onclick=\"plusvaliaChangeTab('basic')\">Datos B\u00e1sicos<\/div>\r\n      <div class=\"plusvalia-tab\" onclick=\"plusvaliaChangeTab('advanced')\">Gastos Detallados<\/div>\r\n    <\/div>\r\n\r\n    <div id=\"plusvalia-basic-tab\" class=\"plusvalia-tab-content active\">\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-compra\">Precio de compra (\u20ac):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-compra\" value=\"100000\" min=\"0\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-anios\">A\u00f1os hasta la venta:<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-anios\" value=\"5\" min=\"1\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-revalorizacion\">Revalorizaci\u00f3n anual esperada (%):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-revalorizacion\" value=\"3\" min=\"0\" step=\"0.1\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-alquiler\">Ingresos anuales por alquiler (\u20ac):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-alquiler\" value=\"6000\" min=\"0\" \/>\r\n    <\/div>\r\n\r\n    <div id=\"plusvalia-advanced-tab\" class=\"plusvalia-tab-content\">\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-itp\">ITP\/AJD (%):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-itp\" value=\"9\" min=\"0\" max=\"10\" step=\"0.1\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-notaria\">Gastos de notar\u00eda y registro (\u20ac):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-notaria\" value=\"1500\" min=\"0\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-gastosAnuales\">Gastos anuales adicionales (\u20ac):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-gastosAnuales\" value=\"1000\" min=\"0\" \/>\r\n\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-comisionVenta\">Comisi\u00f3n de venta (%):<\/label>\r\n      <input class=\"plusvalia-input\" type=\"number\" id=\"plusvalia-comisionVenta\" value=\"3\" min=\"0\" max=\"10\" step=\"0.1\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"plusvalia-checkbox-container\">\r\n      <input type=\"checkbox\" id=\"plusvalia-primeraVivienda\" \/>\r\n      <label class=\"plusvalia-label\" for=\"plusvalia-primeraVivienda\">\u00bfEs tu vivienda habitual y reinvertir\u00e1s en otra?<\/label>\r\n    <\/div>\r\n\r\n    <button class=\"plusvalia-button\" onclick=\"plusvaliaCalcular()\">Calcular<\/button>\r\n\r\n    <div id=\"plusvalia-resultados\">\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Valor estimado en venta:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-valorEstimado\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Inversi\u00f3n total inicial:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-inversionTotal\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Plusval\u00eda bruta:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-plusvaliaBruta\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Ganancia neta estimada:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-gananciaNeta\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Fiscalidad IRPF (estimada):<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-fiscalidad\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Beneficio neto tras impuestos:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-beneficioFinal\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\">\r\n        <span>Ingresos acumulados por alquiler:<\/span>\r\n        <span class=\"plusvalia-result-value\" id=\"plusvalia-ingresosAlquiler\">-<\/span>\r\n      <\/div>\r\n      <div class=\"plusvalia-result-item\" style=\"border-bottom: none;\">\r\n        <span style=\"font-weight: bold; color: #2c3e50;\">Rentabilidad total neta estimada:<\/span>\r\n        <span class=\"plusvalia-result-value\" style=\"color: #4CAF50; font-size: 1.1em;\" id=\"plusvalia-rentabilidadTotal\">-<\/span>\r\n      <\/div>\r\n      \r\n      <div class=\"plusvalia-chart-container\">\r\n        <canvas id=\"plusvalia-graficoComparativo\"><\/canvas>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"plusvalia-nota\">\r\n      * La rentabilidad y la fiscalidad son estimaciones orientativas.<br>\r\n      * La plusval\u00eda se calcula sobre la ganancia neta tras gastos de compra.<br>\r\n      * El IRPF sobre ganancias patrimoniales var\u00eda por tramos.<br>\r\n      * Si es tu vivienda habitual y reinviertes el importe en otra vivienda habitual, podr\u00edas estar exento de tributar por la ganancia. Consulta con un asesor fiscal.<br>\r\n      * En alquileres de vivienda habitual, existe una reducci\u00f3n del 60 % del rendimiento neto sujeto a IRPF.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    \/\/ Variables globales con prefijo \u00fanico\r\n    let plusvaliaComparativoChart = null;\r\n    \r\n    \/\/ Funci\u00f3n para cambiar pesta\u00f1as\r\n    function plusvaliaChangeTab(tabId) {\r\n      document.querySelectorAll('#plusvalia-calc-container .plusvalia-tab-content').forEach(tab => {\r\n        tab.classList.remove('active');\r\n      });\r\n      document.querySelectorAll('#plusvalia-calc-container .plusvalia-tab').forEach(tab => {\r\n        tab.classList.remove('active');\r\n      });\r\n      \r\n      document.getElementById('plusvalia-' + tabId + '-tab').classList.add('active');\r\n      document.querySelector(`#plusvalia-calc-container .plusvalia-tab[onclick=\"plusvaliaChangeTab('${tabId}')\"]`).classList.add('active');\r\n    }\r\n\r\n    \/\/ Funci\u00f3n para calcular fiscalidad\r\n    function plusvaliaCalcularFiscalidad(ganancia) {\r\n      let impuesto = 0;\r\n      let restante = ganancia;\r\n      const tramos = [\r\n        { limite: 6000, porcentaje: 0.19 },\r\n        { limite: 50000, porcentaje: 0.21 },\r\n        { limite: 200000, porcentaje: 0.23 },\r\n        { limite: 300000, porcentaje: 0.27 },\r\n        { limite: Infinity, porcentaje: 0.28 }\r\n      ];\r\n\r\n      let baseAnterior = 0;\r\n      for (let i = 0; i < tramos.length && restante > 0; i++) {\r\n        const base = Math.min(restante, tramos[i].limite - baseAnterior);\r\n        impuesto += base * tramos[i].porcentaje;\r\n        restante -= base;\r\n        baseAnterior = tramos[i].limite;\r\n      }\r\n      return impuesto;\r\n    }\r\n\r\n    \/\/ Funci\u00f3n principal de c\u00e1lculo\r\n    function plusvaliaCalcular() {\r\n      \/\/ Validar campos obligatorios\r\n      const compra = parseFloat(document.getElementById(\"plusvalia-compra\").value);\r\n      const anios = parseFloat(document.getElementById(\"plusvalia-anios\").value);\r\n      const revalorizacion = parseFloat(document.getElementById(\"plusvalia-revalorizacion\").value);\r\n      \r\n      if (isNaN(compra) || compra <= 0) {\r\n        alert(\"Por favor ingrese un precio de compra v\u00e1lido\");\r\n        return;\r\n      }\r\n      if (isNaN(anios) || anios < 1) {\r\n        alert(\"Por favor ingrese un n\u00famero de a\u00f1os v\u00e1lido\");\r\n        return;\r\n      }\r\n      if (isNaN(revalorizacion) || revalorizacion < 0) {\r\n        alert(\"Por favor ingrese un porcentaje de revalorizaci\u00f3n v\u00e1lido\");\r\n        return;\r\n      }\r\n\r\n      \/\/ Obtener valores de los campos\r\n      const alquiler = parseFloat(document.getElementById(\"plusvalia-alquiler\").value) || 0;\r\n      const itpPorcentaje = parseFloat(document.getElementById(\"plusvalia-itp\").value) \/ 100 || 0.09;\r\n      const gastosNotaria = parseFloat(document.getElementById(\"plusvalia-notaria\").value) || 0;\r\n      const gastosAnuales = parseFloat(document.getElementById(\"plusvalia-gastosAnuales\").value) || 0;\r\n      const comisionVenta = parseFloat(document.getElementById(\"plusvalia-comisionVenta\").value) \/ 100 || 0.03;\r\n      const esPrimeraVivienda = document.getElementById(\"plusvalia-primeraVivienda\").checked;\r\n\r\n      \/\/ Calcular valores\r\n      const reval = revalorizacion \/ 100;\r\n      const valorVenta = compra * Math.pow(1 + reval, anios);\r\n      const gastosCompra = (compra * itpPorcentaje) + gastosNotaria;\r\n      const gastosVenta = valorVenta * comisionVenta;\r\n      const plusvaliaBruta = valorVenta - compra;\r\n      const inversionTotal = compra + gastosCompra;\r\n      const gananciaNeta = plusvaliaBruta - gastosCompra - gastosVenta;\r\n\r\n      \/\/ Calcular impuestos\r\n      let impuestos = 0;\r\n      if (!esPrimeraVivienda && gananciaNeta > 0) {\r\n        impuestos = plusvaliaCalcularFiscalidad(gananciaNeta);\r\n      }\r\n      const beneficioFinal = gananciaNeta - impuestos;\r\n\r\n      \/\/ Calcular ingresos por alquiler\r\n      const reduccionAlquiler = esPrimeraVivienda ? 1 : 1;\r\n      const ingresoAlquilerNeto = (alquiler - gastosAnuales) * reduccionAlquiler;\r\n      const ingresosAlquiler = ingresoAlquilerNeto * anios;\r\n      const rentabilidadTotal = beneficioFinal + ingresosAlquiler;\r\n\r\n      \/\/ Mostrar resultados\r\n      document.getElementById(\"plusvalia-valorEstimado\").textContent = plusvaliaFormatCurrency(valorVenta);\r\n      document.getElementById(\"plusvalia-inversionTotal\").textContent = plusvaliaFormatCurrency(inversionTotal);\r\n      document.getElementById(\"plusvalia-plusvaliaBruta\").textContent = plusvaliaFormatCurrency(plusvaliaBruta);\r\n      document.getElementById(\"plusvalia-gananciaNeta\").textContent = plusvaliaFormatCurrency(gananciaNeta);\r\n      document.getElementById(\"plusvalia-fiscalidad\").textContent = plusvaliaFormatCurrency(impuestos);\r\n      document.getElementById(\"plusvalia-beneficioFinal\").textContent = plusvaliaFormatCurrency(beneficioFinal);\r\n      document.getElementById(\"plusvalia-ingresosAlquiler\").textContent = plusvaliaFormatCurrency(ingresosAlquiler);\r\n      document.getElementById(\"plusvalia-rentabilidadTotal\").textContent = plusvaliaFormatCurrency(rentabilidadTotal);\r\n\r\n      \/\/ Mostrar secci\u00f3n de resultados\r\n      document.getElementById(\"plusvalia-resultados\").style.display = \"block\";\r\n\r\n      \/\/ Dibujar gr\u00e1fico comparativo\r\n      plusvaliaDibujarComparativo(rentabilidadTotal, inversionTotal, anios);\r\n    }\r\n\r\n    \/\/ Funci\u00f3n para formatear moneda\r\n    function plusvaliaFormatCurrency(value) {\r\n      return value.toLocaleString('es-ES', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2 });\r\n    }\r\n\r\n    \/\/ Funci\u00f3n para dibujar gr\u00e1fico comparativo\r\n     function plusvaliaDibujarComparativo(rentabilidadInversion, inversionInicial, anios) {\r\n      const ctx = document.getElementById('plusvalia-graficoComparativo').getContext('2d');\r\n      \r\n      \/\/ Destruir gr\u00e1fico anterior si existe\r\n      if (plusvaliaComparativoChart) {\r\n        plusvaliaComparativoChart.destroy();\r\n      }\r\n    \r\n      \/\/ Calcular comparativas correctamente\r\n      const rentabilidadBanco = inversionInicial * Math.pow(1.015, anios) - inversionInicial;\r\n      const rentabilidadInflacion = inversionInicial * Math.pow(0.97, anios) - inversionInicial;\r\n    \r\n      plusvaliaComparativoChart = new Chart(ctx, {\r\n        type: 'bar',\r\n        data: {\r\n          labels: ['Inversi\u00f3n Inmobiliaria', 'Dep\u00f3sito bancario 1.5%', 'Inflaci\u00f3n -3%'],\r\n          datasets: [{\r\n            label: 'Ganancia\/P\u00e9rdida neta estimada (\u20ac)',\r\n            data: [\r\n              rentabilidadInversion,\r\n              rentabilidadBanco,\r\n              rentabilidadInflacion\r\n            ],\r\n            backgroundColor: ['#4CAF50', '#2196F3', '#FFC107']\r\n          }]\r\n        },\r\n        options: { \r\n          responsive: true,\r\n          maintainAspectRatio: false,\r\n          scales: {\r\n            y: {\r\n              beginAtZero: false,\r\n              ticks: {\r\n                callback: function(value) {\r\n                  return plusvaliaFormatCurrency(value);\r\n                }\r\n              }\r\n            }\r\n          },\r\n          plugins: {\r\n            tooltip: {\r\n              callbacks: {\r\n                label: function(context) {\r\n                  return plusvaliaFormatCurrency(context.raw);\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n  <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4cdb109 e-flex e-con-boxed e-con e-parent\" data-id=\"4cdb109\" 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-795d6aa elementor-widget elementor-widget-heading\" data-id=\"795d6aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Donaci\u00f3n y Herencia<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-adac673 e-con-full e-flex e-con e-child\" data-id=\"adac673\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f0acec4 e-con-full e-flex e-con e-child\" data-id=\"f0acec4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c7e8853 elementor-widget elementor-widget-html\" data-id=\"c7e8853\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"gfima-donacion-herencia\" class=\"gfima-card\">\r\n  <style>\r\n    .gfima-card{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;max-width:980px;margin:18px auto;padding:18px;border:1px solid #e6e6e6;border-radius:14px;background:#fff;box-shadow:0 6px 24px rgba(0,0,0,.06)}\r\n    .gfima-title{margin:0 0 6px;font-size:22px;line-height:1.2}\r\n    .gfima-sub{margin:0 0 14px;color:#555;font-size:14px}\r\n    .gfima-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}\r\n    .gfima-box{border:1px solid #efefef;border-radius:12px;padding:12px;background:#fafafa}\r\n    .gfima-box h3{margin:0 0 10px;font-size:15px}\r\n    .gfima-row{display:grid;grid-template-columns:1.2fr 1fr;gap:10px;align-items:center;margin:8px 0}\r\n    .gfima-row label{font-size:13px;color:#222}\r\n    .gfima-row input,.gfima-row select{width:100%;padding:10px;border:1px solid #dcdcdc;border-radius:10px;font-size:14px;background:#fff}\r\n    .gfima-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}\r\n    .gfima-btn{cursor:pointer;border:0;border-radius:12px;padding:10px 14px;font-weight:700}\r\n    .gfima-primary{background:#0b3a4a;color:#fff}\r\n    .gfima-ghost{background:#eef3f5;color:#0b3a4a}\r\n    .gfima-warn{background:#fff6e6;color:#5a3a00}\r\n    .gfima-results{margin-top:14px;border-top:1px dashed #ddd;padding-top:14px}\r\n    .gfima-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\r\n    .gfima-kpi{border:1px solid #efefef;border-radius:12px;padding:12px;background:#fff}\r\n    .gfima-kpi .v{font-size:18px;font-weight:900;margin-top:4px}\r\n    .gfima-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}\r\n    .gfima-panel{border:1px solid #efefef;border-radius:12px;padding:12px;background:#fff}\r\n    .gfima-panel h4{margin:0 0 8px;font-size:14px}\r\n    .gfima-table{width:100%;border-collapse:separate;border-spacing:0;margin-top:10px}\r\n    .gfima-table th,.gfima-table td{padding:10px;border-bottom:1px solid #eee;font-size:13px;text-align:left;vertical-align:top}\r\n    .gfima-note{margin-top:10px;color:#666;font-size:12px;line-height:1.35}\r\n    .gfima-copy{width:100%;min-height:130px;padding:10px;border:1px solid #dcdcdc;border-radius:12px;font-size:13px}\r\n    .gfima-badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#eef3f5;color:#0b3a4a;font-size:12px;margin-left:8px}\r\n    @media (max-width:880px){\r\n      .gfima-grid{grid-template-columns:1fr}\r\n      .gfima-kpis{grid-template-columns:1fr}\r\n      .gfima-two{grid-template-columns:1fr}\r\n      .gfima-row{grid-template-columns:1fr}\r\n    }\r\n  <\/style>\r\n\r\n  <h2 class=\"gfima-title\">Calculadora orientativa: Donaci\u00f3n vs Herencia (Castilla-La Mancha)<\/h2>\r\n  <p class=\"gfima-sub\">\r\n    Estimaci\u00f3n divulgativa. Compara costes aproximados de <strong>donar<\/strong> ahora vs <strong>heredar<\/strong> m\u00e1s adelante.\r\n    <span class=\"gfima-badge\">Gfima<\/span>\r\n  <\/p>\r\n\r\n  <div class=\"gfima-grid\">\r\n    <div class=\"gfima-box\">\r\n      <h3>1) Datos del inmueble<\/h3>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"valorVivienda\">Valor de la vivienda (\u20ac) <small>(valor mercado \/ referencia)<\/small><\/label>\r\n        <input id=\"valorVivienda\" type=\"number\" min=\"0\" step=\"1000\" placeholder=\"Ej.: 180000\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"valorCompra\">Valor de compra original (\u20ac) <small>(del donante)<\/small><\/label>\r\n        <input id=\"valorCompra\" type=\"number\" min=\"0\" step=\"1000\" placeholder=\"Ej.: 90000\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"gastosCompra\">Gastos e impuestos de compra (\u20ac)<\/label>\r\n        <input id=\"gastosCompra\" type=\"number\" min=\"0\" step=\"100\" placeholder=\"Ej.: 12000\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"plusvalia\">Plusval\u00eda municipal (\u20ac) <small>(si la conoces; si no, 0)<\/small><\/label>\r\n        <input id=\"plusvalia\" type=\"number\" min=\"0\" step=\"50\" value=\"0\">\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"gfima-box\">\r\n      <h3>2) Impuestos y gastos<\/h3>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"isdDonModo\">ISD Donaci\u00f3n (CLM)<\/label>\r\n        <select id=\"isdDonModo\">\r\n          <option value=\"auto\" selected>Autom\u00e1tico por tramos (tipo efectivo aprox.)<\/option>\r\n          <option value=\"manual\">Manual (yo elijo el %)<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"isdDonManual\">ISD Donaci\u00f3n tipo (%) <small>(solo si Manual)<\/small><\/label>\r\n        <input id=\"isdDonManual\" type=\"number\" min=\"0\" max=\"30\" step=\"0.1\" value=\"10\" disabled>\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"isdHerModo\">ISD Herencia (CLM)<\/label>\r\n        <select id=\"isdHerModo\">\r\n          <option value=\"auto\" selected>Autom\u00e1tico por tramos (orientativo)<\/option>\r\n          <option value=\"manual\">Manual (yo elijo el %)<\/option>\r\n          <option value=\"importe\">Manual (importe \u20ac)<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"isdHerManualPct\">ISD Herencia tipo (%) <small>(si Manual %)<\/small><\/label>\r\n        <input id=\"isdHerManualPct\" type=\"number\" min=\"0\" max=\"30\" step=\"0.1\" value=\"5\" disabled>\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"isdHerManualEur\">ISD Herencia importe (\u20ac) <small>(si Manual \u20ac)<\/small><\/label>\r\n        <input id=\"isdHerManualEur\" type=\"number\" min=\"0\" step=\"50\" value=\"0\" disabled>\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"notaria\">Notar\u00eda (\u20ac)<\/label>\r\n        <input id=\"notaria\" type=\"number\" min=\"0\" step=\"50\" value=\"600\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"registro\">Registro (\u20ac)<\/label>\r\n        <input id=\"registro\" type=\"number\" min=\"0\" step=\"50\" value=\"300\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-row\">\r\n        <label for=\"gestoria\">Gestor\u00eda\/Asesoramiento (\u20ac) <small>(opcional)<\/small><\/label>\r\n        <input id=\"gestoria\" type=\"number\" min=\"0\" step=\"50\" value=\"0\">\r\n      <\/div>\r\n\r\n      <div class=\"gfima-actions\">\r\n        <button class=\"gfima-btn gfima-primary\" type=\"button\" id=\"btnDonacion\">Calcular donaci\u00f3n<\/button>\r\n        <button class=\"gfima-btn gfima-warn\" type=\"button\" id=\"btnComparar\">Comparar con herencia<\/button>\r\n        <button class=\"gfima-btn gfima-ghost\" type=\"button\" id=\"btnReset\">Reiniciar<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"gfima-results\" id=\"resultados\" style=\"display:none;\">\r\n    <h3 style=\"margin:0 0 10px;\">Resultados<\/h3>\r\n\r\n    <div class=\"gfima-kpis\">\r\n      <div class=\"gfima-kpi\">\r\n        <div>Total donaci\u00f3n<\/div>\r\n        <div class=\"v\" id=\"kpiTotalDon\">\u2014<\/div>\r\n      <\/div>\r\n      <div class=\"gfima-kpi\">\r\n        <div>Total herencia<\/div>\r\n        <div class=\"v\" id=\"kpiTotalHer\">\u2014<\/div>\r\n      <\/div>\r\n      <div class=\"gfima-kpi\">\r\n        <div>Diferencia<\/div>\r\n        <div class=\"v\" id=\"kpiDiff\">\u2014<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"gfima-two\">\r\n      <div class=\"gfima-panel\">\r\n        <h4>Donaci\u00f3n (ahora)<\/h4>\r\n        <div id=\"panelDon\"><\/div>\r\n      <\/div>\r\n      <div class=\"gfima-panel\">\r\n        <h4>Herencia (m\u00e1s adelante)<\/h4>\r\n        <div id=\"panelHer\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <table class=\"gfima-table\" aria-label=\"Desglose comparado\">\r\n      <thead>\r\n        <tr>\r\n          <th>Concepto<\/th>\r\n          <th>Donaci\u00f3n<\/th>\r\n          <th>Herencia<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody id=\"tablaComp\"><\/tbody>\r\n    <\/table>\r\n\r\n    <div style=\"margin-top:12px;\">\r\n      <label style=\"display:block;font-weight:800;margin-bottom:6px;\">Resumen para copiar<\/label>\r\n      <textarea class=\"gfima-copy\" id=\"resumenCopiar\" readonly><\/textarea>\r\n      <div class=\"gfima-actions\">\r\n        <button class=\"gfima-btn gfima-ghost\" type=\"button\" id=\"btnCopiar\">Copiar resumen<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <p class=\"gfima-note\">\r\n      <strong>Notas:<\/strong> En donaci\u00f3n se suele devengar IRPF por ganancia patrimonial del donante; en herencia, normalmente no.\r\n      El ISD real depende de reducciones\/bonificaciones, patrimonio preexistente y normativa vigente. Plusval\u00eda depende del ayuntamiento.\r\n    <\/p>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function(){\r\n      const el = (id)=>document.getElementById(id);\r\n      const fmtEUR = (n)=> new Intl.NumberFormat('es-ES',{style:'currency',currency:'EUR',maximumFractionDigits:0}).format(n||0);\r\n\r\n      \/\/ Tipos efectivos aproximados (divulgativos). Ajustables:\r\n      const isdAutoDon = (valor)=>{\r\n        if (valor <= 100000) return {rango:\"5%\u20137%\", tipo:0.06};\r\n        if (valor <= 200000) return {rango:\"7%\u201310%\", tipo:0.085};\r\n        if (valor <= 400000) return {rango:\"10%\u201315%\", tipo:0.125};\r\n        return {rango:\"15%\u201320%\", tipo:0.175};\r\n      };\r\n\r\n      \/\/ Herencia suele tener m\u00e1s ventajas; por eso se deja m\u00e1s bajo (orientativo).\r\n      \/\/ Si prefieres, puedes igualarlo al de donaci\u00f3n o editar los puntos medios:\r\n      const isdAutoHer = (valor)=>{\r\n        if (valor <= 100000) return {rango:\"0%\u20133%\", tipo:0.015};\r\n        if (valor <= 200000) return {rango:\"1%\u20135%\", tipo:0.03};\r\n        if (valor <= 400000) return {rango:\"3%\u20138%\", tipo:0.055};\r\n        return {rango:\"5%\u201312%\", tipo:0.085};\r\n      };\r\n\r\n      \/\/ IRPF ganancias patrimoniales\r\n      const irpfGanancia = (g)=>{\r\n        let restante = Math.max(0,g);\r\n        let cuota = 0;\r\n        const det = [];\r\n        const tramo = (lim, tipo, nombre)=>{\r\n          const base = Math.min(restante, lim);\r\n          if (base>0){\r\n            const q=base*tipo; cuota+=q; restante-=base;\r\n            det.push({nombre, base, tipo, cuota:q});\r\n          }\r\n        };\r\n        tramo(6000,0.19,\"Hasta 6.000 \u20ac (19%)\");\r\n        tramo(44000,0.21,\"6.001\u201350.000 \u20ac (21%)\");\r\n        tramo(150000,0.23,\"50.001\u2013200.000 \u20ac (23%)\");\r\n        if (restante>0){\r\n          const base=restante, q=base*0.28; cuota+=q;\r\n          det.push({nombre:\"M\u00e1s de 200.000 \u20ac (28%)\", base, tipo:0.28, cuota:q});\r\n        }\r\n        return {cuota, det};\r\n      };\r\n\r\n      const toggle = ()=>{\r\n        el(\"isdDonManual\").disabled = (el(\"isdDonModo\").value !== \"manual\");\r\n\r\n        const m = el(\"isdHerModo\").value;\r\n        el(\"isdHerManualPct\").disabled = (m !== \"manual\");\r\n        el(\"isdHerManualEur\").disabled = (m !== \"importe\");\r\n      };\r\n      [\"isdDonModo\",\"isdHerModo\"].forEach(id=>el(id).addEventListener(\"change\", toggle));\r\n      toggle();\r\n\r\n      const getInputs = ()=>{\r\n        const valor = Number(el(\"valorVivienda\").value||0);\r\n        const compra = Number(el(\"valorCompra\").value||0);\r\n        const gastos = Number(el(\"gastosCompra\").value||0);\r\n        const plusvalia = Number(el(\"plusvalia\").value||0);\r\n        const notaria = Number(el(\"notaria\").value||0);\r\n        const registro = Number(el(\"registro\").value||0);\r\n        const gestoria = Number(el(\"gestoria\").value||0);\r\n        return {valor, compra, gastos, plusvalia, notaria, registro, gestoria};\r\n      };\r\n\r\n      const calcISDDon = (valor)=>{\r\n        if (el(\"isdDonModo\").value===\"manual\"){\r\n          const pct = Math.max(0, Number(el(\"isdDonManual\").value||0))\/100;\r\n          return {cuota: valor*pct, info:(pct*100).toFixed(1).replace('.',',')+\"% (manual)\"};\r\n        }\r\n        const a = isdAutoDon(valor);\r\n        return {cuota: valor*a.tipo, info: a.rango+\" (auto)\"};\r\n      };\r\n\r\n      const calcISDHer = (valor)=>{\r\n        const modo = el(\"isdHerModo\").value;\r\n        if (modo===\"manual\"){\r\n          const pct = Math.max(0, Number(el(\"isdHerManualPct\").value||0))\/100;\r\n          return {cuota: valor*pct, info:(pct*100).toFixed(1).replace('.',',')+\"% (manual)\"};\r\n        }\r\n        if (modo===\"importe\"){\r\n          const eur = Math.max(0, Number(el(\"isdHerManualEur\").value||0));\r\n          return {cuota: eur, info:\"Importe manual\"};\r\n        }\r\n        const a = isdAutoHer(valor);\r\n        return {cuota: valor*a.tipo, info: a.rango+\" (auto)\"};\r\n      };\r\n\r\n      const render = (don, her, ctx)=>{\r\n        el(\"kpiTotalDon\").textContent = fmtEUR(don.total);\r\n        el(\"kpiTotalHer\").textContent = fmtEUR(her.total);\r\n\r\n        const diff = don.total - her.total;\r\n        el(\"kpiDiff\").textContent = (diff>=0?\"+\":\"\") + fmtEUR(diff);\r\n\r\n        el(\"panelDon\").innerHTML = `\r\n          <div><strong>ISD:<\/strong> ${fmtEUR(don.isd)} <small>(${don.isdInfo})<\/small><\/div>\r\n          <div><strong>IRPF:<\/strong> ${fmtEUR(don.irpf)} <small>(ganancia: ${fmtEUR(don.ganancia)})<\/small><\/div>\r\n          <div><strong>Plusval\u00eda:<\/strong> ${fmtEUR(don.plusvalia)}<\/div>\r\n          <div><strong>Notar\u00eda+Registro+Gestor\u00eda:<\/strong> ${fmtEUR(don.gastos)}<\/div>\r\n        `;\r\n\r\n        el(\"panelHer\").innerHTML = `\r\n          <div><strong>ISD:<\/strong> ${fmtEUR(her.isd)} <small>(${her.isdInfo})<\/small><\/div>\r\n          <div><strong>IRPF:<\/strong> ${fmtEUR(her.irpf)} <small>(habitual: 0 \u20ac)<\/small><\/div>\r\n          <div><strong>Plusval\u00eda:<\/strong> ${fmtEUR(her.plusvalia)}<\/div>\r\n          <div><strong>Notar\u00eda+Registro+Gestor\u00eda:<\/strong> ${fmtEUR(her.gastos)}<\/div>\r\n        `;\r\n\r\n        const rows = [\r\n          [\"ISD (Castilla-La Mancha)\", `${fmtEUR(don.isd)} (${don.isdInfo})`, `${fmtEUR(her.isd)} (${her.isdInfo})`],\r\n          [\"IRPF por ganancia patrimonial\", `${fmtEUR(don.irpf)} (ganancia ${fmtEUR(don.ganancia)})`, `${fmtEUR(her.irpf)} (habitual)`],\r\n          [\"Plusval\u00eda municipal\", fmtEUR(don.plusvalia), fmtEUR(her.plusvalia)],\r\n          [\"Notar\u00eda + Registro + Gestor\u00eda\", fmtEUR(don.gastos), fmtEUR(her.gastos)],\r\n          [\"TOTAL\", `<strong>${fmtEUR(don.total)}<\/strong>`, `<strong>${fmtEUR(her.total)}<\/strong>`],\r\n        ];\r\n        const tb = el(\"tablaComp\");\r\n        tb.innerHTML=\"\";\r\n        rows.forEach(r=>{\r\n          const tr=document.createElement(\"tr\");\r\n          tr.innerHTML = `<td><strong>${r[0]}<\/strong><\/td><td>${r[1]}<\/td><td>${r[2]}<\/td>`;\r\n          tb.appendChild(tr);\r\n        });\r\n\r\n        \/\/ Resumen\r\n        el(\"resumenCopiar\").value =\r\n`\ud83d\udccc Comparativa orientativa (Castilla-La Mancha)\r\nValor vivienda: ${fmtEUR(ctx.valor)}\r\n\r\nDONACI\u00d3N (ahora)\r\n- ISD (donatario): ${fmtEUR(don.isd)} (${don.isdInfo})\r\n- IRPF (donante): ${fmtEUR(don.irpf)} (ganancia ${fmtEUR(don.ganancia)})\r\n- Plusval\u00eda: ${fmtEUR(don.plusvalia)}\r\n- Gastos (N\/R\/G): ${fmtEUR(don.gastos)}\r\nTOTAL DONACI\u00d3N: ${fmtEUR(don.total)}\r\n\r\nHERENCIA (m\u00e1s adelante)\r\n- ISD (heredero): ${fmtEUR(her.isd)} (${her.isdInfo})\r\n- IRPF: ${fmtEUR(her.irpf)} (habitual 0 \u20ac)\r\n- Plusval\u00eda: ${fmtEUR(her.plusvalia)}\r\n- Gastos (N\/R\/G): ${fmtEUR(her.gastos)}\r\nTOTAL HERENCIA: ${fmtEUR(her.total)}\r\n\r\nDiferencia (Donaci\u00f3n \u2212 Herencia): ${(don.total-her.total>=0?\"+\":\"\")}${fmtEUR(don.total-her.total)}\r\n\r\n\u26a0\ufe0f Estimaci\u00f3n divulgativa. El ISD real depende de reducciones\/bonificaciones, patrimonio preexistente y normativa vigente.`;\r\n        el(\"resultados\").style.display=\"block\";\r\n        el(\"resultados\").scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n      };\r\n\r\n      const calcDon = (ctx)=>{\r\n        const isd = calcISDDon(ctx.valor);\r\n        const ganancia = Math.max(0, ctx.valor - (ctx.compra + ctx.gastos));\r\n        const irpf = irpfGanancia(ganancia);\r\n        const gastos = ctx.notaria + ctx.registro + ctx.gestoria;\r\n        const total = isd.cuota + irpf.cuota + ctx.plusvalia + gastos;\r\n        return {isd:isd.cuota, isdInfo:isd.info, ganancia, irpf:irpf.cuota, plusvalia:ctx.plusvalia, gastos, total};\r\n      };\r\n\r\n      const calcHer = (ctx)=>{\r\n        const isd = calcISDHer(ctx.valor);\r\n        const gastos = ctx.notaria + ctx.registro + ctx.gestoria;\r\n        const total = isd.cuota + 0 + ctx.plusvalia + gastos;\r\n        return {isd:isd.cuota, isdInfo:isd.info, ganancia:0, irpf:0, plusvalia:ctx.plusvalia, gastos, total};\r\n      };\r\n\r\n      const requireValor = (ctx)=>{\r\n        if (!ctx.valor || ctx.valor<=0){\r\n          alert(\"Introduce el valor de la vivienda para calcular.\");\r\n          return false;\r\n        }\r\n        return true;\r\n      };\r\n\r\n      el(\"btnDonacion\").addEventListener(\"click\", ()=>{\r\n        const ctx = getInputs();\r\n        if (!requireValor(ctx)) return;\r\n\r\n        const don = calcDon(ctx);\r\n        \/\/ si solo calculan donaci\u00f3n, mostramos herencia como \"\u2014\" pero \u00fatil: la calculamos igualmente con defaults\r\n        const her = calcHer(ctx);\r\n        render(don, her, ctx);\r\n      });\r\n\r\n      el(\"btnComparar\").addEventListener(\"click\", ()=>{\r\n        const ctx = getInputs();\r\n        if (!requireValor(ctx)) return;\r\n        const don = calcDon(ctx);\r\n        const her = calcHer(ctx);\r\n        render(don, her, ctx);\r\n      });\r\n\r\n      el(\"btnReset\").addEventListener(\"click\", ()=>{\r\n        [\"valorVivienda\",\"valorCompra\",\"gastosCompra\"].forEach(id=>el(id).value=\"\");\r\n        el(\"plusvalia\").value=0;\r\n        el(\"isdDonModo\").value=\"auto\";\r\n        el(\"isdDonManual\").value=10;\r\n        el(\"isdHerModo\").value=\"auto\";\r\n        el(\"isdHerManualPct\").value=5;\r\n        el(\"isdHerManualEur\").value=0;\r\n        el(\"notaria\").value=600;\r\n        el(\"registro\").value=300;\r\n        el(\"gestoria\").value=0;\r\n        toggle();\r\n        el(\"resultados\").style.display=\"none\";\r\n      });\r\n\r\n      el(\"btnCopiar\").addEventListener(\"click\", async ()=>{\r\n        try{\r\n          await navigator.clipboard.writeText(el(\"resumenCopiar\").value);\r\n          el(\"btnCopiar\").textContent=\"\u00a1Copiado!\";\r\n          setTimeout(()=>el(\"btnCopiar\").textContent=\"Copiar resumen\",1200);\r\n        }catch(e){\r\n          alert(\"No se pudo copiar autom\u00e1ticamente. Selecciona el texto y copia manualmente.\");\r\n        }\r\n      });\r\n    })();\r\n  <\/script>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-beeaa45 e-flex e-con-boxed e-con e-parent\" data-id=\"beeaa45\" 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-461c6b8 elementor-widget elementor-widget-n-accordion\" data-id=\"461c6b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;default_state&quot;:&quot;all_collapsed&quot;,&quot;max_items_expended&quot;:&quot;multiple&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:600,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-7350\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-7350\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> \u00bfQu\u00e9 documentaci\u00f3n me pedir\u00e1 el banco para evaluar la hipoteca que me puedo permitir? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-7350\" class=\"elementor-element elementor-element-ea3be1c e-con-full e-flex e-con e-child\" data-id=\"ea3be1c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42c2c7e elementor-widget elementor-widget-text-editor\" data-id=\"42c2c7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Gen\u00e9rico:<\/h3><ul><li>DNI en vigor de cada uno de los titulares.<\/li><li>Vida laboral de cada uno de los titulares.<\/li><li>\u00daltima declaraci\u00f3n de la renta de cada uno de los titulares.<\/li><li>Movimientos de cuenta de los \u00faltimos 3-6 meses.<\/li><li>3 \u00faltimos recibos pagados de todos los pr\u00e9stamos y tarjetas<\/li><\/ul><p>\u00a0<\/p><h3>Asalariados:<\/h3><ul><li>3 \u00faltimas n\u00f3minas de cada uno de los titulares.<\/li><li>Contrato de trabajo de cada uno de los titulares<\/li><\/ul><h3>Aut\u00f3nomos:<\/h3><ul><li>4 \u00faltimas declaraciones trimestrales de IRPF.<\/li><li>4 \u00faltimas declaraciones trimestrales del IVA<\/li><\/ul><h3>Otros documentos:<\/h3><ul><li>Escritura de capitulaciones matrimoniales.<\/li><li>Sentencia de separaci\u00f3n y convenio regulador.<\/li><li>Contrato de arras<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-7351\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"2\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-7351\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> \u00bfC\u00f3mo saber que casa me puedo permitir? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-7351\" class=\"elementor-element elementor-element-6073f3e e-con-full e-flex e-con e-child\" data-id=\"6073f3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b5a6fc elementor-widget elementor-widget-text-editor\" data-id=\"2b5a6fc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>La vivienda que te puedes permitir depender\u00e1 de algunos criterios que deber\u00e1s tener en cuenta a la hora de pedir tu hipoteca:<\/h3><ul><li>Ahorros: Los bancos no suelen financiar m\u00e1s del 80% del precio de compra, es decir, necesitar\u00e1s aportar alrededor de un 20% del precio de compra para la entrada..<\/li><li>Endeudamiento: Los bancos suelen conceder hipotecas con cuotas que no excedan el 35% de los ingresos netos mensuales (ingresos &#8211; deudas), aunque pueden llegar hasta el 40% en algunos casos..<\/li><li>Estabilidad laboral: Los bancos tendr\u00e1n en cuenta tu historial laboral, antig\u00fcedad en la empresa, per\u00edodos de paro, sector laboral, etc.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-7352\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"3\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-7352\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\">  \u00bfQu\u00e9 hipoteca me puedo permitir? Hipoteca fija o variable. <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-7352\" class=\"elementor-element elementor-element-95eec6f e-con-full e-flex e-con e-child\" data-id=\"95eec6f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7cf39ae elementor-widget elementor-widget-text-editor\" data-id=\"7cf39ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Tipo variable: La cuota variar\u00e1 a lo largo de la vida del pr\u00e9stamo en funci\u00f3n a las fluctuaciones del Eur\u00edbor o el \u00edndice de referencia utilizado. Actualmente \u00e9ste se encuentra en m\u00ednimos hist\u00f3ricos, pero es importante conocer hasta d\u00f3nde puede subir y cu\u00e1nto puede impactar en la cuota de la hipoteca.<\/li><li>Tipo fijo: Pagar\u00e1s la misma cuota durante toda la vida del pr\u00e9stamo. La seguridad que te da la contrataci\u00f3n de este tipo de pr\u00e9stamos supone un inter\u00e9s inicial m\u00e1s alto que las hipotecas a tipo variable.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-7353\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"4\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-7353\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> \u00bfQu\u00e9 gastos suponen la firma de la compraventa y de la hipoteca? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-7353\" class=\"elementor-element elementor-element-e3e1818 e-con-full e-flex e-con e-child\" data-id=\"e3e1818\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fdc9220 elementor-widget elementor-widget-text-editor\" data-id=\"fdc9220\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Los gastos que tiene una compraventa de vivienda son:<\/h3><ul><li>Impuestos: Depender\u00e1n del tipo de vivienda.<\/li><li>Vivienda de obra nueva: Cuando la vivienda se entrega por primera vez hay que pagar un 10% de IVA. Para la compra de viviendas en Canarias se aplicar\u00e1 un 6,5%.<\/li><li>Vivienda de segunda mano: Se aplica un porcentaje sobre el precio escriturado dependiendo de la Comunidad Aut\u00f3noma en la que se encuentre la vivienda adquirida, en la mayor\u00eda de las comunidades est\u00e1 entre el 6%-10%.<\/li><li>Escritura p\u00fablica en la notar\u00eda: Los costes del notario son fijados por normativa y su cuant\u00eda depende del importe del inmueble.<\/li><li>Registro de la Propiedad: Tambi\u00e9n est\u00e1n fijados por normativa y su cuant\u00eda depende del precio del inmueble.<\/li><li>Gestor\u00eda: Es lo que cobra la agencia por realizar todos los tr\u00e1mites necesarios hasta la inscripci\u00f3n de la escritura de compra en el Registro de Propiedad.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-962debb e-flex e-con-boxed e-con e-parent\" data-id=\"962debb\" 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-820d687 elementor-widget elementor-widget-heading\" data-id=\"820d687\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Otras<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-71939ca elementor-widget elementor-widget-text-editor\" data-id=\"71939ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>\u00a0<span style=\"text-decoration: underline;\"><strong>Calificador de operaciones inmobiliarias:<\/strong><\/span> Esta herramienta te ayuda a conocer c\u00f3mo tributan las compraventas y arrendamientos de inmuebles. Es decir, si est\u00e1n sujetas al IVA o al Impuesto sobre Transmisiones Patrimoniales (ITP) y, en su caso, si est\u00e1n exentas.<br \/><a href=\"https:\/\/www2.agenciatributaria.gob.es\/wlpl\/AVAC-CALC\/CalificadorInmobiliario\">Enlace AEAT<\/a><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c9ba97 e-con-full e-flex e-con e-child\" data-id=\"3c9ba97\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c18bb0 elementor-widget elementor-widget-html\" data-id=\"3c18bb0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Calculadora de IBAN<\/title>\r\n    <style>\r\n        body {\r\n            font-family: Arial, sans-serif;\r\n            background-color: #f4f4f4;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n        #calculatorContainer {\r\n            max-width: 400px;\r\n            background: #ffffff;\r\n            border-radius: 15px;\r\n            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\r\n            padding: 15px;\r\n            margin: auto;\r\n        }\r\n        h2 {\r\n            text-align: center;\r\n            font-size: 24px;\r\n            font-weight: bold;\r\n            color: #333;\r\n            margin-bottom: 15px;\r\n        }\r\n        label {\r\n            display: block;\r\n            font-weight: bold;\r\n            margin-bottom: 5px;\r\n        }\r\n        input[type=\"text\"] {\r\n            width: 100%;\r\n            padding: 8px;\r\n            margin-bottom: 15px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 5px;\r\n            box-sizing: border-box;\r\n        }\r\n        button {\r\n            width: 100%;\r\n            background-color: #4CAF50;\r\n            color: white;\r\n            padding: 10px;\r\n            border: none;\r\n            border-radius: 5px;\r\n            font-size: 16px;\r\n            cursor: pointer;\r\n        }\r\n        button:hover {\r\n            background-color: #45a049;\r\n        }\r\n        #resultContainer {\r\n            text-align: center;\r\n            margin-top: 15px;\r\n        }\r\n        #ibanResult {\r\n            font-size: 18px;\r\n            color: #333;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div id=\"calculatorContainer\">\r\n        <h2>Calculadora de IBAN<\/h2>\r\n        <label for=\"ccc\">Introduce el CCC (20 d\u00edgitos):<\/label>\r\n        <input type=\"text\" id=\"ccc\" maxlength=\"20\" placeholder=\"Ejemplo: 12345678901234567890\">\r\n        <button onclick=\"calcularIBAN()\">Calcular IBAN<\/button>\r\n        <div id=\"resultContainer\">\r\n            <p>IBAN calculado:<\/p>\r\n            <div id=\"ibanResult\">--<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        function calcularIBAN() {\r\n            const ccc = document.getElementById('ccc').value.trim();\r\n\r\n            \/\/ Validar que el CCC tenga 20 d\u00edgitos\r\n            if (!\/^\\d{20}$\/.test(ccc)) {\r\n                alert('Por favor, introduce un CCC v\u00e1lido de 20 d\u00edgitos.');\r\n                return;\r\n            }\r\n\r\n            \/\/ Convertir el c\u00f3digo del pa\u00eds \"ES\" a n\u00fameros (E = 14, S = 28)\r\n            const codigoPais = \"142800\";\r\n            const cccCompleto = ccc + codigoPais;\r\n\r\n            \/\/ Calcular el resto del m\u00f3dulo 97\r\n            const modulo97 = (numero) => {\r\n                let resultado = \"\";\r\n                for (let i = 0; i < numero.length; i++) {\r\n                    resultado = (resultado + numero[i]) % 97;\r\n                }\r\n                return resultado;\r\n            };\r\n\r\n            const resto = modulo97(cccCompleto);\r\n            const digitoControl = (98 - resto).toString().padStart(2, '0');\r\n\r\n            \/\/ Construir el IBAN final\r\n            const iban = `ES${digitoControl}${ccc}`;\r\n            document.getElementById('ibanResult').textContent = iban;\r\n        }\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Calculadorasinmobiliarias Descubre nuestras calculadoras inmobiliarias dise\u00f1adas para facilitar tus decisiones. Desde calcular la hipoteca ideal hasta estimar los costos asociados a la compra o venta de una propiedad, nuestras herramientas te ofrecen claridad y confianza. \u00a1Empieza a planificar con precisi\u00f3n y asegura el \u00e9xito de tu pr\u00f3xima operaci\u00f3n inmobiliaria!. Comprador Calculadora Hipotecaria Calculadora Hipotecaria Importe [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_joinchat":[],"footnotes":""},"class_list":["post-2677","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculadoras - Gfima<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.gfima.es\/?page_id=2677\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculadoras - Gfima\" \/>\n<meta property=\"og:description\" content=\"Calculadorasinmobiliarias Descubre nuestras calculadoras inmobiliarias dise\u00f1adas para facilitar tus decisiones. Desde calcular la hipoteca ideal hasta estimar los costos asociados a la compra o venta de una propiedad, nuestras herramientas te ofrecen claridad y confianza. \u00a1Empieza a planificar con precisi\u00f3n y asegura el \u00e9xito de tu pr\u00f3xima operaci\u00f3n inmobiliaria!. Comprador Calculadora Hipotecaria Calculadora Hipotecaria Importe [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.gfima.es\/?page_id=2677\" \/>\n<meta property=\"og:site_name\" content=\"Gfima\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GfimaInmobiliaria\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-10T12:48:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.gfima.es\\\/?page_id=2677\",\"url\":\"https:\\\/\\\/www.gfima.es\\\/?page_id=2677\",\"name\":\"Calculadoras - Gfima\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#website\"},\"datePublished\":\"2024-11-16T09:56:43+00:00\",\"dateModified\":\"2026-01-10T12:48:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.gfima.es\\\/?page_id=2677#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.gfima.es\\\/?page_id=2677\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.gfima.es\\\/?page_id=2677#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.gfima.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculadoras\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#website\",\"url\":\"https:\\\/\\\/www.gfima.es\\\/\",\"name\":\"Gfima\",\"description\":\"Agencia inmobiliaria\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.gfima.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#organization\",\"name\":\"Gfima inmobiliaria\",\"url\":\"https:\\\/\\\/www.gfima.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.gfima.es\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/LogoGfima.png\",\"contentUrl\":\"https:\\\/\\\/www.gfima.es\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/LogoGfima.png\",\"width\":1630,\"height\":925,\"caption\":\"Gfima inmobiliaria\"},\"image\":{\"@id\":\"https:\\\/\\\/www.gfima.es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/GfimaInmobiliaria\",\"https:\\\/\\\/www.instagram.com\\\/gfima_inmobiliaria\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculadoras - Gfima","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.gfima.es\/?page_id=2677","og_locale":"es_ES","og_type":"article","og_title":"Calculadoras - Gfima","og_description":"Calculadorasinmobiliarias Descubre nuestras calculadoras inmobiliarias dise\u00f1adas para facilitar tus decisiones. Desde calcular la hipoteca ideal hasta estimar los costos asociados a la compra o venta de una propiedad, nuestras herramientas te ofrecen claridad y confianza. \u00a1Empieza a planificar con precisi\u00f3n y asegura el \u00e9xito de tu pr\u00f3xima operaci\u00f3n inmobiliaria!. Comprador Calculadora Hipotecaria Calculadora Hipotecaria Importe [&hellip;]","og_url":"https:\/\/www.gfima.es\/?page_id=2677","og_site_name":"Gfima","article_publisher":"https:\/\/www.facebook.com\/GfimaInmobiliaria","article_modified_time":"2026-01-10T12:48:00+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.gfima.es\/?page_id=2677","url":"https:\/\/www.gfima.es\/?page_id=2677","name":"Calculadoras - Gfima","isPartOf":{"@id":"https:\/\/www.gfima.es\/#website"},"datePublished":"2024-11-16T09:56:43+00:00","dateModified":"2026-01-10T12:48:00+00:00","breadcrumb":{"@id":"https:\/\/www.gfima.es\/?page_id=2677#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gfima.es\/?page_id=2677"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.gfima.es\/?page_id=2677#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.gfima.es\/"},{"@type":"ListItem","position":2,"name":"Calculadoras"}]},{"@type":"WebSite","@id":"https:\/\/www.gfima.es\/#website","url":"https:\/\/www.gfima.es\/","name":"Gfima","description":"Agencia inmobiliaria","publisher":{"@id":"https:\/\/www.gfima.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gfima.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.gfima.es\/#organization","name":"Gfima inmobiliaria","url":"https:\/\/www.gfima.es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.gfima.es\/#\/schema\/logo\/image\/","url":"https:\/\/www.gfima.es\/wp-content\/uploads\/2023\/04\/LogoGfima.png","contentUrl":"https:\/\/www.gfima.es\/wp-content\/uploads\/2023\/04\/LogoGfima.png","width":1630,"height":925,"caption":"Gfima inmobiliaria"},"image":{"@id":"https:\/\/www.gfima.es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/GfimaInmobiliaria","https:\/\/www.instagram.com\/gfima_inmobiliaria"]}]}},"_links":{"self":[{"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/pages\/2677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gfima.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2677"}],"version-history":[{"count":421,"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/pages\/2677\/revisions"}],"predecessor-version":[{"id":5372,"href":"https:\/\/www.gfima.es\/index.php?rest_route=\/wp\/v2\/pages\/2677\/revisions\/5372"}],"wp:attachment":[{"href":"https:\/\/www.gfima.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}