{"id":5922,"date":"2024-03-12T21:22:06","date_gmt":"2024-03-13T02:22:06","guid":{"rendered":"https:\/\/inversionesguru.com\/co\/?post_type=herramientas&#038;p=5922"},"modified":"2026-05-31T15:44:42","modified_gmt":"2026-05-31T20:44:42","slug":"simulador-de-tarjeta-de-credito-colombia","status":"publish","type":"herramientas","link":"https:\/\/inversionesguru.com\/co\/herramientas\/simulador-de-tarjeta-de-credito-colombia\/","title":{"rendered":"Simulador de Cuotas Tarjeta de Cr\u00e9dito en Colombia (2026)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5922\" class=\"elementor elementor-5922\" data-elementor-post-type=\"herramientas\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce735ba e-flex e-con-boxed e-con e-parent\" data-id=\"ce735ba\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5774a1b elementor-widget elementor-widget-html\" data-id=\"5774a1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n  Simulador de Tarjetas de Cr\u00e9dito Colombia \u2014 InversionesGuru\n  Versi\u00f3n IG Redesign\n  - Sin Tailwind CDN ni dependencias visuales globales\n  - CSS encapsulado bajo #ig-credit-card-simulator\n  - Tasa de usura parametrizada por mes de referencia\n  - Conversi\u00f3n E.A. <-> E.M.\n  - Amortizaci\u00f3n por capital fijo y cuota fija francesa\n  - Primera cuota con inter\u00e9s prorrateado al corte\n  - Modo compra a 1 cuota sin intereses para compras ordinarias\n  - PDF con sello IG, URL visible y marca de agua\n  - Fallback de impresi\u00f3n si jsPDF no carga\n-->\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n\n<style>\n  #ig-credit-card-simulator {\n    --ig-ink: #17332f;\n    --ig-ink-2: #24443e;\n    --ig-muted: #5b6f68;\n    --ig-muted-2: #789088;\n    --ig-bg-a: #effbf6;\n    --ig-bg-b: #fff3ec;\n    --ig-panel: #ffffff;\n    --ig-panel-soft: rgba(255, 255, 255, 0.88);\n    --ig-line: rgba(23, 51, 47, 0.14);\n    --ig-line-strong: rgba(23, 51, 47, 0.26);\n    --ig-accent: #0f9f7a;\n    --ig-accent-dark: #08755d;\n    --ig-coral: #ef6a4a;\n    --ig-coral-dark: #c84f34;\n    --ig-green-soft: #dff8ed;\n    --ig-coral-soft: #ffe2d7;\n    --ig-warn-soft: #fff2d7;\n    --ig-warn: #b97809;\n    --ig-danger-soft: #ffe4df;\n    --ig-danger: #b42318;\n    --ig-shadow: 0 22px 54px rgba(23, 51, 47, 0.12);\n    --ig-shadow-soft: 0 12px 30px rgba(23, 51, 47, 0.08);\n    --ig-radius: 8px;\n    display: block;\n    width: 100%;\n    overflow: hidden;\n    color: var(--ig-ink);\n    background:\n      linear-gradient(90deg, rgba(15, 159, 122, 0.06) 1px, transparent 1px),\n      linear-gradient(180deg, rgba(23, 51, 47, 0.045) 1px, transparent 1px),\n      var(--ig-bg-a);\n    background-size: 56px 56px, 56px 56px, auto;\n    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    line-height: 1.5;\n    -webkit-font-smoothing: antialiased;\n    text-rendering: optimizeLegibility;\n    padding: 28px 0;\n  }\n\n  #ig-credit-card-simulator *,\n  #ig-credit-card-simulator *::before,\n  #ig-credit-card-simulator *::after {\n    box-sizing: border-box;\n  }\n\n  #ig-credit-card-simulator :where(h1, h2, h3, p, ul, li, figure, blockquote) {\n    margin: 0;\n    padding: 0;\n  }\n\n  #ig-credit-card-simulator :where(button, input, select, textarea) {\n    font: inherit;\n  }\n\n  #ig-credit-card-simulator :where(h1, h2, h3, p, a, strong, span, label, th, td) {\n    overflow-wrap: break-word;\n  }\n\n  #ig-credit-card-simulator .ig-wrap {\n    width: min(1160px, calc(100% - 28px));\n    max-width: 100%;\n    margin: 0 auto;\n  }\n\n  #ig-credit-card-simulator .ig-tool-ribbon {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 16px;\n    align-items: center;\n    margin-bottom: 16px;\n    padding: 16px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.84);\n    box-shadow: var(--ig-shadow-soft);\n  }\n\n  #ig-credit-card-simulator .ig-tool-kicker,\n  #ig-credit-card-simulator .ig-tool-status {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    color: var(--ig-accent-dark);\n    font-size: 12px;\n    font-weight: 850;\n  }\n\n  #ig-credit-card-simulator .ig-tool-ribbon strong {\n    display: block;\n    margin-top: 4px;\n    color: var(--ig-ink);\n    font-size: 15px;\n    line-height: 1.3;\n    font-weight: 900;\n  }\n\n  #ig-credit-card-simulator .ig-tool-ribbon p {\n    margin-top: 4px;\n    color: var(--ig-muted);\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  #ig-credit-card-simulator .ig-tool-dot {\n    width: 9px;\n    height: 9px;\n    border-radius: 999px;\n    background: var(--ig-accent);\n    box-shadow: 0 0 0 5px rgba(15, 159, 122, 0.14);\n  }\n\n  #ig-credit-card-simulator .ig-hero {\n    position: relative;\n    overflow: hidden;\n    display: grid;\n    grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.75fr);\n    gap: 22px;\n    align-items: stretch;\n    margin-bottom: 18px;\n    padding: 24px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background:\n      radial-gradient(circle at 9% 12%, rgba(239, 106, 74, 0.12), transparent 32%),\n      linear-gradient(135deg, rgba(255, 255, 255, 0.94), rgba(255, 255, 255, 0.78));\n    box-shadow: var(--ig-shadow);\n  }\n\n  #ig-credit-card-simulator .ig-hero::after {\n    content: \"\";\n    position: absolute;\n    right: -72px;\n    top: -72px;\n    width: 220px;\n    height: 220px;\n    border-radius: 999px;\n    background: rgba(15, 159, 122, 0.10);\n    pointer-events: none;\n  }\n\n  #ig-credit-card-simulator .ig-hero-copy,\n  #ig-credit-card-simulator .ig-hero-panel {\n    position: relative;\n    z-index: 1;\n    min-width: 0;\n  }\n\n  #ig-credit-card-simulator .ig-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    width: fit-content;\n    min-height: 32px;\n    padding: 6px 10px;\n    border: 1px solid rgba(15, 159, 122, 0.24);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.74);\n    color: var(--ig-accent-dark);\n    font-size: 12px;\n    font-weight: 850;\n  }\n\n  #ig-credit-card-simulator h1 {\n    max-width: 760px;\n    margin-top: 14px;\n    color: var(--ig-ink);\n    font-size: 42px;\n    line-height: 1.06;\n    font-weight: 930;\n    letter-spacing: -0.02em;\n  }\n\n  #ig-credit-card-simulator h1 span {\n    color: var(--ig-coral-dark);\n  }\n\n  #ig-credit-card-simulator .ig-hero-text {\n    max-width: 720px;\n    margin-top: 14px;\n    color: var(--ig-muted);\n    font-size: 16px;\n    line-height: 1.72;\n  }\n\n  #ig-credit-card-simulator .ig-hero-pills {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 18px;\n  }\n\n  #ig-credit-card-simulator .ig-pill {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    min-height: 34px;\n    padding: 7px 10px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.76);\n    color: var(--ig-ink-2);\n    font-size: 12px;\n    font-weight: 780;\n  }\n\n  #ig-credit-card-simulator .ig-hero-panel {\n    display: grid;\n    gap: 12px;\n    align-content: center;\n    padding: 18px;\n    border: 1px dashed rgba(15, 159, 122, 0.24);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.76);\n  }\n\n  #ig-credit-card-simulator .ig-usury-card {\n    display: grid;\n    gap: 8px;\n    padding: 16px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: var(--ig-ink);\n    color: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-usury-card small {\n    color: rgba(255, 255, 255, 0.72);\n    font-size: 12px;\n    font-weight: 780;\n  }\n\n  #ig-credit-card-simulator .ig-usury-card strong {\n    color: #ffffff;\n    font-size: 34px;\n    line-height: 1;\n    font-weight: 930;\n  }\n\n  #ig-credit-card-simulator .ig-usury-card span {\n    color: rgba(255, 255, 255, 0.74);\n    font-size: 12px;\n    line-height: 1.45;\n  }\n\n  #ig-credit-card-simulator .ig-flow {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 8px;\n  }\n\n  #ig-credit-card-simulator .ig-flow-item {\n    min-height: 72px;\n    padding: 10px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.74);\n  }\n\n  #ig-credit-card-simulator .ig-flow-item strong {\n    display: block;\n    color: var(--ig-ink);\n    font-size: 12px;\n    font-weight: 900;\n  }\n\n  #ig-credit-card-simulator .ig-flow-item span {\n    display: block;\n    margin-top: 3px;\n    color: var(--ig-muted);\n    font-size: 11px;\n    line-height: 1.3;\n  }\n\n  #ig-credit-card-simulator .ig-card {\n    min-width: 0;\n    margin-bottom: 18px;\n    padding: 22px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.92);\n    box-shadow: var(--ig-shadow-soft);\n  }\n\n  #ig-credit-card-simulator .ig-card-head {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 16px;\n    align-items: end;\n    margin-bottom: 18px;\n  }\n\n  #ig-credit-card-simulator h2 {\n    color: var(--ig-ink);\n    font-size: 24px;\n    line-height: 1.16;\n    font-weight: 900;\n    letter-spacing: -0.015em;\n  }\n\n  #ig-credit-card-simulator h3 {\n    color: var(--ig-ink);\n    font-size: 18px;\n    line-height: 1.2;\n    font-weight: 900;\n  }\n\n  #ig-credit-card-simulator .ig-card-copy {\n    margin-top: 6px;\n    color: var(--ig-muted);\n    font-size: 13px;\n    line-height: 1.62;\n  }\n\n  #ig-credit-card-simulator .ig-progress {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 8px;\n    margin-bottom: 18px;\n  }\n\n  #ig-credit-card-simulator .ig-progress-step {\n    min-height: 58px;\n    padding: 10px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: rgba(255, 255, 255, 0.72);\n    color: var(--ig-muted);\n    font-size: 12px;\n    font-weight: 780;\n    transition: border-color 180ms ease, background-color 180ms ease, transform 180ms ease;\n  }\n\n  #ig-credit-card-simulator .ig-progress-step.is-active {\n    border-color: rgba(15, 159, 122, 0.35);\n    background: var(--ig-green-soft);\n    color: var(--ig-accent-dark);\n    transform: translateY(-2px);\n  }\n\n  #ig-credit-card-simulator .ig-form-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 16px;\n  }\n\n  #ig-credit-card-simulator .ig-form-grid.is-three {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n  }\n\n  #ig-credit-card-simulator .ig-field {\n    min-width: 0;\n  }\n\n  #ig-credit-card-simulator label.ig-label {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n    margin-bottom: 8px;\n    color: var(--ig-ink-2);\n    font-size: 14px;\n    font-weight: 850;\n  }\n\n  #ig-credit-card-simulator .ig-help {\n    margin-top: 7px;\n    color: var(--ig-muted);\n    font-size: 12px;\n    line-height: 1.5;\n  }\n\n  #ig-credit-card-simulator input,\n  #ig-credit-card-simulator select {\n    width: 100%;\n    min-height: 50px;\n    padding: 12px 13px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    outline: 0;\n    background: #ffffff;\n    color: var(--ig-ink);\n    font-size: 15px;\n    transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;\n  }\n\n  #ig-credit-card-simulator input:focus,\n  #ig-credit-card-simulator select:focus {\n    border-color: var(--ig-accent);\n    box-shadow: 0 0 0 4px rgba(15, 159, 122, 0.14);\n  }\n\n  #ig-credit-card-simulator input[type=\"range\"] {\n    min-height: 8px;\n    height: 8px;\n    padding: 0;\n    border: 0;\n    border-radius: 999px;\n    appearance: none;\n    background: linear-gradient(90deg, var(--ig-accent) var(--ig-progress-value, 20%), rgba(23, 51, 47, 0.12) var(--ig-progress-value, 20%));\n  }\n\n  #ig-credit-card-simulator input[type=\"range\"]::-webkit-slider-thumb {\n    width: 22px;\n    height: 22px;\n    appearance: none;\n    border: 3px solid #ffffff;\n    border-radius: 999px;\n    background: var(--ig-accent);\n    box-shadow: 0 8px 18px rgba(23, 51, 47, 0.22);\n    cursor: pointer;\n  }\n\n  #ig-credit-card-simulator input[type=\"range\"]::-moz-range-thumb {\n    width: 18px;\n    height: 18px;\n    border: 3px solid #ffffff;\n    border-radius: 999px;\n    background: var(--ig-accent);\n    box-shadow: 0 8px 18px rgba(23, 51, 47, 0.22);\n    cursor: pointer;\n  }\n\n  #ig-credit-card-simulator .ig-option-grid {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 12px;\n  }\n\n  #ig-credit-card-simulator .ig-option-grid.is-two {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n\n  #ig-credit-card-simulator .ig-option {\n    position: relative;\n    display: block;\n    width: 100%;\n    min-width: 0;\n    cursor: pointer;\n  }\n\n  #ig-credit-card-simulator .ig-option input[type=\"radio\"] {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    min-height: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n    opacity: 0 !important;\n    overflow: hidden !important;\n    clip: rect(0 0 0 0) !important;\n    clip-path: inset(50%) !important;\n    appearance: none !important;\n    pointer-events: none !important;\n  }\n\n  #ig-credit-card-simulator .ig-option-body {\n    position: relative;\n    display: block;\n    width: 100%;\n    min-height: 96px;\n    padding: 15px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: #ffffff;\n    transition: border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;\n  }\n\n  #ig-credit-card-simulator .ig-option:hover .ig-option-body {\n    transform: translateY(-2px);\n    border-color: rgba(15, 159, 122, 0.35);\n    box-shadow: var(--ig-shadow-soft);\n  }\n\n  #ig-credit-card-simulator .ig-option input:checked + .ig-option-body {\n    border-color: rgba(15, 159, 122, 0.46);\n    background: var(--ig-green-soft);\n    box-shadow: 0 12px 24px rgba(15, 159, 122, 0.12);\n  }\n\n  #ig-credit-card-simulator .ig-option input:focus-visible + .ig-option-body {\n    border-color: var(--ig-accent);\n    box-shadow: 0 0 0 4px rgba(15, 159, 122, 0.14);\n  }\n\n  #ig-credit-card-simulator .ig-option-title {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    color: var(--ig-ink);\n    font-size: 14px;\n    font-weight: 900;\n  }\n\n  #ig-credit-card-simulator .ig-option-body p {\n    margin-top: 8px;\n    color: var(--ig-muted);\n    font-size: 12px;\n    line-height: 1.45;\n  }\n\n  #ig-credit-card-simulator .ig-rate-toolbar {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 8px;\n  }\n\n  #ig-credit-card-simulator .ig-chip-button,\n  #ig-credit-card-simulator .ig-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    min-height: 48px;\n    padding: 11px 15px;\n    border: 1px solid transparent;\n    border-radius: var(--ig-radius);\n    cursor: pointer;\n    text-decoration: none;\n    font-size: 14px;\n    font-weight: 850;\n    transition: transform 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, color 180ms ease;\n  }\n\n  #ig-credit-card-simulator .ig-chip-button {\n    border-color: var(--ig-line);\n    background: #ffffff;\n    color: var(--ig-ink);\n  }\n\n  #ig-credit-card-simulator .ig-chip-button.is-active {\n    background: var(--ig-ink);\n    color: #ffffff;\n    border-color: var(--ig-ink);\n  }\n\n  #ig-credit-card-simulator .ig-btn:hover,\n  #ig-credit-card-simulator .ig-chip-button:hover {\n    transform: translateY(-2px);\n  }\n\n  #ig-credit-card-simulator .ig-btn-primary {\n    background: var(--ig-ink);\n    color: #ffffff;\n    box-shadow: 0 14px 24px rgba(23, 51, 47, 0.18);\n  }\n\n  #ig-credit-card-simulator .ig-btn-primary:hover {\n    background: var(--ig-accent-dark);\n  }\n\n  #ig-credit-card-simulator .ig-btn-secondary {\n    background: #ffffff;\n    color: var(--ig-ink);\n    border-color: var(--ig-line);\n  }\n\n  #ig-credit-card-simulator .ig-btn-secondary:hover {\n    border-color: var(--ig-line-strong);\n    background: var(--ig-bg-a);\n  }\n\n  #ig-credit-card-simulator .ig-btn-coral {\n    background: var(--ig-coral);\n    color: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-btn-coral:hover {\n    background: var(--ig-coral-dark);\n  }\n\n  #ig-credit-card-simulator .ig-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 18px;\n  }\n\n  #ig-credit-card-simulator .ig-message {\n    display: none;\n    align-items: flex-start;\n    gap: 10px;\n    margin-top: 16px;\n    padding: 14px;\n    border-radius: var(--ig-radius);\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  #ig-credit-card-simulator .ig-message.is-visible {\n    display: flex;\n    animation: ig-rise 260ms ease both;\n  }\n\n  #ig-credit-card-simulator .ig-message.is-warning {\n    border: 1px solid rgba(185, 120, 9, 0.25);\n    background: var(--ig-warn-soft);\n    color: #7a4e00;\n  }\n\n  #ig-credit-card-simulator .ig-message.is-error {\n    border: 1px solid rgba(180, 35, 24, 0.20);\n    background: var(--ig-danger-soft);\n    color: var(--ig-danger);\n  }\n\n  #ig-credit-card-simulator .ig-message strong {\n    font-weight: 900;\n  }\n\n  #ig-credit-card-simulator .ig-inline-note {\n    display: grid;\n    grid-template-columns: auto minmax(0, 1fr);\n    gap: 10px;\n    align-items: start;\n    margin-top: 12px;\n    padding: 12px;\n    border: 1px solid rgba(15, 159, 122, 0.20);\n    border-left: 4px solid var(--ig-accent);\n    border-radius: var(--ig-radius);\n    background: var(--ig-bg-a);\n    color: var(--ig-ink-2);\n    font-size: 12px;\n    line-height: 1.55;\n  }\n\n  #ig-credit-card-simulator .ig-rate-preview {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 10px;\n    margin-top: 12px;\n  }\n\n  #ig-credit-card-simulator .ig-mini-kpi {\n    min-width: 0;\n    padding: 12px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-mini-kpi span {\n    color: var(--ig-muted);\n    font-size: 11px;\n    font-weight: 780;\n  }\n\n  #ig-credit-card-simulator .ig-mini-kpi strong {\n    display: block;\n    margin-top: 4px;\n    color: var(--ig-ink);\n    font-size: 17px;\n    line-height: 1.1;\n    font-weight: 930;\n  }\n\n  #ig-credit-card-simulator .ig-results {\n    display: none;\n    animation: ig-rise 360ms ease both;\n  }\n\n  #ig-credit-card-simulator .ig-results.is-visible {\n    display: block;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-grid {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 12px;\n    margin-bottom: 16px;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-card {\n    min-width: 0;\n    padding: 16px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: #ffffff;\n    box-shadow: var(--ig-shadow-soft);\n  }\n\n  #ig-credit-card-simulator .ig-kpi-card.is-final {\n    background: var(--ig-ink);\n    color: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-card.is-final * {\n    color: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-card.is-coral {\n    border-left: 4px solid var(--ig-coral);\n  }\n\n  #ig-credit-card-simulator .ig-kpi-card.is-green {\n    border-left: 4px solid var(--ig-accent);\n  }\n\n  #ig-credit-card-simulator .ig-kpi-label {\n    display: block;\n    color: var(--ig-muted);\n    font-size: 11px;\n    font-weight: 850;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-value {\n    display: block;\n    margin-top: 8px;\n    color: var(--ig-ink);\n    font-size: 23px;\n    line-height: 1.05;\n    font-weight: 930;\n    font-variant-numeric: tabular-nums;\n  }\n\n  #ig-credit-card-simulator .ig-kpi-sub {\n    display: block;\n    margin-top: 7px;\n    color: var(--ig-muted);\n    font-size: 11px;\n    line-height: 1.35;\n  }\n\n  #ig-credit-card-simulator .ig-compare-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 12px;\n    margin-bottom: 18px;\n  }\n\n  #ig-credit-card-simulator .ig-compare-card {\n    padding: 16px;\n    border: 1px solid var(--ig-line);\n    border-radius: var(--ig-radius);\n    background: #ffffff;\n  }\n\n  #ig-credit-card-simulator .ig-compare-card.is-selected {\n    border-color: rgba(15, 159, 122, 0.42);\n    background: var(--ig-green-soft);\n  }\n\n  #ig-credit-card-simulator .ig-compare-card h3 {\n    font-size: 15px;\n  }\n\n  #ig-credit-card-simulator .ig-compare-row {\n    display: flex;\n    justify-content: space-between;\n    gap: 12px;\n    margin-top: 10px;\n    color: var(--ig-muted);\n    font-size: 12px;\n  }\n\n  #ig-credit-card-simulator .ig-compare-row strong {\n    color: var(--ig-ink);\n    font-weight: 900;\n    text-align: right;\n  }\n\n  #ig-credit-card-simulator .ig-table-card {\n    padding: 0;\n    overflow: hidden;\n  }\n\n  #ig-credit-card-simulator .ig-table-head {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 12px;\n    align-items: center;\n    padding: 18px;\n    border-bottom: 1px solid var(--ig-line);\n  }\n\n  #ig-credit-card-simulator .ig-table-wrap {\n    width: 100%;\n    overflow-x: auto;\n    background: #ffffff;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  #ig-credit-card-simulator table {\n    width: 100%;\n    min-width: 760px;\n    border-collapse: collapse;\n    font-variant-numeric: tabular-nums;\n  }\n\n  #ig-credit-card-simulator th {\n    padding: 12px 12px;\n    background: var(--ig-ink);\n    color: #ffffff;\n    font-size: 11px;\n    line-height: 1.3;\n    font-weight: 850;\n    text-align: left;\n    white-space: nowrap;\n  }\n\n  #ig-credit-card-simulator td {\n    padding: 11px 12px;\n    border-bottom: 1px solid var(--ig-line);\n    color: var(--ig-ink-2);\n    font-size: 13px;\n    vertical-align: middle;\n  }\n\n  #ig-credit-card-simulator tbody tr:nth-child(even) {\n    background: rgba(239, 251, 246, 0.65);\n  }\n\n  #ig-credit-card-simulator tbody tr:first-child {\n    background: var(--ig-coral-soft);\n  }\n\n  #ig-credit-card-simulator .ig-amount {\n    text-align: right;\n    font-weight: 850;\n    white-space: nowrap;\n  }\n\n  #ig-credit-card-simulator .ig-badge {\n    display: inline-flex;\n    align-items: center;\n    min-height: 26px;\n    padding: 4px 8px;\n    border-radius: var(--ig-radius);\n    background: var(--ig-green-soft);\n    color: var(--ig-accent-dark);\n    font-size: 11px;\n    font-weight: 850;\n    white-space: nowrap;\n  }\n\n  #ig-credit-card-simulator .ig-pdf-actions {\n    display: none;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    margin-top: 16px;\n    padding: 14px;\n    border: 1px solid rgba(239, 106, 74, 0.22);\n    border-radius: var(--ig-radius);\n    background: var(--ig-bg-b);\n  }\n\n  #ig-credit-card-simulator .ig-pdf-actions.is-visible {\n    display: flex;\n  }\n\n  #ig-credit-card-simulator .ig-pdf-status {\n    color: var(--ig-muted);\n    font-size: 12px;\n    font-weight: 750;\n  }\n\n  #ig-credit-card-simulator .ig-fineprint {\n    color: var(--ig-muted);\n    font-size: 12px;\n    line-height: 1.6;\n    text-align: center;\n  }\n\n  #ig-credit-card-simulator .ig-footer {\n    margin-top: 18px;\n    padding: 18px;\n    border-top: 1px solid var(--ig-line);\n    color: var(--ig-muted);\n    font-size: 12px;\n    line-height: 1.6;\n    text-align: center;\n  }\n\n  #ig-credit-card-simulator .ig-print-area {\n    display: none;\n  }\n\n  #ig-credit-card-simulator .hidden {\n    display: none !important;\n  }\n\n  @keyframes ig-rise {\n    from { opacity: 0; transform: translateY(12px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #ig-credit-card-simulator *,\n    #ig-credit-card-simulator *::before,\n    #ig-credit-card-simulator *::after {\n      animation-duration: 1ms !important;\n      transition-duration: 1ms !important;\n      scroll-behavior: auto !important;\n    }\n  }\n\n  @media (max-width: 980px) {\n    #ig-credit-card-simulator .ig-hero,\n    #ig-credit-card-simulator .ig-form-grid,\n    #ig-credit-card-simulator .ig-form-grid.is-three,\n    #ig-credit-card-simulator .ig-kpi-grid {\n      grid-template-columns: 1fr;\n    }\n\n    #ig-credit-card-simulator .ig-rate-preview,\n    #ig-credit-card-simulator .ig-option-grid,\n    #ig-credit-card-simulator .ig-option-grid.is-two {\n      grid-template-columns: 1fr;\n    }\n\n    #ig-credit-card-simulator h1 {\n      font-size: 34px;\n    }\n  }\n\n  @media (max-width: 720px) {\n    #ig-credit-card-simulator {\n      padding: 14px 0;\n    }\n\n    #ig-credit-card-simulator .ig-wrap {\n      width: min(100% - 18px, 1160px);\n    }\n\n    #ig-credit-card-simulator .ig-tool-ribbon,\n    #ig-credit-card-simulator .ig-card-head,\n    #ig-credit-card-simulator .ig-table-head {\n      grid-template-columns: 1fr;\n      align-items: start;\n    }\n\n    #ig-credit-card-simulator .ig-hero,\n    #ig-credit-card-simulator .ig-card {\n      padding: 18px;\n    }\n\n    #ig-credit-card-simulator h1 {\n      font-size: 30px;\n    }\n\n    #ig-credit-card-simulator h2 {\n      font-size: 22px;\n    }\n\n    #ig-credit-card-simulator .ig-flow,\n    #ig-credit-card-simulator .ig-progress,\n    #ig-credit-card-simulator .ig-compare-grid {\n      grid-template-columns: 1fr;\n    }\n\n    #ig-credit-card-simulator .ig-actions,\n    #ig-credit-card-simulator .ig-pdf-actions {\n      align-items: stretch;\n      flex-direction: column;\n    }\n\n    #ig-credit-card-simulator .ig-btn,\n    #ig-credit-card-simulator .ig-chip-button {\n      width: 100%;\n    }\n\n    #ig-credit-card-simulator .ig-kpi-value {\n      font-size: 21px;\n    }\n\n    #ig-credit-card-simulator table,\n    #ig-credit-card-simulator thead,\n    #ig-credit-card-simulator tbody,\n    #ig-credit-card-simulator th,\n    #ig-credit-card-simulator td,\n    #ig-credit-card-simulator tr {\n      display: block;\n      min-width: 0;\n      width: 100%;\n    }\n\n    #ig-credit-card-simulator thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      overflow: hidden;\n      clip: rect(0 0 0 0);\n    }\n\n    #ig-credit-card-simulator tbody tr {\n      margin: 12px;\n      border: 1px solid var(--ig-line);\n      border-radius: var(--ig-radius);\n      background: #ffffff !important;\n      overflow: hidden;\n      box-shadow: 0 10px 22px rgba(23, 51, 47, 0.06);\n    }\n\n    #ig-credit-card-simulator tbody tr:first-child {\n      border-color: rgba(239, 106, 74, 0.30);\n      background: var(--ig-coral-soft) !important;\n    }\n\n    #ig-credit-card-simulator td {\n      display: grid;\n      grid-template-columns: minmax(110px, 0.88fr) minmax(0, 1.12fr);\n      gap: 10px;\n      align-items: center;\n      padding: 10px 12px;\n      border-bottom: 1px solid var(--ig-line);\n      font-size: 13px;\n    }\n\n    #ig-credit-card-simulator td::before {\n      content: attr(data-label);\n      color: var(--ig-muted);\n      font-size: 11px;\n      font-weight: 850;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n    }\n\n    #ig-credit-card-simulator .ig-amount {\n      text-align: left;\n      white-space: normal;\n    }\n  }\n\n  @media print {\n    body * {\n      visibility: hidden !important;\n    }\n\n    #ig-credit-card-print,\n    #ig-credit-card-print * {\n      visibility: visible !important;\n    }\n\n    #ig-credit-card-print {\n      display: block !important;\n      position: absolute !important;\n      left: 0 !important;\n      top: 0 !important;\n      width: 100% !important;\n      padding: 22px !important;\n      color: #17332f !important;\n      font-family: Inter, Arial, sans-serif !important;\n    }\n\n    #ig-credit-card-print table {\n      width: 100% !important;\n      border-collapse: collapse !important;\n    }\n\n    #ig-credit-card-print th,\n    #ig-credit-card-print td {\n      border: 1px solid #d7e4df !important;\n      padding: 7px !important;\n      font-size: 10px !important;\n      text-align: left !important;\n    }\n\n    #ig-credit-card-print th {\n      background: #17332f !important;\n      color: #fff !important;\n    }\n  }\n<\/style>\n\n<div id=\"ig-credit-card-simulator\">\n  <div class=\"ig-wrap\">\n    <div class=\"ig-tool-ribbon\" aria-label=\"Herramienta financiera InversionesGuru\">\n      <div>\n        <span class=\"ig-tool-kicker\">\u2726 Herramienta financiera<\/span>\n        <strong>Simulador de Tarjetas de Cr\u00e9dito Colombia<\/strong>\n        <p>Calcula cuotas, intereses, costo total y compara m\u00e9todos de amortizaci\u00f3n antes de diferir una compra, avance o compra de cartera.<\/p>\n      <\/div>\n      <span class=\"ig-tool-status\"><span class=\"ig-tool-dot\"><\/span> PDF disponible despu\u00e9s del c\u00e1lculo<\/span>\n    <\/div>\n\n    <section class=\"ig-hero\">\n      <div class=\"ig-hero-copy\">\n        <span class=\"ig-eyebrow\">\ud83d\udcb3 Cr\u00e9dito de consumo<\/span>\n        <h1>Simula el costo real de usar tu <span>tarjeta de cr\u00e9dito.<\/span><\/h1>\n        <p class=\"ig-hero-text\">Convierte una compra en cuotas, valida la tasa frente al l\u00edmite de usura y entiende cu\u00e1nto pagas en capital, intereses, comisiones y costo total.<\/p>\n        <div class=\"ig-hero-pills\">\n          <span class=\"ig-pill\">E.A. \u2194 E.M.<\/span>\n          <span class=\"ig-pill\">Corte y primera cuota<\/span>\n          <span class=\"ig-pill\">Capital fijo vs cuota fija<\/span>\n          <span class=\"ig-pill\">PDF con marca IG<\/span>\n        <\/div>\n      <\/div>\n      <aside class=\"ig-hero-panel\" aria-label=\"Tasa de usura de referencia\">\n        <div class=\"ig-usury-card\">\n          <small>Tasa m\u00e1xima de referencia<\/small>\n          <strong id=\"ig-usury-current\">28,17%<\/strong>\n          <span id=\"ig-usury-current-label\">Cr\u00e9dito de consumo y ordinario \u00b7 Mayo 2026<\/span>\n        <\/div>\n        <div class=\"ig-flow\" aria-label=\"Ruta de uso\">\n          <div class=\"ig-flow-item\"><strong>1. Monto<\/strong><span>Compra, avance o cartera.<\/span><\/div>\n          <div class=\"ig-flow-item\"><strong>2. Tasa<\/strong><span>Compara contra usura.<\/span><\/div>\n          <div class=\"ig-flow-item\"><strong>3. Plan<\/strong><span>Cuotas y costo total.<\/span><\/div>\n        <\/div>\n      <\/aside>\n    <\/section>\n\n    <div class=\"ig-progress\" aria-label=\"Ruta del simulador\">\n      <span class=\"ig-progress-step is-active\" data-progress-step=\"1\">01 \u00b7 Transacci\u00f3n<\/span>\n      <span class=\"ig-progress-step\" data-progress-step=\"2\">02 \u00b7 Tasa<\/span>\n      <span class=\"ig-progress-step\" data-progress-step=\"3\">03 \u00b7 Cuotas<\/span>\n      <span class=\"ig-progress-step\" data-progress-step=\"4\">04 \u00b7 Resultado<\/span>\n    <\/div>\n\n    <form id=\"ig-cc-form\" novalidate>\n      <section class=\"ig-card\" data-section=\"transaction\">\n        <div class=\"ig-card-head\">\n          <div>\n            <h2>1. Define la transacci\u00f3n<\/h2>\n            <p class=\"ig-card-copy\">La base financiada puede incluir comisiones de avance, estudio, seguro u otros costos cobrados por tu entidad.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-option-grid\" role=\"radiogroup\" aria-label=\"Tipo de transacci\u00f3n\">\n          <label class=\"ig-option\">\n            <input type=\"radio\" name=\"transactionType\" value=\"purchase\" checked>\n            <span class=\"ig-option-body\">\n              <span class=\"ig-option-title\">\ud83d\uded2 Compra<\/span>\n              <p>Compra nacional o internacional diferida a cuotas.<\/p>\n            <\/span>\n          <\/label>\n          <label class=\"ig-option\">\n            <input type=\"radio\" name=\"transactionType\" value=\"advance\">\n            <span class=\"ig-option-body\">\n              <span class=\"ig-option-title\">\ud83c\udfe7 Avance<\/span>\n              <p>Incluye comisi\u00f3n opcional y suele generar intereses desde la operaci\u00f3n.<\/p>\n            <\/span>\n          <\/label>\n          <label class=\"ig-option\">\n            <input type=\"radio\" name=\"transactionType\" value=\"portfolio\">\n            <span class=\"ig-option-body\">\n              <span class=\"ig-option-title\">\ud83d\udd01 Compra de cartera<\/span>\n              <p>Traslado de deuda desde otra entidad o tarjeta.<\/p>\n            <\/span>\n          <\/label>\n        <\/div>\n\n        <div class=\"ig-form-grid\" style=\"margin-top:16px;\">\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-cc-amount\">Valor de la transacci\u00f3n<\/label>\n            <input id=\"ig-cc-amount\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"Ej: 2.500.000\">\n            <p class=\"ig-help\">Acepta 2500000, 2.500.000, $2.500.000, 2,500,000 o decimales.<\/p>\n          <\/div>\n          <div class=\"ig-field\" id=\"ig-extra-fee-field\">\n            <label class=\"ig-label\" for=\"ig-cc-fee\" id=\"ig-extra-fee-label\">Costo adicional<\/label>\n            <input id=\"ig-cc-fee\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"Ej: 12.500\">\n            <p class=\"ig-help\" id=\"ig-extra-fee-help\">Opcional. Usa 0 si tu entidad no cobra comisi\u00f3n adicional.<\/p>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"ig-card\" data-section=\"rate\">\n        <div class=\"ig-card-head\">\n          <div>\n            <h2>2. Ingresa la tasa de inter\u00e9s<\/h2>\n            <p class=\"ig-card-copy\">Puedes usar la tasa efectiva anual, la efectiva mensual o cargar autom\u00e1ticamente la tasa m\u00e1xima de usura seg\u00fan la fecha de la transacci\u00f3n.<\/p>\n          <\/div>\n          <button type=\"button\" class=\"ig-btn ig-btn-secondary\" id=\"ig-use-usury-btn\">Usar tasa de usura<\/button>\n        <\/div>\n\n        <div class=\"ig-form-grid\">\n          <div class=\"ig-field\">\n            <label class=\"ig-label\">Tipo de tasa<\/label>\n            <div class=\"ig-rate-toolbar\" role=\"tablist\" aria-label=\"Tipo de tasa\">\n              <button class=\"ig-chip-button is-active\" type=\"button\" data-rate-type=\"EA\" aria-selected=\"true\">E.A. anual<\/button>\n              <button class=\"ig-chip-button\" type=\"button\" data-rate-type=\"EM\" aria-selected=\"false\">E.M. mensual<\/button>\n            <\/div>\n          <\/div>\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-rate-input\">Tasa de inter\u00e9s<\/label>\n            <input id=\"ig-rate-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"Ej: 28,17\">\n            <p class=\"ig-help\">No escribas el signo %. El simulador convierte la tasa y valida contra la usura vigente.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-rate-preview\" aria-live=\"polite\">\n          <div class=\"ig-mini-kpi\"><span>Tasa E.A. usada<\/span><strong id=\"ig-rate-ea-preview\">0,00%<\/strong><\/div>\n          <div class=\"ig-mini-kpi\"><span>Equivalente E.M.<\/span><strong id=\"ig-rate-em-preview\">0,00%<\/strong><\/div>\n          <div class=\"ig-mini-kpi\"><span>Usura referencia<\/span><strong id=\"ig-rate-usury-preview\">28,17%<\/strong><\/div>\n        <\/div>\n\n        <div class=\"ig-inline-note\">\n          <span>\u24d8<\/span>\n          <span id=\"ig-rate-note\">La tasa de usura se selecciona seg\u00fan la fecha de la transacci\u00f3n. Si la fecha cae en junio de 2026, el simulador aplica la referencia de junio.<\/span>\n        <\/div>\n      <\/section>\n\n      <section class=\"ig-card\" data-section=\"plan\">\n        <div class=\"ig-card-head\">\n          <div>\n            <h2>3. Ajusta cuotas, corte y m\u00e9todo<\/h2>\n            <p class=\"ig-card-copy\">La primera cuota puede variar porque se calcula con los d\u00edas entre la transacci\u00f3n y el corte estimado.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-form-grid is-three\">\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-installments-range\">N\u00famero de cuotas<\/label>\n            <input id=\"ig-installments-range\" type=\"range\" min=\"1\" max=\"60\" value=\"12\">\n            <input id=\"ig-installments-number\" type=\"number\" min=\"1\" max=\"60\" value=\"12\" style=\"margin-top:10px;\">\n            <p class=\"ig-help\">Entre 1 y 60 cuotas.<\/p>\n          <\/div>\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-purchase-date\">Fecha de la transacci\u00f3n<\/label>\n            <input id=\"ig-purchase-date\" type=\"date\">\n            <p class=\"ig-help\">Tambi\u00e9n define qu\u00e9 tasa de usura se toma como referencia.<\/p>\n          <\/div>\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-cutoff-day\">D\u00eda de corte<\/label>\n            <input id=\"ig-cutoff-day\" type=\"number\" min=\"1\" max=\"31\" placeholder=\"Ej: 15\">\n            <p class=\"ig-help\">Si el mes no tiene ese d\u00eda, se usa el \u00faltimo d\u00eda del mes.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-form-grid\" style=\"margin-top:16px;\">\n          <div class=\"ig-field\">\n            <label class=\"ig-label\">M\u00e9todo de amortizaci\u00f3n<\/label>\n            <div class=\"ig-option-grid is-two\" role=\"radiogroup\" aria-label=\"M\u00e9todo de amortizaci\u00f3n\">\n              <label class=\"ig-option\">\n                <input type=\"radio\" name=\"amortization\" value=\"fixedCapital\" checked>\n                <span class=\"ig-option-body\">\n                  <span class=\"ig-option-title\">\ud83d\udcc9 Capital fijo<\/span>\n                  <p>Pagas el mismo capital cada mes. La cuota tiende a bajar.<\/p>\n                <\/span>\n              <\/label>\n              <label class=\"ig-option\">\n                <input type=\"radio\" name=\"amortization\" value=\"fixedPayment\">\n                <span class=\"ig-option-body\">\n                  <span class=\"ig-option-title\">\ud83d\udcca Cuota fija<\/span>\n                  <p>Sistema franc\u00e9s. Cuota m\u00e1s estable, mayor inter\u00e9s al inicio.<\/p>\n                <\/span>\n              <\/label>\n            <\/div>\n          <\/div>\n          <div class=\"ig-field\">\n            <label class=\"ig-label\" for=\"ig-day-base\">Base diaria para primera cuota<\/label>\n            <select id=\"ig-day-base\">\n              <option value=\"365\" selected>365 d\u00edas<\/option>\n              <option value=\"360\">360 d\u00edas<\/option>\n            <\/select>\n            <p class=\"ig-help\">Afecta el prorrateo de inter\u00e9s hasta el corte. Cada entidad puede aplicar reglas propias.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-actions\">\n          <button type=\"submit\" class=\"ig-btn ig-btn-primary\">Calcular plan de pagos<\/button>\n          <button type=\"button\" class=\"ig-btn ig-btn-secondary\" id=\"ig-clear-btn\">Limpiar<\/button>\n        <\/div>\n        <div id=\"ig-message\" class=\"ig-message\" role=\"alert\" aria-live=\"assertive\"><\/div>\n      <\/section>\n    <\/form>\n\n    <section id=\"ig-results\" class=\"ig-results\">\n      <div class=\"ig-card\">\n        <div class=\"ig-card-head\">\n          <div>\n            <h2>4. Resultado de la simulaci\u00f3n<\/h2>\n            <p class=\"ig-card-copy\" id=\"ig-result-context\">Resumen estimado del plan de pagos.<\/p>\n          <\/div>\n          <span class=\"ig-badge\" id=\"ig-result-method-badge\">Capital fijo<\/span>\n        <\/div>\n\n        <div class=\"ig-kpi-grid\">\n          <div class=\"ig-kpi-card is-green\">\n            <span class=\"ig-kpi-label\">Primera cuota<\/span>\n            <strong class=\"ig-kpi-value\" id=\"ig-kpi-first\">$0<\/strong>\n            <span class=\"ig-kpi-sub\" id=\"ig-kpi-first-sub\">Incluye inter\u00e9s al corte.<\/span>\n          <\/div>\n          <div class=\"ig-kpi-card\">\n            <span class=\"ig-kpi-label\">Cuota t\u00edpica<\/span>\n            <strong class=\"ig-kpi-value\" id=\"ig-kpi-typical\">$0<\/strong>\n            <span class=\"ig-kpi-sub\">Referencia desde la segunda cuota.<\/span>\n          <\/div>\n          <div class=\"ig-kpi-card is-coral\">\n            <span class=\"ig-kpi-label\">Intereses totales<\/span>\n            <strong class=\"ig-kpi-value\" id=\"ig-kpi-interest\">$0<\/strong>\n            <span class=\"ig-kpi-sub\" id=\"ig-kpi-interest-sub\">Costo financiero estimado.<\/span>\n          <\/div>\n          <div class=\"ig-kpi-card is-final\">\n            <span class=\"ig-kpi-label\">Pago total<\/span>\n            <strong class=\"ig-kpi-value\" id=\"ig-kpi-total\">$0<\/strong>\n            <span class=\"ig-kpi-sub\">Capital + costos + intereses.<\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"ig-compare-grid\">\n          <article class=\"ig-compare-card\" id=\"ig-compare-fixed-capital\">\n            <h3>Capital fijo<\/h3>\n            <div class=\"ig-compare-row\"><span>Primera cuota<\/span><strong id=\"ig-comp-capital-first\">$0<\/strong><\/div>\n            <div class=\"ig-compare-row\"><span>Inter\u00e9s total<\/span><strong id=\"ig-comp-capital-interest\">$0<\/strong><\/div>\n            <div class=\"ig-compare-row\"><span>Pago total<\/span><strong id=\"ig-comp-capital-total\">$0<\/strong><\/div>\n          <\/article>\n          <article class=\"ig-compare-card\" id=\"ig-compare-fixed-payment\">\n            <h3>Cuota fija<\/h3>\n            <div class=\"ig-compare-row\"><span>Primera cuota<\/span><strong id=\"ig-comp-payment-first\">$0<\/strong><\/div>\n            <div class=\"ig-compare-row\"><span>Inter\u00e9s total<\/span><strong id=\"ig-comp-payment-interest\">$0<\/strong><\/div>\n            <div class=\"ig-compare-row\"><span>Pago total<\/span><strong id=\"ig-comp-payment-total\">$0<\/strong><\/div>\n          <\/article>\n        <\/div>\n\n        <div class=\"ig-inline-note\">\n          <span>\ud83d\udccc<\/span>\n          <span id=\"ig-analysis-note\">El resultado es educativo. Los bancos pueden aplicar seguros, comisiones, redondeos, d\u00edas de gracia, ciclos de facturaci\u00f3n y pol\u00edticas internas.<\/span>\n        <\/div>\n\n        <div class=\"ig-pdf-actions\" id=\"ig-pdf-actions\">\n          <button type=\"button\" class=\"ig-btn ig-btn-coral\" id=\"ig-download-pdf\">Descargar PDF<\/button>\n          <button type=\"button\" class=\"ig-btn ig-btn-secondary\" id=\"ig-print-pdf\">Imprimir \/ guardar PDF<\/button>\n          <button type=\"button\" class=\"ig-btn ig-btn-secondary\" id=\"ig-download-csv\">Descargar CSV<\/button>\n          <button type=\"button\" class=\"ig-btn ig-btn-secondary\" id=\"ig-share-link\">Copiar enlace<\/button>\n          <span class=\"ig-pdf-status\" id=\"ig-pdf-status\">Reporte con sello IG y URL visible.<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"ig-card ig-table-card\">\n        <div class=\"ig-table-head\">\n          <div>\n            <h2>Plan de pagos detallado<\/h2>\n            <p class=\"ig-card-copy\">En m\u00f3vil, cada cuota se muestra como tarjeta para facilitar la lectura.<\/p>\n          <\/div>\n          <span class=\"ig-badge\" id=\"ig-table-count\">0 cuotas<\/span>\n        <\/div>\n        <div class=\"ig-table-wrap\">\n          <table aria-label=\"Plan de pagos\">\n            <thead>\n              <tr>\n                <th>Cuota<\/th>\n                <th>Fecha estimada<\/th>\n                <th>Capital<\/th>\n                <th>Inter\u00e9s<\/th>\n                <th>Pago total<\/th>\n                <th>Saldo final<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ig-schedule-body\"><\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <div class=\"ig-footer\">\n      Simulaci\u00f3n educativa de InversionesGuru. No reemplaza el extracto de tu banco, contrato de tarjeta, tarifas oficiales ni asesor\u00eda financiera. Verifica condiciones, seguros, comisiones y tasa vigente con tu entidad.\n    <\/div>\n\n    <div id=\"ig-credit-card-print\" class=\"ig-print-area\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n  'use strict';\n\n  const root = document.getElementById('ig-credit-card-simulator');\n  if (!root || root.dataset.ready === 'true') return;\n  root.dataset.ready = 'true';\n\n  const SITE_URL = 'https:\/\/inversionesguru.com\/co\/';\n  const PDF_FILE = 'simulador-tarjeta-credito-colombia.pdf';\n\n  const USURY_RATES = [\n    { start: '2026-02-01', end: '2026-02-28', label: 'Febrero 2026', ibcEA: 16.82, usuryEA: 25.23 },\n    { start: '2026-03-01', end: '2026-03-31', label: 'Marzo 2026', ibcEA: 17.01, usuryEA: 25.52 },\n    { start: '2026-04-01', end: '2026-04-30', label: 'Abril 2026', ibcEA: 17.84, usuryEA: 26.76 },\n    { start: '2026-05-01', end: '2026-05-31', label: 'Mayo 2026', ibcEA: 18.78, usuryEA: 28.17 },\n    { start: '2026-06-01', end: '2026-06-30', label: 'Junio 2026', ibcEA: 19.19, usuryEA: 28.79 }\n  ];\n\n  const $ = selector => root.querySelector(selector);\n  const $$ = selector => Array.from(root.querySelectorAll(selector));\n\n  const el = {\n    form: $('#ig-cc-form'),\n    amount: $('#ig-cc-amount'),\n    fee: $('#ig-cc-fee'),\n    feeField: $('#ig-extra-fee-field'),\n    feeLabel: $('#ig-extra-fee-label'),\n    feeHelp: $('#ig-extra-fee-help'),\n    rate: $('#ig-rate-input'),\n    purchaseDate: $('#ig-purchase-date'),\n    cutoffDay: $('#ig-cutoff-day'),\n    installmentsRange: $('#ig-installments-range'),\n    installmentsNumber: $('#ig-installments-number'),\n    dayBase: $('#ig-day-base'),\n    message: $('#ig-message'),\n    clear: $('#ig-clear-btn'),\n    useUsury: $('#ig-use-usury-btn'),\n    results: $('#ig-results'),\n    body: $('#ig-schedule-body'),\n    pdfActions: $('#ig-pdf-actions'),\n    pdfStatus: $('#ig-pdf-status'),\n    downloadPdf: $('#ig-download-pdf'),\n    printPdf: $('#ig-print-pdf'),\n    downloadCsv: $('#ig-download-csv'),\n    shareLink: $('#ig-share-link'),\n    printArea: $('#ig-credit-card-print')\n  };\n\n  let rateType = 'EA';\n  let lastReport = null;\n\n  function iconText(type) {\n    return type === 'error' ? '\u274c' : '\u26a0\ufe0f';\n  }\n\n  function parseMoney(raw) {\n    let value = String(raw || '').trim();\n    if (!value) return 0;\n    value = value.replace(\/\\s\/g, '').replace(\/[$COPcop]\/g, '');\n    const lastDot = value.lastIndexOf('.');\n    const lastComma = value.lastIndexOf(',');\n    let decimalSep = null;\n\n    if (lastDot !== -1 && lastComma !== -1) {\n      decimalSep = lastDot > lastComma ? '.' : ',';\n    } else if (lastDot !== -1) {\n      const decimals = value.length - lastDot - 1;\n      decimalSep = decimals > 0 && decimals <= 2 ? '.' : null;\n    } else if (lastComma !== -1) {\n      const decimals = value.length - lastComma - 1;\n      decimalSep = decimals > 0 && decimals <= 2 ? ',' : null;\n    }\n\n    if (decimalSep) {\n      const parts = value.split(decimalSep);\n      const decimal = parts.pop();\n      const integer = parts.join(decimalSep).replace(\/[^0-9]\/g, '');\n      return Number(integer + '.' + decimal.replace(\/[^0-9]\/g, '')) || 0;\n    }\n\n    return Number(value.replace(\/[^0-9]\/g, '')) || 0;\n  }\n\n  function parseRate(raw) {\n    const value = String(raw || '').replace(\/\\s\/g, '').replace('%', '').replace(',', '.');\n    const num = Number(value);\n    return Number.isFinite(num) ? num : 0;\n  }\n\n  function formatMoney(value, decimals) {\n    return new Intl.NumberFormat('es-CO', {\n      style: 'currency',\n      currency: 'COP',\n      minimumFractionDigits: decimals ? 2 : 0,\n      maximumFractionDigits: decimals ? 2 : 0\n    }).format(Number(value || 0));\n  }\n\n  function formatPlainMoney(value) {\n    const num = Number(value || 0);\n    return num.toLocaleString('es-CO', { maximumFractionDigits: 0 });\n  }\n\n  function formatPercent(value) {\n    return Number(value || 0).toLocaleString('es-CO', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + '%';\n  }\n\n  function liveMoneyFormat(input) {\n    input.addEventListener('input', function () {\n      const value = parseMoney(input.value);\n      if (!value) {\n        input.value = '';\n        return;\n      }\n      input.value = formatPlainMoney(Math.floor(value));\n    });\n  }\n\n  function localDate(value) {\n    if (!value) return new Date();\n    const date = new Date(value + 'T00:00:00');\n    return Number.isNaN(date.getTime()) ? new Date() : date;\n  }\n\n  function isoDate(date) {\n    return date.toISOString().slice(0, 10);\n  }\n\n  function addDays(date, days) {\n    const next = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n    next.setDate(next.getDate() + days);\n    return next;\n  }\n\n  function addMonths(date, months) {\n    const next = new Date(date.getFullYear(), date.getMonth() + months, date.getDate());\n    if (next.getMonth() !== ((date.getMonth() + months) % 12 + 12) % 12) {\n      next.setDate(0);\n    }\n    return next;\n  }\n\n  function formatDate(date) {\n    return new Intl.DateTimeFormat('es-CO', { year: 'numeric', month: 'short', day: '2-digit' }).format(date);\n  }\n\n  function rateForDate(date) {\n    const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n    const found = USURY_RATES.find(item => {\n      const start = localDate(item.start);\n      const end = localDate(item.end);\n      return d >= start && d <= end;\n    });\n    if (found) return found;\n    if (d < localDate(USURY_RATES[0].start)) return USURY_RATES[0];\n    return USURY_RATES[USURY_RATES.length - 1];\n  }\n\n  function eaToEm(eaPercent) {\n    return (Math.pow(1 + eaPercent \/ 100, 1 \/ 12) - 1) * 100;\n  }\n\n  function emToEa(emPercent) {\n    return (Math.pow(1 + emPercent \/ 100, 12) - 1) * 100;\n  }\n\n  function monthlyRateFromEA(eaPercent) {\n    return Math.pow(1 + eaPercent \/ 100, 1 \/ 12) - 1;\n  }\n\n  function dailyRateFromEA(eaPercent, base) {\n    return Math.pow(1 + eaPercent \/ 100, 1 \/ Number(base || 365)) - 1;\n  }\n\n  function getDaysInMonth(year, monthIndex) {\n    return new Date(year, monthIndex + 1, 0).getDate();\n  }\n\n  function nextCutoff(purchaseDate, cutoffDay) {\n    let year = purchaseDate.getFullYear();\n    let month = purchaseDate.getMonth();\n    if (purchaseDate.getDate() > cutoffDay) {\n      month += 1;\n      if (month > 11) {\n        month = 0;\n        year += 1;\n      }\n    }\n\n    const daysInMonth = getDaysInMonth(year, month);\n    const effectiveDay = Math.min(Math.max(cutoffDay, 1), daysInMonth);\n    const cutoffDate = new Date(year, month, effectiveDay);\n    const diff = cutoffDate.getTime() - purchaseDate.getTime();\n    const days = Math.max(0, Math.ceil(diff \/ 86400000));\n    return { cutoffDate, days, effectiveDay, adjusted: effectiveDay !== cutoffDay };\n  }\n\n  function interestForDays(balance, eaPercent, days, base) {\n    if (!days) return 0;\n    const daily = dailyRateFromEA(eaPercent, base);\n    return balance * (Math.pow(1 + daily, days) - 1);\n  }\n\n  function fixedPayment(principal, monthlyRate, installments) {\n    if (!monthlyRate) return principal \/ installments;\n    const factor = Math.pow(1 + monthlyRate, installments);\n    return principal * (monthlyRate * factor) \/ (factor - 1);\n  }\n\n  function selectedValue(name) {\n    const checked = root.querySelector('input[name=\"' + name + '\"]:checked');\n    return checked ? checked.value : '';\n  }\n\n  function updateProgress(step) {\n    $$('[data-progress-step]').forEach(item => {\n      item.classList.toggle('is-active', Number(item.dataset.progressStep) <= step);\n    });\n  }\n\n  function showMessage(text, type) {\n    el.message.className = 'ig-message is-visible ' + (type === 'error' ? 'is-error' : 'is-warning');\n    el.message.innerHTML = '<span>' + iconText(type) + '<\/span><span><strong>' + (type === 'error' ? 'Error:' : 'Advertencia:') + '<\/strong> ' + text + '<\/span>';\n  }\n\n  function hideMessage() {\n    el.message.className = 'ig-message';\n    el.message.innerHTML = '';\n  }\n\n  function currentAnnualRate() {\n    const raw = parseRate(el.rate.value);\n    if (!raw) return 0;\n    return rateType === 'EA' ? raw : emToEa(raw);\n  }\n\n  function updateRatePreview() {\n    const date = localDate(el.purchaseDate.value);\n    const usury = rateForDate(date);\n    const annual = currentAnnualRate();\n    const monthly = annual ? eaToEm(annual) : 0;\n\n    $('#ig-usury-current').textContent = formatPercent(usury.usuryEA);\n    $('#ig-usury-current-label').textContent = 'Cr\u00e9dito de consumo y ordinario \u00b7 ' + usury.label;\n    $('#ig-rate-usury-preview').textContent = formatPercent(usury.usuryEA);\n    $('#ig-rate-ea-preview').textContent = formatPercent(annual);\n    $('#ig-rate-em-preview').textContent = formatPercent(monthly);\n    $('#ig-rate-note').textContent = 'Referencia SFC: IBC ' + formatPercent(usury.ibcEA) + ' E.A.; usura ' + formatPercent(usury.usuryEA) + ' E.A. para ' + usury.label + '.';\n  }\n\n  function updateTransactionUI() {\n    const type = selectedValue('transactionType');\n    if (type === 'purchase') {\n      el.feeField.classList.add('hidden');\n      el.fee.value = '';\n      el.feeLabel.textContent = 'Costo adicional';\n      el.feeHelp.textContent = 'Opcional.';\n    } else {\n      el.feeField.classList.remove('hidden');\n      if (type === 'advance') {\n        el.feeLabel.textContent = 'Comisi\u00f3n o costo del avance';\n        el.feeHelp.textContent = 'Opcional. Incluye comisiones o seguros si tu banco los cobra.';\n      } else {\n        el.feeLabel.textContent = 'Costo de compra de cartera';\n        el.feeHelp.textContent = 'Opcional. Incluye comisi\u00f3n de estudio, traslado o seguro si aplica.';\n      }\n    }\n  }\n\n  function updateInstallmentSlider() {\n    const min = Number(el.installmentsRange.min || 1);\n    const max = Number(el.installmentsRange.max || 60);\n    const val = Number(el.installmentsRange.value || 1);\n    const pct = ((val - min) \/ (max - min)) * 100;\n    el.installmentsRange.style.setProperty('--ig-progress-value', pct + '%');\n  }\n\n  function setRateType(type) {\n    rateType = type;\n    $$('[data-rate-type]').forEach(button => {\n      const active = button.dataset.rateType === type;\n      button.classList.toggle('is-active', active);\n      button.setAttribute('aria-selected', active ? 'true' : 'false');\n    });\n    el.rate.placeholder = type === 'EA' ? 'Ej: 28,17' : 'Ej: 2,13';\n    updateRatePreview();\n  }\n\n  function getInputData() {\n    const transactionType = selectedValue('transactionType') || 'purchase';\n    const amount = parseMoney(el.amount.value);\n    const fee = transactionType === 'purchase' ? 0 : parseMoney(el.fee.value);\n    const principal = amount + fee;\n    const annualRate = currentAnnualRate();\n    const installments = Math.min(60, Math.max(1, parseInt(el.installmentsNumber.value, 10) || 0));\n    const purchaseDate = localDate(el.purchaseDate.value);\n    const cutoffDay = parseInt(el.cutoffDay.value, 10);\n    const dayBase = Number(el.dayBase.value || 365);\n    const method = selectedValue('amortization') || 'fixedCapital';\n    const usury = rateForDate(purchaseDate);\n\n    if (!amount || amount <= 0) throw new Error('Ingresa un valor de transacci\u00f3n v\u00e1lido.');\n    if (!annualRate || annualRate <= 0) throw new Error('Ingresa una tasa de inter\u00e9s v\u00e1lida o usa la tasa de usura de referencia.');\n    if (!installments || installments < 1 || installments > 60) throw new Error('El n\u00famero de cuotas debe estar entre 1 y 60.');\n    if (!cutoffDay || cutoffDay < 1 || cutoffDay > 31) throw new Error('El d\u00eda de corte debe estar entre 1 y 31.');\n\n    return { transactionType, amount, fee, principal, annualRate, installments, purchaseDate, cutoffDay, dayBase, method, usury };\n  }\n\n  function buildSchedule(input, method) {\n    const monthlyRate = monthlyRateFromEA(input.annualRate);\n    const cutoff = nextCutoff(input.purchaseDate, input.cutoffDay);\n    const oneInstallmentNoInterest = input.transactionType === 'purchase' && input.installments === 1;\n    let balance = input.principal;\n    let totalInterest = 0;\n    const rows = [];\n    const fixedCapital = input.principal \/ input.installments;\n    const basePayment = fixedPayment(input.principal, monthlyRate, input.installments);\n    let negativeGuard = false;\n\n    for (let i = 1; i <= input.installments; i++) {\n      let interest = 0;\n      if (!oneInstallmentNoInterest) {\n        interest = i === 1\n          ? interestForDays(balance, input.annualRate, cutoff.days, input.dayBase)\n          : balance * monthlyRate;\n      }\n\n      let capital = 0;\n      let payment = 0;\n\n      if (method === 'fixedCapital') {\n        capital = i === input.installments ? balance : Math.min(fixedCapital, balance);\n        payment = capital + interest;\n      } else {\n        payment = i === input.installments ? balance + interest : basePayment;\n        capital = payment - interest;\n        if (capital < 0) {\n          negativeGuard = true;\n          capital = 0;\n          payment = interest;\n        }\n        if (i === input.installments) {\n          capital = balance;\n          payment = capital + interest;\n        }\n      }\n\n      balance = Math.max(0, balance - capital);\n      totalInterest += interest;\n      const estimatedDate = i === 1 ? cutoff.cutoffDate : addMonths(cutoff.cutoffDate, i - 1);\n\n      rows.push({\n        installment: i,\n        date: estimatedDate,\n        capital,\n        interest,\n        payment,\n        balance\n      });\n    }\n\n    return {\n      method,\n      rows,\n      totalInterest,\n      totalPayment: input.principal + totalInterest,\n      firstPayment: rows[0] ? rows[0].payment : 0,\n      typicalPayment: rows[1] ? rows[1].payment : (rows[0] ? rows[0].payment : 0),\n      cutoff,\n      oneInstallmentNoInterest,\n      negativeGuard\n    };\n  }\n\n  function renderSchedule(schedule) {\n    el.body.innerHTML = schedule.rows.map(row => {\n      return '<tr>' +\n        '<td data-label=\"Cuota\"><strong>' + row.installment + (row.installment === 1 ? ' \u00b7 primera' : '') + '<\/strong><\/td>' +\n        '<td data-label=\"Fecha estimada\">' + formatDate(row.date) + '<\/td>' +\n        '<td data-label=\"Capital\" class=\"ig-amount\">' + formatMoney(row.capital) + '<\/td>' +\n        '<td data-label=\"Inter\u00e9s\" class=\"ig-amount\">' + formatMoney(row.interest) + '<\/td>' +\n        '<td data-label=\"Pago total\" class=\"ig-amount\">' + formatMoney(row.payment) + '<\/td>' +\n        '<td data-label=\"Saldo final\" class=\"ig-amount\">' + formatMoney(row.balance) + '<\/td>' +\n      '<\/tr>';\n    }).join('');\n    $('#ig-table-count').textContent = schedule.rows.length + ' cuota' + (schedule.rows.length === 1 ? '' : 's');\n  }\n\n  function renderComparison(input, fixedCapitalSchedule, fixedPaymentSchedule) {\n    $('#ig-comp-capital-first').textContent = formatMoney(fixedCapitalSchedule.firstPayment);\n    $('#ig-comp-capital-interest').textContent = formatMoney(fixedCapitalSchedule.totalInterest);\n    $('#ig-comp-capital-total').textContent = formatMoney(fixedCapitalSchedule.totalPayment);\n    $('#ig-comp-payment-first').textContent = formatMoney(fixedPaymentSchedule.firstPayment);\n    $('#ig-comp-payment-interest').textContent = formatMoney(fixedPaymentSchedule.totalInterest);\n    $('#ig-comp-payment-total').textContent = formatMoney(fixedPaymentSchedule.totalPayment);\n\n    $('#ig-compare-fixed-capital').classList.toggle('is-selected', input.method === 'fixedCapital');\n    $('#ig-compare-fixed-payment').classList.toggle('is-selected', input.method === 'fixedPayment');\n  }\n\n  function transactionLabel(type) {\n    if (type === 'advance') return 'Avance';\n    if (type === 'portfolio') return 'Compra de cartera';\n    return 'Compra';\n  }\n\n  function methodLabel(method) {\n    return method === 'fixedPayment' ? 'Cuota fija' : 'Capital fijo';\n  }\n\n  function buildAnalysis(input, schedule) {\n    const cutoff = schedule.cutoff;\n    const pctInterest = input.principal ? (schedule.totalInterest \/ input.principal) * 100 : 0;\n    let text = 'Tasa usada: ' + formatPercent(input.annualRate) + ' E.A. (' + formatPercent(eaToEm(input.annualRate)) + ' E.M.). ';\n    text += 'Referencia: ' + input.usury.label + ', usura ' + formatPercent(input.usury.usuryEA) + ' E.A. ';\n    text += 'Corte estimado: ' + formatDate(cutoff.cutoffDate) + ', ' + cutoff.days + ' d\u00eda(s) desde la transacci\u00f3n. ';\n    text += 'Los intereses equivalen aproximadamente al ' + formatPercent(pctInterest) + ' del valor financiado.';\n    if (schedule.oneInstallmentNoInterest) text += ' Para compra ordinaria a una cuota se asumi\u00f3 pago sin intereses si cancelas el total a tiempo.';\n    if (cutoff.adjusted) text += ' El d\u00eda de corte se ajust\u00f3 al \u00faltimo d\u00eda disponible del mes.';\n    return text;\n  }\n\n  function renderResults(input, selectedSchedule, fixedCapitalSchedule, fixedPaymentSchedule) {\n    $('#ig-kpi-first').textContent = formatMoney(selectedSchedule.firstPayment);\n    $('#ig-kpi-typical').textContent = formatMoney(selectedSchedule.typicalPayment);\n    $('#ig-kpi-interest').textContent = formatMoney(selectedSchedule.totalInterest);\n    $('#ig-kpi-total').textContent = formatMoney(selectedSchedule.totalPayment);\n    $('#ig-kpi-interest-sub').textContent = input.principal ? 'Sobre ' + formatMoney(input.principal) + ' financiados.' : 'Costo financiero estimado.';\n    $('#ig-kpi-first-sub').textContent = selectedSchedule.oneInstallmentNoInterest ? 'Compra a una cuota sin intereses.' : 'Incluye d\u00edas hasta corte.';\n    $('#ig-result-context').textContent = transactionLabel(input.transactionType) + ' por ' + formatMoney(input.amount) + (input.fee ? ' + costos por ' + formatMoney(input.fee) : '') + ' \u00b7 ' + input.installments + ' cuota(s).';\n    $('#ig-result-method-badge').textContent = methodLabel(input.method);\n    $('#ig-analysis-note').textContent = buildAnalysis(input, selectedSchedule);\n\n    renderComparison(input, fixedCapitalSchedule, fixedPaymentSchedule);\n    renderSchedule(selectedSchedule);\n\n    el.results.classList.add('is-visible');\n    el.pdfActions.classList.add('is-visible');\n    updateProgress(4);\n  }\n\n  function calculate() {\n    hideMessage();\n    const input = getInputData();\n\n    if (input.annualRate > input.usury.usuryEA) {\n      showMessage('La tasa ingresada (' + formatPercent(input.annualRate) + ' E.A.) supera la tasa de usura de referencia para ' + input.usury.label + ' (' + formatPercent(input.usury.usuryEA) + ' E.A.). Verifica si est\u00e1s mezclando E.A. y E.M., o confirma condiciones con tu entidad.', 'warning');\n    }\n\n    const fixedCapitalSchedule = buildSchedule(input, 'fixedCapital');\n    const fixedPaymentSchedule = buildSchedule(input, 'fixedPayment');\n    const selectedSchedule = input.method === 'fixedPayment' ? fixedPaymentSchedule : fixedCapitalSchedule;\n\n    if (selectedSchedule.negativeGuard) {\n      showMessage('La cuota fija no alcanzaba a cubrir intereses en una o m\u00e1s cuotas; el simulador protegi\u00f3 el c\u00e1lculo para evitar capital negativo. Revisa tasa, cuotas y d\u00eda de corte.', 'warning');\n    }\n\n    lastReport = { input, selectedSchedule, fixedCapitalSchedule, fixedPaymentSchedule, createdAt: new Date() };\n    renderResults(input, selectedSchedule, fixedCapitalSchedule, fixedPaymentSchedule);\n    setTimeout(() => el.results.scrollIntoView({ behavior: 'smooth', block: 'start' }), 80);\n  }\n\n  function reset() {\n    hideMessage();\n    el.form.reset();\n    el.purchaseDate.value = isoDate(new Date());\n    el.cutoffDay.value = '15';\n    el.installmentsRange.value = '12';\n    el.installmentsNumber.value = '12';\n    setRateType('EA');\n    el.rate.value = '';\n    el.body.innerHTML = '';\n    el.results.classList.remove('is-visible');\n    el.pdfActions.classList.remove('is-visible');\n    lastReport = null;\n    updateTransactionUI();\n    updateRatePreview();\n    updateInstallmentSlider();\n    updateProgress(1);\n    history.replaceState(null, '', location.pathname);\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  }\n\n  function buildUrl() {\n    const input = getInputData();\n    const p = new URLSearchParams();\n    p.set('monto', Math.round(input.amount));\n    if (input.fee) p.set('costo', Math.round(input.fee));\n    p.set('tasa', input.annualRate.toFixed(4));\n    p.set('cuotas', input.installments);\n    p.set('tipo', input.transactionType);\n    p.set('metodo', input.method);\n    p.set('fecha', isoDate(input.purchaseDate));\n    p.set('corte', input.cutoffDay);\n    return location.origin + location.pathname + '?' + p.toString();\n  }\n\n  function applyUrl() {\n    const p = new URLSearchParams(location.search);\n    if (!p.has('monto')) return;\n    const monto = Number(p.get('monto') || 0);\n    const costo = Number(p.get('costo') || 0);\n    const tasa = Number(p.get('tasa') || 0);\n    const cuotas = Number(p.get('cuotas') || 12);\n    const tipo = p.get('tipo') || 'purchase';\n    const metodo = p.get('metodo') || 'fixedCapital';\n    const fecha = p.get('fecha');\n    const corte = p.get('corte');\n\n    const typeRadio = root.querySelector('input[name=\"transactionType\"][value=\"' + tipo + '\"]');\n    if (typeRadio) typeRadio.checked = true;\n    const methodRadio = root.querySelector('input[name=\"amortization\"][value=\"' + metodo + '\"]');\n    if (methodRadio) methodRadio.checked = true;\n\n    if (monto) el.amount.value = formatPlainMoney(monto);\n    if (costo) el.fee.value = formatPlainMoney(costo);\n    if (tasa) el.rate.value = String(tasa).replace('.', ',');\n    if (cuotas) {\n      el.installmentsRange.value = String(cuotas);\n      el.installmentsNumber.value = String(cuotas);\n    }\n    if (fecha) el.purchaseDate.value = fecha;\n    if (corte) el.cutoffDay.value = corte;\n\n    updateTransactionUI();\n    updateRatePreview();\n    updateInstallmentSlider();\n    try { calculate(); } catch (e) { showMessage(e.message, 'error'); }\n  }\n\n  function ensureJsPdf() {\n    if (window.jspdf && window.jspdf.jsPDF) return Promise.resolve(window.jspdf.jsPDF);\n    return new Promise((resolve, reject) => {\n      const existing = document.querySelector('script[data-ig-jspdf=\"true\"]');\n      if (existing) {\n        existing.addEventListener('load', () => resolve(window.jspdf.jsPDF), { once: true });\n        existing.addEventListener('error', reject, { once: true });\n        return;\n      }\n      const script = document.createElement('script');\n      script.src = 'https:\/\/cdn.jsdelivr.net\/npm\/jspdf@2.5.1\/dist\/jspdf.umd.min.js';\n      script.async = true;\n      script.dataset.igJspdf = 'true';\n      script.onload = () => resolve(window.jspdf.jsPDF);\n      script.onerror = reject;\n      document.head.appendChild(script);\n    });\n  }\n\n  function safeText(value) {\n    return String(value == null ? '' : value).replace(\/\\s+\/g, ' ').trim();\n  }\n\n  function exportPdf(jsPDF) {\n    if (!lastReport) return;\n    const { input, selectedSchedule, createdAt } = lastReport;\n    const doc = new jsPDF({ unit: 'mm', format: 'a4' });\n    const margin = 18;\n    const pageWidth = 210;\n    const contentWidth = pageWidth - margin * 2;\n    let y = 0;\n\n    function decorate() {\n      doc.setFillColor(15, 159, 122);\n      doc.roundedRect(margin, 12, 12, 12, 2, 2, 'F');\n      doc.setTextColor(255, 255, 255);\n      doc.setFontSize(8);\n      doc.setFont('helvetica', 'bold');\n      doc.text('IG', margin + 3.2, 19.6);\n\n      doc.setTextColor(23, 51, 47);\n      doc.setFontSize(11);\n      doc.text('InversionesGuru', margin + 16, 17);\n      doc.setTextColor(91, 111, 104);\n      doc.setFontSize(8);\n      doc.setFont('helvetica', 'normal');\n      doc.text(SITE_URL, margin + 16, 22);\n\n      doc.setTextColor(226, 239, 234);\n      doc.setFontSize(19);\n      doc.setFont('helvetica', 'bold');\n      doc.text('inversionesguru.com\/co\/', 34, 168, { angle: 32 });\n      doc.text('inversionesguru.com\/co\/', 70, 238, { angle: 32 });\n\n      doc.setDrawColor(215, 228, 223);\n      doc.line(margin, 28, pageWidth - margin, 28);\n      y = 36;\n    }\n\n    function nextPage(required) {\n      if (y + required > 280) {\n        doc.addPage();\n        decorate();\n      }\n    }\n\n    function textLine(label, value) {\n      nextPage(8);\n      doc.setTextColor(91, 111, 104);\n      doc.setFontSize(9);\n      doc.setFont('helvetica', 'normal');\n      doc.text(label, margin, y);\n      doc.setTextColor(23, 51, 47);\n      doc.setFont('helvetica', 'bold');\n      doc.text(String(value), pageWidth - margin, y, { align: 'right' });\n      y += 7;\n    }\n\n    function title(value) {\n      nextPage(12);\n      doc.setTextColor(23, 51, 47);\n      doc.setFontSize(14);\n      doc.setFont('helvetica', 'bold');\n      doc.text(value, margin, y);\n      y += 9;\n    }\n\n    decorate();\n    doc.setTextColor(23, 51, 47);\n    doc.setFontSize(18);\n    doc.setFont('helvetica', 'bold');\n    doc.text('Simulaci\u00f3n de tarjeta de cr\u00e9dito', margin, y);\n    y += 8;\n\n    doc.setTextColor(91, 111, 104);\n    doc.setFontSize(9);\n    doc.setFont('helvetica', 'normal');\n    doc.text('Generado el ' + createdAt.toLocaleString('es-CO') + ' \u00b7 C\u00e1lculo educativo', margin, y);\n    y += 10;\n\n    title('Resumen');\n    textLine('Tipo de transacci\u00f3n', transactionLabel(input.transactionType));\n    textLine('Valor financiado', formatMoney(input.principal));\n    textLine('Tasa usada', formatPercent(input.annualRate) + ' E.A. \/ ' + formatPercent(eaToEm(input.annualRate)) + ' E.M.');\n    textLine('Usura de referencia', input.usury.label + ' \u00b7 ' + formatPercent(input.usury.usuryEA) + ' E.A.');\n    textLine('M\u00e9todo', methodLabel(input.method));\n    textLine('Cuotas', input.installments);\n    textLine('Primera cuota', formatMoney(selectedSchedule.firstPayment));\n    textLine('Cuota t\u00edpica', formatMoney(selectedSchedule.typicalPayment));\n    textLine('Intereses totales', formatMoney(selectedSchedule.totalInterest));\n    textLine('Pago total', formatMoney(selectedSchedule.totalPayment));\n\n    y += 5;\n    title('Plan de pagos');\n\n    doc.setFillColor(23, 51, 47);\n    doc.rect(margin, y, contentWidth, 8, 'F');\n    doc.setTextColor(255, 255, 255);\n    doc.setFontSize(7.5);\n    doc.setFont('helvetica', 'bold');\n    const columns = [margin + 2, margin + 18, margin + 48, margin + 82, margin + 114, margin + 146];\n    ['Cuota', 'Fecha', 'Capital', 'Inter\u00e9s', 'Pago', 'Saldo'].forEach((h, i) => doc.text(h, columns[i], y + 5));\n    y += 8;\n\n    doc.setFont('helvetica', 'normal');\n    doc.setFontSize(7.4);\n    selectedSchedule.rows.slice(0, 72).forEach(row => {\n      nextPage(7);\n      doc.setTextColor(23, 51, 47);\n      const values = [row.installment, formatDate(row.date), formatMoney(row.capital), formatMoney(row.interest), formatMoney(row.payment), formatMoney(row.balance)];\n      values.forEach((value, i) => doc.text(String(value), columns[i], y + 5));\n      doc.setDrawColor(231, 238, 235);\n      doc.line(margin, y + 7, pageWidth - margin, y + 7);\n      y += 7;\n    });\n\n    if (selectedSchedule.rows.length > 72) {\n      y += 4;\n      doc.setTextColor(91, 111, 104);\n      doc.text('El PDF muestra las primeras 72 cuotas. Descarga el CSV para ver el plan completo.', margin, y);\n    }\n\n    nextPage(18);\n    y += 8;\n    doc.setTextColor(91, 111, 104);\n    doc.setFontSize(8);\n    const note = 'Este reporte es una simulaci\u00f3n educativa. Cada banco puede aplicar condiciones particulares, comisiones, seguros, redondeos, ciclos de facturaci\u00f3n y pol\u00edticas internas.';\n    doc.text(doc.splitTextToSize(note, contentWidth), margin, y);\n\n    doc.save(PDF_FILE);\n  }\n\n  function buildPrint() {\n    if (!lastReport) return;\n    const { input, selectedSchedule, createdAt } = lastReport;\n    const rows = selectedSchedule.rows.map(row =>\n      '<tr><td>' + row.installment + '<\/td><td>' + formatDate(row.date) + '<\/td><td>' + formatMoney(row.capital) + '<\/td><td>' + formatMoney(row.interest) + '<\/td><td>' + formatMoney(row.payment) + '<\/td><td>' + formatMoney(row.balance) + '<\/td><\/tr>'\n    ).join('');\n\n    el.printArea.innerHTML =\n      '<h1>InversionesGuru \u00b7 Simulaci\u00f3n de tarjeta de cr\u00e9dito<\/h1>' +\n      '<p><strong>URL:<\/strong> ' + SITE_URL + '<\/p>' +\n      '<p><strong>Generado:<\/strong> ' + createdAt.toLocaleString('es-CO') + '<\/p>' +\n      '<p><strong>Valor financiado:<\/strong> ' + formatMoney(input.principal) + ' \u00b7 <strong>Tasa:<\/strong> ' + formatPercent(input.annualRate) + ' E.A. \u00b7 <strong>Usura:<\/strong> ' + formatPercent(input.usury.usuryEA) + ' E.A. (' + input.usury.label + ')<\/p>' +\n      '<p><strong>M\u00e9todo:<\/strong> ' + methodLabel(input.method) + ' \u00b7 <strong>Cuotas:<\/strong> ' + input.installments + ' \u00b7 <strong>Pago total:<\/strong> ' + formatMoney(selectedSchedule.totalPayment) + '<\/p>' +\n      '<table><thead><tr><th>Cuota<\/th><th>Fecha<\/th><th>Capital<\/th><th>Inter\u00e9s<\/th><th>Pago<\/th><th>Saldo<\/th><\/tr><\/thead><tbody>' + rows + '<\/tbody><\/table>' +\n      '<p>Marca de agua: inversionesguru.com\/co\/ \u00b7 C\u00e1lculo educativo, no reemplaza el extracto del banco.<\/p>';\n  }\n\n  function downloadCsv() {\n    if (!lastReport) return;\n    const lines = [['Cuota', 'Fecha estimada', 'Capital', 'Interes', 'Pago total', 'Saldo final'].join(';')];\n    lastReport.selectedSchedule.rows.forEach(row => {\n      lines.push([\n        row.installment,\n        formatDate(row.date),\n        Math.round(row.capital),\n        Math.round(row.interest),\n        Math.round(row.payment),\n        Math.round(row.balance)\n      ].join(';'));\n    });\n    const blob = new Blob([lines.join('\\n')], { type: 'text\/csv;charset=utf-8;' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'plan-pagos-tarjeta-credito.csv';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n\n  function bindEvents() {\n    liveMoneyFormat(el.amount);\n    liveMoneyFormat(el.fee);\n\n    $$('input[name=\"transactionType\"]').forEach(input => input.addEventListener('change', () => {\n      updateTransactionUI();\n      updateProgress(1);\n    }));\n\n    $$('[data-rate-type]').forEach(button => button.addEventListener('click', () => setRateType(button.dataset.rateType)));\n\n    el.rate.addEventListener('input', () => { updateRatePreview(); updateProgress(2); });\n    el.purchaseDate.addEventListener('change', () => { updateRatePreview(); updateProgress(3); });\n\n    el.useUsury.addEventListener('click', () => {\n      const usury = rateForDate(localDate(el.purchaseDate.value));\n      setRateType('EA');\n      el.rate.value = String(usury.usuryEA).replace('.', ',');\n      updateRatePreview();\n      updateProgress(2);\n    });\n\n    el.installmentsRange.addEventListener('input', () => {\n      el.installmentsNumber.value = el.installmentsRange.value;\n      updateInstallmentSlider();\n      updateProgress(3);\n    });\n\n    el.installmentsNumber.addEventListener('input', () => {\n      const value = Math.min(60, Math.max(1, parseInt(el.installmentsNumber.value || '1', 10)));\n      el.installmentsNumber.value = value;\n      el.installmentsRange.value = value;\n      updateInstallmentSlider();\n      updateProgress(3);\n    });\n\n    el.form.addEventListener('submit', event => {\n      event.preventDefault();\n      try { calculate(); } catch (error) { showMessage(safeText(error.message), 'error'); }\n    });\n\n    el.clear.addEventListener('click', reset);\n\n    el.downloadPdf.addEventListener('click', () => {\n      if (!lastReport) return;\n      el.pdfStatus.textContent = 'Preparando PDF...';\n      ensureJsPdf()\n        .then(jsPDF => {\n          exportPdf(jsPDF);\n          el.pdfStatus.textContent = 'PDF generado correctamente.';\n        })\n        .catch(() => {\n          el.pdfStatus.textContent = 'No carg\u00f3 jsPDF. Usa impresi\u00f3n para guardar como PDF.';\n          buildPrint();\n          window.print();\n        });\n    });\n\n    el.printPdf.addEventListener('click', () => {\n      if (!lastReport) return;\n      buildPrint();\n      window.print();\n    });\n\n    el.downloadCsv.addEventListener('click', downloadCsv);\n\n    el.shareLink.addEventListener('click', () => {\n      try {\n        const url = buildUrl();\n        navigator.clipboard.writeText(url).then(() => {\n          history.replaceState(null, '', url);\n          el.pdfStatus.textContent = 'Enlace copiado con los datos de la simulaci\u00f3n.';\n        }).catch(() => {\n          el.pdfStatus.textContent = 'No fue posible copiar el enlace.';\n        });\n      } catch (error) {\n        showMessage(safeText(error.message), 'error');\n      }\n    });\n  }\n\n  function init() {\n    el.purchaseDate.value = isoDate(new Date());\n    el.cutoffDay.value = '15';\n    updateTransactionUI();\n    updateRatePreview();\n    updateInstallmentSlider();\n    bindEvents();\n    applyUrl();\n  }\n\n  init();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6aa5df1 e-flex e-con-boxed e-con e-parent\" data-id=\"6aa5df1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb987c8 elementor-widget elementor-widget-text-editor\" data-id=\"eb987c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"mrfdfa\" data-start=\"0\" data-end=\"95\"><strong><span style=\"color: #000000;\">Simulador de Tarjeta de Cr\u00e9dito en Colombia: calcula tus cuotas sin enredos<\/span><\/strong><\/h2><p data-start=\"97\" data-end=\"497\"><span style=\"color: #000000;\">Hay un momento muy com\u00fan: haces una compra, te aparece la opci\u00f3n de diferirla a <strong data-start=\"177\" data-end=\"201\">3, 6, 12 o 24 cuotas<\/strong>, y piensas: <em data-start=\"214\" data-end=\"255\">\u201cListo, \u00bfcu\u00e1nto voy a pagar realmente?\u201d<\/em><\/span><br data-start=\"255\" data-end=\"258\" \/><span style=\"color: #000000;\">La realidad es que en una tarjeta de cr\u00e9dito <strong data-start=\"303\" data-end=\"344\">no solo importa el valor de la compra<\/strong>, tambi\u00e9n importan la <strong data-start=\"366\" data-end=\"374\">tasa<\/strong>, el <strong data-start=\"379\" data-end=\"395\">d\u00eda de corte<\/strong>, el <strong data-start=\"400\" data-end=\"420\">n\u00famero de cuotas<\/strong> y (en algunos casos) <strong data-start=\"442\" data-end=\"456\">comisiones<\/strong> como las de avances o compra de cartera.<\/span><\/p><p data-start=\"499\" data-end=\"787\"><span style=\"color: #000000;\">Por eso creamos este <strong data-start=\"520\" data-end=\"569\">Simulador de Tarjeta de Cr\u00e9dito para Colombia<\/strong>: una herramienta pr\u00e1ctica que te ayuda a ver <strong data-start=\"615\" data-end=\"643\">cu\u00e1nto pagar\u00edas cada mes<\/strong>, <strong data-start=\"645\" data-end=\"683\">cu\u00e1nto termina costando el cr\u00e9dito<\/strong> y un <strong data-start=\"689\" data-end=\"716\">plan de pagos detallado<\/strong> (tipo tabla de amortizaci\u00f3n) para tomar decisiones con la cabeza fr\u00eda.<\/span><\/p><hr data-start=\"789\" data-end=\"792\" \/><h2 data-section-id=\"1udfhcr\" data-start=\"794\" data-end=\"851\"><span style=\"color: #000000;\">\u00bfQu\u00e9 hace este simulador y por qu\u00e9 te conviene usarlo?<\/span><\/h2><p data-start=\"853\" data-end=\"913\"><span style=\"color: #000000;\">Este simulador te permite calcular, de forma clara y visual:<\/span><\/p><ul data-start=\"915\" data-end=\"1294\"><li data-section-id=\"1x7gk2w\" data-start=\"915\" data-end=\"998\"><p data-start=\"917\" data-end=\"998\"><span style=\"color: #000000;\"><strong data-start=\"917\" data-end=\"946\">Valor de la primera cuota<\/strong> (a veces es diferente por el ciclo de facturaci\u00f3n).<\/span><\/p><\/li><li data-section-id=\"1yacd7y\" data-start=\"999\" data-end=\"1075\"><p data-start=\"1001\" data-end=\"1075\"><span style=\"color: #000000;\"><strong data-start=\"1001\" data-end=\"1025\">Cuota mensual t\u00edpica<\/strong> (la que normalmente ver\u00e1s despu\u00e9s de la primera).<\/span><\/p><\/li><li data-section-id=\"10nbss6\" data-start=\"1076\" data-end=\"1136\"><p data-start=\"1078\" data-end=\"1136\"><span style=\"color: #000000;\"><strong data-start=\"1078\" data-end=\"1100\">Total de intereses<\/strong> que pagar\u00edas durante todo el plazo.<\/span><\/p><\/li><li data-section-id=\"14zb781\" data-start=\"1137\" data-end=\"1176\"><p data-start=\"1139\" data-end=\"1176\"><span style=\"color: #000000;\"><strong data-start=\"1139\" data-end=\"1153\">Pago total<\/strong> (capital + intereses).<\/span><\/p><\/li><li data-section-id=\"esaakq\" data-start=\"1177\" data-end=\"1294\"><p data-start=\"1179\" data-end=\"1294\"><span style=\"color: #000000;\"><strong data-start=\"1179\" data-end=\"1206\">Plan de pagos detallado<\/strong>, cuota por cuota: <strong data-start=\"1225\" data-end=\"1244\">abono a capital<\/strong>, <strong data-start=\"1246\" data-end=\"1259\">intereses<\/strong>, <strong data-start=\"1261\" data-end=\"1275\">pago total<\/strong> y <strong data-start=\"1278\" data-end=\"1293\">saldo final<\/strong>.<\/span><\/p><\/li><\/ul><p data-start=\"1296\" data-end=\"1389\"><span style=\"color: #000000;\">Y todo con formato Colombia: valores en <strong data-start=\"1336\" data-end=\"1343\">COP<\/strong>, separadores correctos y un flujo muy simple.<\/span><\/p><hr data-start=\"1391\" data-end=\"1394\" \/><h2 data-section-id=\"tr09m7\" data-start=\"1396\" data-end=\"1476\"><span style=\"color: #000000;\">Lo que casi nadie te explica: en tarjeta, la primera cuota puede ser distinta<\/span><\/h2><p data-start=\"1478\" data-end=\"1676\"><span style=\"color: #000000;\">Si alguna vez has sentido que \u201cla primera cuota sali\u00f3 rara\u201d, no est\u00e1s loco \ud83d\ude05.<\/span><br data-start=\"1556\" data-end=\"1559\" \/><span style=\"color: #000000;\">En tarjeta de cr\u00e9dito, el banco trabaja con un <strong data-start=\"1606\" data-end=\"1622\">d\u00eda de corte<\/strong> (cuando \u201ccierra\u201d tu ciclo) y luego una fecha de pago.<\/span><\/p><p data-start=\"1678\" data-end=\"1821\"><span style=\"color: #000000;\">Entonces, si compras hoy y faltan pocos d\u00edas para el corte, el c\u00e1lculo de intereses puede ser diferente que si compras justo despu\u00e9s del corte.<\/span><\/p><p data-start=\"1823\" data-end=\"1963\"><span style=\"color: #000000;\">Por eso este simulador calcula la primera cuota con <strong data-start=\"1875\" data-end=\"1922\">inter\u00e9s prorrateado por d\u00edas hasta el corte<\/strong>, para que el resultado sea m\u00e1s realista.<\/span><\/p><hr data-start=\"1965\" data-end=\"1968\" \/><h2 data-section-id=\"3m8uh7\" data-start=\"1970\" data-end=\"2012\"><span style=\"color: #000000;\">\u00bfQu\u00e9 datos necesitas para simular bien?<\/span><\/h2><h3 data-section-id=\"nnvpiq\" data-start=\"2014\" data-end=\"2040\"><span style=\"color: #000000;\">1) Tipo de transacci\u00f3n<\/span><\/h3><p data-start=\"2041\" data-end=\"2104\"><span style=\"color: #000000;\">El simulador contempla tres escenarios muy t\u00edpicos en Colombia:<\/span><\/p><ul data-start=\"2106\" data-end=\"2248\"><li data-section-id=\"7dim0c\" data-start=\"2106\" data-end=\"2134\"><p data-start=\"2108\" data-end=\"2134\"><span style=\"color: #000000;\"><strong data-start=\"2108\" data-end=\"2118\">Compra<\/strong> (lo m\u00e1s com\u00fan).<\/span><\/p><\/li><li data-section-id=\"5xh88h\" data-start=\"2135\" data-end=\"2181\"><p data-start=\"2137\" data-end=\"2181\"><span style=\"color: #000000;\"><strong data-start=\"2137\" data-end=\"2147\">Avance<\/strong> (retiro de efectivo con tarjeta).<\/span><\/p><\/li><li data-section-id=\"1w0suit\" data-start=\"2182\" data-end=\"2248\"><p data-start=\"2184\" data-end=\"2248\"><span style=\"color: #000000;\"><strong data-start=\"2184\" data-end=\"2205\">Compra de cartera<\/strong> (mover una deuda a otro producto\/entidad).<\/span><\/p><\/li><\/ul><p data-start=\"2250\" data-end=\"2431\"><span style=\"color: #000000;\">\ud83d\udc49 Si tu banco cobra un costo adicional (comisi\u00f3n, estudio, seguro, etc.), puedes agregarlo en <strong data-start=\"2345\" data-end=\"2366\">\u201cCosto adicional\u201d<\/strong> y el simulador lo incluye en lo que realmente est\u00e1s financiando.<\/span><\/p><hr data-start=\"2433\" data-end=\"2436\" \/><h3 data-section-id=\"zmm1qx\" data-start=\"2438\" data-end=\"2496\"><span style=\"color: #000000;\">2) Tasa de inter\u00e9s: E.A. o E.M. (y aqu\u00ed est\u00e1 el truco)<\/span><\/h3><p data-start=\"2497\" data-end=\"2560\"><span style=\"color: #000000;\">La mayor\u00eda de personas se enreda porque su banco puede mostrar:<\/span><\/p><ul data-start=\"2562\" data-end=\"2662\"><li data-section-id=\"1j1v1a3\" data-start=\"2562\" data-end=\"2616\"><p data-start=\"2564\" data-end=\"2616\"><span style=\"color: #000000;\"><strong data-start=\"2564\" data-end=\"2589\">E.A. (Efectiva Anual)<\/strong> en publicidad o contratos.<\/span><\/p><\/li><li data-section-id=\"1hq0wct\" data-start=\"2617\" data-end=\"2662\"><p data-start=\"2619\" data-end=\"2662\"><span style=\"color: #000000;\"><strong data-start=\"2619\" data-end=\"2646\">E.M. (Efectiva Mensual)<\/strong> en el extracto.<\/span><\/p><\/li><\/ul><p data-start=\"2664\" data-end=\"2809\"><span style=\"color: #000000;\">Este simulador te deja elegir la que tengas a la mano y te hace la <strong data-start=\"2731\" data-end=\"2756\">conversi\u00f3n autom\u00e1tica<\/strong> para que entiendas exactamente qu\u00e9 est\u00e1s ingresando.<\/span><\/p><p data-start=\"2811\" data-end=\"2908\"><span style=\"color: #000000;\">\u2705 Tip r\u00e1pido: si est\u00e1s copiando la tasa desde el <strong data-start=\"2860\" data-end=\"2872\">extracto<\/strong>, casi siempre est\u00e1s viendo <strong data-start=\"2900\" data-end=\"2908\">E.M.<\/strong><\/span><\/p><hr data-start=\"2910\" data-end=\"2913\" \/><h3 data-section-id=\"78t9s3\" data-start=\"2915\" data-end=\"2938\"><span style=\"color: #000000;\">3) N\u00famero de cuotas<\/span><\/h3><p data-start=\"2939\" data-end=\"3158\"><span style=\"color: #000000;\">Puedes simular de <strong data-start=\"2957\" data-end=\"2974\">1 a 60 cuotas<\/strong>.<\/span><br data-start=\"2975\" data-end=\"2978\" \/><span style=\"color: #000000;\">Y aqu\u00ed es donde el simulador se vuelve una herramienta de decisi\u00f3n: a veces una cuota \u201cc\u00f3moda\u201d a 24 meses termina siendo <strong data-start=\"3099\" data-end=\"3117\">mucho m\u00e1s cara<\/strong> que a 12 meses por intereses acumulados.<\/span><\/p><hr data-start=\"3160\" data-end=\"3163\" \/><h3 data-section-id=\"1bnbyjg\" data-start=\"3165\" data-end=\"3210\"><span style=\"color: #000000;\">4) Fecha de la transacci\u00f3n + D\u00eda de corte<\/span><\/h3><p data-start=\"3211\" data-end=\"3360\"><span style=\"color: #000000;\">Estos dos datos cambian el resultado m\u00e1s de lo que parece.<\/span><br data-start=\"3269\" data-end=\"3272\" \/><span style=\"color: #000000;\">Con ellos el simulador estima el tramo inicial y te da una primera cuota m\u00e1s aproximada.<\/span><\/p><hr data-start=\"3362\" data-end=\"3365\" \/><h2 data-section-id=\"wz6fte\" data-start=\"3367\" data-end=\"3438\"><span style=\"color: #000000;\">\u00bfPor qu\u00e9 el simulador muestra cuotas \u201cdecrecientes\u201d en muchos casos?<\/span><\/h2><p data-start=\"3440\" data-end=\"3535\"><span style=\"color: #000000;\">Porque en tarjetas de cr\u00e9dito es muy com\u00fan que el plan de pagos de un diferido se comporte as\u00ed:<\/span><\/p><ul data-start=\"3537\" data-end=\"3711\"><li data-section-id=\"1rrrkoz\" data-start=\"3537\" data-end=\"3600\"><p data-start=\"3539\" data-end=\"3600\"><span style=\"color: #000000;\">Pagas un <strong data-start=\"3548\" data-end=\"3567\">abono a capital<\/strong> similar cada mes (capital fijo).<\/span><\/p><\/li><li data-section-id=\"1ag02do\" data-start=\"3601\" data-end=\"3648\"><p data-start=\"3603\" data-end=\"3648\"><span style=\"color: #000000;\">Los <strong data-start=\"3607\" data-end=\"3626\">intereses bajan<\/strong> porque el saldo baja.<\/span><\/p><\/li><li data-section-id=\"vhlgpe\" data-start=\"3649\" data-end=\"3711\"><p data-start=\"3651\" data-end=\"3711\"><span style=\"color: #000000;\">Resultado: la <strong data-start=\"3665\" data-end=\"3696\">cuota total va disminuyendo<\/strong> con el tiempo.<\/span><\/p><\/li><\/ul><p data-start=\"3713\" data-end=\"3823\"><span style=\"color: #000000;\">Y eso suele coincidir con lo que mucha gente ve en sus compras diferidas: <strong data-start=\"3787\" data-end=\"3822\">cada mes pagas un poquito menos<\/strong>.<\/span><\/p><hr data-start=\"3825\" data-end=\"3828\" \/><h2 data-section-id=\"r02mn\" data-start=\"3830\" data-end=\"3869\"><span style=\"color: #000000;\">\u00bfY si mi banco me maneja cuota fija?<\/span><\/h2><p data-start=\"3870\" data-end=\"3983\"><span style=\"color: #000000;\">Tambi\u00e9n pasa. Algunas tarjetas y planes manejan un esquema de <strong data-start=\"3932\" data-end=\"3946\">cuota fija<\/strong> (similar al sistema franc\u00e9s), donde:<\/span><\/p><ul data-start=\"3985\" data-end=\"4138\"><li data-section-id=\"k7h4vb\" data-start=\"3985\" data-end=\"4025\"><p data-start=\"3987\" data-end=\"4025\"><span style=\"color: #000000;\">La cuota es <strong data-start=\"3999\" data-end=\"4014\">m\u00e1s estable<\/strong> mes a mes.<\/span><\/p><\/li><li data-section-id=\"twak4k\" data-start=\"4026\" data-end=\"4080\"><p data-start=\"4028\" data-end=\"4080\"><span style=\"color: #000000;\">Al inicio pagas m\u00e1s <strong data-start=\"4048\" data-end=\"4059\">inter\u00e9s<\/strong> y menos <strong data-start=\"4068\" data-end=\"4079\">capital<\/strong>.<\/span><\/p><\/li><li data-section-id=\"4xp3q3\" data-start=\"4081\" data-end=\"4138\"><p data-start=\"4083\" data-end=\"4138\"><span style=\"color: #000000;\">Con el tiempo se invierte (m\u00e1s capital, menos inter\u00e9s).<\/span><\/p><\/li><\/ul><p data-start=\"4140\" data-end=\"4323\"><span style=\"color: #000000;\">Por eso el simulador incluye la opci\u00f3n de <strong data-start=\"4182\" data-end=\"4218\">Capital fijo (cuota decreciente)<\/strong> y <strong data-start=\"4221\" data-end=\"4253\">Cuota fija (sistema franc\u00e9s)<\/strong>, para que compares y entiendas cu\u00e1l se parece m\u00e1s a tu producto real.<\/span><\/p><hr data-start=\"4325\" data-end=\"4328\" \/><h2 data-section-id=\"1q4d1om\" data-start=\"4330\" data-end=\"4400\"><span style=\"color: #000000;\">Tasa m\u00e1xima de usura en Colombia y por qu\u00e9 importa en tu simulaci\u00f3n<\/span><\/h2><p data-start=\"4402\" data-end=\"4533\"><span style=\"color: #000000;\">En Colombia existe un tope legal: la <strong data-start=\"4439\" data-end=\"4456\">tasa de usura<\/strong>, que es el m\u00e1ximo que se puede cobrar como inter\u00e9s para ciertas modalidades.<\/span><\/p><p data-start=\"4535\" data-end=\"4692\"><span style=\"color: #000000;\">Para <strong data-start=\"4540\" data-end=\"4559\">febrero de 2026<\/strong>, la <strong data-start=\"4564\" data-end=\"4617\">tasa de usura para cr\u00e9dito de consumo y ordinario<\/strong> est\u00e1 certificada en <strong data-start=\"4638\" data-end=\"4653\">25,23% E.A.<\/strong>.<\/span><\/p><p data-start=\"4694\" data-end=\"4870\"><span style=\"color: #000000;\">Adem\u00e1s, el Banco de la Rep\u00fablica explica que la tasa de usura se construye como <strong data-start=\"4774\" data-end=\"4817\">1,5 veces el inter\u00e9s bancario corriente<\/strong> por modalidad.<\/span><\/p><p data-start=\"4872\" data-end=\"5040\"><span style=\"color: #000000;\">\ud83d\udc49 En el simulador ver\u00e1s esa tasa como referencia y puedes hacer clic para usarla autom\u00e1ticamente (s\u00faper \u00fatil si quieres comparar tu tasa real vs. el m\u00e1ximo permitido).<\/span><\/p><blockquote data-start=\"5042\" data-end=\"5168\"><p data-start=\"5044\" data-end=\"5168\"><span style=\"color: #000000;\">Importante: la tasa de usura <strong data-start=\"5073\" data-end=\"5090\">puede cambiar<\/strong> por periodos, as\u00ed que siempre es buena idea contrastar con fuentes oficiales.<\/span><\/p><\/blockquote><hr data-start=\"5170\" data-end=\"5173\" \/><h2 data-section-id=\"spcjgs\" data-start=\"5175\" data-end=\"5218\"><span style=\"color: #000000;\">C\u00f3mo leer los resultados sin confundirte<\/span><\/h2><p data-start=\"5220\" data-end=\"5288\"><span style=\"color: #000000;\">Cuando le das <strong data-start=\"5234\" data-end=\"5246\">Calcular<\/strong>, el simulador te muestra 4 n\u00fameros clave:<\/span><\/p><ul data-start=\"5290\" data-end=\"5577\"><li data-section-id=\"1avzoaz\" data-start=\"5290\" data-end=\"5360\"><p data-start=\"5292\" data-end=\"5360\"><span style=\"color: #000000;\"><strong data-start=\"5292\" data-end=\"5310\">Primera cuota:<\/strong> puede ser distinta por el c\u00e1lculo hasta el corte.<\/span><\/p><\/li><li data-section-id=\"16tu3nf\" data-start=\"5361\" data-end=\"5429\"><p data-start=\"5363\" data-end=\"5429\"><span style=\"color: #000000;\"><strong data-start=\"5363\" data-end=\"5388\">Cuota mensual t\u00edpica:<\/strong> una referencia realista del \u201cmes a mes\u201d.<\/span><\/p><\/li><li data-section-id=\"zvo3z0\" data-start=\"5430\" data-end=\"5491\"><p data-start=\"5432\" data-end=\"5491\"><span style=\"color: #000000;\"><strong data-start=\"5432\" data-end=\"5455\">Total de intereses:<\/strong> lo que pagas \u201cextra\u201d por financiar.<\/span><\/p><\/li><li data-section-id=\"d9plfo\" data-start=\"5492\" data-end=\"5577\"><p data-start=\"5494\" data-end=\"5577\"><span style=\"color: #000000;\"><strong data-start=\"5494\" data-end=\"5509\">Pago total:<\/strong> capital + intereses (lo que realmente te cuesta esa compra\/avance).<\/span><\/p><\/li><\/ul><p data-start=\"5579\" data-end=\"5710\"><span style=\"color: #000000;\">Y debajo, el <strong data-start=\"5592\" data-end=\"5609\">Plan de Pagos<\/strong> te deja ver la pel\u00edcula completa:<\/span><br data-start=\"5643\" data-end=\"5646\" \/><span style=\"color: #000000;\">cu\u00e1nto pagas, cu\u00e1nto baja el saldo y c\u00f3mo se reparte el inter\u00e9s.<\/span><\/p><hr data-start=\"5712\" data-end=\"5715\" \/><h2 data-section-id=\"1l59k0z\" data-start=\"5717\" data-end=\"5792\"><span style=\"color: #000000;\">Consejos pr\u00e1cticos (de vida real) para pagar menos intereses con tarjeta<\/span><\/h2><p data-start=\"5794\" data-end=\"5838\"><span style=\"color: #000000;\">Si quieres que tu tarjeta juegue a tu favor:<\/span><\/p><ol data-start=\"5840\" data-end=\"6221\"><li data-section-id=\"12ct340\" data-start=\"5840\" data-end=\"5898\"><p data-start=\"5843\" data-end=\"5898\"><span style=\"color: #000000;\"><strong data-start=\"5843\" data-end=\"5882\">Entre menos cuotas, menos intereses<\/strong> (casi siempre).<\/span><\/p><\/li><li data-section-id=\"1yxziwx\" data-start=\"5899\" data-end=\"6001\"><p data-start=\"5902\" data-end=\"6001\"><span style=\"color: #000000;\">Si puedes, compra <strong data-start=\"5920\" data-end=\"5949\">justo despu\u00e9s de tu corte<\/strong> para aprovechar m\u00e1s d\u00edas sin facturaci\u00f3n inmediata.<\/span><\/p><\/li><li data-section-id=\"t5zey\" data-start=\"6002\" data-end=\"6090\"><p data-start=\"6005\" data-end=\"6090\"><span style=\"color: #000000;\">Evita avances si puedes: suelen tener <strong data-start=\"6043\" data-end=\"6059\">costos extra<\/strong> y condiciones menos amigables.<\/span><\/p><\/li><li data-section-id=\"1xoklb3\" data-start=\"6091\" data-end=\"6221\"><p data-start=\"6094\" data-end=\"6221\"><span style=\"color: #000000;\">Si una compra grande te preocupa, simula 6 vs 12 vs 24 cuotas antes de decidir. A veces la diferencia de costo total sorprende.<\/span><\/p><\/li><\/ol><hr data-start=\"6223\" data-end=\"6226\" \/><h2 data-section-id=\"uqyapt\" data-start=\"6228\" data-end=\"6257\"><span style=\"color: #000000;\">Preguntas frecuentes (FAQ)<\/span><\/h2><p data-start=\"6259\" data-end=\"6447\"><span style=\"color: #000000;\"><strong data-start=\"6259\" data-end=\"6297\">\u00bfEste simulador es exacto al 100%?<\/strong><\/span><br data-start=\"6297\" data-end=\"6300\" \/><span style=\"color: #000000;\">Es un c\u00e1lculo <strong data-start=\"6314\" data-end=\"6332\">muy aproximado<\/strong>, pero cada banco puede variar por redondeos, seguros, comisiones, fechas exactas de facturaci\u00f3n y reglas internas.<\/span><\/p><p data-start=\"6449\" data-end=\"6592\"><span style=\"color: #000000;\"><strong data-start=\"6449\" data-end=\"6486\">\u00bfQu\u00e9 tasa debo usar: E.A. o E.M.?<\/strong><\/span><br data-start=\"6486\" data-end=\"6489\" \/><span style=\"color: #000000;\">Usa la que tengas. Si tu extracto muestra tasa mensual, usa <strong data-start=\"6549\" data-end=\"6557\">E.M.<\/strong> y deja que el simulador convierta.<\/span><\/p><p data-start=\"6594\" data-end=\"6784\"><span style=\"color: #000000;\"><strong data-start=\"6594\" data-end=\"6647\">\u00bfPor qu\u00e9 mi primera cuota es m\u00e1s alta o m\u00e1s baja?<\/strong><\/span><br data-start=\"6647\" data-end=\"6650\" \/><span style=\"color: #000000;\">Por el <strong data-start=\"6657\" data-end=\"6673\">d\u00eda de corte<\/strong> y los <strong data-start=\"6680\" data-end=\"6702\">d\u00edas transcurridos<\/strong> desde la compra hasta el corte. El simulador lo tiene en cuenta con un prorrateo.<\/span><\/p><p data-start=\"6786\" data-end=\"6917\"><span style=\"color: #000000;\"><strong data-start=\"6786\" data-end=\"6824\">\u00bfPuedo descargar el plan de pagos?<\/strong><\/span><br data-start=\"6824\" data-end=\"6827\" \/><span style=\"color: #000000;\">S\u00ed. El simulador permite descargar el plan en <strong data-start=\"6873\" data-end=\"6880\">CSV<\/strong> para abrirlo en Excel\/Google Sheets.<\/span><\/p><hr data-start=\"6919\" data-end=\"6922\" \/><h2 data-section-id=\"byi918\" data-start=\"6924\" data-end=\"6959\"><span style=\"color: #000000;\">\u00dasalo como tu \u201cantes de comprar\u201d<\/span><\/h2><p data-start=\"6960\" data-end=\"7067\"><span style=\"color: #000000;\">Este simulador no es solo para \u201ccuriosear\u201d. Es para que tengas una herramienta r\u00e1pida y humana que te diga:<\/span><\/p><p data-start=\"7069\" data-end=\"7171\"><span style=\"color: #000000;\"><strong data-start=\"7069\" data-end=\"7171\">\u201cEsto es lo que vas a pagar. Esto es lo que te va a costar. Y as\u00ed se comporta tu deuda mes a mes.\u201d<\/strong><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u2726 Herramienta financiera Simulador de Tarjetas de Cr\u00e9dito Colombia Calcula cuotas, intereses, costo total y compara m\u00e9todos de amortizaci\u00f3n antes de diferir una compra, avance o compra de cartera. PDF disponible despu\u00e9s del c\u00e1lculo \ud83d\udcb3 Cr\u00e9dito de consumo Simula el costo real de usar tu tarjeta de cr\u00e9dito. Convierte una compra en cuotas, valida la&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5237,"template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-5922","herramientas","type-herramientas","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas"}],"about":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/types\/herramientas"}],"author":[{"embeddable":true,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":31,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5922\/revisions"}],"predecessor-version":[{"id":8650,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5922\/revisions\/8650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/media\/5237"}],"wp:attachment":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/media?parent=5922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}