{"id":62722,"date":"2026-05-13T12:23:26","date_gmt":"2026-05-13T10:23:26","guid":{"rendered":"https:\/\/muaytax.com\/?page_id=62722"},"modified":"2026-05-28T12:21:54","modified_gmt":"2026-05-28T10:21:54","slug":"calculadora-ganancias-patrimoniales","status":"publish","type":"page","link":"https:\/\/muaytax.com\/es\/calculadoras\/calculadora-ganancias-patrimoniales\/","title":{"rendered":"Calculadora Ganancias Patrimoniales"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"62722\" class=\"elementor elementor-62722\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-742b492 e-flex e-con-boxed e-con e-parent\" data-id=\"742b492\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2eec1a3 elementor-widget elementor-widget-html\" data-id=\"2eec1a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n    .gp-hero-wrap,\r\n    .gp-hero-wrap *,\r\n    .gp-calc,\r\n    .gp-calc *,\r\n    .gp-calc *::before,\r\n    .gp-calc *::after {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .gp-hero-wrap *,\r\n    .gp-calc * {\r\n      margin: 0;\r\n      padding: 0;\r\n    }\r\n\r\n    .gp-hero-wrap,\r\n    .gp-calc {\r\n      --gp-primary: #00ad65;\r\n      --gp-navy: #031549;\r\n      --gp-blue: #0083e3;\r\n      --gp-bg: #f7faff;\r\n      --gp-soft: #d9ffee;\r\n      --gp-info: #d8f6ff;\r\n      --gp-border: #e5ecf7;\r\n      --gp-border-soft: #f7faff;\r\n      --gp-border-strong: #91abbc;\r\n      --gp-muted: #6a768a;\r\n      --gp-danger: #e0364c;\r\n      --gp-warning: #b7791f;\r\n      --gp-white: #ffffff;\r\n      --gp-radius: 12px;\r\n      --gp-radius-sm: 8px;\r\n      --gp-font: inherit;\r\n\r\n      width: 100%;\r\n      max-width: 1100px;\r\n      margin: 0 auto;\r\n      color: var(--gp-navy);\r\n      font-family: var(--gp-font);\r\n      font-size: 14px;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .gp-hero-wrap {\r\n      padding: 0 16px;\r\n    }\r\n\r\n    .gp-hero {\r\n      display: flex;\r\n      flex-direction: column;\r\n      align-items: center;\r\n      padding: 30px 0 40px;\r\n      text-align: center;\r\n    }\r\n\r\n    .gp-hero-eyebrow {\r\n      display: inline-block;\r\n      margin-bottom: 20px;\r\n      padding: 6px 16px;\r\n      border-radius: 20px;\r\n      color: var(--gp-primary);\r\n      font-size: 0.78rem;\r\n      font-weight: 700;\r\n      letter-spacing: .8px;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    .gp-hero-eyebrow { display: none !important; }\r\n\r\n    .gp-hero-title {\r\n      width: 100%;\r\n      max-width: 860px;\r\n      margin: 0 auto 18px;\r\n      color: var(--gp-navy);\r\n      font-size: 2.55rem;\r\n      font-weight: 800;\r\n      line-height: 1.2;\r\n      letter-spacing: 0;\r\n      text-align: center;\r\n    }\r\n\r\n    .gp-hero-title span {\r\n      color: var(--gp-primary);\r\n    }\r\n\r\n    .gp-hero-lead {\r\n      max-width: 850px;\r\n      margin: 0 auto 28px;\r\n      color: var(--gp-navy);\r\n      font-size: 1.05rem;\r\n      line-height: 1.7;\r\n      text-align: center;\r\n    }\r\n\r\n    .gp-hero-stats {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      justify-content: center;\r\n      gap: 12px;\r\n    }\r\n\r\n    .gp-stat-pill {\r\n      padding: 10px 12px;\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-white);\r\n      color: var(--gp-navy);\r\n      font-size: 0.92rem;\r\n      font-weight: 600;\r\n    }\r\n\r\n    .gp-stat-pill span {\r\n      color: var(--gp-primary);\r\n      font-weight: 800;\r\n    }\r\n\r\n    .gp-calc {\r\n      padding: 24px 16px;\r\n    }\r\n\r\n    .gp-header {\r\n      display: block;\r\n      padding: 20px 28px;\r\n      margin-bottom: 24px;\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-white);\r\n    }\r\n\r\n    .gp-title {\r\n      display: block !important;\r\n      margin: 0 !important;\r\n      color: var(--gp-navy) !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 1.75rem !important;\r\n      font-weight: 700 !important;\r\n      line-height: 1.2 !important;\r\n      letter-spacing: normal !important;\r\n      text-transform: none !important;\r\n    }\r\n\r\n    .gp-subtitle {\r\n      max-width: 760px;\r\n      color: var(--gp-muted);\r\n      font-size: 0.95rem;\r\n      line-height: 1.55;\r\n    }\r\n\r\n    .gp-badge {\r\n      display: inline-block;\r\n      margin-left: 10px;\r\n      padding: 4px 12px;\r\n      border-radius: 20px;\r\n      background: var(--gp-primary);\r\n      color: var(--gp-white);\r\n      font-size: 0.75rem;\r\n      font-weight: 700;\r\n      vertical-align: middle;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .gp-steps-nav {\r\n      display: flex !important;\r\n      gap: 4px !important;\r\n      padding: 6px !important;\r\n      margin-bottom: 24px !important;\r\n      overflow: hidden !important;\r\n      border: 1px solid var(--gp-border) !important;\r\n      border-radius: var(--gp-radius) !important;\r\n      background: var(--gp-white) !important;\r\n    }\r\n\r\n    .gp-step-tab {\r\n      all: unset !important;\r\n      box-sizing: border-box !important;\r\n      display: flex !important;\r\n      flex: 1 1 0 !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      min-width: 0 !important;\r\n      padding: 10px 6px !important;\r\n      border-radius: 6px !important;\r\n      color: var(--gp-navy) !important;\r\n      background: transparent !important;\r\n      cursor: pointer !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 0.87rem !important;\r\n      font-weight: 600 !important;\r\n      line-height: 1.3 !important;\r\n      text-align: center !important;\r\n      transition: background .18s, color .18s;\r\n    }\r\n\r\n    .gp-step-tab:hover,\r\n    .gp-step-tab.active { background: var(--gp-soft) !important; color: var(--gp-primary) !important; }\r\n    .gp-step-tab.done { color: var(--gp-primary) !important; }\r\n\r\n    .gp-step-num {\r\n      display: inline-flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      width: 22px !important;\r\n      height: 22px !important;\r\n      flex: 0 0 22px !important;\r\n      border-radius: 50% !important;\r\n      background: var(--gp-border) !important;\r\n      color: var(--gp-navy) !important;\r\n      font-size: 0.84rem !important;\r\n      font-weight: 700 !important;\r\n      line-height: 1 !important;\r\n    }\r\n\r\n    .gp-step-tab.active .gp-step-num,\r\n    .gp-step-tab.done .gp-step-num { background: var(--gp-primary) !important; color: var(--gp-white) !important; }\r\n\r\n    .gp-panel {\r\n      display: none;\r\n      padding: 28px 28px 22px;\r\n      margin-bottom: 20px;\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-white);\r\n      animation: gpFade .2s ease;\r\n    }\r\n\r\n    .gp-panel.active { display: block; }\r\n    @keyframes gpFade { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }\r\n\r\n    .gp-panel-title {\r\n      margin: 0 0 6px !important;\r\n      padding-bottom: 10px !important;\r\n      color: var(--gp-navy) !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 1.25rem !important;\r\n      font-weight: 700 !important;\r\n      line-height: 1.25 !important;\r\n      letter-spacing: normal !important;\r\n      text-transform: none !important;\r\n    }\r\n\r\n    .gp-panel-desc {\r\n      margin: 0 0 20px !important;\r\n      color: var(--gp-navy) !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 1rem !important;\r\n      font-weight: 400 !important;\r\n      line-height: 1.55 !important;\r\n      letter-spacing: normal !important;\r\n    }\r\n\r\n    .gp-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      gap: 16px 18px;\r\n    }\r\n\r\n    .gp-grid-4,\r\n    .gp-source-list {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      gap: 10px;\r\n    }\r\n\r\n    .gp-source-list {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      gap: 10px 14px;\r\n    }\r\n\r\n    .gp-row { margin-bottom: 18px; }\r\n    .gp-row:last-child { margin-bottom: 0; }\r\n\r\n    .gp-label {\r\n      display: block;\r\n      margin-bottom: 7px;\r\n      color: var(--gp-navy);\r\n      font-size: 0.86rem;\r\n      font-weight: 800;\r\n    }\r\n\r\n    .gp-label-sub {\r\n      display: block;\r\n      margin-top: 2px;\r\n      color: var(--gp-muted);\r\n      font-size: 0.74rem;\r\n      font-weight: 400;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .gp-input,\r\n    .gp-select {\r\n      width: 100%;\r\n      min-height: 42px;\r\n      padding: 10px 13px;\r\n      border: 2px solid var(--gp-border-soft);\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-border-soft);\r\n      color: var(--gp-navy);\r\n      font: inherit;\r\n      font-size: 0.9rem;\r\n      transition: border-color .18s, background .18s;\r\n    }\r\n\r\n    .gp-input:hover,\r\n    .gp-select:hover { border-color: var(--gp-border-strong); }\r\n\r\n    .gp-input:focus,\r\n    .gp-select:focus {\r\n      border-color: var(--gp-primary);\r\n      background: var(--gp-white);\r\n      outline: none;\r\n    }\r\n\r\n    .gp-input-wrap { position: relative; }\r\n    .gp-prefix {\r\n      position: absolute;\r\n      left: 12px;\r\n      top: 50%;\r\n      color: var(--gp-muted);\r\n      font-size: 0.9rem;\r\n      font-weight: 800;\r\n      transform: translateY(-50%);\r\n      pointer-events: none;\r\n    }\r\n\r\n    .gp-prefixed { padding-left: 31px; }\r\n\r\n    .gp-help {\r\n      margin-top: 6px;\r\n      color: var(--gp-muted);\r\n      font-size: 0.75rem;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    .gp-source-check {\r\n      box-sizing: border-box !important;\r\n      position: relative !important;\r\n      display: flex !important;\r\n      align-items: flex-start !important;\r\n      gap: 12px !important;\r\n      min-width: 0 !important;\r\n      min-height: 74px !important;\r\n      padding: 14px !important;\r\n      border: 2px solid var(--gp-border-soft) !important;\r\n      border-radius: var(--gp-radius-sm) !important;\r\n      background: var(--gp-border-soft) !important;\r\n      color: var(--gp-navy) !important;\r\n      cursor: pointer !important;\r\n      font-family: var(--gp-font) !important;\r\n      transition: border-color .18s, background .18s, color .18s !important;\r\n    }\r\n\r\n    .gp-source-check:hover,\r\n    .gp-source-check.selected {\r\n      border-color: var(--gp-primary) !important;\r\n      background: var(--gp-soft) !important;\r\n    }\r\n\r\n    .gp-source-check input[type=\"checkbox\"] {\r\n      position: absolute !important;\r\n      inset: 0 !important;\r\n      opacity: 0 !important;\r\n      margin: 0 !important;\r\n      cursor: pointer !important;\r\n    }\r\n\r\n    .gp-source-copy {\r\n      display: block !important;\r\n      min-width: 0 !important;\r\n    }\r\n\r\n    .gp-source-check.selected .gp-source-title {\r\n      color: var(--gp-primary) !important;\r\n    }\r\n\r\n    .gp-source-check:focus-within {\r\n      border-color: var(--gp-primary) !important;\r\n      box-shadow: 0 0 0 3px rgba(0, 173, 101, .12) !important;\r\n    }\r\n\r\n    .gp-mode-btn {\r\n      all: unset !important;\r\n      box-sizing: border-box !important;\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      justify-content: center !important;\r\n      gap: 4px !important;\r\n      min-height: 72px !important;\r\n      padding: 14px !important;\r\n      border: 2px solid var(--gp-border-soft) !important;\r\n      border-radius: var(--gp-radius-sm) !important;\r\n      background: var(--gp-border-soft) !important;\r\n      color: var(--gp-navy) !important;\r\n      cursor: pointer !important;\r\n      font-family: var(--gp-font) !important;\r\n      transition: border-color .18s, background .18s, color .18s !important;\r\n    }\r\n\r\n    .gp-mode-btn:hover,\r\n    .gp-mode-btn.selected {\r\n      border-color: var(--gp-primary) !important;\r\n      background: var(--gp-soft) !important;\r\n      color: var(--gp-primary) !important;\r\n    }\r\n\r\n    .gp-source-title,\r\n    .gp-mode-title {\r\n      display: block !important;\r\n      color: inherit;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 0.9rem !important;\r\n      font-weight: 700 !important;\r\n      line-height: 1.25 !important;\r\n      letter-spacing: normal !important;\r\n    }\r\n\r\n    .gp-source-desc,\r\n    .gp-mode-desc {\r\n      display: block !important;\r\n      margin-top: 4px !important;\r\n      color: var(--gp-muted) !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 0.75rem !important;\r\n      font-weight: 400 !important;\r\n      line-height: 1.4 !important;\r\n      letter-spacing: normal !important;\r\n    }\r\n\r\n    .gp-switch-card {\r\n      position: relative;\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 12px;\r\n      padding: 13px;\r\n      border: 2px solid var(--gp-border-soft);\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-border-soft);\r\n      cursor: pointer;\r\n      user-select: none;\r\n      transition: border-color .18s, background .18s;\r\n    }\r\n\r\n    .gp-switch-card:hover,\r\n    .gp-switch-card.selected {\r\n      border-color: var(--gp-primary);\r\n      background: var(--gp-soft);\r\n    }\r\n\r\n    .gp-switch-card input {\r\n      position: absolute;\r\n      inset: 0;\r\n      opacity: 0;\r\n      margin: 0;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .gp-switch-card:focus-within {\r\n      border-color: var(--gp-primary);\r\n      box-shadow: 0 0 0 3px rgba(0, 173, 101, .12);\r\n    }\r\n\r\n    .gp-switch-title {\r\n      display: block;\r\n      color: var(--gp-navy);\r\n      font-size: 0.84rem;\r\n      font-weight: 900;\r\n      line-height: 1.35;\r\n    }\r\n\r\n    .gp-switch-desc {\r\n      display: block;\r\n      margin-top: 3px;\r\n      color: var(--gp-muted);\r\n      font-size: 0.73rem;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .gp-info-box,\r\n    .gp-warning-box,\r\n    .gp-confirm-box {\r\n      margin: 16px 0;\r\n      padding: 12px 14px;\r\n      border-radius: var(--gp-radius);\r\n      color: var(--gp-navy);\r\n      font-size: 0.8rem;\r\n      line-height: 1.6;\r\n    }\r\n\r\n    .gp-info-box { background: var(--gp-info); border: 1px solid #bdeefe; }\r\n    .gp-confirm-box { background: var(--gp-soft); border: 1px solid var(--gp-primary); }\r\n    .gp-warning-box { background: #fff7e8; border: 1px solid #f0c36a; color: #4a3410; }\r\n\r\n    .gp-section {\r\n      margin-top: 20px;\r\n      padding-top: 20px;\r\n      border-top: 1px solid var(--gp-border);\r\n    }\r\n\r\n    .gp-section-title {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      margin-bottom: 12px;\r\n      color: var(--gp-navy);\r\n      font-size: 1rem;\r\n      font-weight: 900;\r\n      line-height: 1.25;\r\n    }\r\n\r\n    .gp-pill {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      min-height: 22px;\r\n      padding: 3px 9px;\r\n      border-radius: 999px;\r\n      background: var(--gp-soft);\r\n      color: var(--gp-primary);\r\n      font-size: 0.68rem;\r\n      font-weight: 900;\r\n      text-transform: uppercase;\r\n      letter-spacing: .2px;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .gp-details {\r\n      margin-top: 14px;\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-white);\r\n      overflow: hidden;\r\n    }\r\n\r\n    .gp-details summary {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      padding: 15px 16px;\r\n      cursor: pointer;\r\n      color: var(--gp-navy);\r\n      font-weight: 900;\r\n      list-style: none;\r\n    }\r\n\r\n    .gp-details summary::-webkit-details-marker { display: none; }\r\n    .gp-details summary::after { content: \"+\"; color: var(--gp-primary); font-size: 1.2rem; font-weight: 900; }\r\n    .gp-details[open] summary::after { content: \"-\"; }\r\n\r\n    .gp-details-body {\r\n      padding: 0 16px 16px;\r\n      border-top: 1px solid var(--gp-border);\r\n    }\r\n\r\n    .gp-nav-row {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n      margin-top: 24px;\r\n    }\r\n\r\n    .gp-btn {\r\n      all: unset !important;\r\n      box-sizing: border-box !important;\r\n      display: inline-flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      min-height: 42px !important;\r\n      padding: 11px 22px !important;\r\n      border-radius: var(--gp-radius-sm) !important;\r\n      cursor: pointer !important;\r\n      font-family: var(--gp-font) !important;\r\n      font-size: 0.9rem !important;\r\n      font-weight: 700 !important;\r\n      line-height: 1.2 !important;\r\n      text-align: center !important;\r\n      text-decoration: none !important;\r\n      transition: background .18s, color .18s, border-color .18s;\r\n    }\r\n\r\n    .gp-btn-primary { background: var(--gp-primary) !important; color: var(--gp-white) !important; }\r\n    .gp-btn-primary:hover { background: var(--gp-navy) !important; }\r\n\r\n    .gp-btn-secondary {\r\n      border: 2px solid var(--gp-navy) !important;\r\n      background: var(--gp-white) !important;\r\n      color: var(--gp-navy) !important;\r\n    }\r\n\r\n    .gp-btn-secondary:hover { background: var(--gp-navy) !important; color: var(--gp-white) !important; }\r\n    .gp-btn-ghost { color: var(--gp-muted) !important; background: transparent !important; padding: 8px 16px; font-size: 0.82rem; }\r\n    .gp-btn-ghost:hover { color: var(--gp-primary) !important; background: transparent !important; }\r\n\r\n    .gp-result-layout {\r\n      display: block;\r\n    }\r\n\r\n    .gp-result-card {\r\n      margin-bottom: 20px;\r\n      padding: 28px 24px;\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-navy);\r\n      color: var(--gp-white);\r\n      text-align: center;\r\n    }\r\n\r\n    .gp-result-card.loss { background: var(--gp-primary); }\r\n    .gp-result-card.loss .gp-result-amount { color: var(--gp-white); }\r\n    .gp-result-label {\r\n      margin-bottom: 6px;\r\n      font-size: 0.78rem;\r\n      font-weight: 900;\r\n      opacity: .85;\r\n      text-transform: uppercase;\r\n      letter-spacing: .3px;\r\n    }\r\n\r\n    .gp-result-amount {\r\n      margin-bottom: 8px;\r\n      color: var(--gp-primary);\r\n      font-size: 2.8rem;\r\n      font-weight: 900;\r\n      line-height: 1.05;\r\n      letter-spacing: 0;\r\n    }\r\n\r\n    .gp-result-sub {\r\n      font-size: 0.86rem;\r\n      line-height: 1.55;\r\n      opacity: .88;\r\n    }\r\n\r\n    .gp-kpis {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      gap: 14px;\r\n      margin-top: 20px;\r\n    }\r\n\r\n    .gp-kpi {\r\n      padding: 14px 16px;\r\n      border: 2px solid var(--gp-navy);\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-white);\r\n      text-align: left;\r\n    }\r\n\r\n    .gp-kpi-label {\r\n      margin-bottom: 4px;\r\n      color: var(--gp-navy);\r\n      font-size: 0.7rem;\r\n      font-weight: 900;\r\n      line-height: 1.35;\r\n      text-transform: uppercase;\r\n      letter-spacing: .2px;\r\n    }\r\n\r\n    .gp-kpi-value {\r\n      color: var(--gp-primary);\r\n      font-size: 1.1rem;\r\n      font-weight: 900;\r\n      line-height: 1.25;\r\n      word-break: break-word;\r\n    }\r\n\r\n    .gp-kpi-value.navy { color: var(--gp-navy); }\r\n    .gp-kpi-value.blue { color: var(--gp-blue); }\r\n    .gp-kpi-value.danger { color: var(--gp-danger); }\r\n\r\n    .gp-table-wrap {\r\n      overflow-x: auto;\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius-sm);\r\n    }\r\n\r\n    .gp-table {\r\n      width: 100%;\r\n      min-width: 560px;\r\n      border-collapse: collapse;\r\n      background: var(--gp-white);\r\n      font-size: 0.83rem;\r\n    }\r\n\r\n    .gp-table th {\r\n      padding: 10px 12px;\r\n      background: var(--gp-navy);\r\n      color: var(--gp-white);\r\n      font-weight: 900;\r\n      text-align: left;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .gp-table td {\r\n      padding: 9px 12px;\r\n      border-bottom: 1px solid var(--gp-border);\r\n      color: var(--gp-navy);\r\n      vertical-align: top;\r\n    }\r\n\r\n    .gp-table tr:last-child td { border-bottom: none; }\r\n    .gp-table .gp-amount { font-weight: 900; text-align: right; white-space: nowrap; }\r\n    .gp-table .gp-total-row td { background: var(--gp-bg); font-weight: 900; }\r\n\r\n    .gp-notes {\r\n      display: grid;\r\n      gap: 8px;\r\n      margin-top: 14px;\r\n    }\r\n\r\n    .gp-note {\r\n      padding: 10px 12px;\r\n      border-left: 4px solid var(--gp-blue);\r\n      border-radius: 6px;\r\n      background: var(--gp-bg);\r\n      color: var(--gp-navy);\r\n      font-size: 0.8rem;\r\n      line-height: 1.55;\r\n    }\r\n\r\n    .gp-note.warning { border-left-color: var(--gp-warning); background: #fff7e8; color: #4a3410; }\r\n    .gp-note.danger { border-left-color: var(--gp-danger); background: #fff0f2; color: #5c111d; }\r\n\r\n    .gp-inline-cta {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 18px;\r\n      margin-top: 18px;\r\n      padding: 18px 20px;\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-navy);\r\n      color: var(--gp-white);\r\n    }\r\n\r\n    .gp-inline-cta-title {\r\n      margin-bottom: 4px;\r\n      color: #fcf06a;\r\n      font-size: 1.05rem;\r\n      font-weight: 900;\r\n      line-height: 1.35;\r\n    }\r\n\r\n    .gp-inline-cta-title span { color: var(--gp-white); }\r\n    .gp-inline-cta-sub { font-size: 0.82rem; line-height: 1.5; opacity: .95; }\r\n\r\n    .gp-inline-cta a {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      min-height: 42px;\r\n      padding: 11px 18px;\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-primary);\r\n      color: var(--gp-white);\r\n      font-size: 0.86rem;\r\n      font-weight: 900;\r\n      text-decoration: none;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .gp-inline-cta a:hover { background: var(--gp-blue); }\r\n\r\n    .gp-seo {\r\n      margin-top: 20px;\r\n      padding: 40px 0;\r\n      border: 0;\r\n      border-radius: 0;\r\n      background: transparent;\r\n      color: var(--gp-navy);\r\n    }\r\n\r\n    .gp-seo h2,\r\n    .gp-seo h3 {\r\n      color: var(--gp-navy);\r\n      font-weight: 900;\r\n      line-height: 1.25;\r\n      letter-spacing: 0;\r\n    }\r\n\r\n    .gp-seo h2 {\r\n      margin-bottom: 12px;\r\n      font-size: 1.75rem;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .gp-seo h3 {\r\n      margin: 32px 0 10px;\r\n      font-size: 1.2rem;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .gp-seo p {\r\n      margin: 0 0 16px;\r\n      color: var(--gp-navy);\r\n      font-size: 0.95rem;\r\n      line-height: 1.75;\r\n    }\r\n\r\n    .gp-seo ul {\r\n      display: grid;\r\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\r\n      gap: 14px;\r\n      margin: 18px 0 0;\r\n      padding-left: 0;\r\n      color: var(--gp-navy);\r\n      font-size: 0.9rem;\r\n      line-height: 1.55;\r\n      list-style: none;\r\n    }\r\n\r\n    .gp-seo li {\r\n      padding: 18px;\r\n      border: 1.5px solid var(--gp-border);\r\n      border-radius: var(--gp-radius);\r\n      background: var(--gp-white);\r\n    }\r\n\r\n    .gp-faq {\r\n      margin-top: 18px;\r\n      display: grid;\r\n      gap: 8px;\r\n    }\r\n\r\n    .gp-faq details {\r\n      border: 1px solid var(--gp-border);\r\n      border-radius: var(--gp-radius-sm);\r\n      background: var(--gp-white);\r\n      overflow: hidden;\r\n    }\r\n\r\n    .gp-faq details[open] {\r\n      border-color: var(--gp-primary);\r\n      box-shadow: 0 4px 16px rgba(0, 173, 101, .1);\r\n    }\r\n\r\n    .gp-faq summary {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 16px;\r\n      padding: 18px 20px;\r\n      background: var(--gp-white);\r\n      color: var(--gp-navy);\r\n      cursor: pointer;\r\n      font-size: 0.95rem;\r\n      font-weight: 700;\r\n      list-style: none;\r\n    }\r\n\r\n    .gp-faq summary::-webkit-details-marker { display: none; }\r\n    .gp-faq summary::after {\r\n      content: \"\u25bc\";\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      width: 28px;\r\n      height: 28px;\r\n      flex: 0 0 28px;\r\n      border-radius: 50%;\r\n      background: var(--gp-navy);\r\n      color: var(--gp-white);\r\n      font-size: 0.72rem;\r\n      transition: transform .25s, background .2s;\r\n    }\r\n    .gp-faq details[open] summary::after {\r\n      transform: rotate(180deg);\r\n      background: var(--gp-primary);\r\n    }\r\n\r\n    .gp-faq-answer {\r\n      padding: 20px 20px 22px;\r\n      border-top: 1px solid var(--gp-border);\r\n      background: var(--gp-border-soft);\r\n      color: var(--gp-muted);\r\n      font-size: 0.87rem;\r\n      line-height: 1.8;\r\n    }\r\n\r\n    .gp-hidden { display: none !important; }\r\n\r\n    @media (max-width: 880px) {\r\n      .gp-header { flex-direction: column; }\r\n      .gp-grid,\r\n      .gp-grid-4,\r\n      .gp-source-list,\r\n      .gp-result-layout { grid-template-columns: 1fr; }\r\n      .gp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }\r\n      .gp-panel { padding: 22px 16px; }\r\n      .gp-title { font-size: 1.45rem; }\r\n      .gp-result-amount { font-size: 1.95rem; }\r\n      .gp-hero-title { font-size: 2rem; }\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n      .gp-calc { padding: 16px 10px; }\r\n      .gp-header { padding: 18px 16px; }\r\n      .gp-kpis { grid-template-columns: 1fr; }\r\n      .gp-nav-row { flex-direction: column-reverse; align-items: stretch; }\r\n      .gp-btn { width: 100%; }\r\n      .gp-inline-cta { flex-direction: column; align-items: flex-start; }\r\n      .gp-inline-cta a { width: 100%; }\r\n    }\r\n  <\/style>\r\n\r\n  <section class=\"gp-hero-wrap\" aria-labelledby=\"gp-hero-title\" data-muay-v2>\r\n    <div class=\"gp-hero\">\r\n      <h1 class=\"gp-hero-title\" id=\"gp-hero-title\">Calculadora <span>ganancias patrimoniales<\/span> Renta<\/h1>\r\n      <p class=\"gp-hero-lead\">Calcula el IRPF aproximado por ventas de acciones, fondos, criptomonedas, inmuebles y otros activos. Puedes combinar varios or\u00edgenes en una misma simulaci\u00f3n y usar ajustes avanzados solo si los necesitas.<\/p>\r\n      <div class=\"gp-hero-stats\">\r\n        <div class=\"gp-stat-pill\">Acciones y fondos <span>base ahorro<\/span><\/div>\r\n        <div class=\"gp-stat-pill\">Cripto <span>ventas y permutas<\/span><\/div>\r\n        <div class=\"gp-stat-pill\">Inmuebles <span>exenciones<\/span><\/div>\r\n        <div class=\"gp-stat-pill\">P\u00e9rdidas <span>compensaci\u00f3n<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <main class=\"gp-calc\" id=\"gp-calc\" data-muay-v2>\r\n    <header class=\"gp-header\">\r\n  <meta charset=\"UTF-8\">\r\n      <h2 class=\"gp-title\">Calculadora de ganancias patrimoniales <span class=\"gp-badge\">Renta<\/span><\/h2>\r\n    <\/header>\r\n\r\n    <nav class=\"gp-steps-nav\" role=\"tablist\" aria-label=\"Pasos de la calculadora\">\r\n      <button class=\"gp-step-tab active\" type=\"button\" data-step=\"1\" aria-selected=\"true\" aria-label=\"Paso 1: Origen\"><span class=\"gp-step-num\">1<\/span><\/button>\r\n      <button class=\"gp-step-tab\" type=\"button\" data-step=\"2\" aria-selected=\"false\" aria-label=\"Paso 2: Importes\"><span class=\"gp-step-num\">2<\/span><\/button>\r\n      <button class=\"gp-step-tab\" type=\"button\" data-step=\"3\" aria-selected=\"false\" aria-label=\"Paso 3: Resultado\"><span class=\"gp-step-num\">3<\/span><\/button>\r\n    <\/nav>\r\n\r\n    <section class=\"gp-panel active\" id=\"gp-p1\" role=\"tabpanel\">\r\n      <h2 class=\"gp-panel-title\">Paso 1 \u00b7 Origen de la ganancia<\/h2>\r\n      <p class=\"gp-panel-desc\">Elige uno o varios or\u00edgenes. La calculadora agrupa el resultado y adapta las preguntas sin multiplicar pasos.<\/p>\r\n\r\n      <div class=\"gp-source-list\" id=\"gp-source-grid\">\r\n        <label class=\"gp-source-check selected\">\r\n          <input class=\"gp-source-input\" type=\"checkbox\" data-source=\"securities\" checked>\r\n          <span class=\"gp-source-copy\">\r\n            <span class=\"gp-source-title\">Acciones y fondos<\/span>\r\n            <span class=\"gp-source-desc\">Acciones, ETFs, fondos, derechos y derivados.<\/span>\r\n          <\/span>\r\n        <\/label>\r\n        <label class=\"gp-source-check\">\r\n          <input class=\"gp-source-input\" type=\"checkbox\" data-source=\"real_estate\">\r\n          <span class=\"gp-source-copy\">\r\n            <span class=\"gp-source-title\">Inmuebles<\/span>\r\n            <span class=\"gp-source-desc\">Vivienda habitual, segunda vivienda, local o terreno.<\/span>\r\n          <\/span>\r\n        <\/label>\r\n        <label class=\"gp-source-check\">\r\n          <input class=\"gp-source-input\" type=\"checkbox\" data-source=\"crypto\">\r\n          <span class=\"gp-source-copy\">\r\n            <span class=\"gp-source-title\">Cripto<\/span>\r\n            <span class=\"gp-source-desc\">Venta, permuta, pago con cripto, NFT o staking.<\/span>\r\n          <\/span>\r\n        <\/label>\r\n        <label class=\"gp-source-check\">\r\n          <input class=\"gp-source-input\" type=\"checkbox\" data-source=\"other\">\r\n          <span class=\"gp-source-copy\">\r\n            <span class=\"gp-source-title\">Otros<\/span>\r\n            <span class=\"gp-source-desc\">Otros bienes, premios o ganancias sin transmisi\u00f3n.<\/span>\r\n          <\/span>\r\n        <\/label>\r\n      <\/div>\r\n\r\n      <div class=\"gp-section\">\r\n        <div class=\"gp-grid\">\r\n          <div class=\"gp-row source-group source-securities\">\r\n            <label class=\"gp-label\" for=\"gp-security-operation\">Operaci\u00f3n financiera<\/label>\r\n            <select class=\"gp-select\" id=\"gp-security-operation\">\r\n              <option value=\"listed_sale\">Venta de acciones cotizadas<\/option>\r\n              <option value=\"fund_redemption\">Reembolso o venta de fondo\/SICAV<\/option>\r\n              <option value=\"etf_sale\">Venta de ETF o fondo cotizado<\/option>\r\n              <option value=\"fund_transfer\">Traspaso fiscal entre fondos<\/option>\r\n              <option value=\"subscription_rights\">Venta de derechos de suscripci\u00f3n<\/option>\r\n              <option value=\"scrip_dividend\">Scrip dividend \/ derechos de asignaci\u00f3n gratuita<\/option>\r\n              <option value=\"unlisted_sale\">Venta de acciones o participaciones no cotizadas<\/option>\r\n              <option value=\"derivatives\">Opciones, futuros, warrants o CFDs<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-group source-real_estate gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-real-estate-operation\">Operaci\u00f3n inmobiliaria<\/label>\r\n            <select class=\"gp-select\" id=\"gp-real-estate-operation\">\r\n              <option value=\"principal_home\">Venta de vivienda habitual<\/option>\r\n              <option value=\"other_real_estate\">Venta de otro inmueble o terreno<\/option>\r\n              <option value=\"donation\">Donaci\u00f3n realizada<\/option>\r\n              <option value=\"dacion\">Daci\u00f3n en pago o ejecuci\u00f3n hipotecaria<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-group source-crypto gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-crypto-operation\">Operaci\u00f3n cripto<\/label>\r\n            <select class=\"gp-select\" id=\"gp-crypto-operation\">\r\n              <option value=\"fiat_sale\">Venta por euros u otra moneda fiduciaria<\/option>\r\n              <option value=\"crypto_swap\">Permuta cripto-cripto<\/option>\r\n              <option value=\"payment\">Pago de bienes o servicios con cripto<\/option>\r\n              <option value=\"nft_token_sale\">Venta o permuta de NFT\/token<\/option>\r\n              <option value=\"wallet_transfer\">Traspaso entre wallets propias<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-group source-other gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-other-operation\">Tipo de operaci\u00f3n<\/label>\r\n            <select class=\"gp-select\" id=\"gp-other-operation\">\r\n              <option value=\"sale\">Venta o transmisi\u00f3n de otro bien o derecho<\/option>\r\n              <option value=\"donation\">Donaci\u00f3n realizada<\/option>\r\n              <option value=\"award\">Premio, ayuda o ganancia sin transmisi\u00f3n<\/option>\r\n              <option value=\"no_transmission\">Otra ganancia sin transmisi\u00f3n<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-taxpayer-profile\">Perfil fiscal del caso<\/label>\r\n            <select class=\"gp-select\" id=\"gp-taxpayer-profile\">\r\n              <option value=\"individual\">Particular, sin actividad econ\u00f3mica<\/option>\r\n              <option value=\"business_asset\">Elemento afecto a actividad econ\u00f3mica<\/option>\r\n              <option value=\"foreign_broker\">Broker, exchange o activo en el extranjero<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gp-info-box\" id=\"gp-source-hint\"><\/div>\r\n\r\n      <div class=\"gp-nav-row\">\r\n        <button class=\"gp-btn gp-btn-ghost\" type=\"button\" id=\"gp-reset-1\">Reiniciar<\/button>\r\n        <button class=\"gp-btn gp-btn-primary\" type=\"button\" data-next=\"2\">Siguiente<\/button>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"gp-panel\" id=\"gp-p2\" role=\"tabpanel\">\r\n      <h2 class=\"gp-panel-title\">Paso 2 \u00b7 Beneficio y ajustes<\/h2>\r\n      <p class=\"gp-panel-desc\">Puedes introducir directamente el beneficio neto, como en una calculadora sencilla, o abrir el c\u00e1lculo completo si necesitas justificar compra, venta y gastos.<\/p>\r\n\r\n      <div class=\"gp-grid\">\r\n        <button class=\"gp-mode-btn selected\" type=\"button\" data-mode=\"quick\">\r\n          <span class=\"gp-mode-title\">Tengo el beneficio neto<\/span>\r\n          <span class=\"gp-mode-desc\">R\u00e1pido: introduces la ganancia o p\u00e9rdida ya calculada.<\/span>\r\n        <\/button>\r\n        <button class=\"gp-mode-btn\" type=\"button\" data-mode=\"detailed\">\r\n          <span class=\"gp-mode-title\">Calcular desde compra y venta<\/span>\r\n          <span class=\"gp-mode-desc\">Avanzado: compra, venta, gastos, mejoras y amortizaciones.<\/span>\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div class=\"gp-section\" id=\"gp-quick-fields\">\r\n        <div class=\"gp-section-title\">Beneficio por origen <span class=\"gp-pill\">Puedes combinar varios<\/span><\/div>\r\n        <div class=\"gp-grid\">\r\n          <div class=\"gp-row source-amount source-securities\">\r\n            <label class=\"gp-label\" for=\"gp-net-gain-securities\">Beneficio o p\u00e9rdida en acciones\/fondos <span class=\"gp-label-sub\">Acciones, fondos, ETFs, derechos o derivados. Usa negativo si hubo p\u00e9rdida.<\/span><\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-net-gain-securities\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 2.000\"><\/div>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-amount source-real_estate gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-net-gain-real_estate\">Beneficio o p\u00e9rdida en inmuebles <span class=\"gp-label-sub\">Tras restar valor de compra, gastos, mejoras y amortizaciones, si ya lo tienes calculado.<\/span><\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-net-gain-real_estate\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 35.000\"><\/div>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-amount source-crypto gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-net-gain-crypto\">Beneficio o p\u00e9rdida en cripto <span class=\"gp-label-sub\">Ventas, permutas, pagos con cripto o NFT\/token. Usa negativo si hubo p\u00e9rdida.<\/span><\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-net-gain-crypto\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 1.500\"><\/div>\r\n          <\/div>\r\n\r\n          <div class=\"gp-row source-amount source-other gp-hidden\">\r\n            <label class=\"gp-label\" for=\"gp-net-gain-other\">Beneficio o p\u00e9rdida en otros bienes <span class=\"gp-label-sub\">Otros activos o ganancias sin transmisi\u00f3n, seg\u00fan lo elegido en el paso 1.<\/span><\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-net-gain-other\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 800\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <details class=\"gp-details\">\r\n          <summary>Valores de transmisi\u00f3n de referencia<\/summary>\r\n          <div class=\"gp-details-body\">\r\n            <div class=\"gp-section\">\r\n              <p class=\"gp-help\" style=\"margin-bottom:12px;\">Opcional. Sirven para calcular reinversi\u00f3n, renta vitalicia, DT 9\u00aa u otras reducciones proporcionales.<\/p>\r\n              <div class=\"gp-grid\">\r\n                <div class=\"gp-row source-amount source-securities\">\r\n                  <label class=\"gp-label\" for=\"gp-direct-sale-value-securities\">Transmisi\u00f3n acciones\/fondos<\/label>\r\n                  <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-direct-sale-value-securities\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 10.000\"><\/div>\r\n                <\/div>\r\n                <div class=\"gp-row source-amount source-real_estate gp-hidden\">\r\n                  <label class=\"gp-label\" for=\"gp-direct-sale-value-real_estate\">Transmisi\u00f3n inmuebles<\/label>\r\n                  <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-direct-sale-value-real_estate\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 260.000\"><\/div>\r\n                <\/div>\r\n                <div class=\"gp-row source-amount source-crypto gp-hidden\">\r\n                  <label class=\"gp-label\" for=\"gp-direct-sale-value-crypto\">Transmisi\u00f3n cripto<\/label>\r\n                  <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-direct-sale-value-crypto\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 5.000\"><\/div>\r\n                <\/div>\r\n                <div class=\"gp-row source-amount source-other gp-hidden\">\r\n                  <label class=\"gp-label\" for=\"gp-direct-sale-value-other\">Transmisi\u00f3n otros<\/label>\r\n                  <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-direct-sale-value-other\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 1.000\"><\/div>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/details>\r\n      <\/div>\r\n\r\n      <div class=\"gp-section gp-hidden\" id=\"gp-detailed-fields\">\r\n        <div class=\"gp-row\">\r\n          <label class=\"gp-label\" for=\"gp-detailed-source\">Aplicar el c\u00e1lculo detallado a<\/label>\r\n          <select class=\"gp-select\" id=\"gp-detailed-source\">\r\n            <option value=\"securities\">Acciones y fondos<\/option>\r\n            <option value=\"real_estate\">Inmuebles<\/option>\r\n            <option value=\"crypto\">Cripto<\/option>\r\n            <option value=\"other\">Otros<\/option>\r\n          <\/select>\r\n          <p class=\"gp-help\">Si marcas varios or\u00edgenes, este c\u00e1lculo sustituye solo el beneficio r\u00e1pido del origen elegido.<\/p>\r\n        <\/div>\r\n        <div class=\"gp-grid\">\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-purchase-price\">Importe de adquisici\u00f3n<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-purchase-price\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 180.000\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-acquisition-costs\">Gastos y tributos de adquisici\u00f3n<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-acquisition-costs\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 15.000\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-improvements\">Inversiones y mejoras<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-improvements\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 8.000\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-amortization\">Amortizaciones deducibles o m\u00ednimas<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-amortization\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 6.500\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-sale-price\">Importe de transmisi\u00f3n<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-sale-price\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 260.000\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-sale-costs\">Gastos y tributos de transmisi\u00f3n<\/label>\r\n            <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-sale-costs\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 9.000\"><\/div>\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-ownership\">Porcentaje de titularidad<\/label>\r\n            <input class=\"gp-input\" id=\"gp-ownership\" type=\"text\" inputmode=\"decimal\" value=\"100\">\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-date-acq\">Fecha de adquisici\u00f3n<\/label>\r\n            <input class=\"gp-input\" id=\"gp-date-acq\" type=\"date\">\r\n          <\/div>\r\n          <div class=\"gp-row\">\r\n            <label class=\"gp-label\" for=\"gp-date-trans\">Fecha de transmisi\u00f3n<\/label>\r\n            <input class=\"gp-input\" id=\"gp-date-trans\" type=\"date\" value=\"\">\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <details class=\"gp-details\">\r\n        <summary>Casos especiales y exenciones<\/summary>\r\n        <div class=\"gp-details-body\">\r\n          <div class=\"gp-section\">\r\n            <div class=\"gp-grid\">\r\n              <label class=\"gp-switch-card special-real-estate\">\r\n                <input type=\"checkbox\" id=\"gp-home-senior-exempt\">\r\n                <span><span class=\"gp-switch-title\">Vivienda habitual por mayor de 65 a\u00f1os o dependencia<\/span><span class=\"gp-switch-desc\">Exenci\u00f3n total si se cumplen los requisitos.<\/span><\/span>\r\n              <\/label>\r\n\r\n              <label class=\"gp-switch-card special-real-estate\">\r\n                <input type=\"checkbox\" id=\"gp-home-reinvestment\">\r\n                <span><span class=\"gp-switch-title\">Reinversi\u00f3n en vivienda habitual<\/span><span class=\"gp-switch-desc\">Exenci\u00f3n total o parcial seg\u00fan importe reinvertido.<\/span><\/span>\r\n              <\/label>\r\n\r\n              <label class=\"gp-switch-card\">\r\n                <input type=\"checkbox\" id=\"gp-annuity\">\r\n                <span><span class=\"gp-switch-title\">Renta vitalicia para mayores de 65<\/span><span class=\"gp-switch-desc\">L\u00edmite global de 240.000 euros.<\/span><\/span>\r\n              <\/label>\r\n\r\n              <label class=\"gp-switch-card special-real-estate\">\r\n                <input type=\"checkbox\" id=\"gp-urban2012\">\r\n                <span><span class=\"gp-switch-title\">Inmueble urbano adquirido en 2012<\/span><span class=\"gp-switch-desc\">Posible exenci\u00f3n del 50%.<\/span><\/span>\r\n              <\/label>\r\n\r\n              <label class=\"gp-switch-card\">\r\n                <input type=\"checkbox\" id=\"gp-dt9\">\r\n                <span><span class=\"gp-switch-title\">Adquirido antes del 31\/12\/1994<\/span><span class=\"gp-switch-desc\">Coeficientes de abatimiento DT 9\u00aa.<\/span><\/span>\r\n              <\/label>\r\n\r\n              <label class=\"gp-switch-card\">\r\n                <input type=\"checkbox\" id=\"gp-special-full-exemption\">\r\n                <span><span class=\"gp-switch-title\">Daci\u00f3n, donaci\u00f3n deducible o patrimonio hist\u00f3rico<\/span><span class=\"gp-switch-desc\">Marca solo si encaja documentalmente.<\/span><\/span>\r\n              <\/label>\r\n            <\/div>\r\n\r\n            <div class=\"gp-grid gp-hidden\" id=\"gp-home-reinvestment-fields\">\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-reinvested-home\">Importe reinvertido en vivienda habitual<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-reinvested-home\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 180.000\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-pending-mortgage\">Principal pendiente amortizado<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-pending-mortgage\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 60.000\"><\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"gp-grid gp-hidden\" id=\"gp-annuity-fields\">\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-annuity-amount\">Importe destinado a renta vitalicia<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-annuity-amount\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 120.000\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-annuity-used\">L\u00edmite de 240.000 euros ya utilizado<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-annuity-used\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 0\"><\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"gp-grid gp-hidden\" id=\"gp-dt9-fields\">\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-dt9-class\">Naturaleza para abatimiento<\/label>\r\n                <select class=\"gp-select\" id=\"gp-dt9-class\">\r\n                  <option value=\"listed\">Acciones cotizadas o IIC<\/option>\r\n                  <option value=\"real_estate\">Inmuebles<\/option>\r\n                  <option value=\"other\">Otros bienes o derechos<\/option>\r\n                <\/select>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-dt9-prior\">Valor DT 9\u00aa usado desde 2015<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-dt9-prior\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 0\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-dt9-manual\">Ganancia anterior a 20\/01\/2006 <span class=\"gp-label-sub\">Opcional. Recomendable en acciones cotizadas.<\/span><\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-dt9-manual\" type=\"text\" inputmode=\"decimal\" placeholder=\"Auto si se deja vac\u00edo\"><\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"gp-details\">\r\n        <summary>Compensaciones, retenciones y rentas relacionadas<\/summary>\r\n        <div class=\"gp-details-body\">\r\n          <div class=\"gp-section\">\r\n            <div class=\"gp-grid\">\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-other-gains\">Otras ganancias\/p\u00e9rdidas de transmisiones <span class=\"gp-label-sub\">Importe neto. Puede ser negativo.<\/span><\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-other-gains\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: -2.000\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-capital-income\">Capital mobiliario neto <span class=\"gp-label-sub\">Dividendos, intereses, cupones, seguros. Puede ser negativo.<\/span><\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-capital-income\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 1.200\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-pending-losses\">P\u00e9rdidas patrimoniales pendientes 2021-2024<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-pending-losses\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 0\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-pending-capital\">Capital mobiliario negativo pendiente 2021-2024<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-pending-capital\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 0\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-withholdings\">Retenciones ya soportadas<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-withholdings\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 0\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row source-extra source-crypto gp-hidden\">\r\n                <label class=\"gp-label\" for=\"gp-crypto-staking\">Staking, lending, yield o intereses cripto<\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-crypto-staking\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 600\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row source-extra source-crypto gp-hidden\">\r\n                <label class=\"gp-label\" for=\"gp-crypto-general\">Airdrops, premios, regalos o miner\u00eda <span class=\"gp-label-sub\">Se avisa aparte. No se suma a la cuota del ahorro.<\/span><\/label>\r\n                <div class=\"gp-input-wrap\"><span class=\"gp-prefix\">\u20ac<\/span><input class=\"gp-input gp-prefixed money-input\" id=\"gp-crypto-general\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 300\"><\/div>\r\n              <\/div>\r\n              <div class=\"gp-row\">\r\n                <label class=\"gp-label\" for=\"gp-general-rate\">Tipo marginal si es base general <span class=\"gp-label-sub\">Solo para ganancias sin transmisi\u00f3n.<\/span><\/label>\r\n                <input class=\"gp-input\" id=\"gp-general-rate\" type=\"text\" inputmode=\"decimal\" placeholder=\"Ej: 30\">\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <div class=\"gp-nav-row\">\r\n        <button class=\"gp-btn gp-btn-secondary\" type=\"button\" data-prev=\"1\">Anterior<\/button>\r\n        <button class=\"gp-btn gp-btn-primary\" type=\"button\" data-next=\"3\">Ver resultado<\/button>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"gp-panel\" id=\"gp-p3\" role=\"tabpanel\">\r\n      <h2 class=\"gp-panel-title\">Paso 3 \u00b7 Resultado estimado<\/h2>\r\n      <p class=\"gp-panel-desc\">Resumen de cuota, beneficio neto y desglose. Puedes volver al paso 2 para activar casos especiales solo si aplican.<\/p>\r\n\r\n      <div id=\"gp-results\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/div>\r\n\r\n      <div class=\"gp-nav-row\">\r\n        <button class=\"gp-btn gp-btn-secondary\" type=\"button\" data-prev=\"2\">Ajustar datos<\/button>\r\n        <button class=\"gp-btn gp-btn-ghost\" type=\"button\" id=\"gp-reset-3\">Reiniciar<\/button>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"gp-seo\" aria-label=\"Informaci\u00f3n sobre ganancias patrimoniales\">\r\n      <h2>Calculadora de ganancias patrimoniales para la Renta<\/h2>\r\n      <p>Esta calculadora te ayuda a estimar el IRPF por ganancias patrimoniales derivadas de la venta de acciones, fondos, ETFs, criptomonedas, inmuebles y otros activos. Puedes introducir el beneficio neto directamente o usar el modo avanzado cuando necesites calcularlo a partir de valores de compra, venta, gastos, mejoras o amortizaciones.<\/p>\r\n      <p>Las ganancias patrimoniales por transmisiones suelen integrarse en la base del ahorro y tributan por tramos progresivos. La herramienta tambi\u00e9n permite marcar varios or\u00edgenes en una misma simulaci\u00f3n, a\u00f1adir p\u00e9rdidas pendientes, rendimientos de capital mobiliario, retenciones y algunos casos especiales como reinversi\u00f3n en vivienda habitual, renta vitalicia o coeficientes de abatimiento.<\/p>\r\n\r\n      <h3>Qu\u00e9 puedes calcular<\/h3>\r\n      <ul>\r\n        <li>Venta de acciones, fondos, ETFs, derechos de suscripci\u00f3n y otros valores.<\/li>\r\n        <li>Venta o permuta de criptomonedas, NFTs y otros criptoactivos.<\/li>\r\n        <li>Venta de vivienda habitual, segunda vivienda, local, garaje o terreno.<\/li>\r\n        <li>Compensaci\u00f3n orientativa de p\u00e9rdidas patrimoniales y rendimientos negativos.<\/li>\r\n      <\/ul>\r\n\r\n      <div class=\"gp-faq\" aria-label=\"Preguntas frecuentes\">\r\n        <h2>Preguntas frecuentes<\/h2>\r\n\r\n        <details>\r\n          <summary>\u00bfQu\u00e9 son las ganancias patrimoniales?<\/summary>\r\n          <div class=\"gp-faq-answer\">Son variaciones en el valor del patrimonio que se ponen de manifiesto, normalmente, cuando vendes, permutas o transmites un bien o derecho. En general se calculan por diferencia entre el valor de transmisi\u00f3n y el valor de adquisici\u00f3n.<\/div>\r\n        <\/details>\r\n\r\n        <details>\r\n          <summary>\u00bfPuedo calcular acciones y criptomonedas a la vez?<\/summary>\r\n          <div class=\"gp-faq-answer\">S\u00ed. En el primer paso puedes seleccionar varios or\u00edgenes y despu\u00e9s introducir el beneficio o p\u00e9rdida de cada uno. La calculadora agrupa el resultado en una misma estimaci\u00f3n de la base del ahorro.<\/div>\r\n        <\/details>\r\n\r\n        <details>\r\n          <summary>\u00bfLas criptomonedas tributan como ganancia patrimonial?<\/summary>\r\n          <div class=\"gp-faq-answer\">Cuando una persona f\u00edsica vende o permuta monedas virtuales fuera de una actividad econ\u00f3mica, la operaci\u00f3n puede generar una ganancia o p\u00e9rdida patrimonial por diferencia entre valor de transmisi\u00f3n y adquisici\u00f3n. Staking, airdrops o miner\u00eda pueden requerir otro tratamiento.<\/div>\r\n        <\/details>\r\n\r\n        <details>\r\n          <summary>\u00bfQu\u00e9 pasa si he tenido p\u00e9rdidas?<\/summary>\r\n          <div class=\"gp-faq-answer\">Las p\u00e9rdidas patrimoniales pueden compensarse con ganancias del mismo ejercicio y, con l\u00edmites, con determinados rendimientos de capital mobiliario. Si quedan saldos pendientes, pueden compensarse en ejercicios posteriores dentro del plazo legal.<\/div>\r\n        <\/details>\r\n\r\n        <details>\r\n          <summary>\u00bfLa venta de vivienda habitual siempre paga IRPF?<\/summary>\r\n          <div class=\"gp-faq-answer\">No siempre. Puede haber exenciones si la vivienda habitual la transmite una persona mayor de 65 a\u00f1os o en situaci\u00f3n de dependencia, o si se reinvierte en otra vivienda habitual cumpliendo los requisitos. La documentaci\u00f3n y los plazos son clave.<\/div>\r\n        <\/details>\r\n\r\n        <details>\r\n          <summary>\u00bfEl resultado sustituye a la declaraci\u00f3n de la renta?<\/summary>\r\n          <div class=\"gp-faq-answer\">No. Es una estimaci\u00f3n orientativa. La declaraci\u00f3n final puede cambiar por fechas, valores comprobados, divisa, retenciones, exenciones, compensaciones pendientes o datos fiscales que no se hayan introducido en la calculadora.<\/div>\r\n        <\/details>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <script defer type=\"application\/ld+json\">\r\n    {\r\n      \"@context\": \"https:\/\/schema.org\",\r\n      \"@graph\": [\r\n        {\r\n          \"@type\": \"WebApplication\",\r\n          \"@id\": \"https:\/\/muaytax.com\/#calculadora-ganancias-patrimoniales\",\r\n          \"name\": \"Calculadora de ganancias patrimoniales\",\r\n          \"applicationCategory\": \"FinanceApplication\",\r\n          \"operatingSystem\": \"Web\",\r\n          \"inLanguage\": \"es-ES\",\r\n          \"description\": \"Calculadora orientativa para estimar el IRPF de ganancias patrimoniales en la Renta por acciones, fondos, criptomonedas, inmuebles y otros activos.\",\r\n          \"publisher\": {\r\n            \"@type\": \"Organization\",\r\n            \"name\": \"Muay Tax\",\r\n            \"url\": \"https:\/\/muaytax.com\/\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"FAQPage\",\r\n          \"@id\": \"https:\/\/muaytax.com\/#faq-ganancias-patrimoniales\",\r\n          \"inLanguage\": \"es-ES\",\r\n          \"mainEntity\": [\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfQu\u00e9 son las ganancias patrimoniales?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"Son variaciones en el valor del patrimonio que se ponen de manifiesto, normalmente, cuando se vende, permuta o transmite un bien o derecho. En general se calculan por diferencia entre el valor de transmisi\u00f3n y el valor de adquisici\u00f3n.\"\r\n              }\r\n            },\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfPuedo calcular acciones y criptomonedas a la vez?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"S\u00ed. La calculadora permite seleccionar varios or\u00edgenes e introducir el beneficio o p\u00e9rdida de cada uno para agruparlos en una misma estimaci\u00f3n.\"\r\n              }\r\n            },\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfLas criptomonedas tributan como ganancia patrimonial?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"La venta o permuta de monedas virtuales por particulares puede generar una ganancia o p\u00e9rdida patrimonial por diferencia entre el valor de transmisi\u00f3n y adquisici\u00f3n. Otras operaciones, como staking o miner\u00eda, pueden requerir otro tratamiento.\"\r\n              }\r\n            },\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfQu\u00e9 pasa si he tenido p\u00e9rdidas?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"Las p\u00e9rdidas patrimoniales pueden compensarse con ganancias del mismo ejercicio y, con l\u00edmites, con determinados rendimientos de capital mobiliario. Si queda saldo pendiente, puede trasladarse a ejercicios posteriores dentro del plazo legal.\"\r\n              }\r\n            },\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfLa venta de vivienda habitual siempre paga IRPF?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"No siempre. Pueden existir exenciones por edad, dependencia o reinversi\u00f3n en otra vivienda habitual si se cumplen los requisitos y plazos.\"\r\n              }\r\n            },\r\n            {\r\n              \"@type\": \"Question\",\r\n              \"name\": \"\u00bfEl resultado sustituye a la declaraci\u00f3n de la renta?\",\r\n              \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"No. El resultado es orientativo y puede cambiar por fechas, valores comprobados, divisas, retenciones, exenciones, compensaciones pendientes o datos fiscales no introducidos.\"\r\n              }\r\n            }\r\n          ]\r\n        }\r\n      ]\r\n    }\r\n    <\/script>\r\n  <\/main>\r\n\r\n  <script defer>\r\n    (function () {\r\n      var CONFIG = {\r\n        year: 2025,\r\n        savingsBrackets: [\r\n          { upTo: 6000, rate: 0.19 },\r\n          { upTo: 50000, rate: 0.21 },\r\n          { upTo: 200000, rate: 0.23 },\r\n          { upTo: 300000, rate: 0.27 },\r\n          { upTo: Infinity, rate: 0.30 }\r\n        ],\r\n        hubspot: {\r\n          enabled: false,\r\n          portalId: \"\",\r\n          region: \"na1\",\r\n          inlineFormId: \"\",\r\n          target: \"#gp-hs-form-container\"\r\n        }\r\n      };\r\n\r\n      var state = {\r\n        step: 1,\r\n        sources: [\"securities\"],\r\n        mode: \"quick\"\r\n      };\r\n\r\n      var $ = function (selector, root) { return (root || document).querySelector(selector); };\r\n      var $$ = function (selector, root) { return Array.prototype.slice.call((root || document).querySelectorAll(selector)); };\r\n\r\n      function parseNum(value) {\r\n        if (value === null || value === undefined) return 0;\r\n        var raw = String(value).trim().replace(\/\\s\/g, \"\");\r\n        if (!raw) return 0;\r\n        if (raw.indexOf(\",\") !== -1) raw = raw.replace(\/\\.\/g, \"\").replace(\",\", \".\");\r\n        var num = Number(raw.replace(\/[^0-9.-]\/g, \"\"));\r\n        return Number.isFinite(num) ? num : 0;\r\n      }\r\n\r\n      function val(id) {\r\n        var el = $(\"#\" + id);\r\n        return el ? parseNum(el.value) : 0;\r\n      }\r\n\r\n      function value(id) {\r\n        var el = $(\"#\" + id);\r\n        return el ? el.value : \"\";\r\n      }\r\n\r\n      function checked(id) {\r\n        var el = $(\"#\" + id);\r\n        return !!(el && el.checked);\r\n      }\r\n\r\n      function fmt(value) {\r\n        var amount = Number.isFinite(value) ? value : 0;\r\n        return amount.toLocaleString(\"es-ES\", { style: \"currency\", currency: \"EUR\", minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n      }\r\n\r\n      function fmtPlain(value) {\r\n        var amount = Number.isFinite(value) ? value : 0;\r\n        return amount.toLocaleString(\"es-ES\", { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n      }\r\n\r\n      function fmtPct(value) {\r\n        var pct = Number.isFinite(value) ? value * 100 : 0;\r\n        return pct.toLocaleString(\"es-ES\", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + \"%\";\r\n      }\r\n\r\n      function toDate(value) {\r\n        if (!value) return null;\r\n        var parts = value.split(\"-\");\r\n        if (parts.length !== 3) return null;\r\n        return new Date(Date.UTC(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])));\r\n      }\r\n\r\n      function daysInclusive(start, end) {\r\n        if (!start || !end) return 0;\r\n        return Math.max(0, Math.round((end.getTime() - start.getTime()) \/ 86400000)) + 1;\r\n      }\r\n\r\n      function clamp(num, min, max) {\r\n        return Math.min(max, Math.max(min, num));\r\n      }\r\n\r\n      function calcTaxByBrackets(base, brackets) {\r\n        var remaining = Math.max(0, base);\r\n        var previous = 0;\r\n        var total = 0;\r\n        var rows = [];\r\n        brackets.forEach(function (bracket) {\r\n          if (remaining <= 0) return;\r\n          var width = bracket.upTo === Infinity ? remaining : bracket.upTo - previous;\r\n          var amount = Math.min(remaining, width);\r\n          var tax = amount * bracket.rate;\r\n          rows.push({ from: previous, to: bracket.upTo === Infinity ? null : bracket.upTo, base: amount, rate: bracket.rate, tax: tax });\r\n          total += tax;\r\n          remaining -= amount;\r\n          previous = bracket.upTo;\r\n        });\r\n        return { total: total, rows: rows };\r\n      }\r\n\r\n      function sourceMap() {\r\n        return {\r\n          securities: \"acciones, fondos y valores\",\r\n          real_estate: \"inmuebles\",\r\n          crypto: \"criptoactivos\",\r\n          other: \"otros bienes o derechos\"\r\n        };\r\n      }\r\n\r\n      function selectedSources() {\r\n        return state.sources.slice();\r\n      }\r\n\r\n      function hasSource(source) {\r\n        return state.sources.indexOf(source) !== -1;\r\n      }\r\n\r\n      function sourceLabel(source) {\r\n        return sourceMap()[source] || \"activos\";\r\n      }\r\n\r\n      function selectedSourceLabel() {\r\n        return selectedSources().map(sourceLabel).join(\" + \");\r\n      }\r\n\r\n      function isNoTransmissionCase(source) {\r\n        return source === \"other\" && (value(\"gp-other-operation\") === \"award\" || value(\"gp-other-operation\") === \"no_transmission\");\r\n      }\r\n\r\n      function isDeferredOrNonTaxable(source, notes) {\r\n        if (source === \"securities\" && value(\"gp-security-operation\") === \"fund_transfer\") {\r\n          notes.push({ type: \"info\", text: \"Traspaso fiscal entre fondos: si cumple requisitos, no se computa ganancia o p\u00e9rdida ahora y las nuevas participaciones conservan valor y fecha de adquisici\u00f3n.\" });\r\n          return true;\r\n        }\r\n        if (source === \"crypto\" && value(\"gp-crypto-operation\") === \"wallet_transfer\") {\r\n          notes.push({ type: \"warning\", text: \"Un traspaso entre wallets propias no suele ser una transmisi\u00f3n. Si no hay venta, permuta, pago o cambio de titularidad, no deber\u00eda declararse como ganancia patrimonial.\" });\r\n          return true;\r\n        }\r\n        return false;\r\n      }\r\n\r\n      function abatementRate(abateClass, acqDate) {\r\n        if (!acqDate) return 0;\r\n        var d = acqDate.getTime();\r\n        var years = 0;\r\n        [\"1994-12-31\",\"1993-12-31\",\"1992-12-31\",\"1991-12-31\",\"1990-12-31\",\"1989-12-31\",\"1988-12-31\",\"1987-12-31\",\"1986-12-31\",\"1985-12-31\"].some(function (date, index) {\r\n          if (d >= toDate(date).getTime()) { years = index; return true; }\r\n          return false;\r\n        });\r\n        if (d < toDate(\"1985-12-31\").getTime()) years = 10;\r\n        var factor = abateClass === \"listed\" ? 0.25 : (abateClass === \"real_estate\" ? 0.1111 : 0.1428);\r\n        return clamp(years * factor, 0, 1);\r\n      }\r\n\r\n      function pre2006GainLinear(totalGain, acqDate, transDate) {\r\n        var cutoff = toDate(\"2006-01-19\");\r\n        if (!acqDate || !transDate || totalGain <= 0) return 0;\r\n        if (transDate <= cutoff) return totalGain;\r\n        if (acqDate > cutoff) return 0;\r\n        return totalGain * (daysInclusive(acqDate, cutoff) \/ Math.max(1, daysInclusive(acqDate, transDate)));\r\n      }\r\n\r\n      function calcDt9Reduction(rawGain, transmissionValue, notes) {\r\n        if (!checked(\"gp-dt9\") || rawGain <= 0) return 0;\r\n        var acqDate = toDate(value(\"gp-date-acq\"));\r\n        var transDate = toDate(value(\"gp-date-trans\")) || toDate(\"2025-12-31\");\r\n        var prior = Math.max(0, val(\"gp-dt9-prior\"));\r\n        var abateClass = value(\"gp-dt9-class\") || \"other\";\r\n        var manual = val(\"gp-dt9-manual\");\r\n\r\n        if (prior >= 400000) {\r\n          notes.push({ type: \"warning\", text: \"No se aplica DT 9\u00aa porque el valor acumulado desde 2015 ya alcanza 400.000 euros.\" });\r\n          return 0;\r\n        }\r\n\r\n        if (!acqDate) {\r\n          notes.push({ type: \"warning\", text: \"Para aplicar DT 9\u00aa introduce la fecha de adquisici\u00f3n en el c\u00e1lculo avanzado.\" });\r\n          return 0;\r\n        }\r\n\r\n        if (acqDate >= toDate(\"1994-12-31\")) {\r\n          notes.push({ type: \"warning\", text: \"No se aplica DT 9\u00aa porque la adquisici\u00f3n no es anterior al 31\/12\/1994.\" });\r\n          return 0;\r\n        }\r\n\r\n        if (abateClass === \"listed\" && manual <= 0) {\r\n          notes.push({ type: \"warning\", text: \"En acciones cotizadas es recomendable introducir manualmente la ganancia generada antes del 20\/01\/2006 para aplicar DT 9\u00aa con precisi\u00f3n.\" });\r\n          return 0;\r\n        }\r\n\r\n        var pre2006 = manual > 0 ? Math.min(manual, rawGain) : pre2006GainLinear(rawGain, acqDate, transDate);\r\n        var eligibleRatio = transmissionValue > 0 ? Math.min(1, Math.max(0, 400000 - prior) \/ transmissionValue) : 1;\r\n        var reduction = pre2006 * eligibleRatio * abatementRate(abateClass, acqDate);\r\n        if (reduction > 0) notes.push({ type: \"info\", text: \"DT 9\u00aa aplicada de forma estimada: reducci\u00f3n de \" + fmt(reduction) + \".\" });\r\n        return reduction;\r\n      }\r\n\r\n      function rawGainFromInputs(source) {\r\n        if (state.mode !== \"detailed\" || value(\"gp-detailed-source\") !== source) {\r\n          return {\r\n            acquisitionValue: 0,\r\n            transmissionValue: Math.max(0, val(\"gp-direct-sale-value-\" + source)),\r\n            rawGain: val(\"gp-net-gain-\" + source)\r\n          };\r\n        }\r\n\r\n        var share = clamp(val(\"gp-ownership\") \/ 100, 0, 1);\r\n        var acquisitionValue = (val(\"gp-purchase-price\") + val(\"gp-acquisition-costs\") + val(\"gp-improvements\") - val(\"gp-amortization\")) * share;\r\n        var transmissionValue = (val(\"gp-sale-price\") - val(\"gp-sale-costs\")) * share;\r\n        return {\r\n          acquisitionValue: acquisitionValue,\r\n          transmissionValue: transmissionValue,\r\n          rawGain: transmissionValue - acquisitionValue\r\n        };\r\n      }\r\n\r\n      function addSourceNotes(source, notes) {\r\n        if (value(\"gp-taxpayer-profile\") === \"business_asset\") {\r\n          notes.push({ type: \"warning\", text: \"Elemento afecto a actividad econ\u00f3mica: puede requerir reglas espec\u00edficas de valoraci\u00f3n, amortizaci\u00f3n o actividad.\" });\r\n        }\r\n        if (value(\"gp-taxpayer-profile\") === \"foreign_broker\") {\r\n          notes.push({ type: \"warning\", text: \"Broker, exchange o activo extranjero: revisa cambio a euros, retenciones extranjeras y posible obligaci\u00f3n informativa.\" });\r\n        }\r\n\r\n        if (source === \"securities\") {\r\n          var op = value(\"gp-security-operation\");\r\n          if (op === \"subscription_rights\") notes.push({ type: \"info\", text: \"Derechos de suscripci\u00f3n: desde 2017 el importe obtenido tributa como ganancia patrimonial y suele tener retenci\u00f3n del 19%.\" });\r\n          if (op === \"scrip_dividend\") notes.push({ type: \"warning\", text: \"Scrip dividend: el tratamiento cambia seg\u00fan se vendan derechos en mercado, se cobre de la sociedad o se reciban acciones liberadas.\" });\r\n          if (op === \"etf_sale\") notes.push({ type: \"warning\", text: \"ETFs y fondos cotizados normalmente no aplican el diferimiento fiscal de traspasos entre fondos.\" });\r\n          if (op === \"unlisted_sale\") notes.push({ type: \"warning\", text: \"Valores no cotizados: pueden aplicarse reglas especiales de valoraci\u00f3n si no se acredita valor de mercado.\" });\r\n          if (op === \"derivatives\") notes.push({ type: \"warning\", text: \"Derivados, CFDs, futuros u opciones pueden requerir liquidaciones parciales y conversi\u00f3n de divisa.\" });\r\n        }\r\n\r\n        if (source === \"crypto\") {\r\n          var cryptoOp = value(\"gp-crypto-operation\");\r\n          if (cryptoOp === \"crypto_swap\") notes.push({ type: \"info\", text: \"Permuta cripto-cripto: se calcula con el mayor valor de mercado entre lo entregado y lo recibido.\" });\r\n          if (cryptoOp === \"payment\") notes.push({ type: \"info\", text: \"Pagar con cripto puede generar ganancia o p\u00e9rdida por transmisi\u00f3n de la cripto usada.\" });\r\n          if (cryptoOp === \"nft_token_sale\") notes.push({ type: \"info\", text: \"NFTs y tokens pueden requerir revisar la naturaleza exacta del activo y si hay actividad econ\u00f3mica.\" });\r\n        }\r\n      }\r\n\r\n      function calcOperation() {\r\n        var notes = [];\r\n        var result = {\r\n          sources: selectedSources(),\r\n          general: false,\r\n          onlyGeneral: false,\r\n          acquisitionValue: 0,\r\n          transmissionValue: 0,\r\n          rawGain: 0,\r\n          taxableGain: 0,\r\n          generalGain: 0,\r\n          reductions: [],\r\n          exemptions: [],\r\n          breakdown: [],\r\n          notes: notes\r\n        };\r\n\r\n        result.sources.forEach(function (source) {\r\n          addSourceNotes(source, notes);\r\n          var raw = rawGainFromInputs(source);\r\n          var item = {\r\n            source: source,\r\n            label: sourceLabel(source),\r\n            rawGain: raw.rawGain,\r\n            taxableGain: raw.rawGain,\r\n            transmissionValue: raw.transmissionValue,\r\n            general: isNoTransmissionCase(source)\r\n          };\r\n\r\n          if (isDeferredOrNonTaxable(source, notes)) {\r\n            item.rawGain = 0;\r\n            item.taxableGain = 0;\r\n            result.breakdown.push(item);\r\n            return;\r\n          }\r\n\r\n          if (item.general) {\r\n            result.generalGain += item.taxableGain;\r\n            result.breakdown.push(item);\r\n            return;\r\n          }\r\n\r\n          result.acquisitionValue += raw.acquisitionValue;\r\n          result.transmissionValue += raw.transmissionValue;\r\n          result.rawGain += item.rawGain;\r\n\r\n          if (item.taxableGain <= 0) {\r\n            result.taxableGain += item.taxableGain;\r\n            result.breakdown.push(item);\r\n            return;\r\n          }\r\n\r\n          if (source === \"real_estate\" && (checked(\"gp-home-senior-exempt\") || checked(\"gp-special-full-exemption\"))) {\r\n            var label = checked(\"gp-home-senior-exempt\") ? \"Exenci\u00f3n vivienda habitual por mayor de 65 a\u00f1os o dependencia\" : \"Exenci\u00f3n especial marcada\";\r\n            result.exemptions.push({ label: label + \" (\" + item.label + \")\", amount: item.taxableGain });\r\n            notes.push({ type: \"info\", text: label + \": se estima exenci\u00f3n total si se cumplen todos los requisitos documentales.\" });\r\n            item.taxableGain = 0;\r\n            result.breakdown.push(item);\r\n            return;\r\n          }\r\n\r\n          if (checked(\"gp-dt9\") && (result.sources.length === 1 || value(\"gp-detailed-source\") === source)) {\r\n            var dt9 = calcDt9Reduction(item.rawGain, item.transmissionValue, notes);\r\n            if (dt9 > 0) {\r\n              result.reductions.push({ label: \"Reducci\u00f3n DT 9\u00aa (\" + item.label + \")\", amount: dt9 });\r\n              item.taxableGain -= dt9;\r\n            }\r\n          }\r\n\r\n          if (source === \"real_estate\" && checked(\"gp-urban2012\") && item.taxableGain > 0) {\r\n            var urban = item.taxableGain * 0.5;\r\n            result.exemptions.push({ label: \"Exenci\u00f3n 50% inmueble urbano adquirido en 2012\", amount: urban });\r\n            item.taxableGain -= urban;\r\n            notes.push({ type: \"warning\", text: \"La exenci\u00f3n del 50% para inmuebles urbanos de 2012 tiene exclusiones. Revisa fechas, adquisici\u00f3n onerosa y operaciones vinculadas.\" });\r\n          }\r\n\r\n          if (source === \"real_estate\" && checked(\"gp-home-reinvestment\") && item.taxableGain > 0) {\r\n            var reinvested = Math.max(0, val(\"gp-reinvested-home\"));\r\n            var mortgage = Math.max(0, val(\"gp-pending-mortgage\"));\r\n            var amountToReinvest = Math.max(0, item.transmissionValue - mortgage);\r\n            var ratioHome = amountToReinvest > 0 ? clamp(reinvested \/ amountToReinvest, 0, 1) : 0;\r\n            var homeExemption = item.taxableGain * ratioHome;\r\n            if (homeExemption > 0) {\r\n              result.exemptions.push({ label: \"Exenci\u00f3n por reinversi\u00f3n en vivienda habitual\", amount: homeExemption });\r\n              item.taxableGain -= homeExemption;\r\n            } else {\r\n              notes.push({ type: \"warning\", text: \"Para aplicar reinversi\u00f3n en vivienda habitual, introduce importe reinvertido y valor de transmisi\u00f3n de referencia.\" });\r\n            }\r\n          }\r\n\r\n          result.taxableGain += item.taxableGain;\r\n          result.breakdown.push(item);\r\n        });\r\n\r\n        if (checked(\"gp-dt9\") && result.sources.length > 1 && value(\"gp-detailed-source\") && result.sources.indexOf(value(\"gp-detailed-source\")) === -1) {\r\n          notes.push({ type: \"warning\", text: \"DT 9\u00aa est\u00e1 marcada, pero el origen del c\u00e1lculo detallado no est\u00e1 seleccionado. No se ha aplicado.\" });\r\n        }\r\n\r\n        if (checked(\"gp-annuity\") && result.taxableGain > 0) {\r\n          var cap = Math.max(0, 240000 - Math.max(0, val(\"gp-annuity-used\")));\r\n          var qualified = Math.min(Math.max(0, val(\"gp-annuity-amount\")), cap, Math.max(0, result.transmissionValue));\r\n          var ratioAnnuity = result.transmissionValue > 0 ? clamp(qualified \/ result.transmissionValue, 0, 1) : 0;\r\n          var annuityExemption = result.taxableGain * ratioAnnuity;\r\n          if (annuityExemption > 0) {\r\n            result.exemptions.push({ label: \"Exenci\u00f3n por reinversi\u00f3n en renta vitalicia\", amount: annuityExemption });\r\n            result.taxableGain -= annuityExemption;\r\n          } else {\r\n            notes.push({ type: \"warning\", text: \"Para renta vitalicia, introduce importe destinado y valor de transmisi\u00f3n de referencia. L\u00edmite global: 240.000 euros.\" });\r\n          }\r\n        }\r\n\r\n        if (result.generalGain !== 0) {\r\n          result.general = true;\r\n          notes.push({ type: \"info\", text: \"Adem\u00e1s hay \" + fmt(result.generalGain) + \" estimados en base general. La cuota exacta depender\u00e1 del resto de rentas y la comunidad aut\u00f3noma.\" });\r\n        }\r\n        result.onlyGeneral = result.rawGain === 0 && result.taxableGain === 0 && result.generalGain !== 0;\r\n        return result;\r\n      }\r\n\r\n      function calcSavingsIntegration(operation) {\r\n        var gains = operation.taxableGain + val(\"gp-other-gains\");\r\n        var capital = val(\"gp-capital-income\") + val(\"gp-crypto-staking\");\r\n        var pendingLosses = Math.max(0, val(\"gp-pending-losses\"));\r\n        var pendingCapital = Math.max(0, val(\"gp-pending-capital\"));\r\n        var originalPositiveGains = Math.max(0, gains);\r\n        var originalPositiveCapital = Math.max(0, capital);\r\n        var comps = [];\r\n        var notes = [];\r\n\r\n        if (gains > 0 && capital < 0) {\r\n          var capNegComp = Math.min(gains * 0.25, -capital);\r\n          gains -= capNegComp;\r\n          capital += capNegComp;\r\n          comps.push({ label: \"Capital mobiliario negativo compensado con ganancias\", amount: capNegComp });\r\n        } else if (gains < 0 && capital > 0) {\r\n          var lossComp = Math.min(capital * 0.25, -gains);\r\n          capital -= lossComp;\r\n          gains += lossComp;\r\n          comps.push({ label: \"P\u00e9rdidas patrimoniales compensadas con capital mobiliario\", amount: lossComp });\r\n        }\r\n\r\n        if (gains > 0 && pendingLosses > 0) {\r\n          var ownLosses = Math.min(gains, pendingLosses);\r\n          gains -= ownLosses;\r\n          pendingLosses -= ownLosses;\r\n          comps.push({ label: \"P\u00e9rdidas patrimoniales pendientes compensadas\", amount: ownLosses });\r\n        }\r\n\r\n        if (capital > 0 && pendingCapital > 0) {\r\n          var ownCapital = Math.min(capital, pendingCapital);\r\n          capital -= ownCapital;\r\n          pendingCapital -= ownCapital;\r\n          comps.push({ label: \"Capital mobiliario negativo pendiente compensado\", amount: ownCapital });\r\n        }\r\n\r\n        if (gains > 0 && pendingCapital > 0) {\r\n          var crossCapital = Math.min(gains, pendingCapital, originalPositiveGains * 0.25);\r\n          gains -= crossCapital;\r\n          pendingCapital -= crossCapital;\r\n          if (crossCapital > 0) comps.push({ label: \"Capital mobiliario negativo pendiente compensado con ganancias\", amount: crossCapital });\r\n        }\r\n\r\n        if (capital > 0 && pendingLosses > 0) {\r\n          var crossLoss = Math.min(capital, pendingLosses, originalPositiveCapital * 0.25);\r\n          capital -= crossLoss;\r\n          pendingLosses -= crossLoss;\r\n          if (crossLoss > 0) comps.push({ label: \"P\u00e9rdidas pendientes compensadas con capital mobiliario\", amount: crossLoss });\r\n        }\r\n\r\n        if (val(\"gp-crypto-staking\") > 0) notes.push({ type: \"info\", text: \"Se han sumado \" + fmt(val(\"gp-crypto-staking\")) + \" de staking\/lending\/yield como posible capital mobiliario.\" });\r\n        if (val(\"gp-crypto-general\") > 0) notes.push({ type: \"warning\", text: \"Has indicado \" + fmt(val(\"gp-crypto-general\")) + \" de airdrops, premios, regalos o miner\u00eda. No se incluyen en la cuota del ahorro: rev\u00edsalos como base general o actividad econ\u00f3mica.\" });\r\n\r\n        return {\r\n          gainsBalance: gains,\r\n          capitalBalance: capital,\r\n          baseSavings: Math.max(0, gains) + Math.max(0, capital),\r\n          compensations: comps,\r\n          carryForwardLosses: gains < 0 ? -gains : 0,\r\n          carryForwardCapital: capital < 0 ? -capital : 0,\r\n          notes: notes\r\n        };\r\n      }\r\n\r\n      function row(label, amount) {\r\n        return \"<tr><td>\" + label + \"<\/td><td class=\\\"gp-amount\\\">\" + fmt(amount) + \"<\/td><\/tr>\";\r\n      }\r\n\r\n      function renderBracketRows(rows) {\r\n        if (!rows.length) return \"<tr><td colspan=\\\"4\\\">Sin base positiva sujeta a la escala del ahorro.<\/td><\/tr>\";\r\n        return rows.map(function (r) {\r\n          var range = r.to === null ? \"Desde \" + fmt(r.from) : fmt(r.from) + \" - \" + fmt(r.to);\r\n          return \"<tr><td>\" + range + \"<\/td><td class=\\\"gp-amount\\\">\" + fmt(r.base) + \"<\/td><td>\" + fmtPct(r.rate) + \"<\/td><td class=\\\"gp-amount\\\">\" + fmt(r.tax) + \"<\/td><\/tr>\";\r\n        }).join(\"\");\r\n      }\r\n\r\n      function noteHtml(note) {\r\n        return \"<div class=\\\"gp-note \" + (note.type || \"\") + \"\\\">\" + note.text + \"<\/div>\";\r\n      }\r\n\r\n      function renderGeneralResult(operation) {\r\n        var rate = Math.max(0, val(\"gp-general-rate\") \/ 100);\r\n        var generalBase = operation.generalGain || operation.taxableGain;\r\n        var positive = Math.max(0, generalBase);\r\n        var tax = positive * rate;\r\n        var notes = operation.notes.concat([{ type: \"warning\", text: \"La estimaci\u00f3n de base general es orientativa: faltan resto de rentas, m\u00ednimo personal y escala auton\u00f3mica.\" }]);\r\n\r\n        return [\r\n          \"<div class=\\\"gp-result-layout\\\">\",\r\n          \"<div class=\\\"gp-result-card\" + (generalBase < 0 ? \" loss\" : \"\") + \"\\\">\",\r\n          \"<div class=\\\"gp-result-label\\\">Base general estimada<\/div>\",\r\n          \"<div class=\\\"gp-result-amount\\\">\" + fmt(generalBase) + \"<\/div>\",\r\n          \"<div class=\\\"gp-result-sub\\\">Con el tipo marginal indicado, el impacto aproximado ser\u00eda \" + fmt(tax) + \".<\/div>\",\r\n          \"<\/div>\",\r\n          \"<div>\",\r\n          \"<div class=\\\"gp-kpis\\\">\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Ganancia neta<\/div><div class=\\\"gp-kpi-value\\\">\" + fmt(generalBase) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Tipo usado<\/div><div class=\\\"gp-kpi-value navy\\\">\" + fmtPct(rate) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Cuota orientativa<\/div><div class=\\\"gp-kpi-value blue\\\">\" + fmt(tax) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Base<\/div><div class=\\\"gp-kpi-value navy\\\">General<\/div><\/div>\",\r\n          \"<\/div>\",\r\n          \"<div class=\\\"gp-notes\\\">\" + notes.map(noteHtml).join(\"\") + \"<\/div>\",\r\n          \"<\/div><\/div>\"\r\n        ].join(\"\");\r\n      }\r\n\r\n      function renderSavingsResult(operation) {\r\n        var integration = calcSavingsIntegration(operation);\r\n        var tax = calcTaxByBrackets(integration.baseSavings, CONFIG.savingsBrackets);\r\n        var withholdings = Math.max(0, val(\"gp-withholdings\"));\r\n        var netDue = tax.total - withholdings;\r\n        var effectiveRate = integration.baseSavings > 0 ? tax.total \/ integration.baseSavings : 0;\r\n        var notes = operation.notes.concat(integration.notes);\r\n        notes.push({ type: \"warning\", text: \"Estimaci\u00f3n orientativa. No sustituye la revisi\u00f3n fiscal de documentaci\u00f3n, fechas, valores comprobados ni requisitos de exenciones.\" });\r\n\r\n        var lines = [\r\n          \"<div class=\\\"gp-result-layout\\\">\",\r\n          \"<div class=\\\"gp-result-card\" + (operation.taxableGain < 0 ? \" loss\" : \"\") + \"\\\">\",\r\n          \"<div class=\\\"gp-result-label\\\">IRPF estimado<\/div>\",\r\n          \"<div class=\\\"gp-result-amount\\\">\" + fmt(tax.total) + \"<\/div>\",\r\n          \"<div class=\\\"gp-result-sub\\\">Beneficio despu\u00e9s de impuestos: \" + fmt(Math.max(0, operation.taxableGain) - tax.total) + \". Resultado neto tras retenciones: \" + fmt(netDue) + \".<\/div>\",\r\n          \"<div class=\\\"gp-kpis\\\">\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Ganancia inicial<\/div><div class=\\\"gp-kpi-value \" + (operation.rawGain < 0 ? \"danger\" : \"\") + \"\\\">\" + fmt(operation.rawGain) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Ganancia sujeta<\/div><div class=\\\"gp-kpi-value\\\">\" + fmt(operation.taxableGain) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Base ahorro<\/div><div class=\\\"gp-kpi-value navy\\\">\" + fmt(integration.baseSavings) + \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-kpi\\\"><div class=\\\"gp-kpi-label\\\">Tipo efectivo<\/div><div class=\\\"gp-kpi-value blue\\\">\" + fmtPct(effectiveRate) + \"<\/div><\/div>\",\r\n          \"<\/div><\/div>\",\r\n          \"<div>\",\r\n          \"<div class=\\\"gp-table-wrap\\\"><table class=\\\"gp-table\\\"><thead><tr><th>Concepto<\/th><th>Importe<\/th><\/tr><\/thead><tbody>\",\r\n          \"<tr><td>Origen<\/td><td class=\\\"gp-amount\\\">\" + selectedSourceLabel() + \"<\/td><\/tr>\",\r\n          row(\"Ganancia o p\u00e9rdida inicial\", operation.rawGain)\r\n        ];\r\n\r\n        operation.breakdown.forEach(function (item) {\r\n          if (!item.general && item.rawGain !== 0) {\r\n            lines.push(row(\"Ganancia\/p\u00e9rdida - \" + item.label, item.rawGain));\r\n          }\r\n        });\r\n\r\n        operation.reductions.forEach(function (item) { lines.push(row(item.label, -item.amount)); });\r\n        operation.exemptions.forEach(function (item) { lines.push(row(item.label, -item.amount)); });\r\n        integration.compensations.forEach(function (item) { lines.push(row(item.label, -item.amount)); });\r\n\r\n        lines.push(\r\n          \"<tr class=\\\"gp-total-row\\\"><td>Base del ahorro estimada<\/td><td class=\\\"gp-amount\\\">\" + fmt(integration.baseSavings) + \"<\/td><\/tr>\",\r\n          \"<\/tbody><\/table><\/div>\",\r\n          \"<details class=\\\"gp-details\\\" style=\\\"margin-top:14px;\\\"><summary>C\u00f3mo calculamos el IRPF estimado<\/summary><div class=\\\"gp-details-body\\\"><p class=\\\"gp-help\\\" style=\\\"margin-top:10px;\\\">Agrupamos las ganancias y p\u00e9rdidas derivadas de transmisiones en la base del ahorro, aplicamos las reducciones o exenciones marcadas, compensamos saldos cuando procede y calculamos la cuota por tramos.<\/p><div class=\\\"gp-table-wrap\\\" style=\\\"margin-top:14px;\\\"><table class=\\\"gp-table\\\"><thead><tr><th>Tramo<\/th><th>Base<\/th><th>Tipo<\/th><th>Cuota<\/th><\/tr><\/thead><tbody>\",\r\n          renderBracketRows(tax.rows),\r\n          \"<tr class=\\\"gp-total-row\\\"><td colspan=\\\"3\\\">Cuota \u00edntegra ahorro estimada<\/td><td class=\\\"gp-amount\\\">\" + fmt(tax.total) + \"<\/td><\/tr>\",\r\n          \"<\/tbody><\/table><\/div><\/div><\/details>\",\r\n          \"<div class=\\\"gp-notes\\\">\" + notes.map(noteHtml).join(\"\") + \"<\/div>\",\r\n          \"<\/div><\/div>\",\r\n          \"<div class=\\\"gp-inline-cta\\\"><div><div class=\\\"gp-inline-cta-title\\\">\u00bfNecesitas declarar ganancias patrimoniales? <span>D\u00e9jalo en nuestras manos.<\/span><\/div><div class=\\\"gp-inline-cta-sub\\\">Muay Tax revisa acciones, cripto, inmuebles, compensaciones pendientes, divisas y exenciones para evitar errores en la renta.<\/div><\/div><a href=\\\"https:\/\/muaytax.com\/es\/espana\/declaracion-de-la-renta-2025\/renta-2025-precio\/\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Ver servicio de renta<\/a><\/div>\"\r\n        );\r\n\r\n        return lines.join(\"\");\r\n      }\r\n\r\n      function renderResults() {\r\n        var operation = calcOperation();\r\n        $(\"#gp-results\").innerHTML = operation.onlyGeneral ? renderGeneralResult(operation) : renderSavingsResult(operation);\r\n      }\r\n\r\n      function sourceHint() {\r\n        var hints = {\r\n          securities: \"Acciones, fondos, ETFs, derechos y derivados suelen ir a la base del ahorro cuando hay transmisi\u00f3n. Dividendos e intereses van como capital mobiliario.\",\r\n          real_estate: \"En inmuebles pueden aplicar vivienda habitual, mayores de 65 a\u00f1os, reinversi\u00f3n, plusval\u00eda municipal, amortizaciones y exenciones espec\u00edficas.\",\r\n          crypto: \"Ventas y permutas de cripto por particulares van a la base del ahorro. Staking, airdrops o miner\u00eda pueden tener otro tratamiento.\",\r\n          other: \"Si no hay transmisi\u00f3n, la ganancia suele integrarse en la base general. Si hay venta o donaci\u00f3n, normalmente va a la base del ahorro.\"\r\n        };\r\n        $(\"#gp-source-hint\").textContent = selectedSources().map(function (source) { return hints[source]; }).join(\" \");\r\n      }\r\n\r\n      function syncVisibility() {\r\n        $$(\".source-group, .source-extra, .source-amount\").forEach(function (el) { el.classList.add(\"gp-hidden\"); });\r\n        selectedSources().forEach(function (source) {\r\n          $$(\".source-\" + source).forEach(function (el) { el.classList.remove(\"gp-hidden\"); });\r\n        });\r\n        $$(\".gp-source-input\").forEach(function (input) {\r\n          var isSelected = hasSource(input.dataset.source);\r\n          input.checked = isSelected;\r\n          var card = input.closest(\".gp-source-check\");\r\n          if (card) card.classList.toggle(\"selected\", isSelected);\r\n        });\r\n        $$(\".gp-mode-btn\").forEach(function (btn) { btn.classList.toggle(\"selected\", btn.dataset.mode === state.mode); });\r\n\r\n        $(\"#gp-quick-fields\").classList.remove(\"gp-hidden\");\r\n        $(\"#gp-detailed-fields\").classList.toggle(\"gp-hidden\", state.mode !== \"detailed\");\r\n        $(\"#gp-home-reinvestment-fields\").classList.toggle(\"gp-hidden\", !checked(\"gp-home-reinvestment\"));\r\n        $(\"#gp-annuity-fields\").classList.toggle(\"gp-hidden\", !checked(\"gp-annuity\"));\r\n        $(\"#gp-dt9-fields\").classList.toggle(\"gp-hidden\", !checked(\"gp-dt9\"));\r\n\r\n        $$(\".gp-switch-card\").forEach(function (card) {\r\n          var input = $(\"input[type=\\\"checkbox\\\"]\", card);\r\n          if (input) card.classList.toggle(\"selected\", input.checked);\r\n        });\r\n\r\n        $$(\".special-real-estate\").forEach(function (el) { el.classList.toggle(\"gp-hidden\", !hasSource(\"real_estate\")); });\r\n        if (value(\"gp-detailed-source\") && !hasSource(value(\"gp-detailed-source\"))) {\r\n          $(\"#gp-detailed-source\").value = selectedSources()[0];\r\n        }\r\n        if (value(\"gp-detailed-source\") === \"real_estate\") $(\"#gp-dt9-class\").value = \"real_estate\";\r\n        else if (value(\"gp-detailed-source\") === \"securities\") $(\"#gp-dt9-class\").value = \"listed\";\r\n        else $(\"#gp-dt9-class\").value = \"other\";\r\n\r\n        sourceHint();\r\n        if (state.step === 3) renderResults();\r\n      }\r\n\r\n      function scrollToActiveStep() {\r\n        window.setTimeout(function () {\r\n          var target = $(\".gp-steps-nav\") || $(\".gp-panel.active\");\r\n          if (!target) return;\r\n          var top = target.getBoundingClientRect().top + window.pageYOffset - 16;\r\n          window.scrollTo({ top: Math.max(0, top), behavior: \"smooth\" });\r\n        }, 60);\r\n      }\r\n\r\n      function goStep(step, options) {\r\n        var target = Number(step);\r\n        var shouldScroll = !(options && options.scroll === false);\r\n        state.step = target;\r\n        $$(\".gp-panel\").forEach(function (panel) { panel.classList.remove(\"active\"); });\r\n        $(\"#gp-p\" + target).classList.add(\"active\");\r\n        $$(\".gp-step-tab\").forEach(function (tab) {\r\n          var tabStep = Number(tab.dataset.step);\r\n          tab.classList.toggle(\"active\", tabStep === target);\r\n          tab.classList.toggle(\"done\", tabStep < target);\r\n          tab.setAttribute(\"aria-selected\", tabStep === target ? \"true\" : \"false\");\r\n        });\r\n        if (target === 3) renderResults();\r\n        if (shouldScroll) scrollToActiveStep();\r\n      }\r\n\r\n      function resetState() {\r\n        if (!window.confirm(\"\u00bfSeguro que quieres reiniciar la calculadora?\")) return;\r\n        $$(\"input\").forEach(function (input) {\r\n          if (input.type === \"checkbox\") input.checked = false;\r\n          else if (input.id === \"gp-ownership\") input.value = \"100\";\r\n          else if (input.id === \"gp-date-trans\") input.value = \"\";\r\n          else input.value = \"\";\r\n        });\r\n        $$(\"select\").forEach(function (select) { select.selectedIndex = 0; });\r\n        state.sources = [\"securities\"];\r\n        state.mode = \"quick\";\r\n        syncVisibility();\r\n        goStep(1);\r\n      }\r\n\r\n      function maybeFormatMoney(input) {\r\n        var n = parseNum(input.value);\r\n        if (!input.value.trim() || !Number.isFinite(n)) return;\r\n        input.value = fmtPlain(n);\r\n      }\r\n\r\n      var hubspotLoader = null;\r\n      function loadHubSpot() {\r\n        if (!CONFIG.hubspot.enabled) return Promise.resolve(null);\r\n        if (window.hbspt && window.hbspt.forms) return Promise.resolve(window.hbspt);\r\n        if (hubspotLoader) return hubspotLoader;\r\n        hubspotLoader = new Promise(function (resolve, reject) {\r\n          var script = document.createElement(\"script\");\r\n          script.src = \"https:\/\/js.hsforms.net\/forms\/embed\/v2.js\";\r\n          script.async = true;\r\n          script.onload = function () { resolve(window.hbspt); };\r\n          script.onerror = reject;\r\n          document.head.appendChild(script);\r\n        });\r\n        return hubspotLoader;\r\n      }\r\n\r\n      function createHubSpotForm(extraOptions) {\r\n        if (!CONFIG.hubspot.enabled || !CONFIG.hubspot.portalId || !CONFIG.hubspot.inlineFormId) return Promise.resolve();\r\n        return loadHubSpot().then(function (hbspt) {\r\n          if (!hbspt || !hbspt.forms) return;\r\n          hbspt.forms.create(Object.assign({\r\n            portalId: CONFIG.hubspot.portalId,\r\n            formId: CONFIG.hubspot.inlineFormId,\r\n            region: CONFIG.hubspot.region,\r\n            target: CONFIG.hubspot.target\r\n          }, extraOptions || {}));\r\n        });\r\n      }\r\n\r\n      window.GananciasPatrimonialesCalculator = {\r\n        config: CONFIG,\r\n        calculate: function () {\r\n          var operation = calcOperation();\r\n          return operation.onlyGeneral ? operation : {\r\n            operation: operation,\r\n            integration: calcSavingsIntegration(operation),\r\n            tax: calcTaxByBrackets(calcSavingsIntegration(operation).baseSavings, CONFIG.savingsBrackets)\r\n          };\r\n        },\r\n        createHubSpotForm: createHubSpotForm\r\n      };\r\n\r\n      $$(\".gp-step-tab\").forEach(function (tab) {\r\n        tab.addEventListener(\"click\", function () { goStep(tab.dataset.step); });\r\n      });\r\n      $$(\"[data-next]\").forEach(function (btn) {\r\n        btn.addEventListener(\"click\", function () { goStep(btn.dataset.next); });\r\n      });\r\n      $$(\"[data-prev]\").forEach(function (btn) {\r\n        btn.addEventListener(\"click\", function () { goStep(btn.dataset.prev); });\r\n      });\r\n      $$(\".gp-source-input\").forEach(function (input) {\r\n        input.addEventListener(\"change\", function () {\r\n          var source = input.dataset.source;\r\n          if (input.checked) {\r\n            if (!hasSource(source)) state.sources.push(source);\r\n          } else {\r\n            if (state.sources.length === 1) {\r\n              input.checked = true;\r\n              return;\r\n            }\r\n            state.sources = state.sources.filter(function (item) { return item !== source; });\r\n          }\r\n          syncVisibility();\r\n        });\r\n      });\r\n      $$(\".gp-mode-btn\").forEach(function (btn) {\r\n        btn.addEventListener(\"click\", function () {\r\n          state.mode = btn.dataset.mode;\r\n          syncVisibility();\r\n        });\r\n      });\r\n      $$(\"input, select\").forEach(function (el) {\r\n        el.addEventListener(\"change\", syncVisibility);\r\n        el.addEventListener(\"input\", function () { if (state.step === 3) renderResults(); });\r\n      });\r\n      $$(\".money-input\").forEach(function (input) {\r\n        input.addEventListener(\"blur\", function () { maybeFormatMoney(input); });\r\n      });\r\n\r\n      $(\"#gp-reset-1\").addEventListener(\"click\", resetState);\r\n      $(\"#gp-reset-3\").addEventListener(\"click\", resetState);\r\n      syncVisibility();\r\n    }());\r\n  <\/script>\r\n\r\n\r\n<style id=\"muay-v2-design-system\">\r\n\/* Muay Tax calculators v2 - shared visual system and cleanup layer. *\/\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) {\r\n  --mt-v2-primary: #00ad65;\r\n  --mt-v2-primary-soft: #e8fbf2;\r\n  --mt-v2-navy: #031549;\r\n  --mt-v2-blue: #0083e3;\r\n  --mt-v2-ink: #0e1433;\r\n  --mt-v2-muted: #5b6380;\r\n  --mt-v2-bg: #f7faff;\r\n  --mt-v2-surface: #ffffff;\r\n  --mt-v2-border: #e5ecf7;\r\n  --mt-v2-border-strong: #91abbc;\r\n  --mt-v2-danger: #e0364c;\r\n  --mt-v2-warning: #f2a12b;\r\n  --mt-v2-radius: 8px;\r\n  --mt-v2-radius-sm: 6px;\r\n  --calc-primary: var(--mt-v2-primary); --calc-primary-soft: var(--mt-v2-primary-soft); --calc-primary-light: var(--mt-v2-primary-soft); --calc-navy: var(--mt-v2-navy); --calc-muted: var(--mt-v2-muted); --calc-border: var(--mt-v2-border); --calc-border-soft: var(--mt-v2-bg); --calc-border-mid: var(--mt-v2-border-strong); --calc-bg: var(--mt-v2-bg); --calc-white: var(--mt-v2-surface); --calc-danger: var(--mt-v2-danger); --calc-radius: var(--mt-v2-radius); --calc-radius-sm: var(--mt-v2-radius-sm);\r\n  --rc-primary: var(--mt-v2-primary); --rc-primary-dark: var(--mt-v2-navy); --rc-navy: var(--mt-v2-navy); --rc-muted: var(--mt-v2-muted); --rc-border: var(--mt-v2-border); --rc-border-mid: var(--mt-v2-border-strong); --rc-bg: var(--mt-v2-bg); --rc-white: var(--mt-v2-surface); --rc-danger: var(--mt-v2-danger); --rc-blue: var(--mt-v2-blue); --rc-radius: var(--mt-v2-radius); --rc-radius-sm: var(--mt-v2-radius-sm);\r\n  --gp-primary: var(--mt-v2-primary); --gp-navy: var(--mt-v2-navy); --gp-blue: var(--mt-v2-blue); --gp-bg: var(--mt-v2-bg); --gp-soft: var(--mt-v2-primary-soft); --gp-info: #e9f5ff; --gp-border: var(--mt-v2-border); --gp-border-soft: var(--mt-v2-bg); --gp-border-strong: var(--mt-v2-border-strong); --gp-muted: var(--mt-v2-muted); --gp-danger: var(--mt-v2-danger); --gp-warning: var(--mt-v2-warning); --gp-white: var(--mt-v2-surface); --gp-radius: var(--mt-v2-radius); --gp-radius-sm: var(--mt-v2-radius-sm);\r\n  --seo-primary: var(--mt-v2-primary); --seo-primary-bg: var(--mt-v2-primary-soft); --seo-navy: var(--mt-v2-navy); --seo-muted: var(--mt-v2-muted); --seo-border: var(--mt-v2-border); --seo-bg: var(--mt-v2-bg); --seo-white: var(--mt-v2-surface); --seo-radius: var(--mt-v2-radius); --seo-radius-sm: var(--mt-v2-radius-sm);\r\n  --mtvat-green: var(--mt-v2-primary); --mtvat-green-dark: #008f54; --mtvat-green-soft: var(--mt-v2-primary-soft); --mtvat-navy: var(--mt-v2-navy); --mtvat-ink: var(--mt-v2-ink); --mtvat-muted: var(--mt-v2-muted); --mtvat-line: var(--mt-v2-border); --mtvat-paper: var(--mt-v2-bg); --mtvat-white: var(--mt-v2-surface); --mtvat-blue: var(--mt-v2-blue); --mtvat-blue-soft: #e9f5ff; --mtvat-danger: var(--mt-v2-danger); --mtvat-radius: var(--mt-v2-radius); --mtvat-radius-sm: var(--mt-v2-radius-sm);\r\n  --mtaz-green: var(--mt-v2-primary); --mtaz-green-dark: #008f54; --mtaz-green-soft: var(--mt-v2-primary-soft); --mtaz-navy: var(--mt-v2-navy); --mtaz-navy-soft: #10235f; --mtaz-ink: var(--mt-v2-ink); --mtaz-muted: var(--mt-v2-muted); --mtaz-line: var(--mt-v2-border); --mtaz-paper: var(--mt-v2-bg); --mtaz-white: var(--mt-v2-surface); --mtaz-radius: var(--mt-v2-radius);\r\n  --mt-green: var(--mt-v2-primary); --mt-green-600: #008f54; --mt-green-400: #36e093; --mt-green-300: #8ce8bd; --mt-mint: var(--mt-v2-primary-soft); --mt-mint-50: var(--mt-v2-bg); --mt-navy: var(--mt-v2-navy); --mt-navy-700: #10235f; --mt-ink: var(--mt-v2-ink); --mt-muted: var(--mt-v2-muted); --mt-line: var(--mt-v2-border); --mt-paper: var(--mt-v2-bg); --mt-white: var(--mt-v2-surface);\r\n  font-family: Poppins, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif !important;\r\n  color: var(--mt-v2-navy);\r\n  max-width: 100%;\r\n  overflow-wrap: break-word;\r\n}\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) *, :where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) *::before, :where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) *::after { box-sizing: border-box; letter-spacing: 0 !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(h1, h2, h3, .calc-title-standalone, .rc-title, .gp-title, .gp-hero-title, .mtvat-title, .mtaz-title, .mt-h1, .mt-h2, .seo-faq-section-title, .seo-section-title) { color: var(--mt-v2-navy) !important; font-weight: 800 !important; line-height: 1.18 !important; text-wrap: balance; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(h1, .gp-hero-title, .seo-hero h1, .mt-h1) { font-size: 2.35rem !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(.calc-header, .rc-header, .calc-panel, .rc-panel, .gp-panel, .mtvat-card, .mtaz-card, .seo-card, .seo-example-box, .calc-metric-card, .gp-card, .card, #uploadCard, .mt-hero-card, .mt-risk-card, .mt-trust-card) { border: 1px solid var(--mt-v2-border) !important; border-radius: var(--mt-v2-radius) !important; box-shadow: none !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(input, select, textarea) { min-height: 42px; border: 1px solid var(--mt-v2-border-strong) !important; border-radius: var(--mt-v2-radius-sm) !important; background: var(--mt-v2-surface) !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(button, .calc-btn, .rc-btn, .gp-btn, .mtvat-btn, .mtaz-btn, .btn, .btn-sm, .calc-btn-big, .rc-btn-big, .seo-cta-btn-content, .mt-btn, .mt-btn-pill) { border-radius: var(--mt-v2-radius) !important; min-height: 44px; font-weight: 700 !important; box-shadow: none !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-calc, .muay-v2-doc) :is(.calc-steps-nav, .rc-steps-nav, .gp-steps-nav) { gap: 4px !important; padding: 4px !important; border: 1px solid var(--mt-v2-border) !important; border-radius: var(--mt-v2-radius) !important; background: var(--mt-v2-surface) !important; }\r\n:where(.calc-wrapper, .quota-widget, .renta-calc, .gp-calc) :is(.calc-step-tab, .rc-step-tab, .gp-step-tab) { border-radius: var(--mt-v2-radius-sm) !important; min-height: 40px !important; }\r\n:where(.calc-wrapper, .quota-widget, .renta-calc, .gp-calc) :is(.calc-step-tab.active, .calc-step-tab.done, .rc-step-tab.active, .rc-step-tab.done, .gp-step-tab.active, .gp-step-tab.done) { background: var(--mt-v2-primary-soft) !important; color: var(--mt-v2-primary) !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor) :is(.calc-choice, .rc-choice, .gp-choice, .gp-source-check, .gp-mode-btn, .gp-switch-card, .calc-radio-card, .mtvat-option, .mtaz-option, .calc-op-card) { border-radius: var(--mt-v2-radius) !important; border: 1px solid var(--mt-v2-border) !important; }\r\n:where(#mt-vat-registration-form, #mt-amazon-diagnostic-form) :is(.mtvat-progress-track, .mtaz-progress-track) { background: #eef3fa !important; border-radius: 999px !important; }\r\n:where(#mt-vat-registration-form, #mt-amazon-diagnostic-form) :is(.mtvat-progress-bar, .mtaz-progress-bar) { background: var(--mt-v2-primary) !important; }\r\n:where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor) :is(.calc-result-hero, .rc-result-hero, .gp-result-hero, .mtvat-result-hero, .mtaz-result-hero) { border-radius: var(--mt-v2-radius) !important; box-shadow: none !important; }\r\n.renta-calc .rc-result-hero.devolver { background: var(--mt-v2-primary) !important; }\r\n.renta-calc .rc-result-hero.pagar { background: var(--mt-v2-navy) !important; }\r\n.renta-calc .rc-result-hero.cero { background: var(--mt-v2-border-strong) !important; }\r\n.seo-wrap-hero .seo-hero-lead { margin: 0 auto 28px !important; }\r\n.seo-wrap-content .seo-cta-box::before, #mt-amazon-diagnostico-elementor .mt-hero-bg, #mt-amazon-diagnostico-elementor .calc-result-hero::before, #mt-amazon-diagnostico-elementor .mt-final::before, #mt-amazon-diagnostico-elementor .mt-final::after { display: none !important; }\r\n#mt-amazon-diagnostico-elementor .mt-hero { background: var(--mt-v2-bg) !important; }\r\n#mt-amazon-diagnostico-elementor .mt-final { background: var(--mt-v2-navy) !important; }\r\n#mt-amazon-diagnostico-elementor .mt-page { max-width: 100%; overflow-x: hidden; }\r\n#mt-amazon-diagnostico-elementor[data-muay-v2] { width: 100% !important; max-width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; }\r\n@media (max-width: 680px) {\r\n  :where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(h1, .gp-hero-title, .seo-hero h1, .mt-h1) { font-size: 1.75rem !important; }\r\n  :where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(.calc-title-standalone, .rc-title, .gp-title, .mtvat-title, .mtaz-title) { font-size: 1.45rem !important; }\r\n  :where(.calc-wrapper, .quota-widget, .iva-muay-widget, .renta-calc, .gp-hero-wrap, .gp-calc, #mt-vat-registration-form, #mt-amazon-diagnostic-form, #mt-amazon-diagnostico-elementor, .seo-wrap-hero, .seo-wrap-content, .seo-wrap-faq, .muay-v2-doc, .muay-v2-doc main) :is(.calc-btn, .rc-btn, .gp-btn, .mtvat-btn, .mtaz-btn, button) { width: 100%; }\r\n}\r\n<\/style>\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>Calculadora ganancias patrimoniales Renta Calcula el IRPF aproximado por ventas de acciones, fondos, criptomonedas, inmuebles y otros activos. Puedes combinar [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":1713,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-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":""},"tramite":[127],"class_list":["post-62722","page","type-page","status-publish","hentry","tramite-servicios-de-gestoria-en-espana"],"_links":{"self":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/pages\/62722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/comments?post=62722"}],"version-history":[{"count":12,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/pages\/62722\/revisions"}],"predecessor-version":[{"id":63922,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/pages\/62722\/revisions\/63922"}],"up":[{"embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/pages\/1713"}],"wp:attachment":[{"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/media?parent=62722"}],"wp:term":[{"taxonomy":"tramite","embeddable":true,"href":"https:\/\/muaytax.com\/es\/wp-json\/wp\/v2\/tramite?post=62722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}