{"id":59919,"date":"2026-03-11T13:19:55","date_gmt":"2026-03-11T12:19:55","guid":{"rendered":"https:\/\/muaytax.com\/?p=59919"},"modified":"2026-04-27T13:06:22","modified_gmt":"2026-04-27T11:06:22","slug":"simulador-de-declaracion-de-la-renta","status":"publish","type":"post","link":"https:\/\/muaytax.com\/es\/simulador-de-declaracion-de-la-renta\/","title":{"rendered":"Simulador de declaraci\u00f3n de la Renta: simula tu borrador"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"59919\" class=\"elementor elementor-59919\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-32a790db e-flex e-con-boxed e-con e-parent\" data-id=\"32a790db\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16be5fc6 elementor-widget elementor-widget-text-editor\" data-id=\"16be5fc6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 id=\"que-es-el-simulador-de-declaracion-de-la-renta\" class=\"wp-block-heading\">Qu\u00e9 es el simulador de declaraci\u00f3n de la renta<\/h2><p>Un <strong>simulador de declaraci\u00f3n de la renta<\/strong> es una herramienta que te permite hacer una <a href=\"https:\/\/muaytax.com\/es\/calcular-declaracion-de-la-renta-guia-clara\/\"><strong>estimaci\u00f3n previa<\/strong> del resultado de tu IRPF<\/a> antes de presentar la declaraci\u00f3n. Su utilidad principal es comprobar, de forma orientativa, si el resultado puede salir <strong>a pagar o a devolver<\/strong> y revisar c\u00f3mo influyen tus ingresos, retenciones y posibles deducciones.<\/p><p>En la pr\u00e1ctica, este tipo de simulador no sustituye a la declaraci\u00f3n real, sino que sirve como una prueba previa para entender mejor tu situaci\u00f3n fiscal y llegar a la campa\u00f1a de la renta con una idea m\u00e1s clara del resultado.<\/p><h2 id=\"cual-es-el-simulador-oficial-de-la-renta\" class=\"wp-block-heading\">Cu\u00e1l es el simulador oficial de la renta<\/h2><p>El <strong>simulador oficial de la renta<\/strong> es <strong><a href=\"https:\/\/sede.agenciatributaria.gob.es\/Sede\/procedimientoini\/ZZ08.shtml\" target=\"_blank\" rel=\"noopener\">Renta Web Open<\/a><\/strong>, la herramienta de la <strong>Agencia Tributaria<\/strong> pensada para hacer simulaciones de la declaraci\u00f3n sin necesidad de identificarte como contribuyente.<\/p><h3 id=\"que-es-renta-web-open\" class=\"wp-block-heading\">Qu\u00e9 es Renta Web Open<\/h3><p><strong>Renta Web Open<\/strong> es una versi\u00f3n de <strong>Renta WEB<\/strong> que permite hacer una simulaci\u00f3n de la declaraci\u00f3n desde cero. <a href=\"https:\/\/sede.agenciatributaria.gob.es\/Sede\/ayuda\/consultas-informaticas\/renta-ayuda-tecnica\/renta-web-open.html\" target=\"_blank\" rel=\"noopener\">La propia AEAT explica que funciona sin validar el NIF<\/a> y sin necesidad de cargar los datos fiscales reales del contribuyente.<\/p><h3 id=\"que-no-permite-hacer-el-simulador\" class=\"wp-block-heading\">Qu\u00e9 no permite hacer el simulador<\/h3><p>Aunque es \u00fatil para orientarte, el simulador de declaraci\u00f3n de la renta <strong>no permite presentar la declaraci\u00f3n<\/strong>. Tampoco equivale al borrador real de la renta ni sustituye el acceso a Renta WEB con identificaci\u00f3n. Su funci\u00f3n es ayudarte a prever el resultado de forma orientativa antes de hacer la declaraci\u00f3n definitiva.<\/p><h2 id=\"como-usar-el-simulador-de-declaracion-de-la-renta\" class=\"wp-block-heading\">C\u00f3mo usar el simulador de declaraci\u00f3n de la renta<\/h2><p>Usar el simulador de declaraci\u00f3n de la renta es \u00fatil para hacer una previsi\u00f3n del resultado antes de presentar la declaraci\u00f3n real. Para que la estimaci\u00f3n sea lo m\u00e1s \u00fatil posible, conviene introducir los datos m\u00e1s relevantes de tu situaci\u00f3n fiscal.<\/p><h3 id=\"que-datos-necesitas-para-hacer-una-simulacion-util\" class=\"wp-block-heading\">Qu\u00e9 datos necesitas para hacer una simulaci\u00f3n \u00fatil<\/h3><p>Para que la simulaci\u00f3n se acerque a la realidad, conviene tener a mano estos datos:<\/p><ul class=\"wp-block-list\"><li><strong>Ingresos del trabajo<\/strong> y posibles pagadores.<\/li><li><strong>Retenciones practicadas<\/strong>.<\/li><li>Datos sobre <strong>vivienda, alquiler o hipoteca<\/strong>.<\/li><li>Posibles <strong>donativos<\/strong>.<\/li><li><strong>Aportaciones a planes de pensiones<\/strong>.<\/li><li>Otras deducciones o circunstancias personales que puedan influir en tu IRPF.<\/li><\/ul><p>Cuanto m\u00e1s completa sea la informaci\u00f3n que introduzcas, m\u00e1s \u00fatil ser\u00e1 la simulaci\u00f3n. Si faltan datos relevantes, el resultado puede servirte como orientaci\u00f3n, pero no como una previsi\u00f3n precisa.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bde53e9 elementor-widget elementor-widget-text-editor\" data-id=\"bde53e9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 id=\"simula-tu-borrador-de-la-renta-ahora\">Simula tu borrador de la renta ahora<\/h2><p data-path-to-node=\"6,4\"><i data-path-to-node=\"6,4\" data-index-in-node=\"0\">Prueba nuestro simulador de la renta para obtener una estimaci\u00f3n r\u00e1pida de tu IRPF:<\/i><span style=\"font-style: inherit; font-weight: inherit; background-color: rgba(2, 1, 1, 0);\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9c5693 elementor-widget elementor-widget-html\" data-id=\"b9c5693\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Simulador IRPF Renta 2025 \u00b7 Muay Tax -->\r\n\r\n<style>\r\n\/* ============================================================\r\n   SIMULADOR IRPF RENTA v2 \u2014 CSS\r\n   ============================================================ *\/\r\n.renta-calc *, .renta-calc *::before, .renta-calc *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n.renta-calc {\r\n  --rc-primary:       #00ad65;\r\n  --rc-primary-dark:  #031549;\r\n  --rc-navy:          #031549;\r\n  --rc-navy-mid:      #36e093;\r\n  --rc-muted:         #6a768a;\r\n  --rc-border:        #f7faff;\r\n  --rc-border-mid:    #91ABBC;\r\n  --rc-bg:            #f7faff;\r\n  --rc-white:         #ffffff;\r\n  --rc-radius:        12px;\r\n  --rc-radius-sm:     8px;\r\n  --rc-font:          'Poppins', Tahoma, Geneva, Verdana, sans-serif;\r\n  --rc-danger:        #e0364c;\r\n  --rc-blue:          #0083e3;\r\n\r\n  font-family: var(--rc-font);\r\n  font-size: 14px;\r\n  color: var(--rc-navy);\r\n  max-width: 1100px;\r\n  margin: 0 auto;\r\n  padding: 24px 16px;\r\n}\r\n\r\n\/* --- HEADER --- *\/\r\n.renta-calc .rc-header {\r\n  background: var(--rc-white);\r\n  border-radius: var(--rc-radius);\r\n  padding: 20px 28px;\r\n  margin-bottom: 24px;\r\n}\r\n.renta-calc .rc-title {\r\n  font-size: 1.75rem !important; font-weight: 700 !important; color: #031549 !important;\r\n  margin: 0 !important; line-height: 1.2 !important; display: block !important;\r\n  font-family: 'Poppins', Tahoma, Geneva, Verdana, sans-serif !important;\r\n  text-transform: none !important; letter-spacing: normal !important;\r\n}\r\n.renta-calc .rc-badge {\r\n  display: inline-block; background: #00ad65; color: #fff; font-size: 0.75rem;\r\n  font-weight: 700; padding: 4px 12px; border-radius: 20px; margin-left: 10px; vertical-align: middle;\r\n}\r\n\r\n\/* --- STEP NAV --- *\/\r\n.renta-calc .rc-steps-nav {\r\n  display: flex !important; gap: 4px !important; margin-bottom: 24px !important;\r\n  background: #ffffff !important; border-radius: 12px !important; border: solid 1px #e5ecf7 !important;\r\n  overflow: hidden !important; padding: 6px !important;\r\n}\r\n.renta-calc .rc-step-tab {\r\n  all: unset !important; box-sizing: border-box !important; flex: 1 !important;\r\n  padding: 10px 6px !important; text-align: center !important; font-size: 0.87rem !important;\r\n  font-weight: 600 !important; color: #031549 !important; cursor: pointer !important;\r\n  background: transparent !important; border-radius: 6px !important; border: none !important;\r\n  transition: all .2s !important; display: flex !important; align-items: center !important;\r\n  justify-content: center !important; font-family: 'Poppins', Tahoma, Geneva, Verdana, sans-serif !important;\r\n  line-height: 1.3 !important; outline: none !important; white-space: nowrap !important;\r\n}\r\n.renta-calc .rc-step-tab.active { color: #00ad65 !important; background-color: #d9ffee !important; }\r\n.renta-calc .rc-step-tab.done { color: #00ad65 !important; }\r\n.renta-calc .rc-step-tab:hover { background-color: #d9ffee !important; color: #031549 !important; }\r\n.renta-calc .rc-step-tab.locked { opacity: 0.4 !important; cursor: not-allowed !important; }\r\n.renta-calc .rc-step-tab.locked:hover { background-color: transparent !important; }\r\n.renta-calc .rc-step-num {\r\n  display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n  width: 22px !important; height: 22px !important; border-radius: 50% !important;\r\n  font-size: 0.84rem !important; font-weight: 700 !important; background: #E5ECF7 !important;\r\n  color: #031549 !important; flex-shrink: 0 !important; line-height: 1 !important;\r\n}\r\n.renta-calc .rc-step-tab.active .rc-step-num { background: #00ad65 !important; color: #ffffff !important; }\r\n.renta-calc .rc-step-tab.done .rc-step-num { background: #00ad65 !important; color: #ffffff !important; }\r\n\r\n\/* --- PANELS --- *\/\r\n.renta-calc .rc-panel {\r\n  display: none; background: var(--rc-white); border-radius: var(--rc-radius);\r\n  border: solid 1px #e5ecf7; padding: 28px 28px 22px; margin-bottom: 20px;\r\n  animation: rcFadeIn .22s ease;\r\n}\r\n.renta-calc .rc-panel.active { display: block; }\r\n@keyframes rcFadeIn { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:none; } }\r\n\r\n.renta-calc .rc-panel-title {\r\n  font-size: 1.25rem; font-weight: 700; color: var(--rc-navy);\r\n  padding-bottom: 10px; margin-bottom: 6px;\r\n}\r\n.renta-calc .rc-panel-desc {\r\n  color: #031549; font-size: 1rem; margin-bottom: 20px; line-height: 1.55;\r\n}\r\n\r\n\/* --- FORM ELEMENTS --- *\/\r\n.renta-calc .rc-label {\r\n  display: block; font-weight: 600; color: var(--rc-navy); font-size: 0.88rem; margin-bottom: 7px;\r\n}\r\n.renta-calc .rc-label-sub {\r\n  display: block; font-size: 0.75rem; color: var(--rc-muted); font-weight: 400;\r\n  margin-top: 2px; font-style: italic;\r\n}\r\n.renta-calc .rc-input,\r\n.renta-calc .rc-select {\r\n  width: 100%; padding: 10px 13px; border: 2px solid var(--rc-border); border-radius: var(--rc-radius-sm);\r\n  font-size: 0.9rem; color: var(--rc-navy); background: var(--rc-bg);\r\n  transition: border-color .2s; font-family: var(--rc-font);\r\n}\r\n.renta-calc .rc-input:focus,\r\n.renta-calc .rc-select:focus { outline: none; border-color: var(--rc-primary); background: var(--rc-white); }\r\n.renta-calc .rc-input:hover,\r\n.renta-calc .rc-select:hover { border-color: var(--rc-border-mid); }\r\n.renta-calc .rc-input.error { border-color: var(--rc-danger); }\r\n.renta-calc .rc-input-wrap { position: relative; }\r\n.renta-calc .rc-input-prefix {\r\n  position: absolute; left: 13px; top: 50%; transform: translateY(-50%);\r\n  font-size: 0.9rem; font-weight: 700; color: var(--rc-muted);\r\n}\r\n.renta-calc .rc-input-prefixed { padding-left: 30px; }\r\n.renta-calc .rc-helper { font-size: 0.75rem; color: var(--rc-muted); margin-top: 5px; line-height: 1.5; }\r\n.renta-calc .rc-error-msg { font-size: 0.75rem; color: var(--rc-danger); margin-top: 4px; display: none; }\r\n.renta-calc .rc-error-msg.visible { display: block; }\r\n\r\n\/* --- CHOICE BUTTONS --- *\/\r\n.renta-calc .rc-choices { display: flex; flex-wrap: wrap; gap: 8px; }\r\n.renta-calc .rc-choice {\r\n  all: unset; box-sizing: border-box; cursor: pointer;\r\n  padding: 10px 16px; border: 2px solid var(--rc-border);border-radius: var(--rc-radius-sm); \r\n  font-size: 0.85rem; font-weight: 600; color: var(--rc-navy); background: var(--rc-bg);\r\n  transition: all .18s; text-align: center; flex: 1 1 auto; min-width: 100px;\r\n  display: flex; align-items: center; justify-content: center; gap: 6px;\r\n  font-family: var(--rc-font);\r\n}\r\n.renta-calc .rc-choice:hover { background: #d9ffee; border-color: #031549; border-radius: 8px; color:#00ad65;}\r\n.renta-calc .rc-choice.selected { border-color: var(--rc-primary); background: #d9ffee; color: var(--rc-primary); border-radius: 8px; }\r\n.renta-calc .rc-choice-check { justify-content: flex-start; min-width: 180px; }\r\n.renta-calc .rc-choice-check input {\r\n  width: 18px; height: 18px; accent-color: #00ad65; flex-shrink: 0;\r\n}\r\n.renta-calc .rc-choice-check span { pointer-events: none; }\r\n\r\n\/* --- DEDUCTION CARDS --- *\/\r\n.renta-calc .rc-ded-card {\r\n  display: flex; align-items: flex-start; gap: 12px; padding: 14px;\r\n  border: 2px solid var(--rc-border); border-radius: var(--rc-radius-sm);\r\n  cursor: pointer; transition: all .18s; background: var(--rc-bg);\r\n  user-select: none; margin-bottom: 8px;\r\n}\r\n.renta-calc .rc-ded-card:hover { background: #d9ffee; }\r\n.renta-calc .rc-ded-card.selected { border-color: var(--rc-primary); background: #d9ffee; }\r\n.renta-calc .rc-ded-icon { font-size: 1.4rem; flex-shrink: 0; margin-top: 2px; }\r\n.renta-calc .rc-ded-text { flex: 1; min-width: 0; }\r\n.renta-calc .rc-ded-question { font-size: 0.85rem; font-weight: 600; color: var(--rc-navy); line-height: 1.35; }\r\n.renta-calc .rc-ded-info { font-size: 0.73rem; color: var(--rc-primary); font-weight: 700; margin-top: 4px; }\r\n.renta-calc .rc-ded-check {\r\n  width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--rc-border-mid);\r\n  flex-shrink: 0; display: flex; align-items: center; justify-content: center;\r\n  font-size: 0.7rem; color: #fff; transition: all .18s; margin-top: 2px;\r\n}\r\n.renta-calc .rc-ded-card.selected .rc-ded-check { background: var(--rc-primary); border-color: var(--rc-primary); }\r\n\r\n\/* --- TOOLTIP BOX --- *\/\r\n.renta-calc .rc-tooltip { background: #d8f6ff; border-radius: 10px; padding: 11px 14px; margin-top: 14px; font-size: 0.8rem; color: #031549; line-height: 1.6; }\r\n.renta-calc .rc-tooltip strong { color: #031549; }\r\n\r\n\/* --- INFO BOX --- *\/\r\n.renta-calc .rc-info-box { background: #d8f6ff; border-radius: 6px; padding: 11px 14px; margin-bottom: 18px; font-size: 0.8rem; color: #031549; line-height: 1.5; }\r\n\r\n\/* --- CONFIRM BOX (green) --- *\/\r\n.renta-calc .rc-confirm-box {\r\n  background: #d9ffee; border: 1.5px solid #00ad65; border-radius: var(--rc-radius-sm);\r\n  padding: 10px 14px; margin-top: 10px; font-size: 0.78rem; color: #031549; line-height: 1.5;\r\n}\r\n\r\n\/* --- FORM ROW --- *\/\r\n.renta-calc .rc-form-row { margin-bottom: 18px; }\r\n\r\n\/* --- BOTONES --- *\/\r\n.renta-calc .rc-btn {\r\n  display: inline-flex; align-items: center; gap: 7px; padding: 11px 22px;\r\n  border-radius: 50px; font-size: 0.9rem; font-weight: 700;\r\n  border: none; cursor: pointer; transition: all .2s; font-family: var(--rc-font);\r\n}\r\n.renta-calc .rc-btn-primary { background: #00ad65 !important; color: #fff; }\r\n.renta-calc .rc-btn-primary:hover { background: #031549 !important; }\r\n.renta-calc .rc-btn-secondary { background-color: #fff; color: #031549; border: 2px solid #031549; }\r\n.renta-calc .rc-btn-secondary:hover { background-color: #031549; color:#fff; border: 2px solid #031549; }\r\n.renta-calc .rc-btn-outline { background: transparent; color: var(--rc-muted); font-size: 0.82rem; padding: 6px 12px; }\r\n.renta-calc .rc-btn-outline:hover { background-color: #031549; }\r\n.renta-calc .rc-nav-row { display: flex; align-items: center; justify-content: space-between; margin-top: 22px; gap: 10px; }\r\n\r\n\/* --- RESULTADOS KPIs --- *\/\r\n.renta-calc .rc-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 16px; }\r\n.renta-calc .rc-kpi {\r\n  background: var(--rc-white); border-radius: var(--rc-radius-sm);\r\n  border: 2px solid #031549; padding: 14px 16px;\r\n}\r\n.renta-calc .rc-kpi-label { font-size: 0.78rem; color: #031549; font-weight: 600; margin-bottom: 4px; text-transform: uppercase; letter-spacing: .4px; }\r\n.renta-calc .rc-kpi-value { font-size: 1.25rem; font-weight: 700; color: var(--rc-primary); }\r\n.renta-calc .rc-kpi-value.navy { color: #031549; }\r\n.renta-calc .rc-kpi-value.danger { color: var(--rc-danger); }\r\n.renta-calc .rc-kpi-value.blue { color: var(--rc-blue); }\r\n\r\n\/* --- RESULTADO HERO --- *\/\r\n.renta-calc .rc-result-hero {\r\n  border-radius: var(--rc-radius); padding: 28px 24px; text-align: center;\r\n  color: #fff; margin-bottom: 20px; position: relative; overflow: hidden;\r\n}\r\n.renta-calc .rc-result-hero.devolver { background: #00ad65; }\r\n.renta-calc .rc-result-hero.pagar { background: #031549; }\r\n.renta-calc .rc-result-hero.cero { background: #91ABBC; }\r\n.renta-calc .rc-result-label { font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .5px; opacity: .85; margin-bottom: 4px; }\r\n.renta-calc .rc-result-amount { font-size: 2.8rem; font-weight: 800; line-height: 1.1; margin-bottom: 6px; }\r\n.renta-calc .rc-result-sub { font-size: 0.85rem; opacity: .8; }\r\n.renta-calc .rc-result-badge { display: inline-block; background: rgba(255,255,255,0.2); padding: 6px 16px; border-radius: 20px; font-size: 0.82rem; font-weight: 700; margin-top: 12px; }\r\n\r\n\/* --- CTA INLINE --- *\/\r\n.renta-calc .rc-inline-cta {\r\n  display: flex !important; align-items: center !important; justify-content: space-between !important;\r\n  gap: 20px !important; background: #0083e3 !important; border-radius: 8px !important;\r\n  padding: 20px 24px !important; margin-top: 18px !important;\r\n}\r\n.renta-calc .rc-inline-cta-text { flex: 1 !important; min-width: 0 !important; }\r\n.renta-calc .rc-inline-cta-title {\r\n  font-size: 1.3rem !important; font-weight: 700 !important; color: #FCF06A !important;\r\n  line-height: 1.35 !important; margin-bottom: 4px !important; font-family: var(--rc-font) !important;\r\n}\r\n.renta-calc .rc-inline-cta-title span { color: #FFF !important; }\r\n.renta-calc .rc-inline-cta-sub { font-size: 0.83rem !important; color: #FFF !important; line-height: 1.45 !important; }\r\n.renta-calc .rc-cta-btn {\r\n  display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0;\r\n  background: #031549; color: #fff !important; font-size: 16px; font-weight: 500;\r\n  padding: 14px 24px; border-radius: 50px; text-decoration: none !important;\r\n  border: none; cursor: pointer; font-family: var(--rc-font); transition: all .2s; white-space: nowrap;\r\n}\r\n.renta-calc .rc-cta-btn:hover { background: #00ad65; }\r\n@media (max-width: 600px) {\r\n  .renta-calc .rc-inline-cta { flex-direction: column !important; align-items: flex-start !important; gap: 14px !important; }\r\n  .renta-calc .rc-cta-btn { width: 100% !important; justify-content: center !important; }\r\n}\r\n\r\n\/* --- HOWTO ACCORDION --- *\/\r\n.renta-calc .rc-howto { background: #ffffff !important; border-radius: 8px !important; border: 1px solid #031549 !important; margin-top: 18px !important; overflow: hidden !important; }\r\n.renta-calc .rc-howto-toggle {\r\n  all: unset !important; box-sizing: border-box !important; width: 100% !important; text-align: left !important;\r\n  padding: 16px 18px !important; background: #ffffff !important; font-size: 0.95rem !important; font-weight: 700 !important;\r\n  color: #031549 !important; cursor: pointer !important; display: flex !important; align-items: center !important;\r\n  justify-content: space-between !important; gap: 14px !important; font-family: var(--rc-font) !important; line-height: 1.4 !important; outline: none !important;\r\n}\r\n.renta-calc .rc-howto-toggle:hover { background: #f7faff !important; }\r\n.renta-calc .rc-howto-chevron { flex-shrink: 0 !important; transition: transform .25s !important; }\r\n.renta-calc .rc-howto.open .rc-howto-chevron { transform: rotate(180deg) !important; color: #00ad65 !important; background-color: #ffffff !important; }\r\n.renta-calc .rc-howto-body {\r\n  display: none !important; padding: 18px 18px 20px !important; font-size: 0.85rem !important; background-color: #ffffff !important;\r\n  color: #031549 !important; line-height: 1.8 !important;\r\n}\r\n.renta-calc .rc-howto-body.open { display: block !important; }\r\n\r\n\/* --- NOTA LEGAL --- *\/\r\n.renta-calc .rc-note { font-size: 0.78rem; color: #031549; line-height: 1.55; padding: 11px 14px; border-radius: 6px; margin-top: 16px; background: var(--rc-bg); }\r\n\r\n\/* --- READY STATE (step 7) --- *\/\r\n.renta-calc .rc-ready-state { text-align: center; padding: 40px 24px; }\r\n.renta-calc .rc-ready-icon { font-size: 3.5rem; margin-bottom: 16px; display: block; }\r\n.renta-calc .rc-ready-title { font-size: 1.4rem; font-weight: 800; color: #031549; margin-bottom: 10px; }\r\n.renta-calc .rc-ready-desc { font-size: 0.95rem; color: var(--rc-muted); line-height: 1.6; margin-bottom: 24px; max-width: 480px; margin-left: auto; margin-right: auto; }\r\n.renta-calc .rc-ready-summary {\r\n  background: var(--rc-bg); border: 1.5px solid #e5ecf7; border-radius: 10px; padding: 16px 20px;\r\n  margin-bottom: 24px; max-width: 440px; margin-left: auto; margin-right: auto; text-align: left;\r\n}\r\n.renta-calc .rc-ready-summary-item {\r\n  display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 0.85rem; color: #031549;\r\n}\r\n.renta-calc .rc-ready-summary-item + .rc-ready-summary-item { border-top: 1px solid #e5ecf7; }\r\n.renta-calc .rc-btn-big {\r\n  display: inline-flex; align-items: center; gap: 10px; padding: 14px 32px; border-radius: 90px;\r\n  font-size: 1.05rem; font-weight: 800; border: none; cursor: pointer; transition: all .2s;\r\n  font-family: var(--rc-font); background-color: #00ad65 !important; color: #fff;\r\n}\r\n.renta-calc .rc-btn-big:hover { background: #36e093 !important; }\r\n\r\n\/* --- SECTION DIVIDER --- *\/\r\n.renta-calc .rc-section-divider {\r\n  border: none; border-top: 1.5px dashed #e5ecf7; margin: 22px 0 18px;\r\n}\r\n\r\n\/* --- RESPONSIVE --- *\/\r\n@media (max-width: 768px) {\r\n  .renta-calc .rc-header { padding: 20px 16px; }\r\n  .renta-calc .rc-panel { padding: 20px 16px; }\r\n  .renta-calc .rc-kpis { grid-template-columns: 1fr 1fr; }\r\n}\r\n@media (max-width: 480px) {\r\n  .renta-calc .rc-kpis { grid-template-columns: 1fr; }\r\n  .renta-calc .rc-choices { flex-direction: column; }\r\n  .renta-calc .rc-btn-big { width: 100%; justify-content: center; font-size: 1rem; padding: 14px 24px; }\r\n}\r\n<\/style>\r\n\r\n\r\n<!-- ============================================================\r\n     CALCULADORA HTML \u2014 8 PASOS\r\n     ============================================================ -->\r\n<div class=\"renta-calc\" role=\"main\">\r\n\r\n  <div class=\"rc-header\">\r\n    <div class=\"rc-title\">Simulador IRPF \u2014 Renta 2025<\/div>\r\n  <\/div>\r\n\r\n  <!-- STEP NAV (8 tabs) -->\r\n  <div class=\"rc-steps-nav\" role=\"tablist\" aria-label=\"Pasos del simulador\">\r\n    <button class=\"rc-step-tab active\" role=\"tab\" aria-selected=\"true\" data-step=\"1\"><span class=\"rc-step-num\">1<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"2\"><span class=\"rc-step-num\">2<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"3\"><span class=\"rc-step-num\">3<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"4\"><span class=\"rc-step-num\">4<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"5\"><span class=\"rc-step-num\">5<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"6\"><span class=\"rc-step-num\">6<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"7\"><span class=\"rc-step-num\">7<\/span><\/button>\r\n    <button class=\"rc-step-tab\" role=\"tab\" aria-selected=\"false\" data-step=\"8\"><span class=\"rc-step-num\">8<\/span><\/button>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 1: PERFIL Y CCAA \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p1\" class=\"rc-panel active\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 1 \u00b7 Perfil y residencia fiscal<\/div>\r\n    <p class=\"rc-panel-desc\">Empezamos por lo b\u00e1sico: tu comunidad aut\u00f3noma determina los tramos auton\u00f3micos y las deducciones disponibles.<\/p>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Comunidad Aut\u00f3noma de residencia en 2025 <span class=\"rc-label-sub\">Determina los tramos auton\u00f3micos aplicables<\/span><\/label>\r\n      <select class=\"rc-select\" id=\"rc-ccaa\">\r\n        <option value=\"\">\u2014 Selecciona tu CCAA \u2014<\/option>\r\n      <\/select>\r\n      <div class=\"rc-confirm-box\" id=\"rc-ccaa-confirm\" style=\"display:none;\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Edad<\/label>\r\n      <div class=\"rc-choices\" id=\"rc-edad\">\r\n        <button class=\"rc-choice\" data-val=\"menor35\">< 35 a\u00f1os<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"35_65\">35\u201365 a\u00f1os<\/button>\r\n        <button class=\"rc-choice\" data-val=\"mayor65\">> 65 a\u00f1os<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfC\u00f3mo has trabajado en 2025? <span class=\"rc-label-sub\">Puedes marcar una sola opci\u00f3n o las dos si has combinado n\u00f3mina y actividad por cuenta propia<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-work-mode\">\r\n        <label class=\"rc-choice rc-choice-check\" id=\"rc-work-asalariado-card\">\r\n          <input type=\"checkbox\" id=\"rc-work-asalariado\">\r\n          <span>Asalariado<\/span>\r\n        <\/label>\r\n        <label class=\"rc-choice rc-choice-check\" id=\"rc-work-autonomo-card\">\r\n          <input type=\"checkbox\" id=\"rc-work-autonomo\">\r\n          <span>Aut\u00f3nomo<\/span>\r\n        <\/label>\r\n      <\/div>\r\n      <p class=\"rc-error-msg\" id=\"rc-work-mode-err\">\u26a0 Selecciona al menos una forma de trabajo para 2025.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-nav-row\">\r\n      <button class=\"rc-btn rc-btn-outline\" id=\"rc-btn-reset\">\u21ba Reiniciar<\/button>\r\n      <button class=\"rc-btn rc-btn-primary\" id=\"rc-btn-1-next\">Siguiente \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 2: INGRESOS DEL TRABAJO \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p2\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 2 \u00b7 Ingresos del trabajo<\/div>\r\n    <p class=\"rc-panel-desc\">Introduce tus rendimientos del trabajo durante 2025.<\/p>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Salario bruto anual <span class=\"rc-label-sub\">Suma todos tus salarios, pagas extra y complementos<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-bruto\" placeholder=\"Ej: 35.000\">\r\n      <\/div>\r\n      <p class=\"rc-error-msg\" id=\"rc-bruto-err\">\u26a0 Introduce un salario bruto anual v\u00e1lido.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Retenciones de IRPF practicadas <span class=\"rc-label-sub\">Total de IRPF retenido en tu n\u00f3mina acumulada o modelo 190<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-retenciones\" placeholder=\"Ej: 5.200\">\r\n      <\/div>\r\n      <p class=\"rc-helper\">\ud83d\udca1 Lo encontrar\u00e1s en tu n\u00f3mina de diciembre o en el borrador de la AEAT.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas tenido m\u00e1s de un pagador en 2025? <span class=\"rc-label-sub\">Lo usaremos para afinar alertas y deducciones estatales y auton\u00f3micas cuando corresponda<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-varios-pagadores\">\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-tooltip\">\r\n      <strong>\u00bfNo sabes tu salario bruto exacto?<\/strong><br>\r\n      Consulta el <strong>certificado de retenciones<\/strong> que tu empresa te entrega a final de a\u00f1o, o busca el <strong>apartado \"Total devengado\"<\/strong> en tu n\u00f3mina de diciembre.\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\" id=\"rc-plan-autonomo-row\" style=\"display:none;\">\r\n      <label class=\"rc-label\">Si has sido aut\u00f3nomo en 2025, \u00bfc\u00f3mo has llevado esa actividad? <span class=\"rc-label-sub\">Lo usamos para recomendarte el plan correcto seg\u00fan el nivel de revisi\u00f3n necesario<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-autonomo-gestion\">\r\n        <button class=\"rc-choice\" data-val=\"muay\">Con Muay Tax<\/button>\r\n        <button class=\"rc-choice\" data-val=\"otra\">Por mi cuenta \/ otra gestor\u00eda<\/button>\r\n      <\/div>\r\n      <p class=\"rc-error-msg\" id=\"rc-plan-autonomo-err\">\u26a0 Indica c\u00f3mo has llevado tu actividad como aut\u00f3nomo en 2025.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-nav-row\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"1\">\u2190 Anterior<\/button>\r\n      <button class=\"rc-btn rc-btn-primary\" id=\"rc-btn-2-next\">Siguiente \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 3: RENTAS DEL CAPITAL \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p3\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 3 \u00b7 Rentas del capital y ganancias patrimoniales<\/div>\r\n    <p class=\"rc-panel-desc\">Estas rentas tributan en la base del ahorro con tramos espec\u00edficos. Si no tienes ninguna, puedes dejarlo a cero y continuar.<\/p>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfCu\u00e1ntos inmuebles has tenido alquilados en 2025? <span class=\"rc-label-sub\">Cuenta viviendas, locales, garajes o cualquier inmueble con rendimiento por alquiler<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-alquileres\">\r\n        <button class=\"rc-choice selected\" data-val=\"0\">Ninguno<\/button>\r\n        <button class=\"rc-choice\" data-val=\"1\">1 inmueble<\/button>\r\n        <button class=\"rc-choice\" data-val=\"2+\">2 o m\u00e1s<\/button>\r\n      <\/div>\r\n      <p class=\"rc-error-msg\" id=\"rc-plan-alquileres-err\">\u26a0 Si has indicado rendimiento por alquiler, dinos si corresponde a 1 inmueble o a 2 o m\u00e1s.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfCu\u00e1ntos inmuebles has vendido en 2025? <span class=\"rc-label-sub\">Incluye viviendas, locales, garajes, parcelas u otras propiedades<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-ventas-inmuebles\">\r\n        <button class=\"rc-choice selected\" data-val=\"0\">Ninguno<\/button>\r\n        <button class=\"rc-choice\" data-val=\"1\">1 inmueble<\/button>\r\n        <button class=\"rc-choice\" data-val=\"2+\">2 o m\u00e1s<\/button>\r\n      <\/div>\r\n      <p class=\"rc-error-msg\" id=\"rc-plan-ventas-inmuebles-err\">\u26a0 Si has indicado ganancia por venta de inmuebles, dinos si corresponde a 1 inmueble o a 2 o m\u00e1s.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfQu\u00e9 operativa has tenido con criptomonedas en 2025? <span class=\"rc-label-sub\">Nos interesa saber si solo mantuviste o si hubo ventas, intercambios, permutas o staking<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-cripto\">\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No he tenido cripto<\/button>\r\n        <button class=\"rc-choice\" data-val=\"hold\">Solo compr\u00e9 y mantuve<\/button>\r\n        <button class=\"rc-choice\" data-val=\"opero_1\">Oper\u00e9 en 1 plataforma<\/button>\r\n        <button class=\"rc-choice\" data-val=\"opero_2\">Oper\u00e9 en 2+ plataformas<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas tenido ingresos o activos en el extranjero? <span class=\"rc-label-sub\">Cuentas, brokers, plataformas, inmuebles, dividendos o rendimientos fuera de Espa\u00f1a<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-extranjero\">\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfQu\u00e9 has hecho con tus inversiones en acciones, ETFs o fondos en 2025? <span class=\"rc-label-sub\">Nos referimos a ventas o reembolsos, no solo a compras o mantenimiento<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-plan-inversiones\">\r\n        <button class=\"rc-choice selected\" data-val=\"sin_operativa\">No, solo mantuve o compr\u00e9<\/button>\r\n        <button class=\"rc-choice\" data-val=\"vende_1\">Vend\u00ed\/reembols\u00e9 en 1 br\u00f3ker<\/button>\r\n        <button class=\"rc-choice\" data-val=\"vende_2\">Vend\u00ed\/reembols\u00e9 en 2+ br\u00f3kers<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-info-box\">\r\n      \ud83d\udca1 La base del ahorro incluye intereses bancarios, dividendos, plusval\u00edas por venta de acciones, fondos, criptomonedas e inmuebles. Los rendimientos netos de alquiler de inmuebles se integran en la base general.\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Rendimientos del capital mobiliario <span class=\"rc-label-sub\">Intereses de cuentas, dividendos de acciones, cupones de bonos\u2026<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-capital-mob\" placeholder=\"Ej: 1.200\">\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Ganancias patrimoniales netas <span class=\"rc-label-sub\">Plusval\u00edas de venta de acciones, fondos, ETFs, criptomonedas (tras compensar p\u00e9rdidas)<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-ganancias\" placeholder=\"Ej: 3.500\">\r\n      <\/div>\r\n      <p class=\"rc-helper\">\ud83d\udca1 Si has tenido p\u00e9rdidas netas, introduce 0. Las p\u00e9rdidas no se incluyen en el simulador.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Rendimientos netos de inmuebles alquilados <span class=\"rc-label-sub\">Ingresos por alquiler menos gastos deducibles (comunidad, IBI, seguros, amortizaci\u00f3n\u2026)<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-alquiler-inmueble\" placeholder=\"Ej: 8.000\">\r\n      <\/div>\r\n      <p class=\"rc-helper\">\ud83d\udca1 Si el inmueble es tu vivienda habitual alquilada, puedes aplicar reducci\u00f3n del 60% sobre el rendimiento neto.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Retenciones ya practicadas sobre rentas del capital <span class=\"rc-label-sub\">Retenciones de dividendos, intereses bancarios, alquileres\u2026<\/span><\/label>\r\n      <div class=\"rc-input-wrap\">\r\n        <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n        <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-ret-capital\" placeholder=\"Ej: 800\">\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-nav-row\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"2\">\u2190 Anterior<\/button>\r\n      <button class=\"rc-btn rc-btn-primary\" id=\"rc-btn-3-next\">Siguiente \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 4: FAMILIA \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p4\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 4 \u00b7 Situaci\u00f3n familiar<\/div>\r\n    <p class=\"rc-panel-desc\">Las cargas familiares reducen tu base imponible y generan deducciones.<\/p>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Hijos o descendientes a cargo <span class=\"rc-label-sub\">Menores de 25 a\u00f1os o con discapacidad que conviven contigo<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-hijos\">\r\n        <button class=\"rc-choice selected\" data-val=\"0\">0<\/button>\r\n        <button class=\"rc-choice\" data-val=\"1\">1<\/button>\r\n        <button class=\"rc-choice\" data-val=\"2\">2<\/button>\r\n        <button class=\"rc-choice\" data-val=\"3\">3<\/button>\r\n        <button class=\"rc-choice\" data-val=\"4\">4+<\/button>\r\n      <\/div>\r\n      <div class=\"rc-confirm-box\" id=\"rc-hijos-info\" style=\"display:none;\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Ascendientes a cargo <span class=\"rc-label-sub\">Mayores de 65 a\u00f1os o con discapacidad que dependen de ti<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-ascendientes\">\r\n        <button class=\"rc-choice selected\" data-val=\"0\">Ninguno<\/button>\r\n        <button class=\"rc-choice\" data-val=\"1\">1 persona<\/button>\r\n        <button class=\"rc-choice\" data-val=\"2\">2 o m\u00e1s<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">Grado de discapacidad reconocida (propia)<\/label>\r\n      <div class=\"rc-choices\" id=\"rc-discapacidad\">\r\n        <button class=\"rc-choice selected\" data-val=\"ninguna\">Sin discap.<\/button>\r\n        <button class=\"rc-choice\" data-val=\"33\">33\u201364%<\/button>\r\n        <button class=\"rc-choice\" data-val=\"65\">65% o m\u00e1s<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-nav-row\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"3\">\u2190 Anterior<\/button>\r\n      <button class=\"rc-btn rc-btn-primary\" id=\"rc-btn-4-next\">Siguiente \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 5: DEDUCCIONES \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p5\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 5 \u00b7 Deducciones aplicables<\/div>\r\n    <p class=\"rc-panel-desc\">Responde unas pocas preguntas filtro y te mostraremos al final todas las deducciones a las que podr\u00edas optar, junto con las descartadas y el motivo.<\/p>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas comprado, alquilado, rehabilitado o invertido en vivienda? <span class=\"rc-label-sub\">Incluye vivienda habitual, alquiler, rehabilitaci\u00f3n, autoconsumo, hipoteca, vivienda rural o inmuebles destinados al alquiler<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-vivienda\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas aportado dinero a un plan de pensiones? <span class=\"rc-label-sub\">Aportaciones realizadas durante 2025 (m\u00e1ximo deducible: 1.500 \u20ac)<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-pensiones\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n      <div id=\"rc-pensiones-input\" style=\"display:none; margin-top: 10px;\">\r\n        <label class=\"rc-label\">Importe aportado al plan de pensiones<\/label>\r\n        <div class=\"rc-input-wrap\">\r\n          <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n          <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-pensiones-amount\" placeholder=\"Ej: 1.500\">\r\n        <\/div>\r\n        <p class=\"rc-helper\">\ud83d\udca1 L\u00edmite legal: 1.500 \u20ac (\u00f3 8.500 \u20ac si tu empresa tambi\u00e9n aporta). Reduce tu base imponible.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas hecho donaciones, cesiones o aportaciones deducibles? <span class=\"rc-label-sub\">ONG, cultura, ciencia, patrimonio, medio ambiente, deporte, investigaci\u00f3n o entidades sin \u00e1nimo de lucro<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-donativos\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n      <div id=\"rc-donativos-input\" style=\"display:none; margin-top: 10px;\">\r\n        <label class=\"rc-label\">Importe total donado en 2025<\/label>\r\n        <div class=\"rc-input-wrap\">\r\n          <span class=\"rc-input-prefix\">\u20ac<\/span>\r\n          <input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-donativos-amount\" placeholder=\"Ej: 300\">\r\n        <\/div>\r\n        <p class=\"rc-helper\">\ud83d\udca1 Los primeros 150 \u20ac deducen al 80%. El resto al 40% (Ley 49\/2002).<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas tenido situaciones familiares o de cuidado con posible deducci\u00f3n? <span class=\"rc-label-sub\">Hijos, familia numerosa o monoparental, acogimientos, guarder\u00eda, conciliaci\u00f3n, mayores o personas dependientes\/discapacidad a cargo, viudedad\u2026<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-grupo-familia\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas hecho inversiones financieras o empresariales con posible deducci\u00f3n? <span class=\"rc-label-sub\">Acciones o participaciones en empresas nuevas, inversi\u00f3n en entidades de reciente creaci\u00f3n, econom\u00eda social o aportaciones empresariales espec\u00edficas<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-grupo-inversiones\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"rc-form-row\">\r\n      <label class=\"rc-label\">\u00bfHas tenido gastos especiales en 2025 con posible deducci\u00f3n? <span class=\"rc-label-sub\">Salud, educaci\u00f3n, deporte, autoempleo, traslados, internet, veh\u00edculos el\u00e9ctricos, energ\u00eda o gastos extraordinarios<\/span><\/label>\r\n      <div class=\"rc-choices\" id=\"rc-grupo-gastos\">\r\n        <button class=\"rc-choice\" data-val=\"si\">S\u00ed<\/button>\r\n        <button class=\"rc-choice selected\" data-val=\"no\">No<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Deducciones auton\u00f3micas din\u00e1micas -->\r\n    <div id=\"rc-ded-autonomicas\"><\/div>\r\n\r\n    <div class=\"rc-nav-row\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"4\">\u2190 Anterior<\/button>\r\n      <button class=\"rc-btn rc-btn-primary\" id=\"rc-btn-5-next\">Siguiente \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 6: HUBSPOT FORM (AJUSTADO) \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p6\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 6 \u00b7 Tu resultado est\u00e1 casi listo<\/div>\r\n    <p class=\"rc-panel-desc\">Introduce tu email para ver el resultado detallado al instante.<\/p>\r\n\r\n    <div id=\"rc-hs-form-container\" style=\"min-height: 250px; width: 100%;\"><\/div>\r\n\r\n    <div class=\"rc-nav-row\" style=\"justify-content: flex-start;\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"5\">\u2190 Anterior<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 7: TODO LISTO \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p7\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-ready-state\">\r\n      <span class=\"rc-ready-icon\">\ud83c\udf89<\/span>\r\n      <div class=\"rc-ready-title\">\u00a1Todo listo!<\/div>\r\n      <div class=\"rc-ready-desc\">Hemos procesado tus datos. Pulsa el bot\u00f3n para ver el desglose completo de tu IRPF con los tramos actualizados a 2025.<\/div>\r\n      <div class=\"rc-ready-summary\" id=\"rc-ready-summary\"><\/div>\r\n      <button class=\"rc-btn-big\" id=\"rc-btn-see-results\">Ver mis resultados \u2192<\/button>\r\n    <\/div>\r\n    <div class=\"rc-nav-row\" style=\"justify-content: flex-start;\">\r\n      <button class=\"rc-btn rc-btn-outline\" data-goto=\"5\">\u2190 Ajustar datos<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 PANEL 8: RESULTADOS \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"rc-p8\" class=\"rc-panel\" role=\"tabpanel\">\r\n    <div class=\"rc-panel-title\">Paso 8 \u00b7 Tu c\u00e1lculo de IRPF<\/div>\r\n    <div id=\"rc-results-area\" aria-live=\"polite\" aria-atomic=\"true\"><\/div>\r\n    <div class=\"rc-nav-row\" style=\"margin-top:8px;\">\r\n      <button class=\"rc-btn rc-btn-secondary\" data-goto=\"5\">\u2190 Ajustar datos<\/button>\r\n      <button class=\"rc-btn rc-btn-secondary\" id=\"rc-btn-reset2\">\u21ba Reiniciar<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div><!-- \/renta-calc -->\r\n\r\n\r\n<!-- ============================================================\r\n     JAVASCRIPT v2.1 \u2014 CON HUBSPOT CORREGIDO\r\n     ============================================================ -->\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  \/* ============================================================\r\n     DATOS FISCALES 2025\r\n     ============================================================ *\/\r\n  var CCAA_LIST = [\r\n    { code: \"AND\", name: \"Andaluc\u00eda\" },\r\n    { code: \"ARA\", name: \"Arag\u00f3n\" },\r\n    { code: \"AST\", name: \"Asturias\" },\r\n    { code: \"CNT\", name: \"Cantabria\" },\r\n    { code: \"CLM\", name: \"Castilla-La Mancha\" },\r\n    { code: \"CYL\", name: \"Castilla y Le\u00f3n\" },\r\n    { code: \"CAT\", name: \"Catalu\u00f1a\" },\r\n    { code: \"VAL\", name: \"Comunidad Valenciana\" },\r\n    { code: \"EXT\", name: \"Extremadura\" },\r\n    { code: \"GAL\", name: \"Galicia\" },\r\n    { code: \"BAL\", name: \"Islas Baleares\" },\r\n    { code: \"RIO\", name: \"La Rioja\" },\r\n    { code: \"MAD\", name: \"Madrid\" },\r\n    { code: \"MUR\", name: \"Murcia\" }\r\n  ];\r\n  CCAA_LIST.sort(function(a, b) { return a.name.localeCompare(b.name, 'es'); });\r\n\r\n  var HUBSPOT_CCAA_VALUES = {\r\n    AND: 'Andaluc\u00eda',\r\n    ARA: 'Arag\u00f3n',\r\n    AST: 'Asturias',\r\n    BAL: 'Islas Baleares',\r\n    CNT: 'Cantabria',\r\n    CLM: 'Castilla-La Mancha',\r\n    CYL: 'Castilla y Le\u00f3n',\r\n    CAT: 'Catalu\u00f1a',\r\n    EXT: 'Extremadura',\r\n    GAL: 'Galicia',\r\n    MAD: 'Madrid',\r\n    MUR: 'Murcia',\r\n    RIO: 'La Rioja',\r\n    VAL: 'Comunidad Valenciana'\r\n  };\r\n\r\n  var TRAMOS_ESTATAL = [\r\n    { hasta: 12450, tipo: 0.095 }, { hasta: 20200, tipo: 0.12 },\r\n    { hasta: 35200, tipo: 0.15 }, { hasta: 60000, tipo: 0.185 },\r\n    { hasta: 300000, tipo: 0.225 }, { hasta: Infinity, tipo: 0.245 }\r\n  ];\r\n\r\n  var TRAMOS_AHORRO = [\r\n    { hasta: 6000, tipo: 0.19 },\r\n    { hasta: 50000, tipo: 0.21 },\r\n    { hasta: 200000, tipo: 0.23 },\r\n    { hasta: 300000, tipo: 0.27 },\r\n    { hasta: Infinity, tipo: 0.30 }\r\n  ];\r\n\r\n  var COTIZACION_TRABAJADOR_2025 = {\r\n    contingenciasComunes: 0.047,\r\n    desempleoGeneral: 0.0155,\r\n    formacionProfesional: 0.001,\r\n    mei: 0.0013,\r\n    baseMaxMensual: 4909.50\r\n  };\r\n\r\n  var TRAMOS_AUTONOMICO = {\r\n    AND: [{ hasta: 12450, tipo: 0.095 },{ hasta: 20200, tipo: 0.12 },{ hasta: 35200, tipo: 0.15 },{ hasta: 60000, tipo: 0.185 },{ hasta: 300000, tipo: 0.225 },{ hasta: Infinity, tipo: 0.245 }],\r\n    MAD: [{ hasta: 12450, tipo: 0.089 },{ hasta: 17707, tipo: 0.112 },{ hasta: 33007, tipo: 0.136 },{ hasta: 53407, tipo: 0.176 },{ hasta: 300000, tipo: 0.202 },{ hasta: Infinity, tipo: 0.21 }],\r\n    CAT: [{ hasta: 12450, tipo: 0.105 },{ hasta: 17707, tipo: 0.12 },{ hasta: 21000, tipo: 0.14 },{ hasta: 33007, tipo: 0.165 },{ hasta: 53407, tipo: 0.1875 },{ hasta: 90000, tipo: 0.2175 },{ hasta: 120000, tipo: 0.2375 },{ hasta: 175000, tipo: 0.2525 },{ hasta: Infinity, tipo: 0.2575 }],\r\n    VAL: [{ hasta: 12450, tipo: 0.10 },{ hasta: 17707, tipo: 0.12 },{ hasta: 33007, tipo: 0.15 },{ hasta: 53407, tipo: 0.183 },{ hasta: 120000, tipo: 0.21 },{ hasta: Infinity, tipo: 0.235 }],\r\n    GAL: [{ hasta: 12450, tipo: 0.094 },{ hasta: 17707, tipo: 0.12 },{ hasta: 33007, tipo: 0.145 },{ hasta: 53407, tipo: 0.185 },{ hasta: Infinity, tipo: 0.225 }],\r\n    ARA: [{ hasta: 12450, tipo: 0.10 },{ hasta: 17707, tipo: 0.12 },{ hasta: 35207, tipo: 0.155 },{ hasta: 60000, tipo: 0.185 },{ hasta: Infinity, tipo: 0.23 }],\r\n    AST: [{ hasta: 12450, tipo: 0.10 },{ hasta: 17707, tipo: 0.12 },{ hasta: 33007, tipo: 0.14 },{ hasta: 53407, tipo: 0.185 },{ hasta: 70000, tipo: 0.215 },{ hasta: 90000, tipo: 0.23 },{ hasta: Infinity, tipo: 0.245 }],\r\n    BAL: [{ hasta: 10000, tipo: 0.096 },{ hasta: 18000, tipo: 0.116 },{ hasta: 30000, tipo: 0.136 },{ hasta: 50000, tipo: 0.176 },{ hasta: 70000, tipo: 0.196 },{ hasta: Infinity, tipo: 0.225 }],\r\n    CNT: [{ hasta: 12450, tipo: 0.095 },{ hasta: 20200, tipo: 0.12 },{ hasta: 35200, tipo: 0.145 },{ hasta: 60000, tipo: 0.185 },{ hasta: Infinity, tipo: 0.225 }],\r\n    CLM: [{ hasta: 12450, tipo: 0.095 },{ hasta: 20200, tipo: 0.12 },{ hasta: 35200, tipo: 0.145 },{ hasta: 60000, tipo: 0.185 },{ hasta: Infinity, tipo: 0.225 }],\r\n    CYL: [{ hasta: 12450, tipo: 0.095 },{ hasta: 20200, tipo: 0.12 },{ hasta: 35200, tipo: 0.145 },{ hasta: 60000, tipo: 0.185 },{ hasta: Infinity, tipo: 0.225 }],\r\n    EXT: [{ hasta: 12450, tipo: 0.10 },{ hasta: 20200, tipo: 0.125 },{ hasta: 35200, tipo: 0.15 },{ hasta: 60000, tipo: 0.19 },{ hasta: Infinity, tipo: 0.235 }],\r\n    MUR: [{ hasta: 12450, tipo: 0.095 },{ hasta: 20200, tipo: 0.12 },{ hasta: 35200, tipo: 0.145 },{ hasta: 60000, tipo: 0.185 },{ hasta: Infinity, tipo: 0.225 }],\r\n    RIO: [{ hasta: 12450, tipo: 0.093 },{ hasta: 26000, tipo: 0.12 },{ hasta: 36200, tipo: 0.145 },{ hasta: 60000, tipo: 0.175 },{ hasta: Infinity, tipo: 0.22 }]\r\n  };\r\n\r\n  var DEDUCCIONES_AUTONOMICAS = {\r\n    MAD: [\r\n      { id:\"alquiler_mad\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 40 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 40 a\u00f1os)\", max:1237 },\r\n      { id:\"nacimiento_mad\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:722 },\r\n      { id:\"guardia_mad\", question:\"\u00bfTienes hijos menores de 3 a\u00f1os en guarder\u00eda o escuela infantil?\", emoji:\"\ud83d\udc76\", label:\"Gastos de guarder\u00eda (< 3 a\u00f1os)\", max:1000 },\r\n      { id:\"educacion_mad\", question:\"\u00bfTienes hijos en edad escolar con gastos de matr\u00edcula, idiomas o ropa de uniforme?\", emoji:\"\ud83d\udcda\", label:\"Gastos educativos (escolaridad e idiomas)\", max:1000 },\r\n      { id:\"hogar_mad\", question:\"\u00bfTienes contratada una empleada del hogar con alta en la Seguridad Social?\", emoji:\"\ud83e\uddf9\", label:\"Empleada del hogar (cuotas SS)\", max:464 },\r\n      { id:\"ascendiente_mad\", question:\"\u00bfTienes a cargo un padre o madre mayor de 65 a\u00f1os conviviendo contigo?\", emoji:\"\ud83d\udc74\", label:\"Cuidado de ascendientes\", max:516 },\r\n      { id:\"inversion_mad\", question:\"\u00bfHas invertido en empresas de nueva creaci\u00f3n o startups en 2025?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en nueva empresa (business angel)\", max:9279 },\r\n      { id:\"hipoteca_mad\", question:\"\u00bfTienes hipoteca variable y has notado subida en los tipos de inter\u00e9s respecto a 2022?\", emoji:\"\ud83d\udcc8\", label:\"Subida de tipos hipoteca variable\", max:300 },\r\n      { id:\"joven_hip_mad\", question:\"\u00bfTienes menos de 30 a\u00f1os y pagas intereses por compra de tu primera vivienda?\", emoji:\"\ud83c\udfe1\", label:\"Intereses hipoteca j\u00f3venes < 30 a\u00f1os\", max:1031 }\r\n    ],\r\n    VAL: [\r\n      { id:\"gym_val\", question:\"\u00bfPagas cuota de gimnasio o practicas deporte federado de forma regular?\", emoji:\"\ud83c\udfcb\ufe0f\", label:\"Cuota de gimnasio o deporte\", max:150 },\r\n      { id:\"alquiler_val\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:700 },\r\n      { id:\"nacimiento_val\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:270 },\r\n      { id:\"guardia_val\", question:\"\u00bfTienes hijos menores de 3 a\u00f1os en guarder\u00eda o centro de educaci\u00f3n infantil?\", emoji:\"\ud83d\udc76\", label:\"Gastos de guarder\u00eda (< 3 a\u00f1os)\", max:270 },\r\n      { id:\"discap_val\", question:\"\u00bfTienes o tienes a cargo un familiar con discapacidad reconocida?\", emoji:\"\u267f\", label:\"Discapacidad propia o familiar a cargo\", max:300 },\r\n      { id:\"inversion_val\", question:\"\u00bfHas invertido en empresas de nueva creaci\u00f3n o startups en 2025?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:6000 },\r\n      { id:\"coche_el_val\", question:\"\u00bfHas comprado un veh\u00edculo el\u00e9ctrico o h\u00edbrido enchufable nuevo en 2025?\", emoji:\"\ud83d\udd0b\", label:\"Compra de veh\u00edculo el\u00e9ctrico\/h\u00edbrido\", max:7500 },\r\n      { id:\"eficiencia_val\", question:\"\u00bfHas realizado obras de mejora de eficiencia energ\u00e9tica en tu vivienda en 2025?\", emoji:\"\ud83c\udfd7\ufe0f\", label:\"Obras de eficiencia energ\u00e9tica\", max:8000 },\r\n      { id:\"idiomas_val\", question:\"\u00bfTienes hijos con gastos de ense\u00f1anza extraescolar de idiomas?\", emoji:\"\ud83d\udde3\ufe0f\", label:\"Aprendizaje extraescolar de idiomas\", max:200 },\r\n      { id:\"renovables_val\", question:\"\u00bfHas instalado paneles solares u otras energ\u00edas renovables en tu vivienda habitual?\", emoji:\"\u2600\ufe0f\", label:\"Instalaci\u00f3n de energ\u00edas renovables\", max:8000 },\r\n      { id:\"donativo_val\", question:\"\u00bfHas hecho donativos para el fomento de la Lengua Valenciana o entidades culturales?\", emoji:\"\u2764\ufe0f\", label:\"Donativos culturales o Lengua Valenciana\", max:300 }\r\n    ],\r\n    AND: [\r\n      { id:\"alquiler_and\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:500 },\r\n      { id:\"gym_and\", question:\"\u00bfPagas cuota de gimnasio o actividad deportiva de forma regular?\", emoji:\"\ud83c\udfcb\ufe0f\", label:\"Cuota de gimnasio o deporte (nueva 2025)\", max:100 },\r\n      { id:\"nacimiento_and\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:200 },\r\n      { id:\"inversion_and\", question:\"\u00bfHas invertido en empresas de nueva creaci\u00f3n o startups en 2025?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:4000 },\r\n      { id:\"discap_and\", question:\"\u00bfTienes o tienes a cargo un familiar con discapacidad reconocida del 65% o m\u00e1s?\", emoji:\"\u267f\", label:\"C\u00f3nyuge o familiar con discapacidad \u226565%\", max:100 },\r\n      { id:\"rural_and\", question:\"\u00bfResides habitualmente en un municipio en riesgo de despoblaci\u00f3n (< 5.000 hab.)?\", emoji:\"\ud83c\udf3e\", label:\"Residencia en municipio en riesgo de despoblaci\u00f3n\", max:500 },\r\n      { id:\"acogimiento_and\", question:\"\u00bfTienes acogimiento familiar de menores no remunerado?\", emoji:\"\ud83e\udd1d\", label:\"Acogimiento familiar de menores\", max:600 }\r\n    ],\r\n    CAT: [\r\n      { id:\"alquiler_cat\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 33 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 33 a\u00f1os)\", max:300 },\r\n      { id:\"donativo_cat\", question:\"\u00bfHas hecho donativos a fundaciones o entidades catalanas reconocidas?\", emoji:\"\u2764\ufe0f\", label:\"Donativos a entidades catalanas\", max:600 },\r\n      { id:\"inversion_cat\", question:\"\u00bfHas invertido en empresas de nueva creaci\u00f3n o startups en 2025?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:6000 },\r\n      { id:\"guardia_cat\", question:\"\u00bfTienes hijos menores de 3 a\u00f1os en guarder\u00eda?\", emoji:\"\ud83d\udc76\", label:\"Gastos de guarder\u00eda (< 3 a\u00f1os)\", max:1000 },\r\n      { id:\"discap_cat\", question:\"\u00bfTienes discapacidad reconocida o tienes ascendientes\/descendientes con discapacidad?\", emoji:\"\u267f\", label:\"Discapacidad propia o familiar\", max:1500 },\r\n      { id:\"rehab_cat\", question:\"\u00bfHas realizado obras de rehabilitaci\u00f3n en tu vivienda habitual en 2025?\", emoji:\"\ud83d\udd28\", label:\"Rehabilitaci\u00f3n vivienda habitual\", max:1800 }\r\n    ],\r\n    GAL: [\r\n      { id:\"alquiler_gal\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:300 },\r\n      { id:\"nacimiento_gal\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:300 },\r\n      { id:\"familia_gal\", question:\"\u00bfEres familia monoparental o numerosa?\", emoji:\"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\", label:\"Familia monoparental o numerosa\", max:250 },\r\n      { id:\"internet_gal\", question:\"\u00bfHas pagado por acceso a Internet o nuevas tecnolog\u00edas en el hogar?\", emoji:\"\ud83d\udcbb\", label:\"Gastos en nuevas tecnolog\u00edas en el hogar\", max:200 },\r\n      { id:\"cuidado_may_gal\", question:\"\u00bfTienes a cargo un ascendiente mayor de 65 a\u00f1os conviviendo en casa?\", emoji:\"\ud83d\udc74\", label:\"Cuidado de ascendientes > 65 a\u00f1os\", max:300 },\r\n      { id:\"dental_gal\", question:\"\u00bfHas tenido gastos en tratamientos dentales no cubiertos por la Seguridad Social?\", emoji:\"\ud83e\uddb7\", label:\"Gastos de enfermedad (dentales y otros)\", max:250 }\r\n    ],\r\n    CYL: [\r\n      { id:\"coche_el_cyl\", question:\"\u00bfHas comprado un veh\u00edculo el\u00e9ctrico o h\u00edbrido enchufable nuevo en 2025?\", emoji:\"\ud83d\udd0b\", label:\"Compra de veh\u00edculo el\u00e9ctrico\/h\u00edbrido\", max:1500 },\r\n      { id:\"alquiler_cyl\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:459 },\r\n      { id:\"nacimiento_cyl\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:1010 },\r\n      { id:\"inversion_cyl\", question:\"\u00bfHas invertido como business angel en empresas de nueva creaci\u00f3n en 2025?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:10000 }\r\n    ],\r\n    RIO: [\r\n      { id:\"gym_rio\", question:\"\u00bfPagas cuota de gimnasio o actividades deportivas de forma regular?\", emoji:\"\ud83c\udfcb\ufe0f\", label:\"Gimnasio o deporte\", max:300 },\r\n      { id:\"alquiler_rio\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:400 },\r\n      { id:\"guardia_rio\", question:\"\u00bfTienes hijos menores de 3 a\u00f1os en guarder\u00eda o escuela infantil?\", emoji:\"\ud83d\udc76\", label:\"Gastos de guarder\u00eda \/ educaci\u00f3n 0-3 a\u00f1os\", max:1000 },\r\n      { id:\"eficiencia_rio\", question:\"\u00bfHas realizado obras de mejora de eficiencia energ\u00e9tica en tu vivienda?\", emoji:\"\ud83c\udfd7\ufe0f\", label:\"Obras de eficiencia energ\u00e9tica\", max:7500 }\r\n    ],\r\n    ARA: [\r\n      { id:\"nacimiento_ara\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:500 },\r\n      { id:\"alquiler_ara\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:300 },\r\n      { id:\"familia_ara\", question:\"\u00bfEres familia numerosa o monoparental?\", emoji:\"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66\", label:\"Familia numerosa o monoparental\", max:500 },\r\n      { id:\"discap_ara\", question:\"\u00bfTienes discapacidad reconocida o tienes un familiar con discapacidad a cargo?\", emoji:\"\u267f\", label:\"Discapacidad propia o familiar\", max:1000 },\r\n      { id:\"inversion_ara\", question:\"\u00bfHas invertido en empresas nuevas o de reciente creaci\u00f3n en Arag\u00f3n?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:4000 }\r\n    ],\r\n    AST: [\r\n      { id:\"alquiler_ast\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:300 },\r\n      { id:\"familia_ast\", question:\"\u00bfTu unidad familiar tiene reconocida la condici\u00f3n de familia numerosa?\", emoji:\"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66\", label:\"Familia numerosa\", max:505 },\r\n      { id:\"discap_ast\", question:\"\u00bfTienes discapacidad reconocida de grado igual o superior al 65%?\", emoji:\"\u267f\", label:\"Contribuyente con discapacidad \u226565%\", max:600 },\r\n      { id:\"traslado_ast\", question:\"\u00bfTe has trasladado a Asturias en 2025 por motivos laborales?\", emoji:\"\ud83e\uddf3\", label:\"Traslado de domicilio a Asturias por trabajo\", max:1000 }\r\n    ],\r\n    BAL: [\r\n      { id:\"alquiler_bal\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:400 },\r\n      { id:\"inversion_bal\", question:\"\u00bfHas invertido en empresas de nueva creaci\u00f3n en Baleares?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa de nueva creaci\u00f3n\", max:3600 },\r\n      { id:\"discap_bal\", question:\"\u00bfTienes discapacidad reconocida o tienes un familiar con discapacidad a cargo?\", emoji:\"\u267f\", label:\"Contribuyente con discapacidad\", max:600 },\r\n      { id:\"guardia_bal\", question:\"\u00bfTienes hijos menores de 3 a\u00f1os en guarder\u00eda?\", emoji:\"\ud83d\udc76\", label:\"Gastos de guarder\u00eda (< 3 a\u00f1os)\", max:600 }\r\n    ],\r\n    CNT: [\r\n      { id:\"alquiler_cnt\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:300 },\r\n      { id:\"familia_cnt\", question:\"\u00bfTu unidad familiar tiene reconocida la condici\u00f3n de familia numerosa?\", emoji:\"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66\", label:\"Familia numerosa\", max:450 },\r\n      { id:\"nacimiento_cnt\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:200 },\r\n      { id:\"inversion_cnt\", question:\"\u00bfHas invertido en entidades de la econom\u00eda social en Cantabria?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en econom\u00eda social c\u00e1ntabra\", max:1500 }\r\n    ],\r\n    CLM: [\r\n      { id:\"alquiler_clm\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:450 },\r\n      { id:\"nacimiento_clm\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:200 },\r\n      { id:\"gafas_clm\", question:\"\u00bfHas tenido gastos en gafas, lentillas u otras ayudas \u00f3pticas en 2025?\", emoji:\"\ud83d\udc53\", label:\"Gafas, lentillas u \u00f3ptica (gastos salud)\", max:100 },\r\n      { id:\"discap_clm\", question:\"\u00bfTienes discapacidad reconocida o tienes un familiar con discapacidad a cargo?\", emoji:\"\u267f\", label:\"Discapacidad propia o familiar a cargo\", max:300 }\r\n    ],\r\n    EXT: [\r\n      { id:\"alquiler_ext\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 36 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 36 a\u00f1os)\", max:300 },\r\n      { id:\"discapacidad_ext\", question:\"\u00bfTienes a cargo un familiar con discapacidad reconocida?\", emoji:\"\u267f\", label:\"Pariente con discapacidad a cargo\", max:150 },\r\n      { id:\"rural_ext\", question:\"\u00bfResides en un municipio extreme\u00f1o de menos de 3.000 habitantes?\", emoji:\"\ud83c\udf3e\", label:\"Residencia en municipio rural < 3.000 hab\", max:300 },\r\n      { id:\"inversion_ext\", question:\"\u00bfHas invertido en empresas agrarias o de econom\u00eda social en Extremadura?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresas agrarias\", max:2000 }\r\n    ],\r\n    MUR: [\r\n      { id:\"alquiler_mur\", question:\"\u00bfPagas alquiler como vivienda habitual y tienes menos de 35 a\u00f1os?\", emoji:\"\ud83c\udfe0\", label:\"Alquiler vivienda habitual (< 35 a\u00f1os)\", max:300 },\r\n      { id:\"familia_mur\", question:\"\u00bfEres familia numerosa o monoparental con hijos a cargo?\", emoji:\"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\", label:\"Familia numerosa o monoparental\", max:500 },\r\n      { id:\"nacimiento_mur\", question:\"\u00bfHas tenido o adoptado un hijo en 2025?\", emoji:\"\ud83c\udf7c\", label:\"Nacimiento o adopci\u00f3n de hijo\", max:600 },\r\n      { id:\"inversion_mur\", question:\"\u00bfHas invertido en nuevas empresas o en el Mercado Alternativo Burs\u00e1til en Murcia?\", emoji:\"\ud83d\ude80\", label:\"Inversi\u00f3n en empresa nueva o MAB\", max:6000 }\r\n    ]\r\n  };\r\n\r\n  var DEDUCCIONES_AUTONOMICAS_EXTRA = {\r\n    AND: [\r\n      { id:\"autoempleo_and\", question:\"\\u00BFEres menor de 35 a\\u00F1os y te has dado de alta como aut\\u00F3nomo\/a?\", emoji:\"\\uD83D\\uDCBC\", label:\"Autoempleo de j\\u00F3venes menores de 35 a\\u00F1os\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"educacion_and\", question:\"\\u00BFHas tenido gastos de educaci\\u00F3n o material escolar en Andaluc\\u00EDa?\", emoji:\"\\uD83D\\uDCDA\", label:\"Gastos de educaci\\u00F3n\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"ayuda_domestica_and\", question:\"\\u00BFHas contratado ayuda dom\\u00E9stica o apoyo en el hogar para conciliaci\\u00F3n?\", emoji:\"\\uD83E\\uDDF9\", label:\"Ayuda dom\\u00E9stica\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"familia_and\", question:\"\\u00BFEres familia monoparental o familia con dos hijos?\", emoji:\"\\uD83D\\uDC6A\", label:\"Familias monoparentales o con dos hijos\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    ARA: [\r\n      { id:\"guarderia_ara\", question:\"\\u00BFTienes gastos de guarder\\u00EDa o educaci\\u00F3n infantil en Arag\\u00F3n?\", emoji:\"\\uD83D\\uDC76\", label:\"Gastos de guarder\\u00EDa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"libros_ara\", question:\"\\u00BFHas comprado libros de texto o material escolar para tus hijos?\", emoji:\"\\uD83D\\uDCD6\", label:\"Libros de texto y material escolar\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"dependientes_ara\", question:\"\\u00BFTienes personas dependientes a cargo o familiares con discapacidad?\", emoji:\"\\uD83E\\uDD1D\", label:\"Cuidado de personas dependientes\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"economia_social_ara\", question:\"\\u00BFHas invertido en entidades de econom\\u00EDa social en Arag\\u00F3n?\", emoji:\"\\uD83C\\uDF31\", label:\"Inversi\\u00F3n en econom\\u00EDa social\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    AST: [\r\n      { id:\"familia_mono_ast\", question:\"\\u00BFEres familia monoparental en Asturias?\", emoji:\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\", label:\"Familia monoparental\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"descendientes_ast\", question:\"\\u00BFTienes descendientes de 0 a 3 a\\u00F1os o gastos de conciliaci\\u00F3n en Asturias?\", emoji:\"\\uD83E\\uDDD2\", label:\"Descendientes de 0 a 3 a\\u00F1os y conciliaci\\u00F3n\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"mayores_ast\", question:\"\\u00BFAcoges de forma no remunerada a mayores de 65 a\\u00F1os o personas con discapacidad?\", emoji:\"\\uD83D\\uDC75\", label:\"Acogimiento no remunerado de mayores o personas con discapacidad\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"transporte_ast\", question:\"\\u00BFTienes gastos de transporte p\\u00FAblico por residir en concejos en riesgo de despoblaci\\u00F3n o crisis demogr\\u00E1fica?\", emoji:\"\\uD83D\\uDE8C\", label:\"Transporte p\\u00FAblico en concejos en despoblaci\\u00F3n\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    BAL: [\r\n      { id:\"traslado_bal\", question:\"\\u00BFHas alquilado vivienda en Baleares por traslado temporal de residencia por motivos laborales?\", emoji:\"\\uD83E\\uDDF3\", label:\"Arrendamiento por traslado laboral\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"estudios_bal\", question:\"\\u00BFT\\u00FA o tus hijos curs\\u00E1is estudios de educaci\\u00F3n superior fuera de la isla de residencia habitual?\", emoji:\"\\uD83C\\uDF93\", label:\"Estudios superiores fuera de la isla\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"plazas_dificiles_bal\", question:\"\\u00BFHas ocupado una plaza declarada de dif\\u00EDcil cobertura en Islas Baleares?\", emoji:\"\\uD83D\\uDCCD\", label:\"Plazas de dif\\u00EDcil cobertura\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"arrendador_bal\", question:\"\\u00BFEres arrendador de vivienda destinada a residencia permanente o vivienda vac\\u00EDa puesta en alquiler?\", emoji:\"\\uD83D\\uDD11\", label:\"Deducci\\u00F3n del arrendador\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    CNT: [\r\n      { id:\"guarderia_cnt\", question:\"\\u00BFTienes gastos de guarder\\u00EDa o centros infantiles en Cantabria?\", emoji:\"\\uD83E\\uDDF8\", label:\"Gastos de guarder\\u00EDa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"despoblamiento_cnt\", question:\"\\u00BFResides o te has trasladado a un municipio afectado por riesgo de despoblamiento en Cantabria?\", emoji:\"\\uD83C\\uDF04\", label:\"Residencia o traslado a municipio en despoblamiento\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"familia_mono_cnt\", question:\"\\u00BFEres familia monoparental en Cantabria?\", emoji:\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\", label:\"Familia monoparental\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"nuevos_residentes_cnt\", question:\"\\u00BFHas tenido gastos de desplazamiento o permanencia como nuevo residente en Cantabria?\", emoji:\"\\uD83D\\uDE97\", label:\"Gastos de nuevos residentes\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    CLM: [\r\n      { id:\"familia_num_clm\", question:\"\\u00BFEres familia numerosa en Castilla-La Mancha?\", emoji:\"\\uD83D\\uDC6A\", label:\"Familia numerosa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"familia_mono_clm\", question:\"\\u00BFEres familia monoparental en Castilla-La Mancha?\", emoji:\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\", label:\"Familia monoparental\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"mayores_clm\", question:\"\\u00BFTienes 75 a\\u00F1os o m\\u00E1s, o mayores dependientes \/ ascendientes a cargo?\", emoji:\"\\uD83D\\uDC75\", label:\"Mayores y ascendientes a cargo\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"donativos_clm\", question:\"\\u00BFHas realizado donaciones al patrimonio cultural o a fines culturales en Castilla-La Mancha?\", emoji:\"\\uD83C\\uDFDB\\uFE0F\", label:\"Donaciones culturales y patrimonio\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    CYL: [\r\n      { id:\"familia_mono_cyl\", question:\"\\u00BFEres familia monoparental en Castilla y Le\\u00F3n?\", emoji:\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\", label:\"Familia monoparental\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"hogar_cyl\", question:\"\\u00BFPagas cuotas a la Seguridad Social por empleados o empleadas del hogar?\", emoji:\"\\uD83E\\uDDF9\", label:\"Cuotas de empleados del hogar\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"sostenibilidad_cyl\", question:\"\\u00BFHas realizado inversiones de mejora de la sostenibilidad o rehabilitaci\\u00F3n energ\\u00E9tica en tu vivienda?\", emoji:\"\\uD83C\\uDF3F\", label:\"Sostenibilidad y eficiencia energ\\u00E9tica\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"violencia_cyl\", question:\"\\u00BFEres v\\u00EDctima de violencia machista y pagas alquiler de vivienda habitual?\", emoji:\"\\uD83D\\uDEE1\\uFE0F\", label:\"Alquiler para v\\u00EDctimas de violencia machista\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    CAT: [\r\n      { id:\"viudedad_cat\", question:\"\\u00BFHas quedado viudo\/a en los ejercicios 2023, 2024 o 2025?\", emoji:\"\\uD83D\\uDDA4\", label:\"Contribuyentes viudos\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"intereses_estudios_cat\", question:\"\\u00BFPagas intereses de pr\\u00E9stamos para estudios de Grado, M\\u00E1ster o Doctorado?\", emoji:\"\\uD83C\\uDF93\", label:\"Intereses de pr\\u00E9stamos para estudios\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"donativos_lengua_cat\", question:\"\\u00BFHas donado a entidades que fomentan la lengua catalana o la occitana?\", emoji:\"\\uD83D\\uDDE3\\uFE0F\", label:\"Donativos a entidades de promoci\\u00F3n ling\\u00FC\\u00EDstica\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"alquiler_cat_general\", question:\"\\u00BFPagas alquiler de vivienda habitual en Catalu\\u00F1a y cumples los requisitos auton\\u00F3micos?\", emoji:\"\\uD83C\\uDFE0\", label:\"Arrendamiento de vivienda habitual\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    EXT: [\r\n      { id:\"trabajo_ext\", question:\"\\u00BFObtienes rendimientos del trabajo dependiente y cumples los requisitos de Extremadura?\", emoji:\"\\uD83D\\uDCBC\", label:\"Trabajo dependiente\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"viudedad_ext\", question:\"\\u00BFEres contribuyente viudo\/a en Extremadura?\", emoji:\"\\uD83D\\uDDA4\", label:\"Contribuyentes viudos\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"celiaca_ext\", question:\"\\u00BFT\\u00FA o un familiar con derecho a deducci\\u00F3n ten\\u00E9is enfermedad cel\\u00EDaca diagnosticada?\", emoji:\"\\uD83C\\uDF5E\", label:\"Enfermedad cel\\u00EDaca\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"autoempleo_ext\", question:\"\\u00BFHas trasladado tu residencia a Extremadura o te has establecido como aut\\u00F3nomo\/a all\\u00ED?\", emoji:\"\\uD83D\\uDCCD\", label:\"Traslado de residencia y autoempleo\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    GAL: [\r\n      { id:\"bicicletas_gal\", question:\"\\u00BFHas adquirido bicicletas de pedaleo no asistido en Galicia?\", emoji:\"\\uD83D\\uDEB2\", label:\"Compra de bicicletas\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"rehab_energetica_gal\", question:\"\\u00BFHas hecho obras de rehabilitaci\\u00F3n energ\\u00E9tica o mejora de la vivienda habitual?\", emoji:\"\\uD83C\\uDF3F\", label:\"Rehabilitaci\\u00F3n energ\\u00E9tica de vivienda\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"viviendas_vacias_gal\", question:\"\\u00BFHas puesto una vivienda vac\\u00EDa en el mercado de alquiler habitual?\", emoji:\"\\uD83D\\uDD11\", label:\"Arrendamiento de viviendas vac\\u00EDas\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"aldeas_modelo_gal\", question:\"\\u00BFHas adquirido o rehabilitado viviendas en proyectos de aldeas modelo?\", emoji:\"\\uD83C\\uDFD8\\uFE0F\", label:\"Viviendas en aldeas modelo\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    MAD: [\r\n      { id:\"familia_num_mad\", question:\"\\u00BFEres familia numerosa en Madrid?\", emoji:\"\\uD83D\\uDC6A\", label:\"Familia numerosa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"dos_hijos_mad\", question:\"\\u00BFTienes dos o m\\u00E1s descendientes e ingresos reducidos?\", emoji:\"\\uD83D\\uDC6A\", label:\"Familias con dos o m\\u00E1s descendientes e ingresos reducidos\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"vivienda_hijos_mad\", question:\"\\u00BFHas adquirido una nueva vivienda habitual o ampliado la actual por nacimiento o adopci\\u00F3n de hijos?\", emoji:\"\\uD83C\\uDFE1\", label:\"Nueva vivienda habitual por nacimiento o adopci\\u00F3n\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"ela_mad\", question:\"\\u00BFT\\u00FA o un familiar conviviente est\\u00E1is afectados por ELA?\", emoji:\"\\uD83E\\uDDEC\", label:\"Deducciones relacionadas con ELA\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    MUR: [\r\n      { id:\"guarderia_mur\", question:\"\\u00BFTienes gastos de guarder\\u00EDa o custodia de hijos menores de 3 a\\u00F1os?\", emoji:\"\\uD83E\\uDDF8\", label:\"Gastos de guarder\\u00EDa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"material_mur\", question:\"\\u00BFHas tenido gastos en libros de texto, material escolar o aprendizaje extraescolar de idiomas?\", emoji:\"\\uD83D\\uDCDA\", label:\"Material escolar e idiomas\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"conciliacion_mur\", question:\"\\u00BFTienes gastos vinculados a la conciliaci\\u00F3n o al cuidado de hijos menores?\", emoji:\"\\uD83D\\uDC6A\", label:\"Conciliaci\\u00F3n y cuidado de menores\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"enfermedad_mur\", question:\"\\u00BFHas soportado gastos de enfermedad o primas relacionadas con salud en Murcia?\", emoji:\"\\uD83E\\uDE7A\", label:\"Gastos de enfermedad\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    RIO: [\r\n      { id:\"luz_gas_rio\", question:\"\\u00BFEres joven emancipado y has tenido gastos de luz o gas de uso dom\\u00E9stico?\", emoji:\"\\uD83D\\uDCA1\", label:\"Luz y gas para j\\u00F3venes emancipados\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"internet_rio_extra\", question:\"\\u00BFEres joven emancipado y pagas acceso a Internet en tu vivienda habitual?\", emoji:\"\\uD83C\\uDF10\", label:\"Acceso a Internet para j\\u00F3venes emancipados\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"vivienda_peq_rio\", question:\"\\u00BFHas adquirido, construido o rehabilitado vivienda habitual en peque\\u00F1os municipios de La Rioja?\", emoji:\"\\uD83C\\uDFD8\\uFE0F\", label:\"Vivienda habitual en peque\\u00F1os municipios\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"celiaca_rio\", question:\"\\u00BFT\\u00FA o un familiar con derecho a deducci\\u00F3n ten\\u00E9is enfermedad cel\\u00EDaca diagnosticada?\", emoji:\"\\uD83C\\uDF5E\", label:\"Enfermedad cel\\u00EDaca\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ],\r\n    VAL: [\r\n      { id:\"familia_num_val\", question:\"\\u00BFEres familia numerosa en la Comunidad Valenciana?\", emoji:\"\\uD83D\\uDC6A\", label:\"Familia numerosa\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"familia_mono_val\", question:\"\\u00BFEres familia monoparental en la Comunidad Valenciana?\", emoji:\"\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\", label:\"Familia monoparental\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"ascendientes_val\", question:\"\\u00BFTienes ascendientes mayores de 75 a\\u00F1os o mayores de 65 con discapacidad?\", emoji:\"\\uD83D\\uDC75\", label:\"Ascendientes mayores o con discapacidad\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"primera_viv_val\", question:\"\\u00BFHas realizado la primera adquisici\\u00F3n de tu vivienda habitual siendo menor o igual a 35 a\\u00F1os?\", emoji:\"\\uD83C\\uDFE0\", label:\"Primera vivienda habitual de j\\u00F3venes\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"salud_val\", question:\"\\u00BFHas tenido gastos de enfermedad, fertilidad, cristales graduados o lentes de contacto?\", emoji:\"\\uD83E\\uDE7A\", label:\"Gastos de salud\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"viudedad_val\", question:\"\\u00BFHas quedado viudo\/a en los ejercicios 2023, 2024 o 2025?\", emoji:\"\\uD83D\\uDDA4\", label:\"Contribuyentes viudos\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" },\r\n      { id:\"un_pagador_val\", question:\"\\u00BFDebes declarar por tener m\\u00E1s de un pagador y cumples los requisitos de la Comunidad Valenciana?\", emoji:\"\\uD83D\\uDCC4\", label:\"M\\u00E1s de un pagador\", amountText:\"Cuant\\u00EDa variable seg\\u00FAn manual AEAT\" }\r\n    ]\r\n  };\r\n\r\n  Object.keys(DEDUCCIONES_AUTONOMICAS_EXTRA).forEach(function(ccaaCode) {\r\n    if (!DEDUCCIONES_AUTONOMICAS[ccaaCode]) DEDUCCIONES_AUTONOMICAS[ccaaCode] = [];\r\n    DEDUCCIONES_AUTONOMICAS[ccaaCode] = DEDUCCIONES_AUTONOMICAS[ccaaCode].concat(DEDUCCIONES_AUTONOMICAS_EXTRA[ccaaCode]);\r\n  });\r\n\r\n  function repairMojibake(str) {\r\n    return str;\r\n  }\r\n\r\n  function ded(id, label, emoji, maxOrientativo, max, question) {\r\n    var safeLabel = repairMojibake(label);\r\n    var safeEmoji = repairMojibake(emoji);\r\n    var safeQuestion = question ? repairMojibake(question) : ('\\u00BFTe aplica esta deducci\\u00F3n auton\\u00F3mica? ' + safeLabel);\r\n    var item = {\r\n      id: id,\r\n      label: safeLabel,\r\n      emoji: safeEmoji,\r\n      question: safeQuestion\r\n    };\r\n    if (typeof maxOrientativo === 'number' && maxOrientativo > 0) item.maxOrientativo = maxOrientativo;\r\n    if (typeof max === 'number' && max > 0) item.max = max;\r\n    return item;\r\n  }\r\n\r\n  \/* ============================================================\r\n     DEDUCCIONES AUTON\u00d3MICAS \u2014 GU\u00cdA OFICIAL AEAT RENTA 2025\r\n     Se redefine el cat\u00e1logo efectivo con las deducciones listadas\r\n     en la gu\u00eda auton\u00f3mica oficial para las CCAA soportadas.\r\n     ============================================================ *\/\r\n  DEDUCCIONES_AUTONOMICAS = {};\r\n\r\n  DEDUCCIONES_AUTONOMICAS.AND = [\r\n    ded('vivienda_joven_and', 'Inversi\u00f3n en vivienda habitual protegida o por personas j\u00f3venes', '\ud83c\udfe0', 500),\r\n    ded('alquiler_and', 'Alquiler de vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('nacimiento_and', 'Nacimiento, adopci\u00f3n o acogimiento familiar de menores', '\ud83d\udc76', 300),\r\n    ded('adopcion_int_and', 'Adopci\u00f3n internacional', '\ud83d\udc76', 300),\r\n    ded('monoparental_and', 'Familia monoparental con ascendientes mayores de 75 a\u00f1os', '\ud83d\udc6a', 350),\r\n    ded('discap_contrib_and', 'Contribuyente con discapacidad', '\u267f', 250),\r\n    ded('discap_conyuge_and', 'Discapacidad del c\u00f3nyuge o pareja de hecho', '\u267f', 250),\r\n    ded('asistencia_discap_and', 'Asistencia a personas con discapacidad', '\u267f', 250),\r\n    ded('ayuda_domestica_and', 'Ayuda dom\u00e9stica', '\ud83e\uddf9', 300),\r\n    ded('familia_num_and', 'Familia numerosa', '\ud83d\udc6a', 600),\r\n    ded('celiaca_and', 'Familias con enfermedad cel\u00edaca diagnosticada', '\ud83e\ude7a', 200),\r\n    ded('donativos_eco_and', 'Donativos con finalidad ecol\u00f3gica', '\u2764\ufe0f', 150),\r\n    ded('acciones_and', 'Inversi\u00f3n en acciones o participaciones de sociedades mercantiles', '\ud83d\ude80', 1000),\r\n    ded('defensa_juridica_and', 'Gastos de defensa jur\u00eddica de la relaci\u00f3n laboral', '\u2696\ufe0f', 200),\r\n    ded('gastos_edu_and', 'Gastos educativos', '\ud83d\udcda', 150),\r\n    ded('deporte_and', 'Ejercicio f\u00edsico y pr\u00e1ctica deportiva', '\ud83c\udfcb\ufe0f', 150),\r\n    ded('veterinarios_and', 'Gastos veterinarios y perros de asistencia', '\ud83d\udc3e', 150)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.ARA = [\r\n    ded('nacimiento_tercero_ara', 'Nacimiento o adopci\u00f3n del tercer hijo o sucesivos', '\ud83d\udc76', 300),\r\n    ded('nacimiento_discap_ara', 'Nacimiento o adopci\u00f3n de hijo con discapacidad igual o superior al 33%', '\u267f', 300),\r\n    ded('adopcion_int_ara', 'Adopci\u00f3n internacional de ni\u00f1os', '\ud83d\udc76', 300),\r\n    ded('dependientes_ara', 'Cuidado de personas dependientes', '\ud83e\udd1d', 250),\r\n    ded('donaciones_eco_ara', 'Donaciones con finalidad ecol\u00f3gica y en I+D cient\u00edfico y t\u00e9cnico', '\u2764\ufe0f', 150),\r\n    ded('vivienda_terrorismo_ara', 'Adquisici\u00f3n de vivienda habitual por v\u00edctimas del terrorismo', '\ud83c\udfe0', 500),\r\n    ded('mab_ara', 'Inversi\u00f3n en acciones de entidades del Mercado Alternativo Burs\u00e1til', '\ud83d\ude80', 1000),\r\n    ded('nuevas_entidades_ara', 'Inversi\u00f3n en acciones o participaciones de entidades nuevas o de reciente creaci\u00f3n', '\ud83d\ude80', 1000),\r\n    ded('vivienda_rural_ara', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual en n\u00facleos rurales o an\u00e1logos', '\ud83c\udf3e', 500),\r\n    ded('libros_ara', 'Adquisici\u00f3n de libros de texto y material escolar', '\ud83d\udcda', 150),\r\n    ded('dacion_pago_ara', 'Arrendamiento de vivienda habitual vinculado a daci\u00f3n en pago', '\ud83c\udfe0', 500),\r\n    ded('arrendador_social_ara', 'Arrendamiento de vivienda social (deducci\u00f3n del arrendador)', '\ud83d\udd11', 400),\r\n    ded('mayores70_ara', 'Contribuyentes mayores de 70 a\u00f1os', '\ud83e\uddd3', 200),\r\n    ded('nacimiento_pueblo_ara', 'Nacimiento o adopci\u00f3n del primer y\/o segundo hijo en poblaciones de menos de 10.000 habitantes', '\ud83d\udc76', 300),\r\n    ded('guarderia_ara', 'Gastos de guarder\u00eda de hijos menores de 3 a\u00f1os', '\ud83c\udf7c', 300),\r\n    ded('economia_social_ara', 'Inversi\u00f3n en entidades de la econom\u00eda social', '\ud83d\ude80', 1000),\r\n    ded('refuerzo_ara', 'Gastos en clases de apoyo o refuerzo', '\ud83d\udcda', 150),\r\n    ded('autonomia_discap_ara', 'Gastos en formaci\u00f3n para la autonom\u00eda y vida independiente de menores con discapacidad', '\u267f', 250),\r\n    ded('residencia_municipio_ara', 'Residencia en determinados municipios', '\ud83c\udf3e', 300)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.AST = [\r\n    ded('acog_mayores_ast', 'Acogimiento no remunerado de mayores de 65 a\u00f1os', '\ud83e\uddd3', 250),\r\n    ded('vivienda_discap_ast', 'Adquisici\u00f3n o adecuaci\u00f3n de vivienda habitual para contribuyentes con discapacidad', '\u267f', 500),\r\n    ded('vivienda_protegida_ast', 'Inversi\u00f3n en vivienda habitual protegida', '\ud83c\udfe0', 500),\r\n    ded('alquiler_ast', 'Arrendamiento de vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('adopcion_int_ast', 'Adopci\u00f3n internacional de menores', '\ud83d\udc76', 300),\r\n    ded('partos_multiples_ast', 'Partos m\u00faltiples o dos o m\u00e1s adopciones en la misma fecha', '\ud83d\udc76', 300),\r\n    ded('familia_num_ast', 'Familias numerosas', '\ud83d\udc6a', 600),\r\n    ded('familia_mono_ast', 'Familias monoparentales', '\ud83d\udc6a', 350),\r\n    ded('acogimiento_menores_ast', 'Acogimiento familiar de menores', '\ud83e\udd1d', 250),\r\n    ded('forestal_ast', 'Certificaci\u00f3n de la gesti\u00f3n forestal sostenible', '\ud83c\udf32', 250),\r\n    ded('centros_0_3_ast', 'Gastos de descendientes en centros de cero a tres a\u00f1os', '\ud83c\udf7c', 300),\r\n    ded('libros_ast', 'Adquisici\u00f3n de libros de texto y material escolar', '\ud83d\udcda', 150),\r\n    ded('nacimiento_despob_ast', 'Nacimiento o adopci\u00f3n de segundo y sucesivos hijos en concejos en riesgo de despoblamiento', '\ud83d\udc76', 300),\r\n    ded('autonomos_despob_ast', 'Alta como aut\u00f3nomo en concejos en riesgo de despoblamiento', '\ud83d\udcbc', 300),\r\n    ded('transporte_ast', 'Gastos de transporte p\u00fablico en concejos en riesgo de despoblamiento', '\ud83d\ude8c', 150),\r\n    ded('formacion_id_ast', 'Gastos de formaci\u00f3n por trabajos cualificados ligados a I+D o actividades t\u00e9cnicas', '\ud83c\udf93', 250),\r\n    ded('traslado_laboral_ast', 'Traslado del domicilio fiscal a Asturias por motivos laborales', '\ud83e\uddf3', 300),\r\n    ded('vivienda_colectivos_ast', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual para determinados colectivos', '\ud83c\udfe0', 500),\r\n    ded('vehiculo_electrico_ast', 'Adquisici\u00f3n de veh\u00edculos el\u00e9ctricos', '\ud83d\ude97', 500),\r\n    ded('cuidado_descendientes_ast', 'Cuidado de descendientes o adoptados de hasta 25 a\u00f1os', '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67', 250),\r\n    ded('emancipacion_ast', 'Emancipaci\u00f3n de j\u00f3venes de hasta 35 a\u00f1os', '\ud83e\uddf3', 300),\r\n    ded('ayudas_ela_ast', 'Ayudas o subvenciones para enfermos de ELA', '\ud83e\uddec', 300),\r\n    ded('gastos_arrendador_ast', 'Gastos derivados del arrendamiento de viviendas', '\ud83d\udd11', 400),\r\n    ded('gastos_vitales_ast', 'Gastos vitales de contribuyentes de hasta 35 a\u00f1os', '\ud83e\ude7a', 200),\r\n    ded('fallecimiento_progenitor_ast', 'Descendientes por fallecimiento de progenitor por accidente laboral', '\ud83d\udda4', 250),\r\n    ded('acciones_nuevas_ast', 'Inversi\u00f3n en acciones o participaciones de nuevas entidades', '\ud83d\ude80', 1000),\r\n    ded('celiaca_ast', 'Gastos derivados de enfermedad cel\u00edaca diagnosticada', '\ud83e\ude7a', 200)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.BAL = [\r\n    ded('sostenibilidad_bal', 'Inversiones de mejora de sostenibilidad en la vivienda habitual', '\u267b\ufe0f', 700),\r\n    ded('alquiler_bal', 'Arrendamiento de vivienda habitual en Islas Baleares', '\ud83c\udfe0', 500),\r\n    ded('emergencia_bal', 'Subvenciones por zona afectada gravemente por emergencia de protecci\u00f3n civil', '\ud83d\udedf', 250),\r\n    ded('libros_bal', 'Gastos de adquisici\u00f3n de libros de texto', '\ud83d\udcda', 150),\r\n    ded('idiomas_bal', 'Gastos de aprendizaje extraescolar de idiomas extranjeros', '\ud83d\udde3\ufe0f', 150),\r\n    ded('estudios_fuera_isla_bal', 'Estudios de educaci\u00f3n superior fuera de la isla de residencia', '\ud83c\udf93', 250),\r\n    ded('arrendador_primas_bal', 'Arrendador de vivienda permanente: primas de seguros', '\ud83d\udd11', 400),\r\n    ded('arrendador_gastos_bal', 'Arrendador de vivienda permanente: otros gastos', '\ud83d\udd11', 400),\r\n    ded('traslado_laboral_bal', 'Arrendamiento por traslado temporal de residencia por motivos laborales', '\ud83e\uddf3', 400),\r\n    ded('ocupacion_ilegal_bal', 'Gastos por vivienda ocupada ilegalmente o suspensi\u00f3n del lanzamiento', '\ud83c\udfe0', 300),\r\n    ded('donaciones_id_bal', 'Donaciones a entidades de investigaci\u00f3n, desarrollo o innovaci\u00f3n', '\u2764\ufe0f', 150),\r\n    ded('mecenazgo_cultural_bal', 'Mecenazgo cultural, cient\u00edfico, tecnol\u00f3gico y consumo cultural', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('mecenazgo_deportivo_bal', 'Mecenazgo deportivo', '\ud83c\udfc5', 150),\r\n    ded('lengua_bal', 'Donaciones a entidades de fomento de la lengua catalana', '\u2764\ufe0f', 150),\r\n    ded('tercer_sector_bal', 'Donaciones a entidades del tercer sector', '\u2764\ufe0f', 150),\r\n    ded('discapacidad_bal', 'Contribuyentes con discapacidad o con descendientes con discapacidad', '\u267f', 250),\r\n    ded('conciliacion_bal', 'Gastos de descendientes o acogidos menores de seis a\u00f1os por conciliaci\u00f3n', '\ud83c\udf7c', 300),\r\n    ded('nacimiento_bal', 'Nacimiento', '\ud83d\udc76', 300),\r\n    ded('adopcion_bal', 'Adopci\u00f3n', '\ud83d\udc76', 300),\r\n    ded('mayores_discap_bal', 'Gastos relativos a mayores de 65 a\u00f1os o personas con discapacidad', '\ud83e\uddd3', 250),\r\n    ded('ela_bal', 'Gastos derivados de la esclerosis lateral amiotr\u00f3fica (ELA)', '\ud83e\uddec', 300),\r\n    ded('acciones_bal', 'Inversi\u00f3n en acciones o participaciones de nuevas entidades', '\ud83d\ude80', 1000),\r\n    ded('autoocupacion_bal', 'Fomento de la autoocupaci\u00f3n', '\ud83d\udcbc', 300),\r\n    ded('plazas_dificiles_bal', 'Ocupaci\u00f3n de plazas declaradas de dif\u00edcil cobertura', '\ud83d\udccd', 300)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.CNT = [\r\n    ded('alquiler_cnt', 'Arrendamiento de vivienda habitual por j\u00f3venes, mayores y personas con discapacidad', '\ud83c\udfe0', 500),\r\n    ded('cuidado_familiares_cnt', 'Cuidado de familiares', '\ud83e\udd1d', 250),\r\n    ded('obras_mejora_cnt', 'Obras de mejora', '\u267b\ufe0f', 500),\r\n    ded('donativos_cnt', 'Donativos a fundaciones, Fondo Cantabria Coopera o asociaciones de apoyo a personas con discapacidad', '\u2764\ufe0f', 150),\r\n    ded('acogimiento_cnt', 'Acogimiento familiar de menores', '\ud83e\udd1d', 250),\r\n    ded('acciones_cnt', 'Inversi\u00f3n en acciones o participaciones de nuevas entidades', '\ud83d\ude80', 1000),\r\n    ded('salud_cnt', 'Gastos de enfermedad', '\ud83e\ude7a', 200),\r\n    ded('guarderia_cnt', 'Gastos de guarder\u00eda', '\ud83c\udf7c', 300),\r\n    ded('monoparental_cnt', 'Familias monoparentales', '\ud83d\udc6a', 350),\r\n    ded('nacimiento_cnt', 'Nacimiento o adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('alquiler_despob_cnt', 'Arrendamiento en municipios afectados por riesgo de despoblamiento', '\ud83c\udf3e', 500),\r\n    ded('guarderia_despob_cnt', 'Guarder\u00eda en municipios afectados por riesgo de despoblamiento', '\ud83c\udf7c', 300),\r\n    ded('traslado_despob_cnt', 'Traslado de residencia a municipio afectado por despoblamiento', '\ud83e\uddf3', 300),\r\n    ded('estudios_despob_cnt', 'Gastos de traslado por estudios en municipios afectados por despoblamiento', '\ud83c\udf93', 250),\r\n    ded('residencia_despob_cnt', 'Residencia habitual en municipio afectado por despoblamiento', '\ud83c\udf3e', 300),\r\n    ded('economia_social_cnt', 'Inversiones o donaciones a entidades de econom\u00eda social en Cantabria', '\ud83d\ude80', 1000),\r\n    ded('educacion_cnt', 'Gastos de educaci\u00f3n', '\ud83d\udcda', 150),\r\n    ded('ayuda_domestica_cnt', 'Ayuda dom\u00e9stica', '\ud83e\uddf9', 300),\r\n    ded('nuevo_extranjero_cnt', 'Inversiones de nuevos contribuyentes procedentes del extranjero', '\ud83c\udf0d', 1000),\r\n    ded('nuevos_residentes_cnt', 'Desplazamiento y permanencia de nuevos residentes en Cantabria', '\ud83e\uddf3', 300),\r\n    ded('arrendamiento_vacias_cnt', 'Arrendamiento de viviendas vac\u00edas', '\ud83d\udd11', 400)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.CLM = [\r\n    ded('nacimiento_clm', 'Nacimiento o adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('familia_num_clm', 'Familia numerosa', '\ud83d\udc6a', 600),\r\n    ded('familia_mono_clm', 'Familia monoparental', '\ud83d\udc6a', 350),\r\n    ded('educacion_clm', 'Libros de texto, idiomas y otros gastos relacionados con la educaci\u00f3n', '\ud83d\udcda', 150),\r\n    ded('guarderia_clm', 'Gastos de guarder\u00eda', '\ud83c\udf7c', 300),\r\n    ded('discapacidad_contrib_clm', 'Discapacidad del contribuyente', '\u267f', 250),\r\n    ded('discapacidad_familia_clm', 'Discapacidad de ascendientes o descendientes', '\u267f', 250),\r\n    ded('mayores75_clm', 'Contribuyentes mayores de 75 a\u00f1os', '\ud83e\uddd3', 200),\r\n    ded('ascendientes75_clm', 'Cuidado de ascendientes mayores de 75 a\u00f1os', '\ud83e\uddd3', 250),\r\n    ded('acog_menores_clm', 'Acogimiento familiar no remunerado de menores', '\ud83e\udd1d', 250),\r\n    ded('acog_mayores_clm', 'Acogimiento no remunerado de mayores de 65 a\u00f1os o con discapacidad', '\ud83e\udd1d', 250),\r\n    ded('alquiler_joven_clm', 'Arrendamiento de vivienda habitual por menores de 36 a\u00f1os', '\ud83c\udfe0', 500),\r\n    ded('alquiler_dacion_clm', 'Arrendamiento vinculado a determinadas operaciones de daci\u00f3n en pago', '\ud83c\udfe0', 500),\r\n    ded('alquiler_fn_clm', 'Arrendamiento de vivienda habitual por familias numerosas', '\ud83c\udfe0', 500),\r\n    ded('alquiler_mono_clm', 'Arrendamiento de vivienda habitual por familias monoparentales', '\ud83c\udfe0', 500),\r\n    ded('alquiler_discap_clm', 'Arrendamiento de vivienda habitual por personas con discapacidad', '\ud83c\udfe0', 500),\r\n    ded('donaciones_sociales_clm', 'Donaciones para cooperaci\u00f3n internacional, lucha contra pobreza y ayuda a personas con discapacidad', '\u2764\ufe0f', 150),\r\n    ded('donaciones_id_clm', 'Donaciones con finalidad en I+D e innovaci\u00f3n empresarial', '\u2764\ufe0f', 150),\r\n    ded('donaciones_culturales_clm', 'Donaciones y contribuciones al patrimonio cultural y fines culturales', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('intereses_vivienda_clm', 'Intereses por financiaci\u00f3n de primera vivienda habitual para menores de 40 a\u00f1os', '\ud83c\udfe0', 300),\r\n    ded('residencia_rural_clm', 'Residencia habitual en zonas rurales', '\ud83c\udf3e', 300),\r\n    ded('vivienda_rural_clm', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual en zonas rurales', '\ud83c\udf3e', 500),\r\n    ded('traslado_clm', 'Traslado de vivienda habitual', '\ud83e\uddf3', 300),\r\n    ded('acciones_clm', 'Inversi\u00f3n en acciones o participaciones de sociedades mercantiles', '\ud83d\ude80', 1000),\r\n    ded('economia_social_clm', 'Inversi\u00f3n en entidades de la econom\u00eda social', '\ud83d\ude80', 1000),\r\n    ded('ahorro_primera_viv_clm', 'Ahorro-inversi\u00f3n para adquisici\u00f3n o construcci\u00f3n de la primera vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('perros_asistencia_clm', 'Controles veterinarios y vacunaci\u00f3n de perros de asistencia', '\ud83d\udc3e', 150)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.CYL = [\r\n    ded('familia_num_cyl', 'Familia numerosa', '\ud83d\udc6a', 600),\r\n    ded('nacimiento_cyl', 'Nacimiento o adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('partos_multiples_cyl', 'Partos o adopciones m\u00faltiples', '\ud83d\udc76', 300),\r\n    ded('gastos_adopcion_cyl', 'Gastos de adopci\u00f3n', '\ud83d\udc76', 250),\r\n    ded('cuidado_hijos_cyl', 'Cuidado de hijos menores', '\ud83c\udf7c', 300),\r\n    ded('seg_social_hogar_cyl', 'Cuotas a la Seguridad Social de empleados del hogar', '\ud83e\uddf9', 300),\r\n    ded('discapacidad_cyl', 'Contribuyentes con discapacidad', '\u267f', 250),\r\n    ded('vivienda_joven_rural_cyl', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual por j\u00f3venes en el medio rural', '\ud83c\udf3e', 500),\r\n    ded('rehab_subvencionada_cyl', 'Rehabilitaci\u00f3n subvencionada para eficiencia, sostenibilidad o discapacidad', '\u267b\ufe0f', 700),\r\n    ded('rehab_alquiler_rural_cyl', 'Rehabilitaci\u00f3n de viviendas rurales destinadas al alquiler', '\ud83c\udf3e', 500),\r\n    ded('alquiler_joven_cyl', 'Arrendamiento de vivienda habitual por j\u00f3venes', '\ud83c\udfe0', 500),\r\n    ded('emprendimiento_cyl', 'Fomento del emprendimiento', '\ud83d\udcbc', 300),\r\n    ded('patrimonio_cyl', 'Recuperaci\u00f3n del patrimonio hist\u00f3rico, cultural y natural de Castilla y Le\u00f3n', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('donaciones_fundaciones_cyl', 'Donaciones a fundaciones de Castilla y Le\u00f3n y al patrimonio hist\u00f3rico, cultural y natural', '\u2764\ufe0f', 150),\r\n    ded('donaciones_id_cyl', 'Donaciones para investigaci\u00f3n, desarrollo e innovaci\u00f3n', '\u2764\ufe0f', 150),\r\n    ded('movilidad_sostenible_cyl', 'Fomento de la movilidad sostenible', '\ud83d\udeb2', 200),\r\n    ded('vivienda_nueva_cyl', 'Adquisici\u00f3n de vivienda de nueva construcci\u00f3n para residencia habitual', '\ud83c\udfe0', 500)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.CAT = [\r\n    ded('nacimiento_cat', 'Nacimiento, adopci\u00f3n o acogimiento familiar', '\ud83d\udc76', 300),\r\n    ded('viudedad_cat', 'Contribuyentes viudos en 2023, 2024 o 2025', '\ud83d\udda4', 200),\r\n    ded('alquiler_cat', 'Alquiler de la vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('rehabilitacion_cat', 'Rehabilitaci\u00f3n de la vivienda habitual', '\u267b\ufe0f', 500),\r\n    ded('intereses_estudios_cat', 'Intereses de pr\u00e9stamos para estudios de m\u00e1ster y doctorado', '\ud83c\udf93', 250),\r\n    ded('lengua_cat', 'Donativos a entidades que fomentan la lengua catalana u occitana', '\u2764\ufe0f', 150),\r\n    ded('id_cat', 'Donativos a entidades de investigaci\u00f3n cient\u00edfica, desarrollo e innovaci\u00f3n', '\u2764\ufe0f', 150),\r\n    ded('medio_ambiente_cat', 'Donaciones a entidades de medio ambiente y conservaci\u00f3n del patrimonio natural', '\u2764\ufe0f', 150),\r\n    ded('angel_inversor_cat', '\u00c1ngel inversor en acciones o participaciones sociales', '\ud83d\ude80', 1000),\r\n    ded('mas_pagadores_cat', 'Obligaci\u00f3n de presentar declaraci\u00f3n por raz\u00f3n de tener m\u00e1s de un pagador', '\ud83d\udcc4', 200),\r\n    ded('violencia_machista_cat', 'Alquiler de vivienda habitual de v\u00edctimas de violencia machista', '\ud83d\udee1\ufe0f', 500),\r\n    ded('cooperativas_cat', 'Inversi\u00f3n en sociedades cooperativas agrarias y de vivienda', '\ud83d\ude80', 1000),\r\n    ded('tramo_vivienda_cat', 'Tramo auton\u00f3mico de la deducci\u00f3n por inversi\u00f3n en vivienda habitual', '\ud83c\udfe0', 500)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.EXT = [\r\n    ded('trabajo_dependiente_ext', 'Trabajo dependiente', '\ud83d\udcbc', 250),\r\n    ded('partos_multiples_ext', 'Partos m\u00faltiples', '\ud83d\udc76', 300),\r\n    ded('acogimiento_ext', 'Acogimiento de menores', '\ud83e\udd1d', 250),\r\n    ded('cuidado_discap_ext', 'Cuidado de familiares con discapacidad', '\u267f', 250),\r\n    ded('cuidado_hijos_ext', 'Cuidado de hijos menores de hasta 14 a\u00f1os', '\ud83c\udf7c', 300),\r\n    ded('viudedad_ext', 'Contribuyentes viudos', '\ud83d\udda4', 200),\r\n    ded('vivienda_joven_ext', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual para j\u00f3venes o v\u00edctimas del terrorismo', '\ud83c\udfe0', 500),\r\n    ded('alquiler_ext', 'Arrendamiento de vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('arrendadores_ext', 'Arrendadores de viviendas vac\u00edas', '\ud83d\udd11', 400),\r\n    ded('rehab_rural_alq_ext', 'Rehabilitaci\u00f3n de viviendas rurales destinadas al alquiler', '\ud83c\udf3e', 500),\r\n    ded('material_escolar_ext', 'Compra de material escolar', '\ud83d\udcda', 150),\r\n    ded('acciones_ext', 'Inversi\u00f3n en acciones o participaciones sociales en sociedades', '\ud83d\ude80', 1000),\r\n    ded('vivienda_rural_ext', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual en zonas rurales', '\ud83c\udf3e', 500),\r\n    ded('residencia_rural_ext', 'Residencia habitual en municipios y entidades locales menores de menos de 3.000 habitantes', '\ud83c\udf3e', 300),\r\n    ded('intereses_joven_ext', 'Intereses de financiaci\u00f3n ajena para vivienda habitual de j\u00f3venes', '\ud83c\udfe0', 300),\r\n    ded('donaciones_ext', 'Donaciones de dinero a entidades culturales, art\u00edsticas o patrocinio a deportistas', '\u2764\ufe0f', 150),\r\n    ded('traslado_ext', 'Traslado de residencia habitual a Extremadura', '\ud83e\uddf3', 300),\r\n    ded('ayudas_ela_ext', 'Ayudas o subvenciones para personas con ELA', '\ud83e\uddec', 300),\r\n    ded('ela_familia_ext', 'ELA para personas afectadas y sus familiares', '\ud83e\uddec', 300)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.GAL = [\r\n    ded('nacimiento_gal', 'Nacimiento o adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('dos_hijos_gal', 'Familias con dos hijos e hijas', '\ud83d\udc6a', 350),\r\n    ded('familia_num_gal', 'Familia numerosa', '\ud83d\udc6a', 600),\r\n    ded('acogimiento_gal', 'Acogimiento de menores', '\ud83e\udd1d', 250),\r\n    ded('cuidado_hijos_gal', 'Cuidado de hijos menores', '\ud83c\udf7c', 300),\r\n    ded('discap_65_gal', 'Contribuyentes con discapacidad mayores de 65 a\u00f1os que precisen ayuda de terceras personas', '\u267f', 250),\r\n    ded('alquiler_gal', 'Alquiler de la vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('internet_gal', 'Uso de nuevas tecnolog\u00edas en hogares gallegos', '\ud83c\udf10', 100),\r\n    ded('acciones_gal', 'Inversi\u00f3n en acciones o participaciones de entidades nuevas o de reciente creaci\u00f3n', '\ud83d\ude80', 1000),\r\n    ded('acciones_financiacion_gal', 'Inversi\u00f3n y financiaci\u00f3n en entidades nuevas o de reciente creaci\u00f3n', '\ud83d\ude80', 1000),\r\n    ded('mab_gal', 'Inversi\u00f3n en acciones de entidades del mercado alternativo bolsista', '\ud83d\ude80', 1000),\r\n    ded('donaciones_id_gal', 'Donaciones con finalidad en investigaci\u00f3n y desarrollo cient\u00edfico e innovaci\u00f3n tecnol\u00f3gica', '\u2764\ufe0f', 150),\r\n    ded('renovables_gal', 'Instalaciones de climatizaci\u00f3n o agua caliente con energ\u00edas renovables en vivienda habitual', '\u267b\ufe0f', 700),\r\n    ded('centros_historicos_gal', 'Rehabilitaci\u00f3n de inmuebles situados en centros hist\u00f3ricos', '\ud83c\udfdb\ufe0f', 500),\r\n    ded('agrarias_gal', 'Inversi\u00f3n en empresas que desarrollen actividades agrarias', '\ud83d\ude80', 1000),\r\n    ded('peifoga_gal', 'Subvenciones o ayudas por da\u00f1os de incendios forestales PEIFOGA 2025', '\ud83d\udedf', 250),\r\n    ded('eficiencia_gal', 'Obras de mejora de eficiencia energ\u00e9tica en edificios o viviendas unifamiliares', '\u267b\ufe0f', 700),\r\n    ded('deportistas_gal', 'Ayudas y subvenciones para deportistas de alto nivel de Galicia', '\ud83c\udfc5', 200),\r\n    ded('aldeas_modelo_gal', 'Adquisici\u00f3n y rehabilitaci\u00f3n de viviendas en proyectos de aldeas modelo', '\ud83c\udf3e', 500),\r\n    ded('proyectos_interes_gal', 'Inversi\u00f3n en entidades con proyectos de especial inter\u00e9s p\u00fablico, social o econ\u00f3mico', '\ud83d\ude80', 1000),\r\n    ded('adecuacion_alquiler_gal', 'Adecuaci\u00f3n de inmueble vac\u00edo con destino al arrendamiento como vivienda', '\ud83d\udd11', 400),\r\n    ded('viviendas_vacias_gal', 'Arrendamiento de viviendas vac\u00edas', '\ud83d\udd11', 400),\r\n    ded('ela_gal', 'Ayudas y subvenciones recibidas por personas con diagn\u00f3stico de ELA', '\ud83e\uddec', 300),\r\n    ded('libros_gal', 'Adquisici\u00f3n de libros de texto y material escolar', '\ud83d\udcda', 150),\r\n    ded('talidomida_gal', 'Ayudas recibidas por personas afectadas por la talidomida', '\ud83e\ude7a', 250)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.MAD = [\r\n    ded('nacimiento_mad', 'Nacimiento o adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('adopcion_int_mad', 'Adopci\u00f3n internacional de ni\u00f1os', '\ud83d\udc76', 300),\r\n    ded('acogimiento_menores_mad', 'Acogimiento familiar de menores', '\ud83e\udd1d', 250),\r\n    ded('acog_mayores_mad', 'Acogimiento no remunerado de mayores de 65 a\u00f1os o con discapacidad', '\ud83e\uddd3', 250),\r\n    ded('cuidado_asc_mad', 'Cuidado de ascendientes', '\ud83e\uddd3', 250),\r\n    ded('alquiler_mad', 'Arrendamiento de la vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('gastos_arrendamiento_mad', 'Gastos derivados del arrendamiento de viviendas', '\ud83d\udd11', 400),\r\n    ded('vacias_mad', 'Arrendamiento de viviendas vac\u00edas', '\ud83d\udd11', 400),\r\n    ded('donativos_mad', 'Donativos a fundaciones y clubes deportivos', '\u2764\ufe0f', 150),\r\n    ded('hipoteca_intereses_mad', 'Incremento de costes de financiaci\u00f3n ajena para vivienda habitual', '\ud83c\udfe0', 300),\r\n    ded('traslado_despob_mad', 'Cambio de residencia a municipio en riesgo de despoblaci\u00f3n', '\ud83c\udf3e', 300),\r\n    ded('vivienda_despob_mad', 'Adquisici\u00f3n de vivienda habitual en municipios en riesgo de despoblaci\u00f3n', '\ud83c\udf3e', 500),\r\n    ded('educacion_mad', 'Gastos educativos', '\ud83d\udcda', 150),\r\n    ded('cuidado_mad', 'Cuidado de hijos menores de 3 a\u00f1os, mayores dependientes y personas con discapacidad', '\ud83c\udf7c', 300),\r\n    ded('intereses_joven_mad', 'Intereses de pr\u00e9stamos para adquisici\u00f3n de vivienda por j\u00f3venes menores de 30 a\u00f1os', '\ud83c\udfe0', 300),\r\n    ded('intereses_estudios_mad', 'Intereses de pr\u00e9stamos para estudios de Grado, M\u00e1ster y Doctorado', '\ud83c\udf93', 250),\r\n    ded('vivienda_nacimiento_mad', 'Adquisici\u00f3n de vivienda habitual por nacimiento o adopci\u00f3n de hijos', '\ud83c\udfe0', 500),\r\n    ded('familia_num_mad', 'Obtenci\u00f3n de la condici\u00f3n de familia numerosa', '\ud83d\udc6a', 600),\r\n    ded('dos_desc_mad', 'Familias con dos o m\u00e1s descendientes e ingresos reducidos', '\ud83d\udc6a', 350),\r\n    ded('acciones_mad', 'Inversi\u00f3n en acciones o participaciones de nuevas entidades', '\ud83d\ude80', 1000),\r\n    ded('autoempleo_mad', 'Fomento del autoempleo de j\u00f3venes menores de 35 a\u00f1os', '\ud83d\udcbc', 300),\r\n    ded('mab_mad', 'Inversiones en entidades cotizadas en el mercado alternativo burs\u00e1til', '\ud83d\ude80', 1000),\r\n    ded('nuevo_extranjero_mad', 'Inversiones de nuevos contribuyentes procedentes del extranjero', '\ud83c\udf0d', 1000)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.MUR = [\r\n    ded('vivienda_joven_mur', 'Inversi\u00f3n en vivienda habitual por j\u00f3venes de hasta 40 a\u00f1os', '\ud83c\udfe0', 500),\r\n    ded('donativos_patrimonio_mur', 'Donativos para patrimonio cultural o promoci\u00f3n de actividades culturales, sociales o medioambientales', '\u2764\ufe0f', 150),\r\n    ded('donativos_biosanitaria_mur', 'Donativos para la investigaci\u00f3n biosanitaria', '\u2764\ufe0f', 150),\r\n    ded('donacion_bienes_mur', 'Donaci\u00f3n de bienes inscritos en el Inventario del Patrimonio Cultural de Murcia', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('guarderia_mur', 'Gastos de guarder\u00eda', '\ud83c\udf7c', 300),\r\n    ded('ahorro_agua_mur', 'Inversiones en dispositivos dom\u00e9sticos de ahorro de agua', '\ud83d\udca7', 250),\r\n    ded('renovables_mur', 'Inversi\u00f3n en instalaciones de recursos energ\u00e9ticos renovables', '\u267b\ufe0f', 700),\r\n    ded('acciones_mur', 'Inversi\u00f3n en acciones o participaciones de entidades nuevas o de reciente creaci\u00f3n', '\ud83d\ude80', 1000),\r\n    ded('mab_mur', 'Inversi\u00f3n en acciones del segmento de empresas en expansi\u00f3n del mercado alternativo burs\u00e1til', '\ud83d\ude80', 1000),\r\n    ded('material_mur', 'Gastos en material escolar y libros de texto', '\ud83d\udcda', 150),\r\n    ded('nacimiento_mur', 'Nacimiento o adopci\u00f3n', '\ud83d\udc76', 300),\r\n    ded('discapacidad_mur', 'Contribuyentes con discapacidad', '\u267f', 250),\r\n    ded('conciliacion_mur', 'Conciliaci\u00f3n', '\ud83c\udf7c', 300),\r\n    ded('acog_mayores_mur', 'Acogimiento no remunerado de mayores de 65 a\u00f1os o personas con discapacidad', '\ud83e\uddd3', 250),\r\n    ded('alquiler_mur', 'Arrendamiento de vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('mujer_trab_mur', 'Mujeres trabajadoras', '\ud83d\udcbc', 250),\r\n    ded('vivienda_familia_num_mur', 'Nueva vivienda habitual o ampliaci\u00f3n por familias numerosas', '\ud83c\udfe0', 500),\r\n    ded('monoparental_mur', 'Familia monoparental', '\ud83d\udc6a', 350),\r\n    ded('idiomas_mur', 'Gastos de ense\u00f1anza de idiomas', '\ud83d\udde3\ufe0f', 150),\r\n    ded('internet_mur', 'Gastos de acceso a Internet', '\ud83c\udf10', 100),\r\n    ded('vehiculo_elec_mur', 'Gastos en adquisici\u00f3n de veh\u00edculos el\u00e9ctricos', '\ud83d\ude97', 500),\r\n    ded('recarga_mur', 'Gastos en instalaci\u00f3n de infraestructuras de recarga de veh\u00edculos el\u00e9ctricos', '\ud83d\udd0c', 300),\r\n    ded('gafas_mur', 'Cristales graduados, lentes de contacto y soluciones de limpieza', '\ud83d\udc53', 150),\r\n    ded('deporte_mur', 'Gastos asociados a la pr\u00e1ctica del deporte y actividades saludables', '\ud83c\udfcb\ufe0f', 150),\r\n    ded('enfermedades_raras_mur', 'Gastos asociados a las enfermedades raras', '\ud83e\ude7a', 250),\r\n    ded('economia_social_mur', 'Inversi\u00f3n en entidades de econom\u00eda social', '\ud83d\ude80', 1000),\r\n    ded('veterinarios_mur', 'Gastos veterinarios', '\ud83d\udc3e', 150),\r\n    ded('vivienda_trans_mur', 'R\u00e9gimen transitorio de la deducci\u00f3n por inversi\u00f3n en vivienda habitual', '\ud83c\udfe0', 500)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.RIO = [\r\n    ded('nacimiento_rio', 'Nacimiento y adopci\u00f3n de hijos', '\ud83d\udc76', 300),\r\n    ded('vivienda_peq_rio', 'Adquisici\u00f3n, construcci\u00f3n o rehabilitaci\u00f3n de vivienda habitual en peque\u00f1os municipios', '\ud83c\udf3e', 500),\r\n    ded('escuelas_peq_rio', 'Escuelas infantiles o cuidado de hijos de 0 a 3 a\u00f1os en peque\u00f1os municipios', '\ud83c\udf7c', 300),\r\n    ded('acogimiento_rio', 'Acogimiento familiar de urgencia, temporal o permanente o guarda con fines de adopci\u00f3n', '\ud83e\udd1d', 250),\r\n    ded('hijo_0_3_peq_rio', 'Hijos de 0 a 3 a\u00f1os con residencia o traslado a peque\u00f1os municipios', '\ud83c\udf7c', 300),\r\n    ded('hijo_0_3_rio', 'Hijos de 0 a 3 a\u00f1os en escuelas infantiles de cualquier municipio', '\ud83c\udf7c', 300),\r\n    ded('vehiculo_elec_rio', 'Adquisici\u00f3n de veh\u00edculos el\u00e9ctricos nuevos', '\ud83d\ude97', 500),\r\n    ded('fijacion_rural_rio', 'Fijaci\u00f3n de poblaci\u00f3n ocupada en el medio rural', '\ud83c\udf3e', 300),\r\n    ded('internet_rio', 'Acceso a Internet para j\u00f3venes emancipados', '\ud83c\udf10', 100),\r\n    ded('luz_gas_rio', 'Suministro de luz y gas de uso dom\u00e9stico para j\u00f3venes emancipados', '\ud83d\udca1', 100),\r\n    ded('vivienda_joven_rio', 'Inversi\u00f3n en vivienda habitual de j\u00f3venes menores de 36 a\u00f1os', '\ud83c\udfe0', 500),\r\n    ded('alquiler_joven_rio', 'Arrendamiento de vivienda habitual para menores de 36 a\u00f1os', '\ud83c\udfe0', 500),\r\n    ded('bicicletas_rio', 'Adquisici\u00f3n de bicicletas de pedaleo no asistido', '\ud83d\udeb2', 150),\r\n    ded('rehab_rio', 'Cantidades invertidas en obras de rehabilitaci\u00f3n de la vivienda habitual', '\u267b\ufe0f', 500),\r\n    ded('adquisicion_joven_rio', 'Adquisici\u00f3n o construcci\u00f3n de vivienda habitual para j\u00f3venes', '\ud83c\udfe0', 500),\r\n    ded('segunda_viv_rural_rio', 'Adquisici\u00f3n o rehabilitaci\u00f3n de segunda vivienda en el medio rural', '\ud83c\udf3e', 400),\r\n    ded('adecuacion_discap_rio', 'Obras de adecuaci\u00f3n de vivienda habitual para personas con discapacidad', '\u267f', 500),\r\n    ded('mecenazgo_rio', 'Donaciones en materia de mecenazgo', '\u2764\ufe0f', 150),\r\n    ded('patrimonio_rio', 'Cantidades destinadas al patrimonio hist\u00f3rico de La Rioja', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('deporte_rio', 'Fomento del ejercicio f\u00edsico y la pr\u00e1ctica deportiva', '\ud83c\udfcb\ufe0f', 150),\r\n    ded('ela_rio', 'Deducci\u00f3n destinada a enfermos de ELA', '\ud83e\uddec', 300),\r\n    ded('agrarias_rio', 'Cuotas satisfechas a organizaciones profesionales agrarias', '\ud83d\ude9c', 150),\r\n    ded('celiaca_rio', 'Enfermedad cel\u00edaca diagnosticada', '\ud83e\ude7a', 200),\r\n    ded('hipoteca_rio', 'Subida de intereses de pr\u00e9stamos hipotecarios para vivienda habitual', '\ud83c\udfe0', 300)\r\n  ];\r\n\r\n  DEDUCCIONES_AUTONOMICAS.VAL = [\r\n    ded('nacimiento_val', 'Nacimiento, adopci\u00f3n, delegaci\u00f3n de guarda con fines de adopci\u00f3n o acogimiento familiar', '\ud83d\udc76', 300),\r\n    ded('multiples_val', 'Nacimiento o adopci\u00f3n m\u00faltiples', '\ud83d\udc76', 300),\r\n    ded('discap_hijo_val', 'Nacimiento, adopci\u00f3n, acogimiento o delegaci\u00f3n de guarda de personas con discapacidad', '\u267f', 300),\r\n    ded('familia_val', 'Familia numerosa o monoparental', '\ud83d\udc6a', 600),\r\n    ded('guarderia_val', 'Custodia no ocasional en guarder\u00edas y centros de primer ciclo de educaci\u00f3n infantil', '\ud83c\udf7c', 300),\r\n    ded('conciliacion_val', 'Conciliaci\u00f3n del trabajo con la vida familiar', '\ud83c\udf7c', 300),\r\n    ded('discapacidad_val', 'Contribuyentes con discapacidad de 65 a\u00f1os o m\u00e1s y grado igual o superior al 33%', '\u267f', 250),\r\n    ded('ascendientes_val', 'Ascendientes mayores de 75 a\u00f1os o mayores de 65 con discapacidad', '\ud83e\uddd3', 250),\r\n    ded('empleados_hogar_val', 'Contrataci\u00f3n indefinida de empleados de hogar para cuidado de personas', '\ud83e\uddf9', 300),\r\n    ded('arrendador_val', 'Rentas derivadas de arrendamientos con precio no superior al de referencia', '\ud83d\udd11', 400),\r\n    ded('primera_vivienda_val', 'Primera adquisici\u00f3n de vivienda habitual por contribuyentes de hasta 35 a\u00f1os', '\ud83c\udfe0', 500),\r\n    ded('vivienda_discap_val', 'Adquisici\u00f3n de vivienda habitual por personas con discapacidad', '\u267f', 500),\r\n    ded('ayudas_viv_val', 'Adquisici\u00f3n o rehabilitaci\u00f3n de vivienda habitual con ayudas p\u00fablicas', '\ud83c\udfe0', 500),\r\n    ded('alquiler_val', 'Arrendamiento o cesi\u00f3n en uso de la vivienda habitual', '\ud83c\udfe0', 500),\r\n    ded('alquiler_otro_municipio_val', 'Arrendamiento por realizaci\u00f3n de actividad en distinto municipio', '\ud83e\uddf3', 400),\r\n    ded('autoconsumo_val', 'Instalaciones de autoconsumo o generaci\u00f3n de energ\u00eda con fuentes renovables', '\u267b\ufe0f', 700),\r\n    ded('ecologica_val', 'Donaciones con finalidad ecol\u00f3gica', '\u2764\ufe0f', 150),\r\n    ded('bienes_culturales_val', 'Donaciones de bienes integrantes del Patrimonio Cultural Valenciano', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('donativos_patrimonio_val', 'Donativos para conservaci\u00f3n y restauraci\u00f3n del Patrimonio Cultural Valenciano', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('conservacion_patrimonio_val', 'Cantidades destinadas a la conservaci\u00f3n y restauraci\u00f3n del Patrimonio Cultural Valenciano', '\ud83c\udfdb\ufe0f', 150),\r\n    ded('lengua_val', 'Donaciones destinadas al fomento de la Lengua Valenciana', '\u2764\ufe0f', 150),\r\n    ded('donaciones_culturales_val', 'Donaciones o cesiones para fines culturales, cient\u00edficos o deportivos no profesionales', '\u2764\ufe0f', 150),\r\n    ded('dos_desc_val', 'Contribuyentes con dos o m\u00e1s descendientes', '\ud83d\udc6a', 350),\r\n    ded('hipoteca_val', 'Incremento de costes de financiaci\u00f3n ajena en la inversi\u00f3n de vivienda habitual', '\ud83c\udfe0', 300),\r\n    ded('material_escolar_val', 'Cantidades destinadas a adquisici\u00f3n de material escolar', '\ud83d\udcda', 150),\r\n    ded('obras_2025_val', 'Obras de conservaci\u00f3n o mejora de sostenibilidad y accesibilidad en vivienda habitual', '\u267b\ufe0f', 500),\r\n    ded('obras_2014_2015_val', 'Obras de conservaci\u00f3n o mejora en vivienda habitual efectuadas en 2014 y 2015', '\u267b\ufe0f', 300),\r\n    ded('abonos_culturales_val', 'Cantidades destinadas a abonos culturales', '\ud83c\udfad', 150),\r\n    ded('vehiculos_val', 'Adquisici\u00f3n de veh\u00edculos nuevos de las categor\u00edas incluidas en la Orden 5\/2020', '\ud83d\ude97', 500),\r\n    ded('acciones_val', 'Inversi\u00f3n en adquisici\u00f3n de acciones o participaciones sociales en entidades nuevas o de reciente creaci\u00f3n', '\ud83d\ude80', 1000),\r\n    ded('despoblamiento_val', 'Residencia habitual en municipio en riesgo de despoblamiento', '\ud83c\udf3e', 300),\r\n    ded('fertilidad_val', 'Tratamientos de fertilidad realizados en cl\u00ednicas o centros autorizados', '\ud83e\ude7a', 200),\r\n    ded('salud_val', 'Determinados gastos de salud', '\ud83e\ude7a', 200),\r\n    ded('deporte_val', 'Gastos asociados a la pr\u00e1ctica del deporte y actividades saludables', '\ud83c\udfcb\ufe0f', 150),\r\n    ded('erte_covid_val', 'Ayudas p\u00fablicas por ERTE o reducci\u00f3n de jornada por conciliaci\u00f3n familiar Covid-19', '\ud83d\udedf', 250),\r\n    ded('id_covid_val', 'Donaciones para investigaci\u00f3n, innovaci\u00f3n y desarrollo cient\u00edfico frente al Covid-19', '\u2764\ufe0f', 150),\r\n    ded('crisis_covid_val', 'Donaciones para gastos ocasionados por la crisis sanitaria Covid-19', '\u2764\ufe0f', 150),\r\n    ded('dana_vivienda_val', 'DANA 2024: cantidades para paliar da\u00f1os materiales en vivienda habitual', '\ud83d\udedf', 300),\r\n    ded('dana_fondos_val', 'DANA 2024: aportaciones a fondos propios de entidades que desarrollen actividades econ\u00f3micas', '\ud83d\ude80', 1000)\r\n  ];\r\n\r\n  var DEDUCCIONES_ESTATALES = [\r\n    ded('donativos_est', 'Donativos a entidades acogidas a la Ley 49\/2002', '\\u2764\\uFE0F', 150),\r\n    ded('maternidad_est', 'Maternidad y cuidado de hijos menores de 3 a\\u00F1os', '\\uD83D\\uDC76', 1200),\r\n    ded('guarderia_est', 'Incremento por gastos de guarder\\u00EDa o centro infantil autorizado', '\\uD83E\\uDDF8', 1000),\r\n    ded('familia_num_est', 'Familia numerosa', '\\uD83D\\uDC6A', 1200),\r\n    ded('desc_discap_est', 'Descendiente con discapacidad a cargo', '\\u267F', 1200),\r\n    ded('asc_discap_est', 'Ascendiente con discapacidad a cargo', '\\u267F', 1200),\r\n    ded('conyuge_discap_est', 'C\\u00F3nyuge no separado legalmente con discapacidad a cargo', '\\u267F', 1200),\r\n    ded('dos_hijos_est', 'Ascendiente separado o sin v\\u00EDnculo matrimonial con dos hijos sin anualidades por alimentos', '\\uD83D\\uDC6A', 1200),\r\n    ded('vivienda_trans_est', 'R\\u00E9gimen transitorio por inversi\\u00F3n en vivienda habitual', '\\uD83C\\uDFE0', 1356),\r\n    ded('alquiler_trans_est', 'R\\u00E9gimen transitorio por alquiler de vivienda habitual', '\\uD83C\\uDFE0', 908),\r\n    ded('eficiencia_20_est', 'Obras para reducir la demanda de calefacci\\u00F3n y refrigeraci\\u00F3n', '\\u267B\\uFE0F', 1000),\r\n    ded('eficiencia_40_est', 'Obras para reducir el consumo de energ\\u00EDa primaria no renovable', '\\u267B\\uFE0F', 3000),\r\n    ded('eficiencia_60_est', 'Rehabilitaci\\u00F3n energ\\u00E9tica en edificios de uso predominante residencial', '\\u267B\\uFE0F', 9000),\r\n    ded('vehiculo_electrico_est', 'Adquisici\\u00F3n de veh\\u00EDculo el\\u00E9ctrico enchufable o de pila de combustible', '\\uD83D\\uDE97', 3000),\r\n    ded('recarga_est', 'Instalaci\\u00F3n de puntos de recarga para veh\\u00EDculo el\\u00E9ctrico', '\\uD83D\\uDD0C', 600),\r\n    ded('empresa_nueva_est', 'Inversi\\u00F3n en empresas nuevas o de reciente creaci\\u00F3n', '\\uD83D\\uDE80', 50000),\r\n    ded('patrimonio_historico_est', 'Protecci\\u00F3n y difusi\\u00F3n del Patrimonio Hist\\u00F3rico Espa\\u00F1ol y del Patrimonio Mundial', '\\uD83C\\uDFDB\\uFE0F', 1500)\r\n  ];\r\n\r\n  var PLANES_RENTA = {\r\n    basica: {\r\n      nombre: 'B\u00e1sico',\r\n      url: 'https:\/\/muaytax.com\/es\/espana\/declaracion-de-la-renta-2025\/renta25-basica\/'\r\n    },\r\n    media: {\r\n      nombre: 'Medio',\r\n      url: 'https:\/\/muaytax.com\/es\/espana\/declaracion-de-la-renta-2025\/renta25-media\/'\r\n    },\r\n    premium: {\r\n      nombre: 'Premium',\r\n      url: 'https:\/\/muaytax.com\/es\/espana\/declaracion-de-la-renta-2025\/renta25-premium\/'\r\n    }\r\n  };\r\n\r\n\r\n  \/* ============================================================\r\n     STATE\r\n     ============================================================ *\/\r\n  var INITIAL_STATE = {\r\n    ccaa: '', edad: '35_65',\r\n    trabajaAsalariado: false, trabajaAutonomo: false,\r\n    bruto: 0, retenciones: 0, variosPagadores: 'no',\r\n    beneficioAutonomo: 0, pagosCuentaAutonomo: 0,\r\n    capitalMob: 0, ganancias: 0, gananciasInmuebles: 0, alquilerInmueble: 0, retCapital: 0,\r\n    planAutonomoGestion: '',\r\n    planAlquileres: '0', planVentasInmuebles: '0', planCripto: 'no', planExtranjero: 'no', planInversiones: 'sin_operativa',\r\n    hijos: '0', ascendientes: '0', discapacidad: 'ninguna',\r\n    grupoFamiliaDed: 'no', grupoInversionesDed: 'no', grupoGastosDed: 'no',\r\n    deducVivienda: 0, planPensiones: 0, pensionesAmount: 0,\r\n    deducDonativos: 0, donativosAmount: 0,\r\n    deduccionesAut: {},\r\n    currentStep: 1\r\n  };\r\n  var state = JSON.parse(JSON.stringify(INITIAL_STATE));\r\n\r\n  \/* ============================================================\r\n     HELPERS\r\n     ============================================================ *\/\r\n  var $ = function(s) { return document.querySelector(s); };\r\n  var $$ = function(s) { return document.querySelectorAll(s); };\r\n  var fmt = function(n) { return Math.abs(n).toLocaleString('es-ES', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) + ' \u20ac'; };\r\n  var parseNum = function(s) {\r\n    var raw = (s || '').toString().replace(\/[^\\d]\/g, '');\r\n    return parseInt(raw, 10) || 0;\r\n  };\r\n  var dedPotentialValue = function(d) {\r\n    if (typeof d.max === 'number' && d.max > 0) return d.max;\r\n    if (typeof d.maxOrientativo === 'number' && d.maxOrientativo > 0) return d.maxOrientativo;\r\n\r\n    var txt = ((d.label || '') + ' ' + (d.question || '')).toLowerCase();\r\n    if (txt.indexOf('familia numerosa') !== -1) return 600;\r\n    if (txt.indexOf('monoparental') !== -1) return 300;\r\n    if (txt.indexOf('guarder') !== -1 || txt.indexOf('custodia') !== -1 || txt.indexOf('concili') !== -1) return 300;\r\n    if (txt.indexOf('alquiler') !== -1 || txt.indexOf('vivienda') !== -1 || txt.indexOf('arrendamiento') !== -1) return 500;\r\n    if (txt.indexOf('salud') !== -1 || txt.indexOf('enfermedad') !== -1 || txt.indexOf('cel') !== -1 || txt.indexOf('gafas') !== -1 || txt.indexOf('fertilidad') !== -1) return 150;\r\n    if (txt.indexOf('donativ') !== -1 || txt.indexOf('patrimonio') !== -1 || txt.indexOf('cultural') !== -1) return 150;\r\n    if (txt.indexOf('estudios') !== -1 || txt.indexOf('libros') !== -1 || txt.indexOf('material escolar') !== -1 || txt.indexOf('idiomas') !== -1 || txt.indexOf('educaci') !== -1) return 150;\r\n    if (txt.indexOf('autoemple') !== -1 || txt.indexOf('aut\u00f3nomo') !== -1 || txt.indexOf('autonomo') !== -1 || txt.indexOf('traslado') !== -1 || txt.indexOf('trabajo dependiente') !== -1 || txt.indexOf('dif\u00edcil cobertura') !== -1 || txt.indexOf('dificil cobertura') !== -1) return 300;\r\n    if (txt.indexOf('inversi') !== -1 || txt.indexOf('econom\u00eda social') !== -1 || txt.indexOf('economia social') !== -1) return 1000;\r\n    if (txt.indexOf('ascend') !== -1 || txt.indexOf('mayores') !== -1 || txt.indexOf('discapacidad') !== -1 || txt.indexOf('dependientes') !== -1) return 200;\r\n    if (txt.indexOf('viud') !== -1) return 200;\r\n    if (txt.indexOf('internet') !== -1 || txt.indexOf('luz') !== -1 || txt.indexOf('gas') !== -1) return 100;\r\n    if (txt.indexOf('bicic') !== -1) return 150;\r\n    if (txt.indexOf('ela') !== -1) return 300;\r\n    return 250;\r\n  };\r\n\r\n  function normalizeText(txt) {\r\n    return (txt || '').toString().toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '');\r\n  }\r\n\r\n  dedPotentialValue = function(d) {\r\n    if (d && d.id === 'donativos_est') return calcularDeduccionDonativos(state.donativosAmount || 0);\r\n    if (typeof d.max === 'number' && d.max > 0) return d.max;\r\n    if (typeof d.maxOrientativo === 'number' && d.maxOrientativo > 0) return d.maxOrientativo;\r\n\r\n    var txt = normalizeText((d.label || '') + ' ' + (d.question || ''));\r\n    if (txt.indexOf('familia numerosa') !== -1) return 600;\r\n    if (txt.indexOf('monoparental') !== -1) return 350;\r\n    if (txt.indexOf('nacimiento') !== -1 || txt.indexOf('adopcion') !== -1 || txt.indexOf('acogimiento') !== -1 || txt.indexOf('parto') !== -1) return 300;\r\n    if (txt.indexOf('guarder') !== -1 || txt.indexOf('custodia') !== -1 || txt.indexOf('concili') !== -1 || txt.indexOf('cuidado de hijos') !== -1) return 300;\r\n    if (txt.indexOf('autoconsumo') !== -1 || txt.indexOf('renovable') !== -1 || txt.indexOf('eficiencia energetica') !== -1 || txt.indexOf('sostenibilidad') !== -1) return 700;\r\n    if (txt.indexOf('alquiler') !== -1 || txt.indexOf('vivienda') !== -1 || txt.indexOf('arrendamiento') !== -1 || txt.indexOf('rehabilitacion') !== -1) return 500;\r\n    if (txt.indexOf('salud') !== -1 || txt.indexOf('enfermedad') !== -1 || txt.indexOf('celiaca') !== -1 || txt.indexOf('gafas') !== -1 || txt.indexOf('fertilidad') !== -1 || txt.indexOf('ela') !== -1 || txt.indexOf('talidomida') !== -1) return 200;\r\n    if (txt.indexOf('donativ') !== -1 || txt.indexOf('donacion') !== -1 || txt.indexOf('mecenazgo') !== -1 || txt.indexOf('patrimonio') !== -1 || txt.indexOf('cultural') !== -1 || txt.indexOf('ecologica') !== -1) return 150;\r\n    if (txt.indexOf('estudios') !== -1 || txt.indexOf('libros') !== -1 || txt.indexOf('material escolar') !== -1 || txt.indexOf('idiomas') !== -1 || txt.indexOf('educaci') !== -1 || txt.indexOf('internet') !== -1) return 150;\r\n    if (txt.indexOf('luz') !== -1 || txt.indexOf('gas') !== -1) return 100;\r\n    if (txt.indexOf('autoemple') !== -1 || txt.indexOf('autonomo') !== -1 || txt.indexOf('traslado') !== -1 || txt.indexOf('trabajo dependiente') !== -1 || txt.indexOf('dificil cobertura') !== -1 || txt.indexOf('desemple') !== -1 || txt.indexOf('despoblamiento') !== -1 || txt.indexOf('rural') !== -1 || txt.indexOf('emancipacion') !== -1 || txt.indexOf('nuevo residente') !== -1) return 300;\r\n    if (txt.indexOf('inversion') !== -1 || txt.indexOf('acciones') !== -1 || txt.indexOf('participaciones') !== -1 || txt.indexOf('economia social') !== -1 || txt.indexOf('mercado alternativo') !== -1 || txt.indexOf('angel inversor') !== -1) return 1000;\r\n    if (txt.indexOf('ascend') !== -1 || txt.indexOf('mayores') !== -1 || txt.indexOf('discapacidad') !== -1 || txt.indexOf('dependientes') !== -1 || txt.indexOf('familiares') !== -1) return 250;\r\n    if (txt.indexOf('mas de un pagador') !== -1 || txt.indexOf('pagador') !== -1) return 200;\r\n    if (txt.indexOf('vehiculo electrico') !== -1 || txt.indexOf('vehiculos electricos') !== -1 || txt.indexOf('recarga') !== -1 || txt.indexOf('vehiculos nuevos') !== -1) return 500;\r\n    if (txt.indexOf('deporte') !== -1 || txt.indexOf('deport') !== -1 || txt.indexOf('bicic') !== -1 || txt.indexOf('movilidad sostenible') !== -1) return 150;\r\n    if (txt.indexOf('veterin') !== -1 || txt.indexOf('perros de asistencia') !== -1) return 150;\r\n    if (txt.indexOf('viud') !== -1) return 200;\r\n    return 250;\r\n  };\r\n\r\n  function hasFamilyDeductionSignal() {\r\n    return state.grupoFamiliaDed === 'si' || (parseInt(state.hijos, 10) || 0) > 0 || state.ascendientes !== '0' || state.discapacidad !== 'ninguna';\r\n  }\r\n\r\n  function hasHousingDeductionSignal() {\r\n    return !!state.deducVivienda;\r\n  }\r\n\r\n  function hasDonationDeductionSignal() {\r\n    return !!state.deducDonativos || parseNum(state.donativosAmount) > 0;\r\n  }\r\n\r\n  function hasExpensesDeductionSignal() {\r\n    return state.grupoGastosDed === 'si';\r\n  }\r\n\r\n  function hasInvestmentDeductionSignal() {\r\n    return state.grupoInversionesDed === 'si';\r\n  }\r\n\r\n  function getDeductionBucket(d) {\r\n    var txt = normalizeText((d.label || '') + ' ' + (d.question || '') + ' ' + (d.id || ''));\r\n    if (txt.indexOf('dana') !== -1) return 'gastos';\r\n    if (txt.indexOf('mas_pagadores_cat') !== -1 || txt.indexOf('mas de un pagador') !== -1) return 'pagadores';\r\n    if (txt.indexOf('donativ') !== -1 || txt.indexOf('donacion') !== -1 || txt.indexOf('mecenazgo') !== -1 || txt.indexOf('patrimonio') !== -1 || txt.indexOf('lengua') !== -1 || txt.indexOf('fundaciones') !== -1 || txt.indexOf('clubes deportivos') !== -1) return 'donativos';\r\n    if (txt.indexOf('alquiler') !== -1 || txt.indexOf('vivienda') !== -1 || txt.indexOf('arrendamiento') !== -1 || txt.indexOf('hipoteca') !== -1 || txt.indexOf('rehabilitacion') !== -1 || txt.indexOf('autoconsumo') !== -1 || txt.indexOf('renovable') !== -1 || txt.indexOf('eficiencia') !== -1 || txt.indexOf('calefaccion') !== -1 || txt.indexOf('refrigeracion') !== -1 || txt.indexOf('energia primaria') !== -1) return 'vivienda';\r\n    if (txt.indexOf('acciones') !== -1 || txt.indexOf('participaciones') !== -1 || txt.indexOf('empresa nueva') !== -1 || txt.indexOf('empresas nuevas') !== -1 || txt.indexOf('reciente creacion') !== -1 || txt.indexOf('reciente creaci\u00f3n') !== -1 || txt.indexOf('mercado alternativo') !== -1 || txt.indexOf('economia social') !== -1 || txt.indexOf('econom\u00eda social') !== -1 || txt.indexOf('angel inversor') !== -1 || txt.indexOf('fondos propios de entidades') !== -1 || txt.indexOf('entidades nuevas') !== -1) return 'inversiones';\r\n    if (txt.indexOf('familia') !== -1 || txt.indexOf('familiar') !== -1 || txt.indexOf('familiares') !== -1 || txt.indexOf('hijo') !== -1 || txt.indexOf('hijos') !== -1 || txt.indexOf('descend') !== -1 || txt.indexOf('ascend') !== -1 || txt.indexOf('mayores') !== -1 || txt.indexOf('guarder') !== -1 || txt.indexOf('concili') !== -1 || txt.indexOf('cuidado') !== -1 || txt.indexOf('acogimiento') !== -1 || txt.indexOf('nacimiento') !== -1 || txt.indexOf('adopcion') !== -1 || txt.indexOf('maternidad') !== -1 || txt.indexOf('viud') !== -1 || txt.indexOf('discapacidad') !== -1 || txt.indexOf('dependientes') !== -1 || txt.indexOf('conyuge') !== -1) return 'familia';\r\n    return 'gastos';\r\n  }\r\n\r\n  function getDeductionRejectionReason(bucket) {\r\n    if (bucket === 'pagadores') return 'Has indicado que no has tenido m&aacute;s de un pagador en 2025.';\r\n    if (bucket === 'donativos') return 'Has indicado que no has realizado donaciones, cesiones o aportaciones deducibles.';\r\n    if (bucket === 'vivienda') return 'Has indicado que no has comprado, alquilado, rehabilitado ni invertido en vivienda.';\r\n    if (bucket === 'inversiones') return 'Has indicado que no has realizado inversiones financieras o empresariales con posible deducci&oacute;n.';\r\n    if (bucket === 'familia') return 'Has indicado que no has tenido situaciones familiares o de cuidado con posible deducci&oacute;n.';\r\n    return 'Has indicado que no has tenido gastos o inversiones especiales en 2025.';\r\n  }\r\n\r\n  function getDeductionEvaluation(d) {\r\n    var bucket = getDeductionBucket(d);\r\n    var eligible = false;\r\n    if (bucket === 'pagadores') eligible = state.variosPagadores === 'si';\r\n    else if (bucket === 'donativos') eligible = hasDonationDeductionSignal();\r\n    else if (bucket === 'vivienda') eligible = hasHousingDeductionSignal();\r\n    else if (bucket === 'inversiones') eligible = hasInvestmentDeductionSignal();\r\n    else if (bucket === 'familia') eligible = hasFamilyDeductionSignal();\r\n    else eligible = hasExpensesDeductionSignal();\r\n    return { eligible: eligible, bucket: bucket, reason: eligible ? '' : getDeductionRejectionReason(bucket) };\r\n  }\r\n\r\n  function sortDeductionEntriesForDisplay(entries) {\r\n    var groups = {};\r\n    var emojiOrder = [];\r\n    for (var i = 0; i < entries.length; i++) {\r\n      var entry = entries[i];\r\n      var ded = entry.ded || entry;\r\n      var emoji = (ded.emoji || '*').trim();\r\n      if (!groups[emoji]) {\r\n        groups[emoji] = [];\r\n        emojiOrder.push(emoji);\r\n      }\r\n      groups[emoji].push(entry);\r\n    }\r\n\r\n    var sorted = [];\r\n    for (var j = 0; j < emojiOrder.length; j++) {\r\n      var emojiKey = emojiOrder[j];\r\n      groups[emojiKey].sort(function(a, b) {\r\n        var aLabel = normalizeText(((a.ded || a).label || ''));\r\n        var bLabel = normalizeText(((b.ded || b).label || ''));\r\n        return aLabel.localeCompare(bLabel, 'es');\r\n      });\r\n      sorted = sorted.concat(groups[emojiKey]);\r\n    }\r\n    return sorted;\r\n  }\r\n\r\n  function cloneDeductionWithScope(d, scope) {\r\n    var copy = {};\r\n    for (var key in d) {\r\n      if (Object.prototype.hasOwnProperty.call(d, key)) copy[key] = d[key];\r\n    }\r\n    copy.scope = scope;\r\n    return copy;\r\n  }\r\n\r\nfunction getPotentialDeductionContext() {\r\n    var dedEst = DEDUCCIONES_ESTATALES || [];\r\n    var dedAut = DEDUCCIONES_AUTONOMICAS[state.ccaa] || [];\r\n    var estatales = [];\r\n    var autonomicas = [];\r\n    var i;\r\n\r\n    for (i = 0; i < dedEst.length; i++) {\r\n      estatales.push({\r\n        ded: cloneDeductionWithScope(dedEst[i], 'estatal'),\r\n        evaluation: getDeductionEvaluation(dedEst[i])\r\n      });\r\n    }\r\n\r\n    for (i = 0; i < dedAut.length; i++) {\r\n      autonomicas.push({\r\n        ded: cloneDeductionWithScope(dedAut[i], 'autonomica'),\r\n        evaluation: getDeductionEvaluation(dedAut[i])\r\n      });\r\n    }\r\n\r\n    var evaluadas = estatales.concat(autonomicas);\r\n    var elegibles = sortDeductionEntriesForDisplay(evaluadas.filter(function(item) { return item.evaluation.eligible; }));\r\n    var rechazadas = sortDeductionEntriesForDisplay(evaluadas.filter(function(item) { return !item.evaluation.eligible; }));\r\n    var elegiblesEstatales = estatales.filter(function(item) { return item.evaluation.eligible; });\r\n    var elegiblesAutonomicas = autonomicas.filter(function(item) { return item.evaluation.eligible; });\r\n    var potencialTotal = elegibles.reduce(function(sum, item) { return sum + dedPotentialValue(item.ded); }, 0);\r\n\r\n  return {\r\n    estatales: estatales,\r\n      autonomicas: autonomicas,\r\n      evaluadas: evaluadas,\r\n      elegibles: elegibles,\r\n      rechazadas: rechazadas,\r\n      elegiblesEstatales: elegiblesEstatales,\r\n      elegiblesAutonomicas: elegiblesAutonomicas,\r\n    potencialTotal: potencialTotal\r\n  };\r\n}\r\n\r\nfunction getPlanRecommendationContext() {\r\n  var points = 0;\r\n  var factores = [];\r\n  var premiumDirecto = [];\r\n\r\n  function addFactor(label, pts, directPremium) {\r\n    var factor = {\r\n      label: label,\r\n      points: pts || 0,\r\n      directPremium: !!directPremium\r\n    };\r\n    points += factor.points;\r\n    factores.push(factor);\r\n    if (factor.directPremium) premiumDirecto.push(factor.label);\r\n  }\r\n\r\n  if (state.trabajaAutonomo && state.planAutonomoGestion === 'otra') {\r\n    addFactor('Actividad como aut\u00f3nomo gestionada por tu cuenta o por otra gestor\u00eda', 1, false);\r\n  }\r\n  if (state.planAlquileres === '1') addFactor('1 inmueble en alquiler', 1, false);\r\n  if (state.planAlquileres === '2+') addFactor('2 o m\u00e1s inmuebles en alquiler', 2, true);\r\n  if (state.planVentasInmuebles === '1') addFactor('Venta de 1 inmueble', 1, false);\r\n  if (state.planVentasInmuebles === '2+') addFactor('Venta de 2 o m\u00e1s inmuebles', 2, false);\r\n  if (state.planCripto === 'opero_1') addFactor('Criptomonedas con operativa en 1 plataforma', 1, false);\r\n  if (state.planCripto === 'opero_2') addFactor('Criptomonedas con operativa en m\u00e1s de 1 plataforma', 2, true);\r\n  if (state.planExtranjero === 'si') addFactor('Ingresos o activos en el extranjero', 1, false);\r\n  if (state.planInversiones === 'vende_1') addFactor('Inversiones con ventas o reembolsos en 1 br\u00f3ker', 1, false);\r\n  if (state.planInversiones === 'vende_2') addFactor('Inversiones con ventas o reembolsos en m\u00e1s de 1 br\u00f3ker', 2, true);\r\n\r\n  var key = 'basica';\r\n  if (premiumDirecto.length || points >= 2) key = 'premium';\r\n  else if (points === 1) key = 'media';\r\n\r\n  var summary = 'No hemos detectado factores adicionales de complejidad en tu caso.';\r\n  if (key === 'basica' && state.trabajaAutonomo && state.planAutonomoGestion === 'muay') {\r\n    summary = 'Tu caso encaja en un escenario est\u00e1ndar y tu actividad como aut\u00f3nomo ya est\u00e1 gestionada con Muay Tax.';\r\n  } else if (key === 'media') {\r\n    summary = 'Hemos detectado 1 factor de complejidad que requiere una revisi\u00f3n intermedia.';\r\n  } else if (key === 'premium' && premiumDirecto.length) {\r\n    summary = 'Hemos detectado al menos un supuesto de complejidad alta que encaja directamente en el Plan Premium.';\r\n  } else if (key === 'premium') {\r\n    summary = 'Hemos detectado varios factores combinados de complejidad que encajan en el Plan Premium.';\r\n  }\r\n\r\n  return {\r\n    key: key,\r\n    plan: PLANES_RENTA[key],\r\n    points: points,\r\n    factores: factores,\r\n    premiumDirecto: premiumDirecto,\r\n    resumen: summary\r\n  };\r\n}\r\n\r\nfunction syncSpecialAutonomousSelections() {\r\n    var dedAut = DEDUCCIONES_AUTONOMICAS[state.ccaa] || [];\r\n    var selected = {};\r\n    for (var i = 0; i < dedAut.length; i++) {\r\n      var evaluation = getDeductionEvaluation(dedAut[i]);\r\n      if (evaluation.eligible) selected[dedAut[i].id] = true;\r\n    }\r\n    state.deduccionesAut = selected;\r\n  }\r\n\r\n\r\n  function formatInputNum(el) {\r\n    var raw = (el.value || '').replace(\/[^\\d]\/g, '');\r\n    if (raw) {\r\n      el.value = parseInt(raw, 10).toLocaleString('es-ES');\r\n      return parseInt(raw, 10);\r\n    }\r\n    el.value = '';\r\n    return 0;\r\n  }\r\n\r\n  function setChoiceGroupValue(containerId, value) {\r\n    var group = $('#' + containerId);\r\n    if (!group) return;\r\n    group.querySelectorAll('.rc-choice').forEach(function(btn) {\r\n      btn.classList.toggle('selected', btn.dataset.val === value);\r\n    });\r\n  }\r\n\r\n  function ensureDynamicIncomeSections() {\r\n    var panel2 = $('#rc-p2');\r\n    var panel3 = $('#rc-p3');\r\n    if (panel2) {\r\n      var title2 = panel2.querySelector('.rc-panel-title');\r\n      var desc2 = panel2.querySelector('.rc-panel-desc');\r\n      if (title2) title2.textContent = 'Paso 2 \u00b7 Trabajo y actividad econ\u00f3mica';\r\n      if (desc2) desc2.textContent = 'Introduce aqu\u00ed tus ingresos como asalariado, como aut\u00f3nomo o ambos, seg\u00fan lo que hayas marcado en el paso anterior.';\r\n\r\n      if (!$('#rc-autonomo-section')) {\r\n        var autoSection = document.createElement('div');\r\n        autoSection.id = 'rc-autonomo-section';\r\n        autoSection.style.display = 'none';\r\n        autoSection.innerHTML =\r\n          '<div class=\"rc-form-row\">' +\r\n            '<label class=\"rc-label\">Beneficio neto aproximado como aut\u00f3nomo <span class=\"rc-label-sub\">Introduce el rendimiento neto aproximado de tu actividad en 2025, despu\u00e9s de gastos deducibles y cotizaciones<\/span><\/label>' +\r\n            '<div class=\"rc-input-wrap\">' +\r\n              '<span class=\"rc-input-prefix\">\u20ac<\/span>' +\r\n              '<input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-beneficio-autonomo\" placeholder=\"Ej: 18.000\">' +\r\n            '<\/div>' +\r\n            '<p class=\"rc-error-msg\" id=\"rc-beneficio-autonomo-err\">\u26a0 Indica tu beneficio neto aproximado como aut\u00f3nomo en 2025.<\/p>' +\r\n          '<\/div>' +\r\n          '<div class=\"rc-form-row\">' +\r\n            '<label class=\"rc-label\">Pagos a cuenta y retenciones como aut\u00f3nomo <span class=\"rc-label-sub\">Suma pagos fraccionados modelo 130\/131 y retenciones soportadas en facturas si las has tenido<\/span><\/label>' +\r\n            '<div class=\"rc-input-wrap\">' +\r\n              '<span class=\"rc-input-prefix\">\u20ac<\/span>' +\r\n              '<input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-pagos-autonomo\" placeholder=\"Ej: 2.400\">' +\r\n            '<\/div>' +\r\n            '<p class=\"rc-helper\">\ud83d\udca1 Si no has tenido pagos a cuenta, puedes dejarlo en 0.<\/p>' +\r\n          '<\/div>';\r\n        var nav2 = panel2.querySelector('.rc-nav-row');\r\n        panel2.insertBefore(autoSection, nav2);\r\n      }\r\n    }\r\n\r\n    if (panel3) {\r\n      var info3 = panel3.querySelector('.rc-info-box');\r\n      if (info3) {\r\n        info3.textContent = '\ud83d\udca1 La base del ahorro incluye intereses bancarios, dividendos, plusval\u00edas por venta de acciones, fondos, criptomonedas e inmuebles. Los rendimientos netos de alquiler de inmuebles se integran en la base general.';\r\n      }\r\n\r\n      if (!$('#rc-ganancias-inmuebles')) {\r\n        var gananciasRow = $('#rc-ganancias');\r\n        if (gananciasRow) {\r\n          var gananciasWrap = gananciasRow.closest('.rc-form-row');\r\n          var inmueblesRow = document.createElement('div');\r\n          inmueblesRow.className = 'rc-form-row';\r\n          inmueblesRow.id = 'rc-ganancias-inmuebles-row';\r\n          inmueblesRow.innerHTML =\r\n            '<label class=\"rc-label\">Ganancia neta por venta de inmuebles <span class=\"rc-label-sub\">Beneficio obtenido por vender viviendas, locales, garajes, terrenos u otras propiedades en 2025<\/span><\/label>' +\r\n            '<div class=\"rc-input-wrap\">' +\r\n              '<span class=\"rc-input-prefix\">\u20ac<\/span>' +\r\n              '<input class=\"rc-input rc-input-prefixed\" type=\"text\" inputmode=\"numeric\" id=\"rc-ganancias-inmuebles\" placeholder=\"Ej: 12.000\">' +\r\n            '<\/div>' +\r\n            '<p class=\"rc-helper\">\ud83d\udca1 Introduce solo la ganancia neta aproximada, despu\u00e9s de restar valor de compra, gastos e impuestos asociados a la transmisi\u00f3n.<\/p>';\r\n          gananciasWrap.insertAdjacentElement('afterend', inmueblesRow);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  function syncWorkModeCards() {\r\n    var salInput = $('#rc-work-asalariado');\r\n    var autoInput = $('#rc-work-autonomo');\r\n    var salCard = $('#rc-work-asalariado-card');\r\n    var autoCard = $('#rc-work-autonomo-card');\r\n    if (salCard && salInput) salCard.classList.toggle('selected', !!salInput.checked);\r\n    if (autoCard && autoInput) autoCard.classList.toggle('selected', !!autoInput.checked);\r\n  }\r\n\r\nfunction syncWorkModeUI() {\r\n  ensureDynamicIncomeSections();\r\n  var hasSalary = !!state.trabajaAsalariado;\r\n  var hasAuto = !!state.trabajaAutonomo;\r\n    var panel2 = $('#rc-p2');\r\n    var desc2 = panel2 ? panel2.querySelector('.rc-panel-desc') : null;\r\n    var brutoRow = $('#rc-bruto') ? $('#rc-bruto').closest('.rc-form-row') : null;\r\n  var retRow = $('#rc-retenciones') ? $('#rc-retenciones').closest('.rc-form-row') : null;\r\n  var variosRow = $('#rc-varios-pagadores') ? $('#rc-varios-pagadores').closest('.rc-form-row') : null;\r\n  var tooltip = panel2 ? panel2.querySelector('.rc-tooltip') : null;\r\n  var autoSection = $('#rc-autonomo-section');\r\n  var autoPlanRow = $('#rc-plan-autonomo-row');\r\n\r\n    if (desc2) {\r\n      if (hasSalary && hasAuto) desc2.textContent = 'Introduce aqu\u00ed tanto tus rendimientos como asalariado como el beneficio neto aproximado de tu actividad por cuenta propia.';\r\n      else if (hasSalary) desc2.textContent = 'Introduce tus rendimientos del trabajo asalariado durante 2025.';\r\n      else if (hasAuto) desc2.textContent = 'Indica el beneficio neto aproximado de tu actividad como aut\u00f3nomo y los pagos a cuenta acumulados durante 2025.';\r\n      else desc2.textContent = 'Selecciona primero c\u00f3mo has trabajado en 2025 para mostrar los campos que correspondan.';\r\n    }\r\n\r\n    if (brutoRow) brutoRow.style.display = hasSalary ? '' : 'none';\r\n  if (retRow) retRow.style.display = hasSalary ? '' : 'none';\r\n  if (variosRow) variosRow.style.display = hasSalary ? '' : 'none';\r\n  if (tooltip) tooltip.style.display = hasSalary ? '' : 'none';\r\n  if (autoSection) autoSection.style.display = hasAuto ? 'block' : 'none';\r\n  if (autoPlanRow) autoPlanRow.style.display = hasAuto ? '' : 'none';\r\n\r\n  if (!hasSalary) {\r\n    state.variosPagadores = 'no';\r\n    setChoiceGroupValue('rc-varios-pagadores', 'no');\r\n      if ($('#rc-bruto-err')) $('#rc-bruto-err').classList.remove('visible');\r\n      if ($('#rc-bruto')) $('#rc-bruto').classList.remove('error');\r\n    }\r\n  if (!hasAuto) {\r\n    state.beneficioAutonomo = 0;\r\n    state.pagosCuentaAutonomo = 0;\r\n    state.planAutonomoGestion = '';\r\n    setChoiceGroupValue('rc-plan-autonomo-gestion', '');\r\n    if ($('#rc-beneficio-autonomo-err')) $('#rc-beneficio-autonomo-err').classList.remove('visible');\r\n    if ($('#rc-beneficio-autonomo')) $('#rc-beneficio-autonomo').classList.remove('error');\r\n    if ($('#rc-plan-autonomo-err')) $('#rc-plan-autonomo-err').classList.remove('visible');\r\n  }\r\n}\r\n\r\n  \/* ============================================================\r\n     C\u00c1LCULO IRPF v2 \u2014 CON CORRECCIONES\r\n     ============================================================ *\/\r\n  function calcularTramos(base, tramos) {\r\n    var restante = Math.max(0, base), cuota = 0, prevLimit = 0, desglose = [];\r\n    for (var i = 0; i < tramos.length; i++) {\r\n      if (restante <= 0) break;\r\n      var t = tramos[i];\r\n      var rango = t.hasta === Infinity ? restante : t.hasta - prevLimit;\r\n      var aplicado = Math.min(restante, rango);\r\n      cuota += aplicado * t.tipo;\r\n      desglose.push({ desde: prevLimit, hasta: t.hasta, tipo: t.tipo, base: aplicado, cuota: aplicado * t.tipo });\r\n      restante -= aplicado;\r\n      prevLimit = t.hasta === Infinity ? prevLimit + aplicado : t.hasta;\r\n    }\r\n    return { cuota: cuota, desglose: desglose };\r\n  }\r\n\r\n  function calcularMinimo() {\r\n    var min = 5550;\r\n    var h = parseInt(state.hijos) || 0;\r\n    if (h >= 1) min += 2400;\r\n    if (h >= 2) min += 2700;\r\n    if (h >= 3) min += 4000;\r\n    if (h >= 4) min += 4500;\r\n    if (state.ascendientes === '1') min += 1150;\r\n    if (state.ascendientes === '2') min += 2550;\r\n    if (state.discapacidad === '33') min += 3000;\r\n    if (state.discapacidad === '65') min += 9000;\r\n    return min;\r\n  }\r\n\r\n  function calcularReduccionTrabajo(rendNeto) {\r\n    if (rendNeto <= 14852) return 7302;\r\n    if (rendNeto <= 17673.52) return 7302 - 2.00 * (rendNeto - 14852);\r\n    if (rendNeto <= 19747.5) return 1651.52;\r\n    return 0;\r\n  }\r\n\r\n  function calcularDeduccionDonativos(importe) {\r\n    if (importe <= 0) return 0;\r\n    var primeros150 = Math.min(importe, 150) * 0.80;\r\n    var resto = Math.max(0, importe - 150) * 0.40;\r\n    return primeros150 + resto;\r\n  }\r\n\r\n  function calcularCuotaConMinimo(base, minimoAplicable, tramos) {\r\n    var cuotaBase = calcularTramos(base, tramos).cuota;\r\n    var cuotaMinimo = calcularTramos(Math.min(base, Math.max(0, minimoAplicable)), tramos).cuota;\r\n    return Math.max(0, cuotaBase - cuotaMinimo);\r\n  }\r\n\r\n  function calcularCotizacionTrabajador(bruto) {\r\n    var baseMaxAnual = COTIZACION_TRABAJADOR_2025.baseMaxMensual * 12;\r\n    var baseCotizacionEstimada = Math.max(0, Math.min(bruto, baseMaxAnual));\r\n    var tipoTotal = COTIZACION_TRABAJADOR_2025.contingenciasComunes +\r\n      COTIZACION_TRABAJADOR_2025.desempleoGeneral +\r\n      COTIZACION_TRABAJADOR_2025.formacionProfesional +\r\n      COTIZACION_TRABAJADOR_2025.mei;\r\n\r\n    return {\r\n      baseCotizacionEstimada: baseCotizacionEstimada,\r\n      tipoTotal: tipoTotal,\r\n      total: baseCotizacionEstimada * tipoTotal\r\n    };\r\n  }\r\n\r\n  function calcularIRPF_modalidad() {\r\n    if ((!state.trabajaAsalariado || state.bruto <= 0) && (!state.trabajaAutonomo || state.beneficioAutonomo < 0)) return null;\r\n    syncSpecialAutonomousSelections();\r\n    var brutoTrabajo = state.trabajaAsalariado ? state.bruto : 0;\r\n    var beneficioAutonomo = state.trabajaAutonomo ? state.beneficioAutonomo : 0;\r\n    var pagosCuentaAutonomo = state.trabajaAutonomo ? state.pagosCuentaAutonomo : 0;\r\n    var cotizacionTrabajador = state.trabajaAsalariado ? calcularCotizacionTrabajador(brutoTrabajo) : {\r\n      baseCotizacionEstimada: 0,\r\n      tipoTotal: 0,\r\n      total: 0\r\n    };\r\n    var gastosGeneralesTrabajo = state.trabajaAsalariado ? 2000 : 0;\r\n    var gastosDed = gastosGeneralesTrabajo + cotizacionTrabajador.total;\r\n    var rendNetoTrabajo = Math.max(0, brutoTrabajo - gastosDed);\r\n    var reduccionTrabajo = state.trabajaAsalariado ? calcularReduccionTrabajo(rendNetoTrabajo) : 0;\r\n    var reduccionPensiones = Math.min(state.pensionesAmount, 1500);\r\n    var baseAhorro = state.capitalMob + state.ganancias + state.gananciasInmuebles;\r\n    var rendimientoInmobiliario = state.alquilerInmueble;\r\n    var baseGeneral = Math.max(0, brutoTrabajo + beneficioAutonomo + rendimientoInmobiliario - gastosDed - reduccionTrabajo - reduccionPensiones);\r\n    var minimo = calcularMinimo();\r\n    var minimoGeneral = Math.min(baseGeneral, minimo);\r\n    var minimoResto = Math.max(0, minimo - minimoGeneral);\r\n    var baseConMinimo = Math.max(0, baseGeneral - minimoGeneral);\r\n    var estatal = calcularTramos(baseConMinimo, TRAMOS_ESTATAL);\r\n    var autonomico = calcularTramos(baseConMinimo, TRAMOS_AUTONOMICO[state.ccaa] || TRAMOS_ESTATAL);\r\n    var cuotaEstatalGeneral = calcularCuotaConMinimo(baseGeneral, minimoGeneral, TRAMOS_ESTATAL);\r\n    var cuotaAutonomicaGeneral = calcularCuotaConMinimo(baseGeneral, minimoGeneral, TRAMOS_AUTONOMICO[state.ccaa] || TRAMOS_ESTATAL);\r\n    var cuotaIntegraTrabajo = cuotaEstatalGeneral + cuotaAutonomicaGeneral;\r\n    var baseAhorroConMinimo = Math.max(0, baseAhorro - minimoResto);\r\n    var cuotaAhorro = 0;\r\n    var desgloseAhorro = [];\r\n    if (baseAhorroConMinimo > 0) {\r\n      var ahorroCalc = calcularTramos(baseAhorroConMinimo, TRAMOS_AHORRO);\r\n      cuotaAhorro = ahorroCalc.cuota;\r\n      desgloseAhorro = ahorroCalc.desglose;\r\n    }\r\n    var cuotaIntegra = cuotaIntegraTrabajo + cuotaAhorro;\r\n    var dedVivienda = 0;\r\n    var dedDonativos = calcularDeduccionDonativos(state.donativosAmount);\r\n    var totalDeducciones = dedVivienda + dedDonativos;\r\n    var cuotaLiquida = Math.max(0, cuotaIntegra - totalDeducciones);\r\n    var totalRetenciones = state.retenciones + state.retCapital + pagosCuentaAutonomo;\r\n    var cuotaDiferencialPrevia = cuotaIntegra - totalRetenciones;\r\n    var cuotaDiferencial = cuotaLiquida - totalRetenciones;\r\n    var totalIngresos = brutoTrabajo + beneficioAutonomo + rendimientoInmobiliario + baseAhorro;\r\n    var tipoEfectivo = totalIngresos > 0 ? (cuotaLiquida \/ totalIngresos) * 100 : 0;\r\n    var potentialCtx = getPotentialDeductionContext();\r\n    var totalAutonomasPotenciales = potentialCtx.elegiblesAutonomicas.reduce(function(sum, item) { return sum + dedPotentialValue(item.ded); }, 0);\r\n    var totalEstatalesPotenciales = potentialCtx.elegiblesEstatales.reduce(function(sum, item) { return sum + dedPotentialValue(item.ded); }, 0);\r\n    var totalDeduccionesPotenciales = potentialCtx.potencialTotal;\r\n\r\n    return {\r\n      bruto: brutoTrabajo, brutoTrabajo: brutoTrabajo, beneficioAutonomo: beneficioAutonomo, pagosCuentaAutonomo: pagosCuentaAutonomo,\r\n      baseAhorro: baseAhorro, baseAhorroConMinimo: baseAhorroConMinimo,\r\n      rendimientoInmobiliario: rendimientoInmobiliario,\r\n      cotizacionTrabajador: cotizacionTrabajador.total,\r\n      reduccionTrabajo: reduccionTrabajo, reduccionPensiones: reduccionPensiones,\r\n      baseGeneral: baseGeneral, minimo: minimo, baseConMinimo: baseConMinimo,\r\n      cuotaIntegra: cuotaIntegra, cuotaIntegraTrabajo: cuotaIntegraTrabajo,\r\n      cuotaAhorro: cuotaAhorro,\r\n      cuotaEstatal: cuotaEstatalGeneral, cuotaAutonomica: cuotaAutonomicaGeneral,\r\n      totalDeducciones: totalDeducciones, cuotaLiquida: cuotaLiquida,\r\n      retencionesNum: totalRetenciones, cuotaDiferencialPrevia: cuotaDiferencialPrevia, cuotaDiferencial: cuotaDiferencial,\r\n      tipoEfectivo: tipoEfectivo,\r\n      desglose: estatal.desglose, desgloseAhorro: desgloseAhorro,\r\n      dedVivienda: dedVivienda, dedDonativos: dedDonativos,\r\n      totalEstatalesPotenciales: totalEstatalesPotenciales, totalAutonomasPotenciales: totalAutonomasPotenciales, totalDeduccionesPotenciales: totalDeduccionesPotenciales,\r\n      totalDeduccionesAplicadas: totalDeducciones\r\n    };\r\n  }\r\n\r\n  function calcularIRPF() {\r\n    return calcularIRPF_modalidad();\r\n  }\r\n\r\n  \/* ============================================================\r\n     INIT CCAA SELECT\r\n     ============================================================ *\/\r\n  function initCCAA() {\r\n    var sel = $('#rc-ccaa');\r\n    for (var i = 0; i < CCAA_LIST.length; i++) {\r\n      var opt = document.createElement('option');\r\n      opt.value = CCAA_LIST[i].code;\r\n      opt.textContent = CCAA_LIST[i].name;\r\n      sel.appendChild(opt);\r\n    }\r\n    sel.addEventListener('change', function() {\r\n      state.ccaa = this.value;\r\n      state.deduccionesAut = {};\r\n      syncHubspotIncomeTypeQueryParam();\r\n      var box = $('#rc-ccaa-confirm');\r\n      if (state.ccaa) {\r\n        var name = CCAA_LIST.find(function(c) { return c.code === state.ccaa; }).name;\r\n        box.innerHTML = '\u2705 Aplicaremos los tramos auton\u00f3micos espec\u00edficos de <strong>' + name + '<\/strong>';\r\n        box.style.display = 'block';\r\n      } else { box.style.display = 'none'; }\r\n    });\r\n  }\r\n\r\n  \/* ============================================================\r\n     CHOICE GROUP HANDLER\r\n     ============================================================ *\/\r\n  function initChoiceGroup(containerId, stateKey) {\r\n    var container = $('#' + containerId);\r\n    if (!container) return;\r\n    container.querySelectorAll('.rc-choice').forEach(function(btn) {\r\n      btn.addEventListener('click', function() {\r\n      container.querySelectorAll('.rc-choice').forEach(function(b) { b.classList.remove('selected'); });\r\n      btn.classList.add('selected');\r\n      state[stateKey] = btn.dataset.val;\r\n      if (containerId === 'rc-plan-autonomo-gestion' && $('#rc-plan-autonomo-err')) $('#rc-plan-autonomo-err').classList.remove('visible');\r\n      if (containerId === 'rc-plan-alquileres' && $('#rc-plan-alquileres-err')) $('#rc-plan-alquileres-err').classList.remove('visible');\r\n      if (containerId === 'rc-plan-ventas-inmuebles' && $('#rc-plan-ventas-inmuebles-err')) $('#rc-plan-ventas-inmuebles-err').classList.remove('visible');\r\n      if (stateKey === 'hijos') {\r\n        var h = parseInt(state.hijos) || 0;\r\n        var box = $('#rc-hijos-info');\r\n          if (h > 0) {\r\n            var extra = h === 1 ? 2400 : h === 2 ? 5100 : h === 3 ? 9100 : 13600;\r\n            box.innerHTML = '\u2705 M\u00ednimo familiar estimado: +' + fmt(extra) + ' sobre el m\u00ednimo personal';\r\n            box.style.display = 'block';\r\n          } else { box.style.display = 'none'; }\r\n        }\r\n        if (stateKey === 'grupoFamiliaDed' || stateKey === 'grupoInversionesDed' || stateKey === 'grupoGastosDed' || stateKey === 'variosPagadores') {\r\n          renderDedAut();\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  function initWorkModeSelector() {\r\n    ensureDynamicIncomeSections();\r\n\r\n    var workRowLabel = $('#rc-work-mode') ? $('#rc-work-mode').previousElementSibling : null;\r\n    if (workRowLabel) {\r\n      workRowLabel.innerHTML = '\u00bfC\u00f3mo has trabajado en 2025? <span class=\"rc-label-sub\">Puedes marcar una sola opci\u00f3n o las dos si has combinado n\u00f3mina y actividad por cuenta propia<\/span>';\r\n    }\r\n    if ($('#rc-work-asalariado-card span')) $('#rc-work-asalariado-card span').textContent = 'Asalariado';\r\n    if ($('#rc-work-autonomo-card span')) $('#rc-work-autonomo-card span').textContent = 'Aut\u00f3nomo';\r\n    if ($('#rc-work-mode-err')) $('#rc-work-mode-err').textContent = '\u26a0 Selecciona al menos una forma de trabajo para 2025.';\r\n\r\n    var salInput = $('#rc-work-asalariado');\r\n    var autoInput = $('#rc-work-autonomo');\r\n    [salInput, autoInput].forEach(function(input) {\r\n      if (!input) return;\r\n      input.addEventListener('change', function() {\r\n        state.trabajaAsalariado = !!(salInput && salInput.checked);\r\n        state.trabajaAutonomo = !!(autoInput && autoInput.checked);\r\n        if ($('#rc-work-mode-err')) $('#rc-work-mode-err').classList.remove('visible');\r\n        syncHubspotIncomeTypeQueryParam();\r\n        syncWorkModeCards();\r\n        syncWorkModeUI();\r\n        renderDedAut();\r\n      });\r\n    });\r\n\r\n    syncWorkModeCards();\r\n    syncWorkModeUI();\r\n  }\r\n\r\n\r\n  \/* ============================================================\r\n     RENDER DEDUCCIONES (step 5)\r\n     ============================================================ *\/\r\n  function renderDedAut() {\r\n    var container = $('#rc-ded-autonomicas');\r\n    container.innerHTML = '';\r\n    syncSpecialAutonomousSelections();\r\n    var potentialCtx = getPotentialDeductionContext();\r\n    if (!potentialCtx.estatales.length && !potentialCtx.autonomicas.length) return;\r\n\r\n    var ccaaName = CCAA_LIST.find(function(c) { return c.code === state.ccaa; }).name;\r\n    var totalElegibles = potentialCtx.elegibles.length;\r\n    var totalEstatales = potentialCtx.elegiblesEstatales.length;\r\n    var totalAutonomicas = potentialCtx.elegiblesAutonomicas.length;\r\n    var totalPotencial = potentialCtx.potencialTotal;\r\n\r\n    var titleDiv = document.createElement('div');\r\n    titleDiv.className = 'rc-form-row';\r\n    titleDiv.style.marginTop = '24px';\r\n    titleDiv.innerHTML = '<label class=\"rc-label\">Vista previa de deducciones <span class=\"rc-label-sub\">Con estos filtros te mostraremos al final las deducciones estatales y las de ' + ccaaName + ' que podr\u00edan encajar contigo.<\/span><\/label>';\r\n    container.appendChild(titleDiv);\r\n\r\n    var kpis = document.createElement('div');\r\n    kpis.className = 'rc-kpis';\r\n    kpis.innerHTML =\r\n      '<div class=\"rc-kpi\"><div class=\"rc-kpi-label\">Deducciones potenciales<\/div><div class=\"rc-kpi-value navy\">' + totalElegibles + '<\/div><\/div>' +\r\n      '<div class=\"rc-kpi\"><div class=\"rc-kpi-label\">Estatales \/ Auton\u00f3micas<\/div><div class=\"rc-kpi-value navy\">' + totalEstatales + ' \/ ' + totalAutonomicas + '<\/div><\/div>' +\r\n      '<div class=\"rc-kpi\"><div class=\"rc-kpi-label\">Potencial detectado<\/div><div class=\"rc-kpi-value\">' + (totalPotencial > 0 ? 'hasta ' + fmt(totalPotencial) : fmt(0)) + '<\/div><\/div>';\r\n    container.appendChild(kpis);\r\n  }\r\n\r\n  function createResultAccordion(title, bodyHtml, bgColor, borderColor) {\r\n    var box = document.createElement('div');\r\n    box.style.background = bgColor;\r\n    box.style.border = '2px solid ' + borderColor;\r\n    box.style.borderRadius = '8px';\r\n    box.style.marginTop = '18px';\r\n    box.style.overflow = 'hidden';\r\n    box.innerHTML =\r\n      '<button type=\"button\" aria-expanded=\"false\" style=\"all:unset;box-sizing:border-box;width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;background:' + bgColor + '; color:#031549;cursor:pointer;font-size:1rem;font-weight:700;font-family:var(--rc-font);line-height:1.4;\">' +\r\n        '<span>' + title + '<\/span>' +\r\n        '<span style=\"flex-shrink:0;font-size:0.75rem;\">\u25bc<\/span>' +\r\n      '<\/button>' +\r\n      '<div style=\"display:none;padding:20px;background:' + bgColor + '; color:#031549;font-size:0.85rem;line-height:1.8;\">' + bodyHtml + '<\/div>';\r\n\r\n    var toggle = box.querySelector('button');\r\n    var body = box.querySelector('div');\r\n    var chevron = box.querySelector('button span:last-child');\r\n    toggle.addEventListener('click', function() {\r\n      var open = body.style.display === 'block';\r\n      body.style.display = open ? 'none' : 'block';\r\n      toggle.setAttribute('aria-expanded', open ? 'false' : 'true');\r\n      chevron.textContent = open ? '\u25bc' : '\u25b2';\r\n    });\r\n    return box;\r\n  }\r\n\r\nfunction renderStep7() {\r\n  var box = $('#rc-ready-summary');\r\n  box.innerHTML = '';\r\n  var planCtx = getPlanRecommendationContext();\r\n\r\n  var ccaaName = state.ccaa ? CCAA_LIST.find(function(c) { return c.code === state.ccaa; }).name : '';\r\n    var rentasCapital = state.capitalMob + state.ganancias;\r\n    var items = [{ icon: '\ud83d\udccd', text: ccaaName }];\r\n\r\n    if (state.trabajaAsalariado) {\r\n      items.push({ icon: '\ud83d\udcbc', text: 'Salario bruto: ' + fmt(state.bruto) });\r\n      items.push({ icon: '\ud83e\uddfe', text: 'Retenciones trabajo: ' + fmt(state.retenciones) });\r\n    }\r\n    if (state.trabajaAutonomo) {\r\n      items.push({ icon: '\ud83d\udcbc', text: 'Beneficio aut\u00f3nomo: ' + fmt(state.beneficioAutonomo) });\r\n      items.push({ icon: '\ud83e\uddfe', text: 'Pagos a cuenta aut\u00f3nomo: ' + fmt(state.pagosCuentaAutonomo) });\r\n    }\r\n    if (state.variosPagadores === 'si') items.push({ icon: '\ud83d\udcc4', text: 'M\u00e1s de un pagador' });\r\n    if (rentasCapital > 0) items.push({ icon: '\ud83d\udcc8', text: 'Rentas del capital: ' + fmt(rentasCapital) });\r\n    if (state.gananciasInmuebles > 0) items.push({ icon: '\ud83c\udfe2', text: 'Venta de inmuebles: ' + fmt(state.gananciasInmuebles) });\r\n    if (state.alquilerInmueble > 0) items.push({ icon: '\ud83c\udfe0', text: 'Rendimiento neto alquiler: ' + fmt(state.alquilerInmueble) });\r\n    items.push({ icon: '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67', text: 'Hijos a cargo: ' + state.hijos });\r\n    if (state.pensionesAmount > 0) items.push({ icon: '\ud83c\udfe6', text: 'Plan de pensiones: ' + fmt(state.pensionesAmount) });\r\n    items.push({ icon: '\ud83e\udded', text: 'Plan recomendado: ' + planCtx.plan.nombre });\r\n\r\n    for (var i = 0; i < items.length; i++) {\r\n      var div = document.createElement('div');\r\n      div.className = 'rc-ready-summary-item';\r\n      div.innerHTML = '<span class=\"rc-ready-summary-icon\">' + items[i].icon + '<\/span><span>' + items[i].text + '<\/span>';\r\n      box.appendChild(div);\r\n    }\r\n  }\r\n\r\n  function renderStep8() {\r\n    var area = $('#rc-results-area');\r\n    area.innerHTML = '';\r\n    var r = calcularIRPF();\r\n    if (!r) {\r\n      area.innerHTML = '<div style=\"text-align:center;padding:40px;color:var(--rc-muted);\">No se han podido calcular los resultados. Revisa los datos introducidos.<\/div>';\r\n      return;\r\n    }\r\n\r\n    var saldoPrevio = r.cuotaDiferencialPrevia;\r\n    var esDevolver = saldoPrevio < 0;\r\n    var esPagar = saldoPrevio > 0;\r\n    var ccaaName = state.ccaa ? CCAA_LIST.find(function(c) { return c.code === state.ccaa; }).name : '';\r\n    var potentialCtx = getPotentialDeductionContext();\r\n    var elegibles = potentialCtx.elegibles;\r\n    var rechazadas = potentialCtx.rechazadas;\r\n    var potencialElegible = potentialCtx.potencialTotal;\r\n    var elegiblesEstatales = potentialCtx.elegiblesEstatales.length;\r\n    var elegiblesAutonomicas = potentialCtx.elegiblesAutonomicas.length;\r\n    var planCtx = getPlanRecommendationContext();\r\n\r\n    function buildPotentialBody() {\r\n      if (!elegibles.length) {\r\n        return '<p style=\"margin:0;color:#031549;line-height:1.8;\">Por ahora no hemos detectado deducciones estatales ni auton\u00f3micas potenciales con las respuestas introducidas.<\/p>';\r\n      }\r\n      var html = '<p style=\"margin:0 0 14px;color:#031549;line-height:1.8;\">Hemos detectado <strong>' + elegibles.length + '<\/strong> deducciones potenciales: <strong>' + elegiblesEstatales + '<\/strong> de car\u00e1cter estatal y <strong>' + elegiblesAutonomicas + '<\/strong> vinculadas a <strong>' + ccaaName + '<\/strong>. Si cumples todos los requisitos documentales y de renta, el ahorro m\u00e1ximo orientativo conjunto podr\u00eda llegar hasta <strong>' + fmt(potencialElegible) + '<\/strong>.<\/p>';\r\n      for (var i = 0; i < elegibles.length; i++) {\r\n        html += '<div style=\"display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 0;' + (i ? 'border-top:1px solid rgba(3,21,73,0.08);' : '') + '\">' +\r\n          '<div style=\"font-size:0.84rem;font-weight:600;color:#031549;line-height:1.6;\">' + elegibles[i].ded.emoji + ' ' + elegibles[i].ded.label + '<\/div>' +\r\n          '<div style=\"font-size:0.82rem;font-weight:700;color:#00ad65;white-space:nowrap;\">hasta ' + fmt(dedPotentialValue(elegibles[i].ded)) + '<\/div>' +\r\n        '<\/div>';\r\n      }\r\n      return html;\r\n    }\r\n\r\n    function buildRejectedBody() {\r\n      if (!rechazadas.length) {\r\n        return '<p style=\"margin:0;color:#031549;line-height:1.8;\">No hemos descartado deducciones con las respuestas actuales.<\/p>';\r\n      }\r\n      var grouped = {};\r\n      for (var i = 0; i < rechazadas.length; i++) {\r\n        var reason = rechazadas[i].evaluation.reason;\r\n        if (!grouped[reason]) grouped[reason] = [];\r\n        grouped[reason].push(rechazadas[i].ded);\r\n      }\r\n      var html = '<p style=\"margin:0 0 14px;color:#031549;line-height:1.8;\">Estas deducciones no encajan con lo que nos has indicado por ahora. Incluimos tanto las estatales como las de ' + ccaaName + ', de modo que si cambia alg\u00fan dato o hay matices documentales no recogidos en el simulador, el resultado final tambi\u00e9n podr\u00eda cambiar.<\/p>';\r\n      Object.keys(grouped).forEach(function(reason, groupIndex) {\r\n        var items = grouped[reason];\r\n        html += '<div style=\"padding:' + (groupIndex ? '16px 0 0' : '0') + ';' + (groupIndex ? 'border-top:1px solid rgba(3,21,73,0.08);' : '') + '\">' +\r\n          '<div style=\"font-size:0.86rem;font-weight:700;color:#9f1239;margin-bottom:8px;line-height:1.6;\">' + reason + '<\/div>';\r\n        for (var j = 0; j < items.length; j++) {\r\n          html += '<div style=\"display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 0;' + (j ? 'border-top:1px solid rgba(3,21,73,0.08);' : '') + '\">' +\r\n            '<div style=\"font-size:0.84rem;font-weight:600;color:#031549;line-height:1.6;\">' + items[j].emoji + ' ' + items[j].label + '<\/div>' +\r\n            '<div style=\"font-size:0.82rem;font-weight:700;color:#9f1239;white-space:nowrap;\">No aplica<\/div>' +\r\n          '<\/div>';\r\n        }\r\n        html += '<\/div>';\r\n      });\r\n      return html;\r\n    }\r\n\r\n    var hero = document.createElement('div');\r\n    hero.className = 'rc-result-hero ' + (esDevolver ? 'devolver' : esPagar ? 'pagar' : 'cero');\r\n    hero.innerHTML =\r\n      '<div class=\"rc-result-label\">' + (esDevolver ? 'Resultado estimado \u2014 A devolver' : esPagar ? 'Resultado estimado \u2014 A pagar' : 'Resultado estimado \u2014 Cuadrada') + '<\/div>' +\r\n      '<div class=\"rc-result-amount\">' + (esDevolver ? '\u2212' : esPagar ? '+' : '') + fmt(saldoPrevio) + '<\/div>' +\r\n      '<div class=\"rc-result-sub\">' + (esDevolver ? '\u00a1Enhorabuena! Hacienda tiene que devolverte dinero seg\u00fan esta estimaci\u00f3n \ud83e\udd11.' : esPagar ? 'Lamentablemente te sale a pagar \ud83d\ude2d con esta estimaci\u00f3n inicial.' : 'Tu declaraci\u00f3n quedar\u00eda a cero en esta estimaci\u00f3n inicial.') + ' Este resultado es previo a la aplicaci\u00f3n de deducciones.<\/div>';\r\n    area.appendChild(hero);\r\n\r\n    var potentialBox = document.createElement('div');\r\n    potentialBox.className = 'rc-kpi';\r\n    potentialBox.style.marginBottom = '16px';\r\n    potentialBox.style.background = '#D9FFEE';\r\n    potentialBox.style.borderColor = '#00AD65';\r\n    potentialBox.innerHTML =\r\n      '<div class=\"rc-kpi-label\">Potenciales deducciones<\/div>' +\r\n      '<div class=\"rc-kpi-value\">' + (potencialElegible > 0 ? 'hasta ' + fmt(potencialElegible) : fmt(0)) + '<\/div>' +\r\n      '<div style=\"font-size:0.85rem;color:#031549;line-height:1.6;margin-top:8px;\">En base a tus respuestas, estas deducciones <b>son m\u00e1ximos potenciales a los que podr\u00edas optar si cumples todos los requisitos<\/b> y puedes justificarlos documentalmente.<\/div>';\r\n    area.appendChild(potentialBox);\r\n\r\n    var kpis = document.createElement('div');\r\n    kpis.className = 'rc-kpis';\r\n    var kpiData = [];\r\n    if (state.trabajaAsalariado) kpiData.push({ label: 'Salario bruto', value: fmt(r.brutoTrabajo), cls: 'navy' });\r\n    if (state.trabajaAutonomo) kpiData.push({ label: 'Beneficio aut\u00f3nomo', value: fmt(r.beneficioAutonomo), cls: 'navy' });\r\n    kpiData.push({ label: (state.trabajaAsalariado && state.trabajaAutonomo) ? 'Retenciones y pagos a cuenta' : (state.trabajaAutonomo ? 'Pagos a cuenta' : 'Retenciones'), value: r.retencionesNum > 0 ? '\u2212' + fmt(r.retencionesNum) : fmt(r.retencionesNum), cls: 'blue' });\r\n    for (var k = 0; k < kpiData.length; k++) {\r\n      kpis.innerHTML += '<div class=\"rc-kpi\"><div class=\"rc-kpi-label\">' + kpiData[k].label + '<\/div><div class=\"rc-kpi-value ' + kpiData[k].cls + '\">' + kpiData[k].value + '<\/div><\/div>';\r\n    }\r\n    area.appendChild(kpis);\r\n\r\n    var howtoBody =\r\n      '<p style=\"margin:0 0 14px;color:#031549;line-height:1.85;\">El importe que ves arriba es un resultado previo a la aplicaci\u00f3n de deducciones. Lo usamos como referencia inicial para que puedas entender tu posici\u00f3n fiscal antes de revisar una a una las oportunidades de ahorro que podr\u00edan rebajar ese resultado.<\/p>' +\r\n      '<p style=\"margin:0 0 14px;color:#031549;line-height:1.85;\">El IRPF real depende de una revisi\u00f3n t\u00e9cnica mucho m\u00e1s delicada de lo que parece: la Agencia Tributaria cruza informaci\u00f3n de pagadores, bancos, Catastro, rendimientos del capital, alquileres, ganancias patrimoniales, retenciones y datos auton\u00f3micos. Un peque\u00f1o error en cualquiera de esos bloques puede cambiar el resultado de forma importante.<\/p>' +\r\n      '<p style=\"margin:0 0 14px;color:#031549;line-height:1.85;\">En esta estimaci\u00f3n ya estamos teniendo en cuenta una cotizaci\u00f3n social del trabajador por cuenta ajena en r\u00e9gimen general, incluyendo contingencias comunes, desempleo, formaci\u00f3n profesional y MEI. Si ese dato se calcula mal o no coincide con tu situaci\u00f3n real, el rendimiento neto del trabajo y el resultado final tambi\u00e9n cambian.<\/p>' +\r\n      '<p style=\"margin:0 0 14px;color:#031549;line-height:1.85;\">Adem\u00e1s, las deducciones estatales y auton\u00f3micas no se validan solo porque parezcan aplicables: exigen l\u00edmites de renta, justificantes, fechas concretas, compatibilidades, residencia fiscal, situaci\u00f3n familiar exacta y, en muchos casos, documentaci\u00f3n que si no se revisa bien puede hacer que una deducci\u00f3n se pierda o que Hacienda la regularice despu\u00e9s.<\/p>' +\r\n      '<p style=\"margin:0 0 14px;color:#031549;line-height:1.85;\">Por eso un borrador aparentemente correcto puede salir caro por dos v\u00edas: o pagas de m\u00e1s por no aplicar todo lo que te corresponde, o pagas de menos y te expones a rectificaciones, recargos, intereses o requerimientos posteriores. Lo que hacemos en Muay Tax es revisar tu caso como lo revisar\u00eda un especialista fiscal, no como un simple formulario autom\u00e1tico.<\/p>' +\r\n      '<ul style=\"margin:0;padding-left:18px;color:#031549;line-height:1.8;\">' +\r\n        '<li>Revisamos si la base declarada est\u00e1 bien formada y si las retenciones est\u00e1n correctamente imputadas.<\/li>' +\r\n        '<li>Validamos vivienda, alquiler, hijos, ascendientes, discapacidad, varios pagadores, donativos, ahorro e inversiones, adem\u00e1s de deducciones estatales y auton\u00f3micas.<\/li>' +\r\n        '<li>Comprobamos incompatibilidades y requisitos que suelen pasarse por alto en borradores y simuladores simples.<\/li>' +\r\n        '<li>Te decimos si est\u00e1s dejando dinero en Hacienda o si hay riesgo real de regularizaci\u00f3n.<\/li>' +\r\n      '<\/ul>';\r\n    if (state.trabajaAutonomo) {\r\n      howtoBody += '<p style=\"margin:14px 0 0;color:#031549;line-height:1.85;\">Si tambi\u00e9n has trabajado como aut\u00f3nomo, tratamos el beneficio que introduces como rendimiento neto aproximado de actividad econ\u00f3mica y sumamos tus pagos a cuenta al bloque de retenciones. Es una aproximaci\u00f3n \u00fatil para el lead, pero la cifra final solo se confirma revisando libros, modelos 130\/131, gastos deducibles reales y posibles ajustes de la actividad.<\/p>';\r\n    }\r\n    area.appendChild(createResultAccordion('\u00bfC\u00f3mo calculamos el IRPF?', howtoBody, '#E5ECF7', '#91ABBC'));\r\n\r\n    var cta = document.createElement('div');\r\n    cta.className = 'rc-inline-cta';\r\n    cta.innerHTML =\r\n      '<div class=\"rc-inline-cta-text\">' +\r\n        '<div class=\"rc-inline-cta-title\">Contrata hoy el <span>Plan ' + planCtx.plan.nombre + '<\/span>.<\/div>' +\r\n        '<div class=\"rc-inline-cta-sub\">Seg\u00fan tu caso, te recomendamos hacer la Renta con Muay Tax. El Plan ' + planCtx.plan.nombre + ' est\u00e1 pensado para revisar tu situaci\u00f3n con detalle para maximizar las deducciones aplicadas y presentar tu Renta 2025 con m\u00e1s seguridad frente a la Agencia Tributaria. Dentro del plan podr\u00e1s elegir despu\u00e9s si prefieres modalidad individual o conjunta.<\/div>' +\r\n      '<\/div>' +\r\n      '<a class=\"rc-cta-btn\" href=\"' + planCtx.plan.url + '\" target=\"_blank\" rel=\"noopener noreferrer\">Ver Plan ' + planCtx.plan.nombre + ' &rarr;<\/a>';\r\n    area.appendChild(cta);\r\n\r\n    area.appendChild(createResultAccordion('Deducciones potenciales que podr\u00edas aplicar', buildPotentialBody(), '#D9FFEE', '#00AD65'));\r\n    area.appendChild(createResultAccordion('Deducciones que no encajan con tus respuestas', buildRejectedBody(), '#F7CFD4', '#E0364C'));\r\n\r\n    var note = document.createElement('div');\r\n    note.className = 'rc-note';\r\n    note.innerHTML = '<strong>Nota:<\/strong> Simulaci\u00f3n orientativa basada en la escala estatal del IRPF 2025, tipos auton\u00f3micos est\u00e1ndar y el cat\u00e1logo de deducciones estatales y auton\u00f3micas de la AEAT para Renta 2025. Las deducciones potenciales se muestran como m\u00e1ximo orientativo y deben validarse con la documentaci\u00f3n y requisitos concretos de cada caso antes de aplicarse. No sustituye el asesoramiento fiscal profesional. Datos: AEAT, Ley 35\/2006, Ley 7\/2024, Ley 49\/2002.';\r\n    area.appendChild(note);\r\n  }\r\n\r\n  \/* ============================================================\r\n     HUBSPOT\r\n     Unificamos la carga del script y la creaci\u00f3n del formulario\r\n     inline para evitar solapes y doble inicializaci\u00f3n.\r\n     ============================================================ *\/\r\n  window._rentaFormSubmitted = false;\r\n\r\n  var HUBSPOT_PORTAL_ID = '20760506';\r\n  var HUBSPOT_REGION = 'na1';\r\n  var HUBSPOT_INLINE_FORM_ID = 'f63a316d-d36f-4a56-a2d8-a404132c1ed2';\r\n\r\n  var hsScriptRequested = false;\r\n  var hsScriptCallbacks = [];\r\n  var hsInlineFormLoaded = false;\r\n  var hsInlineAdvanced = false;\r\n  var hsInlineSubmitStarted = false;\r\n  var hsInlineSubmitFailed = false;\r\n  var hsAdvanceTimer = null;\r\n  var hsWatchingHeight = false;\r\n  var hsLastIframeHeight = 0;\r\n  var hsHeightChecker = null;\r\n  var hsInlineObserver = null;\r\n\r\n  function stopInlineFallbackWatchers() {\r\n    if (hsAdvanceTimer) {\r\n      clearTimeout(hsAdvanceTimer);\r\n      hsAdvanceTimer = null;\r\n    }\r\n    if (hsHeightChecker) {\r\n      clearInterval(hsHeightChecker);\r\n      hsHeightChecker = null;\r\n    }\r\n    if (hsInlineObserver) {\r\n      hsInlineObserver.disconnect();\r\n      hsInlineObserver = null;\r\n    }\r\n    hsWatchingHeight = false;\r\n    hsLastIframeHeight = 0;\r\n  }\r\n\r\n  function loadHubspotScript(callback) {\r\n    if (window.hbspt && window.hbspt.forms) {\r\n      if (callback) callback();\r\n      return;\r\n    }\r\n\r\n    if (callback) hsScriptCallbacks.push(callback);\r\n    if (hsScriptRequested) return;\r\n\r\n    hsScriptRequested = true;\r\n    var script = document.createElement('script');\r\n    script.src = 'https:\/\/js.hsforms.net\/forms\/embed\/v2.js';\r\n    script.charset = 'utf-8';\r\n    script.onload = function() {\r\n      var callbacks = hsScriptCallbacks.slice();\r\n      hsScriptCallbacks = [];\r\n      callbacks.forEach(function(cb) {\r\n        if (typeof cb === 'function') cb();\r\n      });\r\n    };\r\n    document.head.appendChild(script);\r\n  }\r\n\r\n  function advanceToStep7() {\r\n    if (hsInlineAdvanced) return;\r\n    if (state.currentStep !== 6) return;\r\n    if (hsInlineSubmitFailed) return;\r\n    hsInlineAdvanced = true;\r\n    stopInlineFallbackWatchers();\r\n    window._rentaFormSubmitted = true;\r\n    goStep(7);\r\n  }\r\n\r\n  function scheduleAdvanceToStep7() {\r\n    if (state.currentStep !== 6) return;\r\n    if (hsInlineAdvanced || hsInlineSubmitFailed) return;\r\n    if (hsAdvanceTimer) clearTimeout(hsAdvanceTimer);\r\n    hsAdvanceTimer = setTimeout(function() {\r\n      hsAdvanceTimer = null;\r\n      advanceToStep7();\r\n    }, 1200);\r\n  }\r\n\r\n  function getInlineIframeHeight() {\r\n    var container = document.getElementById('rc-hs-form-container');\r\n    if (!container) return 0;\r\n    var frame = container.querySelector('.hs-form-frame');\r\n    if (frame && frame.style.height) return parseFloat(frame.style.height);\r\n    var iframe = container.querySelector('iframe');\r\n    if (iframe) return iframe.offsetHeight || iframe.clientHeight || 0;\r\n    return 0;\r\n  }\r\n\r\n  function hasInlineSuccessState() {\r\n    var container = document.getElementById('rc-hs-form-container');\r\n    if (!container) return false;\r\n    var text = (container.textContent || '').toLowerCase();\r\n    if (container.querySelector('.submitted-message, .hs-form__thank-you, .thank-you-message')) return true;\r\n    if (text.indexOf('gracias') !== -1 || text.indexOf('thank you') !== -1 || text.indexOf('hemos recibido') !== -1) return true;\r\n    if (!container.querySelector('iframe') && !container.querySelector('.hs-form-frame') && text.trim().length > 0) return true;\r\n    return false;\r\n  }\r\n\r\n  function startInlineFallbackWatchers() {\r\n    var container = document.getElementById('rc-hs-form-container');\r\n    if (!container || hsWatchingHeight) return;\r\n    hsWatchingHeight = true;\r\n    hsLastIframeHeight = getInlineIframeHeight();\r\n\r\n    hsHeightChecker = setInterval(function() {\r\n      if (hsInlineAdvanced || !hsInlineSubmitStarted) {\r\n        if (hsInlineAdvanced) stopInlineFallbackWatchers();\r\n        return;\r\n      }\r\n      var currentHeight = getInlineIframeHeight();\r\n      if (hsLastIframeHeight > 0 && currentHeight > 0 && currentHeight !== hsLastIframeHeight) {\r\n        advanceToStep7();\r\n      }\r\n    }, 400);\r\n\r\n    hsInlineObserver = new MutationObserver(function() {\r\n      if (!hsInlineSubmitStarted || hsInlineAdvanced) return;\r\n      if (hasInlineSuccessState()) {\r\n        advanceToStep7();\r\n      }\r\n    });\r\n    hsInlineObserver.observe(container, { childList: true, subtree: true, characterData: true });\r\n  }\r\n\r\n  function markInlineSubmitStarted() {\r\n    if (state.currentStep !== 6) return;\r\n    hsInlineSubmitStarted = true;\r\n    hsInlineSubmitFailed = false;\r\n    startInlineFallbackWatchers();\r\n    scheduleAdvanceToStep7();\r\n  }\r\n\r\n  function markInlineSubmitFailed() {\r\n    hsInlineSubmitFailed = true;\r\n    if (hsAdvanceTimer) {\r\n      clearTimeout(hsAdvanceTimer);\r\n      hsAdvanceTimer = null;\r\n    }\r\n  }\r\n\r\n  function getHubspotIncomeTypeValue() {\r\n    var incomeTypes = [];\r\n    if (state.trabajaAsalariado) incomeTypes.push('cuenta_ajena');\r\n    if (state.trabajaAutonomo) incomeTypes.push('autonomo');\r\n    return incomeTypes.join(';');\r\n  }\r\n\r\n  function getHubspotCcaaValue() {\r\n    if (!state.ccaa) return '';\r\n    return HUBSPOT_CCAA_VALUES[state.ccaa] || '';\r\n  }\r\n\r\n  function syncHubspotIncomeTypeQueryParam() {\r\n    if (!window.history || !window.history.replaceState || !window.location) return;\r\n    try {\r\n      var url = new URL(window.location.href);\r\n      var incomeValue = getHubspotIncomeTypeValue();\r\n      var ccaaValue = getHubspotCcaaValue();\r\n      if (incomeValue) url.searchParams.set('renta_25_tipo_ingresos', incomeValue);\r\n      else url.searchParams.delete('renta_25_tipo_ingresos');\r\n      if (ccaaValue) url.searchParams.set('renta_24_ccaa', ccaaValue);\r\n      else url.searchParams.delete('renta_24_ccaa');\r\n      window.history.replaceState(window.history.state, '', url.toString());\r\n    } catch (err) {}\r\n  }\r\n\r\n  function mountInlineHubspotForm() {\r\n    var container = document.getElementById('rc-hs-form-container');\r\n    var panel = document.getElementById('rc-p6');\r\n    if (!container) return;\r\n    if (!panel || !panel.classList.contains('active')) return;\r\n    if (hsInlineFormLoaded) return;\r\n    if (!window.hbspt || !window.hbspt.forms) return;\r\n\r\n    container.innerHTML = '';\r\n    hsInlineFormLoaded = true;\r\n    hsInlineAdvanced = !!window._rentaFormSubmitted;\r\n    hsInlineSubmitStarted = false;\r\n    hsInlineSubmitFailed = false;\r\n    stopInlineFallbackWatchers();\r\n    syncHubspotIncomeTypeQueryParam();\r\n\r\n    window.hbspt.forms.create({\r\n      portalId: HUBSPOT_PORTAL_ID,\r\n      formId: HUBSPOT_INLINE_FORM_ID,\r\n      region: HUBSPOT_REGION,\r\n      target: '#rc-hs-form-container',\r\n      onFormReady: function($form) {\r\n        syncHubspotWorkModeFields($form);\r\n      },\r\n      onBeforeFormSubmit: function($form, submissionValues) {\r\n        syncHubspotWorkModeFields($form);\r\n        syncHubspotSubmissionValues(submissionValues);\r\n        markInlineSubmitStarted();\r\n      },\r\n      onFormSubmit: function($form, submissionValues) {\r\n        syncHubspotWorkModeFields($form);\r\n        syncHubspotSubmissionValues(submissionValues);\r\n        markInlineSubmitStarted();\r\n      },\r\n      onFormSubmitted: function() {\r\n        advanceToStep7();\r\n      }\r\n    });\r\n  }\r\n\r\n  function ensureInlineHubspotForm() {\r\n    syncHubspotIncomeTypeQueryParam();\r\n    loadHubspotScript(mountInlineHubspotForm);\r\n  }\r\n\r\n  function resetInlineHubspotForm() {\r\n    var container = document.getElementById('rc-hs-form-container');\r\n    stopInlineFallbackWatchers();\r\n    hsInlineFormLoaded = false;\r\n    hsInlineAdvanced = false;\r\n    hsInlineSubmitStarted = false;\r\n    hsInlineSubmitFailed = false;\r\n    if (container) container.innerHTML = '';\r\n  }\r\n\r\n  function setHubspotHiddenFieldValue($form, fieldName, value) {\r\n    if (!$form || !fieldName) return false;\r\n    var field = $form.find('[name=\"' + fieldName + '\"]');\r\n\r\n    var isArrayValue = Array.isArray(value);\r\n    var normalizedArray = isArrayValue ? value.filter(function(item) { return !!item; }) : null;\r\n\r\n    if ((!field || !field.length) && isArrayValue) {\r\n      var formEl = $form[0];\r\n      if (formEl && formEl.appendChild) {\r\n        var hidden = document.createElement('input');\r\n        hidden.type = 'hidden';\r\n        hidden.name = fieldName;\r\n        hidden.value = normalizedArray.join(';');\r\n        formEl.appendChild(hidden);\r\n        field = $form.find('[name=\"' + fieldName + '\"]');\r\n      }\r\n    }\r\n\r\n    if (!field || !field.length) return false;\r\n\r\n    field.each(function() {\r\n      var input = this;\r\n      var type = (input.type || '').toLowerCase();\r\n      if (type === 'checkbox' || type === 'radio') {\r\n        if (isArrayValue) input.checked = normalizedArray.indexOf(input.value) !== -1;\r\n        else if (typeof value === 'boolean') input.checked = !!value;\r\n        else input.checked = input.value === value;\r\n        input.dispatchEvent(new Event('change', { bubbles: true }));\r\n        return;\r\n      }\r\n      if (isArrayValue) input.value = normalizedArray.join(';');\r\n      else if (typeof value === 'boolean') input.value = value ? 'true' : 'false';\r\n      else input.value = value || '';\r\n      input.dispatchEvent(new Event('input', { bubbles: true }));\r\n      input.dispatchEvent(new Event('change', { bubbles: true }));\r\n    });\r\n\r\n    return true;\r\n  }\r\n\r\n  function syncHubspotSubmissionValues(submissionValues) {\r\n    if (!submissionValues || typeof submissionValues.push !== 'function') return;\r\n    var incomeTypes = [];\r\n    if (state.trabajaAsalariado) incomeTypes.push('cuenta_ajena');\r\n    if (state.trabajaAutonomo) incomeTypes.push('autonomo');\r\n    var incomeValue = incomeTypes.join(';');\r\n\r\n    for (var i = submissionValues.length - 1; i >= 0; i--) {\r\n      if (submissionValues[i] && submissionValues[i].name === 'renta_25_tipo_ingresos') {\r\n        submissionValues.splice(i, 1);\r\n      }\r\n    }\r\n\r\n    submissionValues.push({\r\n      name: 'renta_25_tipo_ingresos',\r\n      value: incomeValue\r\n    });\r\n  }\r\n\r\n  function syncHubspotWorkModeFields($form) {\r\n    if (!$form) return;\r\n    var incomeTypes = [];\r\n    if (state.trabajaAsalariado) incomeTypes.push('cuenta_ajena');\r\n    if (state.trabajaAutonomo) incomeTypes.push('autonomo');\r\n    setHubspotHiddenFieldValue($form, 'renta_25_tipo_ingresos', incomeTypes);\r\n  }\r\n\r\n  \/* ============================================================\r\n     NAVEGACI\u00d3N (8 PASOS)\r\n     ============================================================ *\/\r\n  function resolveStepTarget(n) {\r\n    if (window._rentaFormSubmitted && n === 6) return 7;\r\n    return n;\r\n  }\r\n\r\n  function scrollToStepHeading(panel) {\r\n    if (!panel) return;\r\n    var stepsNav = document.querySelector('.rc-steps-nav');\r\n    var target = stepsNav || panel;\r\n    var top = target.getBoundingClientRect().top + window.pageYOffset - 16;\r\n    window.scrollTo({\r\n      top: Math.max(0, top),\r\n      behavior: 'smooth'\r\n    });\r\n  }\r\n\r\n  function goStep(n, options) {\r\n    options = options || {};\r\n    var shouldScroll = options.scroll !== false;\r\n    n = resolveStepTarget(n);\r\n    state.currentStep = n;\r\n    $$('.rc-panel').forEach(function(p) { p.classList.remove('active'); });\r\n    $$('.rc-step-tab').forEach(function(t) {\r\n      var s = parseInt(t.dataset.step, 10);\r\n      var isSkippedHubspotStep = s === 6 && window._rentaFormSubmitted;\r\n      var isLockedFutureStep = s >= 7 && !window._rentaFormSubmitted;\r\n      t.classList.toggle('active', s === n && !isSkippedHubspotStep);\r\n      t.classList.toggle('done', s < n || isSkippedHubspotStep);\r\n      t.setAttribute('aria-selected', s === n ? 'true' : 'false');\r\n      t.setAttribute('aria-disabled', (isSkippedHubspotStep || isLockedFutureStep) ? 'true' : 'false');\r\n      \/\/ Bloquear tabs 7 y 8 si no se ha enviado el formulario y bloquear el 6 cuando ya se envi\u00f3\r\n      if (isSkippedHubspotStep || isLockedFutureStep) {\r\n        t.classList.add('locked');\r\n      } else {\r\n        t.classList.remove('locked');\r\n      }\r\n    });\r\n\r\n    var panel = $('#rc-p' + n);\r\n    if (panel) panel.classList.add('active');\r\n\r\n    if (n === 2) syncWorkModeUI();\r\n    if (n === 5) renderDedAut();\r\n    if (n === 6) ensureInlineHubspotForm();\r\n    if (n === 7) renderStep7();\r\n    if (n === 8) renderStep8();\r\n\r\n    if (panel && shouldScroll) {\r\n      setTimeout(function() {\r\n        scrollToStepHeading(panel);\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  function validateStep1() {\r\n    if (!state.ccaa) { alert(repairMojibake('Selecciona tu comunidad aut\u00f3noma.')); return false; }\r\n    if (!state.trabajaAsalariado && !state.trabajaAutonomo) {\r\n      $('#rc-work-mode-err').classList.add('visible');\r\n      return false;\r\n    }\r\n    $('#rc-work-mode-err').classList.remove('visible');\r\n    return true;\r\n  }\r\n  function validateStep2() {\r\n    var brutoEl = $('#rc-bruto');\r\n    var beneficioAutoEl = $('#rc-beneficio-autonomo');\r\n    var pagosAutoEl = $('#rc-pagos-autonomo');\r\n    var autoGestionErr = $('#rc-plan-autonomo-err');\r\n    var valid = true;\r\n    state.bruto = brutoEl ? parseNum(brutoEl.value) : 0;\r\n    state.retenciones = parseNum($('#rc-retenciones').value);\r\n    state.beneficioAutonomo = beneficioAutoEl ? parseNum(beneficioAutoEl.value) : 0;\r\n    state.pagosCuentaAutonomo = pagosAutoEl ? parseNum(pagosAutoEl.value) : 0;\r\n    if (state.trabajaAsalariado && (!state.bruto || state.bruto <= 0)) {\r\n      if (brutoEl) brutoEl.classList.add('error');\r\n      if ($('#rc-bruto-err')) $('#rc-bruto-err').classList.add('visible');\r\n      valid = false;\r\n    } else if (brutoEl) {\r\n      brutoEl.classList.remove('error');\r\n      $('#rc-bruto-err').classList.remove('visible');\r\n    }\r\n    if (state.trabajaAutonomo && (!beneficioAutoEl || beneficioAutoEl.value.trim() === '')) {\r\n      if (beneficioAutoEl) beneficioAutoEl.classList.add('error');\r\n      if ($('#rc-beneficio-autonomo-err')) $('#rc-beneficio-autonomo-err').classList.add('visible');\r\n      valid = false;\r\n    } else if (beneficioAutoEl) {\r\n      beneficioAutoEl.classList.remove('error');\r\n      if ($('#rc-beneficio-autonomo-err')) $('#rc-beneficio-autonomo-err').classList.remove('visible');\r\n    }\r\n    if (state.trabajaAutonomo && !state.planAutonomoGestion) {\r\n      if (autoGestionErr) autoGestionErr.classList.add('visible');\r\n      valid = false;\r\n    } else if (autoGestionErr) {\r\n      autoGestionErr.classList.remove('visible');\r\n    }\r\n    if (!state.trabajaAsalariado) {\r\n      state.bruto = 0;\r\n      state.retenciones = 0;\r\n      state.variosPagadores = 'no';\r\n    }\r\n    if (!state.trabajaAutonomo) {\r\n      state.beneficioAutonomo = 0;\r\n      state.pagosCuentaAutonomo = 0;\r\n      state.planAutonomoGestion = '';\r\n    }\r\n    return valid;\r\n  }\r\n  function validateStep3() {\r\n    var valid = true;\r\n    state.capitalMob = parseNum($('#rc-capital-mob').value);\r\n    state.ganancias = parseNum($('#rc-ganancias').value);\r\n    state.gananciasInmuebles = parseNum($('#rc-ganancias-inmuebles').value);\r\n    state.alquilerInmueble = parseNum($('#rc-alquiler-inmueble').value);\r\n    state.retCapital = parseNum($('#rc-ret-capital').value);\r\n    if (state.alquilerInmueble > 0 && state.planAlquileres === '0') {\r\n      $('#rc-plan-alquileres-err').classList.add('visible');\r\n      valid = false;\r\n    } else {\r\n      $('#rc-plan-alquileres-err').classList.remove('visible');\r\n    }\r\n    if (state.gananciasInmuebles > 0 && state.planVentasInmuebles === '0') {\r\n      $('#rc-plan-ventas-inmuebles-err').classList.add('visible');\r\n      valid = false;\r\n    } else {\r\n      $('#rc-plan-ventas-inmuebles-err').classList.remove('visible');\r\n    }\r\n    return valid;\r\n  }\r\n\r\n  function resetState() {\r\n    state = JSON.parse(JSON.stringify(INITIAL_STATE));\r\n    $('#rc-ccaa').value = '';\r\n    $('#rc-ccaa-confirm').style.display = 'none';\r\n    if ($('#rc-work-asalariado')) $('#rc-work-asalariado').checked = false;\r\n    if ($('#rc-work-autonomo')) $('#rc-work-autonomo').checked = false;\r\n    $('#rc-bruto').value = '';\r\n    $('#rc-retenciones').value = '';\r\n    if ($('#rc-beneficio-autonomo')) $('#rc-beneficio-autonomo').value = '';\r\n    if ($('#rc-pagos-autonomo')) $('#rc-pagos-autonomo').value = '';\r\n    $('#rc-capital-mob').value = '';\r\n    $('#rc-ganancias').value = '';\r\n    if ($('#rc-ganancias-inmuebles')) $('#rc-ganancias-inmuebles').value = '';\r\n    $('#rc-alquiler-inmueble').value = '';\r\n    $('#rc-ret-capital').value = '';\r\n    $('#rc-hijos-info').style.display = 'none';\r\n    if ($('#rc-work-mode-err')) $('#rc-work-mode-err').classList.remove('visible');\r\n    if ($('#rc-bruto-err')) $('#rc-bruto-err').classList.remove('visible');\r\n    if ($('#rc-beneficio-autonomo-err')) $('#rc-beneficio-autonomo-err').classList.remove('visible');\r\n    if ($('#rc-plan-autonomo-err')) $('#rc-plan-autonomo-err').classList.remove('visible');\r\n    if ($('#rc-plan-alquileres-err')) $('#rc-plan-alquileres-err').classList.remove('visible');\r\n    if ($('#rc-plan-ventas-inmuebles-err')) $('#rc-plan-ventas-inmuebles-err').classList.remove('visible');\r\n    $('#rc-pensiones-input').style.display = 'none';\r\n    $('#rc-pensiones-amount').value = '';\r\n    $('#rc-donativos-input').style.display = 'none';\r\n    $('#rc-donativos-amount').value = '';\r\n\r\n    var defaults = {\r\n      'rc-edad': '35_65',\r\n      'rc-varios-pagadores': 'no',\r\n      'rc-hijos': '0',\r\n      'rc-ascendientes': '0',\r\n      'rc-discapacidad': 'ninguna',\r\n      'rc-vivienda': 'no',\r\n      'rc-pensiones': 'no',\r\n      'rc-donativos': 'no',\r\n      'rc-plan-autonomo-gestion': '',\r\n      'rc-plan-alquileres': '0',\r\n      'rc-plan-ventas-inmuebles': '0',\r\n      'rc-plan-cripto': 'no',\r\n      'rc-plan-extranjero': 'no',\r\n      'rc-plan-inversiones': 'sin_operativa',\r\n      'rc-grupo-familia': 'no',\r\n      'rc-grupo-inversiones': 'no',\r\n      'rc-grupo-gastos': 'no'\r\n    };\r\n    Object.keys(defaults).forEach(function(groupId) {\r\n      var group = $('#' + groupId);\r\n      if (!group) return;\r\n      group.querySelectorAll('.rc-choice').forEach(function(btn) {\r\n        btn.classList.toggle('selected', btn.dataset.val === defaults[groupId]);\r\n      });\r\n    });\r\n\r\n    window._rentaFormSubmitted = false;\r\n    resetInlineHubspotForm();\r\n    syncWorkModeCards();\r\n    syncWorkModeUI();\r\n    syncHubspotIncomeTypeQueryParam();\r\n    goStep(1);\r\n  }\r\n\r\n  \/* ============================================================\r\n     EVENTOS\r\n     ============================================================ *\/\r\n\r\n  ensureDynamicIncomeSections();\r\n\r\n  ['rc-bruto', 'rc-retenciones', 'rc-beneficio-autonomo', 'rc-pagos-autonomo', 'rc-capital-mob', 'rc-ganancias', 'rc-ganancias-inmuebles', 'rc-alquiler-inmueble', 'rc-ret-capital', 'rc-pensiones-amount', 'rc-donativos-amount'].forEach(function(id) {\r\n    var el = $('#' + id);\r\n    if (el) el.addEventListener('input', function() { formatInputNum(this); });\r\n  });\r\n\r\n  $$('.rc-step-tab').forEach(function(tab) {\r\n    tab.addEventListener('click', function() {\r\n      var s = parseInt(tab.dataset.step);\r\n      if (s === 6 && window._rentaFormSubmitted) {\r\n        goStep(7);\r\n        return;\r\n      }\r\n      if (s >= 7 && !window._rentaFormSubmitted) return;\r\n      if (s >= 2 && !validateStep1()) return;\r\n      if (s >= 3 && !validateStep2()) return;\r\n      if (s >= 4 && !validateStep3()) return;\r\n      goStep(s);\r\n    });\r\n  });\r\n\r\n  $('#rc-btn-1-next').addEventListener('click', function() { if (validateStep1()) goStep(2); });\r\n  $('#rc-btn-2-next').addEventListener('click', function() { if (validateStep2()) goStep(3); });\r\n  $('#rc-btn-3-next').addEventListener('click', function() { if (validateStep3()) goStep(4); });\r\n  $('#rc-btn-4-next').addEventListener('click', function() { goStep(5); });\r\n  $('#rc-btn-5-next').addEventListener('click', function() { goStep(6); });\r\n  $('#rc-btn-see-results').addEventListener('click', function() { goStep(8); });\r\n\r\n  $$('[data-goto]').forEach(function(btn) {\r\n    btn.addEventListener('click', function() {\r\n      var target = parseInt(btn.dataset.goto);\r\n      if (target > 3 && !validateStep3()) return;\r\n      goStep(target);\r\n    });\r\n  });\r\n\r\n    ['#rc-btn-reset', '#rc-btn-reset2'].forEach(function(sel) {\r\n      var el = $(sel);\r\n      if (el) el.addEventListener('click', function() { if (confirm(repairMojibake('\u00bfSeguro que quieres reiniciar el simulador?'))) resetState(); });\r\n    });\r\n\r\n  initChoiceGroup('rc-edad', 'edad');\r\n  initChoiceGroup('rc-varios-pagadores', 'variosPagadores');\r\n  initWorkModeSelector();\r\n  initChoiceGroup('rc-plan-autonomo-gestion', 'planAutonomoGestion');\r\n  initChoiceGroup('rc-plan-alquileres', 'planAlquileres');\r\n  initChoiceGroup('rc-plan-ventas-inmuebles', 'planVentasInmuebles');\r\n  initChoiceGroup('rc-plan-cripto', 'planCripto');\r\n  initChoiceGroup('rc-plan-extranjero', 'planExtranjero');\r\n  initChoiceGroup('rc-plan-inversiones', 'planInversiones');\r\n  initChoiceGroup('rc-hijos', 'hijos');\r\n  initChoiceGroup('rc-ascendientes', 'ascendientes');\r\n  initChoiceGroup('rc-discapacidad', 'discapacidad');\r\n  initChoiceGroup('rc-grupo-familia', 'grupoFamiliaDed');\r\n  initChoiceGroup('rc-grupo-inversiones', 'grupoInversionesDed');\r\n  initChoiceGroup('rc-grupo-gastos', 'grupoGastosDed');\r\n\r\n  function initDedToggle(containerId, stateKeyFlag, inputContainerId, stateKeyAmount, activeValue) {\r\n    var container = $('#' + containerId);\r\n    if (!container) return;\r\n    container.querySelectorAll('.rc-choice').forEach(function(btn) {\r\n      btn.addEventListener('click', function() {\r\n        container.querySelectorAll('.rc-choice').forEach(function(b) { b.classList.remove('selected'); });\r\n        btn.classList.add('selected');\r\n        var isSi = btn.dataset.val === 'si';\r\n        state[stateKeyFlag] = isSi ? (activeValue || 1) : 0;\r\n        if (inputContainerId) {\r\n          var inputBox = $('#' + inputContainerId);\r\n          if (inputBox) inputBox.style.display = isSi ? 'block' : 'none';\r\n          if (!isSi) {\r\n            state[stateKeyAmount] = 0;\r\n            var input = inputBox ? inputBox.querySelector('input') : null;\r\n            if (input) input.value = '';\r\n          }\r\n        }\r\n        if (stateKeyFlag === 'deducVivienda' || stateKeyFlag === 'deducDonativos') {\r\n          renderDedAut();\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  initDedToggle('rc-vivienda', 'deducVivienda', null, null, 1);\r\n  initDedToggle('rc-pensiones', 'planPensiones', 'rc-pensiones-input', 'pensionesAmount');\r\n  initDedToggle('rc-donativos', 'deducDonativos', 'rc-donativos-input', 'donativosAmount');\r\n\r\n  var pensAmountEl = $('#rc-pensiones-amount');\r\n  if (pensAmountEl) pensAmountEl.addEventListener('input', function() {\r\n    formatInputNum(this);\r\n    state.pensionesAmount = parseNum(this.value);\r\n  });\r\n  var donAmountEl = $('#rc-donativos-amount');\r\n  if (donAmountEl) donAmountEl.addEventListener('input', function() {\r\n    formatInputNum(this);\r\n    state.donativosAmount = parseNum(this.value);\r\n    renderDedAut();\r\n  });\r\n\r\n  window.addEventListener('message', function(event) {\r\n    var data = event.data;\r\n    if (typeof data === 'string') {\r\n      try { data = JSON.parse(data); } catch (e) {}\r\n    }\r\n    if (!data || data.type !== 'hsFormCallback') return;\r\n    if ((data.eventName === 'onBeforeFormSubmit' || data.eventName === 'onFormSubmit') && state.currentStep === 6) {\r\n      markInlineSubmitStarted();\r\n    }\r\n    if (data.eventName === 'onFormSubmissionFailed' && state.currentStep === 6) {\r\n      markInlineSubmitFailed();\r\n    }\r\n    if (data.eventName === 'onFormSubmitted' && state.currentStep === 6) {\r\n      advanceToStep7();\r\n    }\r\n  });\r\n  window.addEventListener('hs-form-event:on-submission:success', function(event) {\r\n    var detail = event && event.detail ? event.detail : {};\r\n    if (detail.formId === HUBSPOT_INLINE_FORM_ID && state.currentStep === 6) {\r\n      advanceToStep7();\r\n    }\r\n  });\r\n  window.addEventListener('hs-form-event:on-submission:failed', function(event) {\r\n    var detail = event && event.detail ? event.detail : {};\r\n    if (detail.formId === HUBSPOT_INLINE_FORM_ID && state.currentStep === 6) {\r\n      markInlineSubmitFailed();\r\n    }\r\n  });\r\n\r\n  \/* ============================================================\r\n     INIT\r\n     ============================================================ *\/\r\n  initCCAA();\r\n  goStep(1);\r\n\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e6e7ea elementor-widget elementor-widget-text-editor\" data-id=\"5e6e7ea\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3 id=\"como-interpretar-si-el-resultado-sale-a-pagar-o-a-devolver\" class=\"wp-block-heading\">C\u00f3mo interpretar si el resultado sale a pagar o a devolver<\/h3><p>Una vez introducidos los datos, el simulador te mostrar\u00e1 un resultado orientativo.<\/p><ul class=\"wp-block-list\"><li>Si sale <strong>a pagar<\/strong>, significa que con la informaci\u00f3n introducida tendr\u00edas que ingresar una cantidad a Hacienda.<\/li><li>Si sale <strong>a devolver<\/strong>, significa que, en principio, la Agencia Tributaria deber\u00eda devolverte importe por exceso de retenciones o por el efecto de determinadas deducciones.<\/li><\/ul><p>Aun as\u00ed, conviene interpretar ese resultado con prudencia. El simulador te ayuda a hacer una previsi\u00f3n, pero el resultado definitivo depender\u00e1 de la declaraci\u00f3n real, de los datos fiscales correctos y de que todas las deducciones aplicadas cumplan los requisitos.<\/p><h2 id=\"diferencia-entre-el-simulador-el-borrador-y-la-declaracion-real\" class=\"wp-block-heading\">Diferencia entre el simulador, el borrador y la declaraci\u00f3n real<\/h2><p>Aunque a veces se confunden, <strong>no son lo mismo<\/strong>. El <strong>simulador de declaraci\u00f3n de la renta<\/strong> sirve para hacer una estimaci\u00f3n orientativa, mientras que el <strong>borrador<\/strong> y la <strong>declaraci\u00f3n real<\/strong> ya forman parte del proceso oficial de presentaci\u00f3n.<\/p><ul class=\"wp-block-list\"><li>El <strong>simulador<\/strong>, como <strong>Renta Web Open<\/strong>, te ayuda a calcular un resultado aproximado con los datos que introduces manualmente. No valida tu identidad, no comprueba tus datos fiscales reales y <strong>no permite presentar la declaraci\u00f3n<\/strong>.<br \/><br \/><\/li><li>El <strong>borrador de la renta<\/strong>, en cambio, ya se genera dentro del entorno real de la Agencia Tributaria con identificaci\u00f3n del contribuyente y con los datos fiscales disponibles. Aun as\u00ed, tambi\u00e9n debe revisarse, porque puede haber informaci\u00f3n incompleta o deducciones que no aparezcan aplicadas autom\u00e1ticamente.<\/li><\/ul><ul class=\"wp-block-list\"><li>La <strong>declaraci\u00f3n real<\/strong> es la versi\u00f3n definitiva que presentas a Hacienda. Por eso, el simulador es \u00fatil para orientarte, pero no sustituye ni el borrador ni la presentaci\u00f3n final de la renta.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b191c4d elementor-cta--layout-image-left elementor-cta--mobile-layout-image-below elementor-cta--skin-classic elementor-animated-content elementor-widget elementor-widget-call-to-action\" data-id=\"b191c4d\" data-element_type=\"widget\" data-widget_type=\"call-to-action.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-cta\">\n\t\t\t\t\t<div class=\"elementor-cta__bg-wrapper\">\n\t\t\t\t<div class=\"elementor-cta__bg elementor-bg\" style=\"background-image: url(https:\/\/muaytax.com\/wp-content\/uploads\/2026\/03\/declaracion-de-la-renta.png);\" role=\"img\" aria-label=\"declaraci\u00f3n de la renta\"><\/div>\n\t\t\t\t<div class=\"elementor-cta__bg-overlay\"><\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-cta__content\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__title elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t\tTe avisamos cuando empiece la Renta 2025 \ud83d\udd14\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__description elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t\tD\u00e9janos tu perfil hoy y te contactaremos en cuanto se abra el plazo para gestionar tu declaraci\u00f3n sin esperas.\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item \">\n\t\t\t\t\t<a class=\"elementor-cta__button elementor-button elementor-size-\" href=\"https:\/\/muaytax.com\/es\/espana\/aviso-declaracion-de-la-renta\/\">\n\t\t\t\t\t\tQuiero que me avis\u00e9is\u200b\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9eb0b74 elementor-widget elementor-widget-heading\" data-id=\"9eb0b74\" data-element_type=\"widget\" id=\"preguntas-frecuentes-sobre-el-simulador-de-declaracion-de-la-renta\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Preguntas frecuentes sobre el simulador de declaraci\u00f3n de la renta<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-424c718 elementor-widget elementor-widget-accordion\" data-id=\"424c718\" data-element_type=\"widget\" data-widget_type=\"accordion.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-6951\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-6951\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"icon icon-down-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"icon icon-up-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">\u00bfEl simulador de la renta es exacto?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6951\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-6951\"><p><span style=\"font-weight: 400;\">El resultado del simulador es <\/span><b>orientativo<\/b><span style=\"font-weight: 400;\">. Puede acercarse bastante a la realidad si introduces todos los datos correctamente, pero no sustituye la declaraci\u00f3n definitiva ni garantiza que el resultado final sea id\u00e9ntico.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-6952\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-6952\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"icon icon-down-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"icon icon-up-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">\u00bfSe puede presentar la declaraci\u00f3n desde el simulador?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6952\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-6952\"><p><span style=\"font-weight: 400;\">No. El simulador oficial <\/span><b>no permite presentar la declaraci\u00f3n<\/b><span style=\"font-weight: 400;\">. Su funci\u00f3n es \u00fanicamente ayudarte a hacer una estimaci\u00f3n previa del resultado de tu renta.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-6953\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-6953\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"icon icon-down-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"icon icon-up-arrow1\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">\u00bfHace falta identificarse para usarlo?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6953\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-6953\"><p><span style=\"font-weight: 400;\">No en el caso de <\/span><b>Renta Web Open<\/b><span style=\"font-weight: 400;\">. La Agencia Tributaria explica que esta herramienta funciona sin identificar al contribuyente y sin validar el NIF.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<script type=\"application\/ld+json\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"\\u00bfEl simulador de la renta es exacto?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">El resultado del simulador es <\\\/span><b>orientativo<\\\/b><span style=\\\"font-weight: 400;\\\">. Puede acercarse bastante a la realidad si introduces todos los datos correctamente, pero no sustituye la declaraci\\u00f3n definitiva ni garantiza que el resultado final sea id\\u00e9ntico.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"\\u00bfSe puede presentar la declaraci\\u00f3n desde el simulador?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">No. El simulador oficial <\\\/span><b>no permite presentar la declaraci\\u00f3n<\\\/b><span style=\\\"font-weight: 400;\\\">. Su funci\\u00f3n es \\u00fanicamente ayudarte a hacer una estimaci\\u00f3n previa del resultado de tu renta.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"\\u00bfHace falta identificarse para usarlo?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">No en el caso de <\\\/span><b>Renta Web Open<\\\/b><span style=\\\"font-weight: 400;\\\">. La Agencia Tributaria explica que esta herramienta funciona sin identificar al contribuyente y sin validar el NIF.<\\\/span><\\\/p>\"}}]}<\/script>\n\t\t\t\t\t<\/div>\n\t\t\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>El <strong>simulador de la declaraci\u00f3n de la renta<\/strong> te permite calcular de forma orientativa si tu renta puede salir <strong>a pagar o a devolver<\/strong> antes de presentarla. En la campa\u00f1a del <strong>ejercicio 2025<\/strong>, la referencia oficial es <strong>Renta Web Open<\/strong>, una herramienta de la Agencia Tributaria pensada para hacer simulaciones, pero no para presentar la declaraci\u00f3n.<\/p>\n","protected":false},"author":10,"featured_media":59920,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[83],"tags":[],"class_list":["post-59919","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-declaracion-renta"],"_links":{"self":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/posts\/59919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/comments?post=59919"}],"version-history":[{"count":73,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/posts\/59919\/revisions"}],"predecessor-version":[{"id":61926,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/posts\/59919\/revisions\/61926"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/media\/59920"}],"wp:attachment":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/media?parent=59919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/categories?post=59919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/tags?post=59919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}