{"id":5911,"date":"2024-09-15T19:56:03","date_gmt":"2024-09-16T00:56:03","guid":{"rendered":"https:\/\/inversionesguru.com\/co\/?post_type=herramientas&#038;p=5911"},"modified":"2026-08-10T18:03:50","modified_gmt":"2026-08-10T23:03:50","slug":"simulador-cuenta-de-ahorros-lulobank-colombia","status":"publish","type":"herramientas","link":"https:\/\/inversionesguru.com\/co\/herramientas\/simulador-cuenta-de-ahorros-lulobank-colombia\/","title":{"rendered":"Simulador Cuenta de Ahorros LuloBank Colombia"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5911\" class=\"elementor elementor-5911\" data-elementor-post-type=\"herramientas\">\n\t\t\t\t<div class=\"elementor-element elementor-element-05cc642 e-con-full e-flex e-con e-parent\" data-id=\"05cc642\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bdddd2d elementor-widget elementor-widget-html\" data-id=\"bdddd2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n  #ig-lulo-bolsillos-sim {\r\n    --ig-ink: #17332f;\r\n    --ig-ink-2: #24443e;\r\n    --ig-muted: #5b6f68;\r\n    --ig-muted-2: #789088;\r\n    --ig-bg-a: #effbf6;\r\n    --ig-bg-b: #fff3ec;\r\n    --ig-panel: #ffffff;\r\n    --ig-panel-soft: rgba(255,255,255,.88);\r\n    --ig-line: rgba(23,51,47,.14);\r\n    --ig-line-strong: rgba(23,51,47,.26);\r\n    --ig-accent: #0f9f7a;\r\n    --ig-accent-dark: #08755d;\r\n    --ig-coral: #ef6a4a;\r\n    --ig-coral-dark: #c84f34;\r\n    --ig-green-soft: #dff8ed;\r\n    --ig-coral-soft: #ffe2d7;\r\n    --ig-gold: #b97809;\r\n    --ig-danger: #b42318;\r\n    --ig-shadow: 0 22px 52px rgba(23, 51, 47, .12);\r\n    --ig-shadow-soft: 0 14px 34px rgba(23, 51, 47, .08);\r\n    --ig-radius: 8px;\r\n    display: block;\r\n    width: 100%;\r\n    overflow: hidden;\r\n    padding: 28px 0;\r\n    color: var(--ig-ink);\r\n    background:\r\n      linear-gradient(90deg, rgba(15,159,122,.065) 1px, transparent 1px),\r\n      linear-gradient(180deg, rgba(23,51,47,.045) 1px, transparent 1px),\r\n      var(--ig-bg-a);\r\n    background-size: 56px 56px, 56px 56px, auto;\r\n    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\r\n    line-height: 1.5;\r\n    -webkit-font-smoothing: antialiased;\r\n    text-rendering: optimizeLegibility;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim *,\r\n  #ig-lulo-bolsillos-sim *::before,\r\n  #ig-lulo-bolsillos-sim *::after { box-sizing: border-box; }\r\n\r\n  #ig-lulo-bolsillos-sim :where(h1,h2,h3,h4,p,ul,li,figure,blockquote) { margin: 0; padding: 0; }\r\n  #ig-lulo-bolsillos-sim :where(button,input,select) { font: inherit; }\r\n  #ig-lulo-bolsillos-sim button,\r\n  #ig-lulo-bolsillos-sim input,\r\n  #ig-lulo-bolsillos-sim select { -webkit-tap-highlight-color: transparent; }\r\n  #ig-lulo-bolsillos-sim input[type=\"number\"]::-webkit-inner-spin-button,\r\n  #ig-lulo-bolsillos-sim input[type=\"number\"]::-webkit-outer-spin-button { opacity: .55; }\r\n  #ig-lulo-bolsillos-sim a { color: inherit; text-decoration: none; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-wrap {\r\n    width: min(1120px, calc(100% - 28px));\r\n    margin: 0 auto;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-tool-ribbon,\r\n  #ig-lulo-bolsillos-sim .ig-card,\r\n  #ig-lulo-bolsillos-sim .ig-panel,\r\n  #ig-lulo-bolsillos-sim .ig-rate-card,\r\n  #ig-lulo-bolsillos-sim .ig-kpi,\r\n  #ig-lulo-bolsillos-sim .ig-result-band,\r\n  #ig-lulo-bolsillos-sim .ig-note,\r\n  #ig-lulo-bolsillos-sim .ig-chart-card { min-width: 0; }\r\n\r\n  #ig-lulo-bolsillos-sim :where(h1,h2,h3,h4,p,span,strong,label,button,td,th) { overflow-wrap: break-word; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-tool-ribbon {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1fr) auto;\r\n    gap: 18px;\r\n    align-items: center;\r\n    margin-bottom: 16px;\r\n    padding: 16px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.86);\r\n    box-shadow: var(--ig-shadow-soft);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kicker,\r\n  #ig-lulo-bolsillos-sim .ig-status {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    color: var(--ig-accent-dark);\r\n    font-size: 12px;\r\n    font-weight: 850;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-tool-ribbon strong {\r\n    display: block;\r\n    margin-top: 5px;\r\n    color: var(--ig-ink);\r\n    font-size: 16px;\r\n    line-height: 1.28;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-tool-ribbon p {\r\n    margin-top: 4px;\r\n    color: var(--ig-muted);\r\n    font-size: 13px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-dot {\r\n    width: 9px;\r\n    height: 9px;\r\n    border-radius: 999px;\r\n    background: var(--ig-accent);\r\n    box-shadow: 0 0 0 5px rgba(15,159,122,.14);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-grid {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, .92fr) minmax(320px, .55fr);\r\n    gap: 18px;\r\n    align-items: start;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-card,\r\n  #ig-lulo-bolsillos-sim .ig-panel,\r\n  #ig-lulo-bolsillos-sim .ig-chart-card,\r\n  #ig-lulo-bolsillos-sim .ig-note {\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: var(--ig-panel-soft);\r\n    box-shadow: var(--ig-shadow);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-card { padding: 24px; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-hero {\r\n    position: relative;\r\n    overflow: hidden;\r\n    background:\r\n      radial-gradient(circle at 95% 0%, rgba(239,106,74,.12), transparent 34%),\r\n      linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,255,255,.78));\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-hero::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    height: 3px;\r\n    background: linear-gradient(90deg, var(--ig-accent), var(--ig-coral));\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-eyebrow {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    width: fit-content;\r\n    min-height: 32px;\r\n    padding: 6px 10px;\r\n    border: 1px solid rgba(15,159,122,.24);\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.72);\r\n    color: var(--ig-accent-dark);\r\n    font-size: 12px;\r\n    font-weight: 850;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim h1 {\r\n    margin-top: 14px;\r\n    color: var(--ig-ink);\r\n    font-size: 40px;\r\n    line-height: 1.08;\r\n    font-weight: 930;\r\n    letter-spacing: 0;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim h1 span { color: var(--ig-coral-dark); }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-hero-copy {\r\n    max-width: 760px;\r\n    margin-top: 12px;\r\n    color: var(--ig-muted);\r\n    font-size: 16px;\r\n    line-height: 1.75;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-mini-rates {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0,1fr));\r\n    gap: 10px;\r\n    margin-top: 22px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-mini-rate {\r\n    min-height: 78px;\r\n    padding: 12px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-mini-rate span {\r\n    display: block;\r\n    color: var(--ig-muted);\r\n    font-size: 11px;\r\n    font-weight: 780;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-mini-rate strong {\r\n    display: block;\r\n    margin-top: 5px;\r\n    color: var(--ig-ink);\r\n    font-size: 18px;\r\n    line-height: 1.14;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-form-title {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    justify-content: space-between;\r\n    gap: 14px;\r\n    margin-bottom: 18px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim h2 {\r\n    color: var(--ig-ink);\r\n    font-size: 24px;\r\n    line-height: 1.18;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-form-title p,\r\n  #ig-lulo-bolsillos-sim .ig-muted {\r\n    margin-top: 5px;\r\n    color: var(--ig-muted);\r\n    font-size: 13px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-fields {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0,1fr));\r\n    gap: 14px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-field { display: grid; gap: 7px; }\r\n\r\n  #ig-lulo-bolsillos-sim label,\r\n  #ig-lulo-bolsillos-sim .ig-label {\r\n    color: var(--ig-ink-2);\r\n    font-size: 13px;\r\n    font-weight: 850;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim input,\r\n  #ig-lulo-bolsillos-sim select {\r\n    width: 100%;\r\n    min-height: 48px;\r\n    padding: 11px 12px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    outline: 0;\r\n    background: #fff;\r\n    color: var(--ig-ink);\r\n    transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim input:focus,\r\n  #ig-lulo-bolsillos-sim select:focus {\r\n    border-color: var(--ig-accent);\r\n    box-shadow: 0 0 0 4px rgba(15,159,122,.14);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim input.is-error,\r\n  #ig-lulo-bolsillos-sim select.is-error {\r\n    border-color: var(--ig-danger);\r\n    box-shadow: 0 0 0 4px rgba(180,35,24,.10);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-tabs {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0,1fr));\r\n    gap: 10px;\r\n    margin: 18px 0;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice {\r\n    position: relative;\r\n    display: block;\r\n    cursor: pointer;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice input {\r\n    position: absolute;\r\n    opacity: 0;\r\n    pointer-events: none;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice-card {\r\n    display: grid;\r\n    gap: 5px;\r\n    min-height: 92px;\r\n    padding: 14px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n    transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice:hover .ig-choice-card {\r\n    transform: translateY(-2px);\r\n    border-color: var(--ig-line-strong);\r\n    box-shadow: var(--ig-shadow-soft);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice input:checked + .ig-choice-card {\r\n    border-color: rgba(15,159,122,.45);\r\n    background: var(--ig-bg-a);\r\n    box-shadow: inset 0 0 0 1px rgba(15,159,122,.18), var(--ig-shadow-soft);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice-card strong {\r\n    color: var(--ig-ink);\r\n    font-size: 15px;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-choice-card span {\r\n    color: var(--ig-muted);\r\n    font-size: 12px;\r\n    line-height: 1.35;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-subpanel {\r\n    display: grid;\r\n    gap: 14px;\r\n    margin-top: 14px;\r\n    padding: 16px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.76);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-subpanel.is-hidden { display: none; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-radio-row {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0,1fr));\r\n    gap: 10px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-switch-line {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    gap: 10px;\r\n    padding: 12px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n    cursor: pointer;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-switch-line input {\r\n    width: 18px;\r\n    min-height: 18px;\r\n    height: 18px;\r\n    margin-top: 2px;\r\n    accent-color: var(--ig-accent-dark);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-switch-line strong {\r\n    display: block;\r\n    color: var(--ig-ink);\r\n    font-size: 13px;\r\n    font-weight: 850;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-switch-line span {\r\n    display: block;\r\n    margin-top: 2px;\r\n    color: var(--ig-muted);\r\n    font-size: 12px;\r\n    line-height: 1.42;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-actions {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 10px;\r\n    margin-top: 18px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 9px;\r\n    min-height: 50px;\r\n    padding: 12px 18px;\r\n    border: 1px solid transparent;\r\n    border-radius: var(--ig-radius);\r\n    cursor: pointer;\r\n    color: #fff;\r\n    background: var(--ig-ink);\r\n    font-size: 14px;\r\n    font-weight: 850;\r\n    transition: transform 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, opacity 180ms ease;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-btn:hover { transform: translateY(-2px); background: var(--ig-accent-dark); box-shadow: 0 14px 24px rgba(23,51,47,.18); }\r\n  #ig-lulo-bolsillos-sim .ig-btn-secondary { color: var(--ig-ink); background: #fff; border-color: var(--ig-line); }\r\n  #ig-lulo-bolsillos-sim .ig-btn-secondary:hover { background: var(--ig-bg-a); border-color: var(--ig-line-strong); }\r\n  #ig-lulo-bolsillos-sim .ig-btn-coral { background: var(--ig-coral); }\r\n  #ig-lulo-bolsillos-sim .ig-btn-coral:hover { background: var(--ig-coral-dark); }\r\n  #ig-lulo-bolsillos-sim .ig-btn:disabled { opacity: .56; cursor: not-allowed; transform: none; box-shadow: none; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-msg {\r\n    display: none;\r\n    margin-top: 14px;\r\n    padding: 12px 14px;\r\n    border: 1px solid rgba(180,35,24,.18);\r\n    border-radius: var(--ig-radius);\r\n    background: #fee4e2;\r\n    color: var(--ig-danger);\r\n    font-size: 13px;\r\n    font-weight: 750;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-msg.is-visible { display: block; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-side {\r\n    display: grid;\r\n    gap: 14px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-rate-card {\r\n    padding: 16px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n    box-shadow: var(--ig-shadow-soft);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-rate-card h3 {\r\n    color: var(--ig-ink);\r\n    font-size: 16px;\r\n    line-height: 1.22;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-rate-list { display: grid; gap: 9px; margin-top: 12px; }\r\n  #ig-lulo-bolsillos-sim .ig-rate-item {\r\n    display: grid;\r\n    grid-template-columns: minmax(0,1fr) auto;\r\n    gap: 10px;\r\n    align-items: center;\r\n    padding-bottom: 9px;\r\n    border-bottom: 1px solid rgba(23,51,47,.09);\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-rate-item:last-child { border-bottom: 0; padding-bottom: 0; }\r\n  #ig-lulo-bolsillos-sim .ig-rate-item span { color: var(--ig-muted); font-size: 12px; line-height: 1.3; }\r\n  #ig-lulo-bolsillos-sim .ig-rate-item strong {\r\n    padding: 4px 8px;\r\n    border-radius: var(--ig-radius);\r\n    background: var(--ig-green-soft);\r\n    color: var(--ig-accent-dark);\r\n    font-size: 12px;\r\n    white-space: nowrap;\r\n    font-weight: 900;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-results {\r\n    display: none;\r\n    margin-top: 18px;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-results.is-visible { display: block; animation: ig-lulo-rise 360ms ease both; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-result-band {\r\n    padding: 18px;\r\n    border: 1px solid rgba(23,51,47,.22);\r\n    border-radius: var(--ig-radius);\r\n    background:\r\n      linear-gradient(135deg, rgba(239,106,74,.12), transparent 46%),\r\n      var(--ig-ink);\r\n    box-shadow: 0 22px 48px rgba(23,51,47,.20);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-result-head {\r\n    display: grid;\r\n    grid-template-columns: minmax(0,1fr) auto;\r\n    gap: 16px;\r\n    align-items: center;\r\n    margin-bottom: 14px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-result-head h2 { color: #fff; }\r\n  #ig-lulo-bolsillos-sim .ig-result-head p { color: rgba(255,255,255,.72); font-size: 13px; margin-top: 4px; }\r\n  #ig-lulo-bolsillos-sim .ig-pill {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n    min-height: 32px;\r\n    padding: 6px 10px;\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.10);\r\n    color: #dff8ed;\r\n    font-size: 12px;\r\n    font-weight: 850;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpis {\r\n    display: grid;\r\n    grid-template-columns: repeat(5, minmax(0,1fr));\r\n    gap: 10px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpi {\r\n    min-height: 106px;\r\n    padding: 13px;\r\n    border: 1px solid rgba(255,255,255,.14);\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.08);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpi span {\r\n    display: block;\r\n    color: rgba(255,255,255,.72);\r\n    font-size: 11px;\r\n    font-weight: 780;\r\n    line-height: 1.28;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpi strong {\r\n    display: block;\r\n    margin-top: 7px;\r\n    color: #fff;\r\n    font-size: 18px;\r\n    line-height: 1.08;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpi.is-main {\r\n    background: #fff;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-kpi.is-main span { color: var(--ig-muted); }\r\n  #ig-lulo-bolsillos-sim .ig-kpi.is-main strong { color: var(--ig-ink); }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-insight {\r\n    display: grid;\r\n    grid-template-columns: auto minmax(0,1fr);\r\n    gap: 12px;\r\n    align-items: start;\r\n    margin-top: 12px;\r\n    padding: 14px;\r\n    border-radius: var(--ig-radius);\r\n    background: rgba(255,255,255,.08);\r\n    color: rgba(255,255,255,.82);\r\n    font-size: 13px;\r\n    line-height: 1.55;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-insight strong { color: #fff; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-chart-card,\r\n  #ig-lulo-bolsillos-sim .ig-panel { margin-top: 18px; padding: 18px; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-section-head {\r\n    display: grid;\r\n    grid-template-columns: minmax(0,1fr) auto;\r\n    gap: 14px;\r\n    align-items: end;\r\n    margin-bottom: 12px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-section-head h3 {\r\n    color: var(--ig-ink);\r\n    font-size: 18px;\r\n    font-weight: 930;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-section-head p { color: var(--ig-muted); font-size: 13px; margin-top: 3px; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-chart {\r\n    width: 100%;\r\n    height: 190px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background:\r\n      linear-gradient(180deg, rgba(15,159,122,.05), transparent),\r\n      #fff;\r\n    overflow: hidden;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-chart svg { display: block; width: 100%; height: 100%; overflow: visible; }\r\n  #ig-lulo-bolsillos-sim .ig-chart-line {\r\n    stroke-dasharray: 580;\r\n    stroke-dashoffset: 580;\r\n    animation: ig-lulo-draw 950ms ease forwards;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-table-wrap {\r\n    width: 100%;\r\n    overflow-x: auto;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim table {\r\n    width: 100%;\r\n    min-width: 760px;\r\n    border-collapse: collapse;\r\n    font-variant-numeric: tabular-nums;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim th {\r\n    padding: 11px 12px;\r\n    background: var(--ig-ink);\r\n    color: #fff;\r\n    font-size: 11px;\r\n    line-height: 1.3;\r\n    font-weight: 850;\r\n    text-align: left;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim td {\r\n    padding: 10px 12px;\r\n    border-bottom: 1px solid var(--ig-line);\r\n    color: var(--ig-ink-2);\r\n    font-size: 13px;\r\n    white-space: nowrap;\r\n  }\r\n  #ig-lulo-bolsillos-sim tbody tr:nth-child(even) { background: rgba(239,251,246,.72); }\r\n  #ig-lulo-bolsillos-sim tbody tr:last-child td { border-bottom: 0; }\r\n  #ig-lulo-bolsillos-sim .ig-num { text-align: right; }\r\n  #ig-lulo-bolsillos-sim .ig-green { color: #08755d; font-weight: 850; }\r\n  #ig-lulo-bolsillos-sim .ig-coral { color: var(--ig-coral-dark); font-weight: 850; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-pdf-actions {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 10px;\r\n    margin-top: 14px;\r\n    padding: 14px;\r\n    border: 1px solid rgba(239,106,74,.22);\r\n    border-radius: var(--ig-radius);\r\n    background: var(--ig-bg-b);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-pdf-status {\r\n    color: var(--ig-muted);\r\n    font-size: 12px;\r\n    font-weight: 750;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-notes {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0,1fr));\r\n    gap: 14px;\r\n    margin-top: 18px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-note {\r\n    padding: 16px;\r\n    box-shadow: var(--ig-shadow-soft);\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-note h3 { color: var(--ig-ink); font-size: 15px; font-weight: 930; }\r\n  #ig-lulo-bolsillos-sim .ig-note p,\r\n  #ig-lulo-bolsillos-sim .ig-note li { color: var(--ig-muted); font-size: 12.5px; line-height: 1.55; }\r\n  #ig-lulo-bolsillos-sim .ig-note ul { display: grid; gap: 7px; margin-top: 10px; list-style: none; }\r\n  #ig-lulo-bolsillos-sim .ig-note li { position: relative; padding-left: 16px; }\r\n  #ig-lulo-bolsillos-sim .ig-note li::before { content: \"\u2713\"; position: absolute; left: 0; color: var(--ig-accent-dark); font-weight: 900; }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-icon { width: 18px; height: 18px; flex: 0 0 auto; }\r\n  #ig-lulo-bolsillos-sim .ig-icon-box {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 38px;\r\n    height: 38px;\r\n    border-radius: var(--ig-radius);\r\n    color: var(--ig-accent-dark);\r\n    background: var(--ig-green-soft);\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-icon-box.is-coral { color: var(--ig-coral-dark); background: var(--ig-coral-soft); }\r\n\r\n\r\n\r\n  #ig-lulo-bolsillos-sim .ig-inline-note {\r\n    margin-top: 10px;\r\n    padding: 12px 13px;\r\n    border: 1px solid rgba(15,159,122,.20);\r\n    border-left: 4px solid var(--ig-accent);\r\n    border-radius: var(--ig-radius);\r\n    background: #f7fffb;\r\n    color: var(--ig-muted);\r\n    font-size: 12.5px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-inline-note strong { color: var(--ig-ink); }\r\n  #ig-lulo-bolsillos-sim .ig-inline-note.is-coral {\r\n    border-color: rgba(239,106,74,.22);\r\n    border-left-color: var(--ig-coral);\r\n    background: #fff8f4;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-card {\r\n    margin-top: 18px;\r\n    padding: 17px;\r\n    border: 1px solid var(--ig-line);\r\n    border-radius: var(--ig-radius);\r\n    background: #fff;\r\n    box-shadow: var(--ig-shadow-soft);\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-card h3 {\r\n    color: var(--ig-ink);\r\n    font-size: 15px;\r\n    font-weight: 930;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-card p {\r\n    margin-top: 6px;\r\n    color: var(--ig-muted);\r\n    font-size: 12.5px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-links {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 9px;\r\n    margin-top: 12px;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-link {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    min-height: 38px;\r\n    padding: 8px 11px;\r\n    border: 1px solid rgba(15,159,122,.24);\r\n    border-radius: var(--ig-radius);\r\n    background: var(--ig-bg-a);\r\n    color: var(--ig-accent-dark);\r\n    font-size: 12px;\r\n    font-weight: 850;\r\n    transition: transform 180ms ease, border-color 180ms ease, background-color 180ms ease;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-source-link:hover {\r\n    transform: translateY(-1px);\r\n    border-color: rgba(15,159,122,.44);\r\n    background: #fff;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-help-row {\r\n    display: grid;\r\n    gap: 4px;\r\n    margin-top: 8px;\r\n    color: var(--ig-muted);\r\n    font-size: 12px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  #ig-lulo-bolsillos-sim .ig-kpi small {\r\n    display: block;\r\n    margin-top: 6px;\r\n    color: rgba(255,255,255,.66);\r\n    font-size: 10.5px;\r\n    line-height: 1.35;\r\n    font-weight: 650;\r\n  }\r\n  #ig-lulo-bolsillos-sim .ig-kpi.is-main small { color: var(--ig-muted); }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    #ig-lulo-bolsillos-sim *,\r\n    #ig-lulo-bolsillos-sim *::before,\r\n    #ig-lulo-bolsillos-sim *::after { animation-duration: 1ms !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }\r\n  }\r\n\r\n  @media (max-width: 1020px) {\r\n    #ig-lulo-bolsillos-sim .ig-grid { grid-template-columns: 1fr; }\r\n    #ig-lulo-bolsillos-sim .ig-side { grid-template-columns: repeat(2, minmax(0,1fr)); }\r\n    #ig-lulo-bolsillos-sim .ig-kpis { grid-template-columns: repeat(3, minmax(0,1fr)); }\r\n    #ig-lulo-bolsillos-sim .ig-notes { grid-template-columns: 1fr; }\r\n  }\r\n\r\n  @media (max-width: 780px) {\r\n    #ig-lulo-bolsillos-sim { padding: 16px 0; }\r\n    #ig-lulo-bolsillos-sim .ig-wrap { width: min(100% - 18px, 1120px); }\r\n    #ig-lulo-bolsillos-sim .ig-tool-ribbon,\r\n    #ig-lulo-bolsillos-sim .ig-result-head,\r\n    #ig-lulo-bolsillos-sim .ig-section-head { grid-template-columns: 1fr; align-items: start; }\r\n    #ig-lulo-bolsillos-sim .ig-card { padding: 18px; }\r\n    #ig-lulo-bolsillos-sim h1 { font-size: 31px; }\r\n    #ig-lulo-bolsillos-sim h2 { font-size: 22px; }\r\n    #ig-lulo-bolsillos-sim .ig-fields,\r\n    #ig-lulo-bolsillos-sim .ig-mini-rates,\r\n    #ig-lulo-bolsillos-sim .ig-side,\r\n    #ig-lulo-bolsillos-sim .ig-tabs,\r\n    #ig-lulo-bolsillos-sim .ig-radio-row,\r\n    #ig-lulo-bolsillos-sim .ig-kpis { grid-template-columns: 1fr; }\r\n    #ig-lulo-bolsillos-sim .ig-actions { display: grid; grid-template-columns: 1fr; }\r\n    #ig-lulo-bolsillos-sim .ig-btn { width: 100%; }\r\n    #ig-lulo-bolsillos-sim .ig-pdf-actions { align-items: stretch; flex-direction: column; }\r\n    #ig-lulo-bolsillos-sim .ig-pdf-status { text-align: center; }\r\n  }\r\n\r\n  @media (max-width: 440px) {\r\n    #ig-lulo-bolsillos-sim h1 { font-size: 28px; }\r\n    #ig-lulo-bolsillos-sim .ig-card,\r\n    #ig-lulo-bolsillos-sim .ig-panel,\r\n    #ig-lulo-bolsillos-sim .ig-chart-card,\r\n    #ig-lulo-bolsillos-sim .ig-note { padding: 16px; }\r\n    #ig-lulo-bolsillos-sim .ig-kpi strong { font-size: 17px; }\r\n  }\r\n\r\n  @keyframes ig-lulo-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\r\n  @keyframes ig-lulo-draw { to { stroke-dashoffset: 0; } }\r\n<\/style>\r\n\r\n<section id=\"ig-lulo-bolsillos-sim\" aria-label=\"Simulador de rendimientos de Bolsillos Lulo Bank\">\r\n  <div class=\"ig-wrap\">\r\n    <div class=\"ig-tool-ribbon\">\r\n      <div>\r\n        <span class=\"ig-kicker\">\r\n          <svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 3v18h18\"><\/path><path d=\"m7 16 4-5 4 3 4-7\"><\/path><\/svg>\r\n          Herramienta financiera\r\n        <\/span>\r\n        <strong>Simulador de Bolsillos Lulo Bank<\/strong>\r\n        <p>Compara Bolsillos Flex y Programados con las tasas publicadas por Lulo Bank, aportes opcionales y reporte descargable.<\/p>\r\n      <\/div>\r\n      <span class=\"ig-status\"><span class=\"ig-dot\"><\/span> Par\u00e1metros revisados 10\/08\/2026<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"ig-grid\">\r\n      <div>\r\n        <article class=\"ig-card ig-hero\">\r\n          <span class=\"ig-eyebrow\">\r\n            <svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 2v20\"><\/path><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7H14a3.5 3.5 0 0 1 0 7H6\"><\/path><\/svg>\r\n            Lulo cuenta \u00b7 Bolsillos\r\n          <\/span>\r\n          <h1>Visualiza cu\u00e1nto puede crecer tu dinero <span>seg\u00fan el bolsillo que elijas.<\/span><\/h1>\r\n          <p class=\"ig-hero-copy\">Calcula cu\u00e1nto podr\u00edas generar con un Bolsillo Flex o Programado. La herramienta diferencia el saldo promedio mensual, el plazo elegido, Lulo Pro y una estimaci\u00f3n opcional de retenci\u00f3n.<\/p>\r\n\r\n          <div class=\"ig-mini-rates\" aria-label=\"Tasas destacadas\">\r\n            <div class=\"ig-mini-rate\"><span>Flex est\u00e1ndar<\/span><strong>7,50% E.A.<\/strong><\/div>\r\n            <div class=\"ig-mini-rate\"><span>Flex Lulo Pro<\/span><strong>9,25% E.A.<\/strong><\/div>\r\n            <div class=\"ig-mini-rate\"><span>Programado Pro 90 d\u00edas<\/span><strong>10,00% E.A.<\/strong><\/div>\r\n          <\/div>\r\n        <\/article>\r\n\r\n        <article class=\"ig-card\" style=\"margin-top:18px;\">\r\n          <div class=\"ig-form-title\">\r\n            <div>\r\n              <h2>Datos para simular<\/h2>\r\n              <p>Ingresa el monto, elige el tipo de bolsillo y ajusta el escenario. El formato de dinero se organiza autom\u00e1ticamente.<\/p>\r\n            <\/div>\r\n            <span class=\"ig-icon-box\" aria-hidden=\"true\"><svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\"><\/rect><path d=\"M8 6h8\"><\/path><path d=\"M8 10h8\"><\/path><path d=\"M8 14h4\"><\/path><\/svg><\/span>\r\n          <\/div>\r\n\r\n          <div class=\"ig-fields\" style=\"grid-template-columns: repeat(2, minmax(0,1fr));\">\r\n            <div class=\"ig-field\">\r\n              <label for=\"ig-lulo-monto\">Monto inicial en el bolsillo<\/label>\r\n              <input id=\"ig-lulo-monto\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"Ej: 10.000.000\">\r\n              <div class=\"ig-help-row\">En Flex puedes comenzar desde $0. Si partes de $0, agrega un aporte mensual para obtener una proyecci\u00f3n \u00fatil.<\/div>\r\n            <\/div>\r\n            <div class=\"ig-field\">\r\n              <label for=\"ig-lulo-fecha\">Fecha de inicio<\/label>\r\n              <input id=\"ig-lulo-fecha\" type=\"date\">\r\n              <div class=\"ig-help-row\">Si comienzas a mitad de mes, el primer periodo se calcula solo desde esta fecha.<\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"ig-tabs\" role=\"radiogroup\" aria-label=\"Tipo de bolsillo\">\r\n            <label class=\"ig-choice\">\r\n              <input type=\"radio\" name=\"ig-lulo-producto\" value=\"flex\" checked>\r\n              <span class=\"ig-choice-card\">\r\n                <strong>Bolsillo Flex<\/strong>\r\n                <span>Para ahorrar con disponibilidad y rendimiento mensual sobre saldo promedio.<\/span>\r\n              <\/span>\r\n            <\/label>\r\n            <label class=\"ig-choice\">\r\n              <input type=\"radio\" name=\"ig-lulo-producto\" value=\"programado\">\r\n              <span class=\"ig-choice-card\">\r\n                <strong>Bolsillo Programado<\/strong>\r\n                <span>Para mantener el dinero 60 o 90 d\u00edas y conservar la tasa del plazo elegido.<\/span>\r\n              <\/span>\r\n            <\/label>\r\n          <\/div>\r\n\r\n          <div id=\"ig-lulo-flex-panel\" class=\"ig-subpanel\">\r\n            <div class=\"ig-fields\" style=\"grid-template-columns: repeat(2, minmax(0,1fr));\">\r\n              <div class=\"ig-field\">\r\n                <span class=\"ig-label\">Perfil de rendimiento<\/span>\r\n                <div class=\"ig-radio-row\">\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-flex-perfil\" value=\"estandar\" checked>\r\n                    <span class=\"ig-choice-card\"><strong>Cliente est\u00e1ndar<\/strong><span>7,50% E.A.<\/span><\/span>\r\n                  <\/label>\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-flex-perfil\" value=\"pro\">\r\n                    <span class=\"ig-choice-card\"><strong>Lulo Pro<\/strong><span>9,25% E.A. \u00b7 \u00fasalo solo si aparece activo en tu app.<\/span><\/span>\r\n                  <\/label>\r\n                <\/div>\r\n              <\/div>\r\n              <div class=\"ig-field\">\r\n                <label for=\"ig-lulo-meses\">Meses calendario a simular<\/label>\r\n                <input id=\"ig-lulo-meses\" type=\"number\" min=\"1\" max=\"36\" value=\"6\">\r\n                <div class=\"ig-help-row\">El primer mes puede ser parcial si eliges una fecha distinta al d\u00eda 1.<\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"ig-fields\" style=\"grid-template-columns: repeat(2, minmax(0,1fr));\">\r\n              <div class=\"ig-field\">\r\n                <label for=\"ig-lulo-aporte\">Aporte mensual opcional<\/label>\r\n                <input id=\"ig-lulo-aporte\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"Ej: 300.000\">\r\n                <div class=\"ig-help-row\">Lulo permite configurar d\u00e9bito autom\u00e1tico en los Bolsillos Flex.<\/div>\r\n              <\/div>\r\n              <div class=\"ig-field\">\r\n                <label for=\"ig-lulo-dia-aporte\">D\u00eda del aporte mensual<\/label>\r\n                <input id=\"ig-lulo-dia-aporte\" type=\"number\" min=\"1\" max=\"31\" value=\"15\">\r\n                <div class=\"ig-help-row\">Si el mes tiene menos d\u00edas, se utiliza su \u00faltimo d\u00eda. Si la fecha inicial ya pas\u00f3 ese d\u00eda, el primer aporte entra el mes siguiente.<\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <label class=\"ig-switch-line\">\r\n              <input id=\"ig-lulo-retencion\" type=\"checkbox\">\r\n              <span><strong>Estimar retenci\u00f3n del 7% si corresponde<\/strong><span>La referencia oficial 2026 usa 0,055 UVT ($2.880,57) de rendimiento diario agregado entre Lulo cuenta y Bolsillos. Esta calculadora solo conoce este Bolsillo, por lo que el resultado tributario es orientativo.<\/span><\/span>\r\n            <\/label>\r\n\r\n            <div class=\"ig-inline-note\"><strong>C\u00f3mo se modela Flex:<\/strong> se registra el saldo simulado de cada d\u00eda, se obtiene el saldo promedio del periodo y el rendimiento generado se muestra como abonado en los primeros d\u00edas del mes siguiente. Para proyectar meses posteriores, la herramienta incorpora ese abono al inicio del siguiente mes como supuesto t\u00e9cnico.<\/div>\r\n          <\/div>\r\n\r\n          <div id=\"ig-lulo-programado-panel\" class=\"ig-subpanel is-hidden\">\r\n            <div class=\"ig-fields\" style=\"grid-template-columns: repeat(2, minmax(0,1fr));\">\r\n              <div class=\"ig-field\">\r\n                <span class=\"ig-label\">Plazo del Bolsillo Programado<\/span>\r\n                <div class=\"ig-radio-row\">\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-plazo\" value=\"60\" checked>\r\n                    <span class=\"ig-choice-card\"><strong>60 d\u00edas<\/strong><span>8,50% est\u00e1ndar \u00b7 9,50% Pro<\/span><\/span>\r\n                  <\/label>\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-plazo\" value=\"90\">\r\n                    <span class=\"ig-choice-card\"><strong>90 d\u00edas<\/strong><span>9,00% est\u00e1ndar \u00b7 10,00% Pro<\/span><\/span>\r\n                  <\/label>\r\n                <\/div>\r\n              <\/div>\r\n              <div class=\"ig-field\">\r\n                <span class=\"ig-label\">Perfil<\/span>\r\n                <div class=\"ig-radio-row\">\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-prog-perfil\" value=\"estandar\" checked>\r\n                    <span class=\"ig-choice-card\"><strong>Est\u00e1ndar<\/strong><span>Tasa base del plazo.<\/span><\/span>\r\n                  <\/label>\r\n                  <label class=\"ig-choice\">\r\n                    <input type=\"radio\" name=\"ig-lulo-prog-perfil\" value=\"pro\">\r\n                    <span class=\"ig-choice-card\"><strong>Lulo Pro<\/strong><span>Selecciona solo si tu beneficio est\u00e1 activo.<\/span><\/span>\r\n                  <\/label>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"ig-fields\" style=\"grid-template-columns: repeat(2, minmax(0,1fr));\">\r\n              <label class=\"ig-switch-line\">\r\n                <input id=\"ig-lulo-retiro\" type=\"checkbox\">\r\n                <span><strong>Simular retiro anticipado<\/strong><span>Si eliminas el Programado antes del vencimiento, la proyecci\u00f3n usa la tasa actual de Lulo cuenta: 0,10% E.A.<\/span><\/span>\r\n              <\/label>\r\n              <div class=\"ig-field\" id=\"ig-lulo-retiro-fields\" style=\"display:none;\">\r\n                <label for=\"ig-lulo-dias-retiro\">D\u00edas mantenidos antes del retiro<\/label>\r\n                <input id=\"ig-lulo-dias-retiro\" type=\"number\" min=\"1\" max=\"89\" value=\"30\">\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <label class=\"ig-switch-line\">\r\n              <input id=\"ig-lulo-retencion-prog\" type=\"checkbox\">\r\n              <span><strong>Estimar retenci\u00f3n del 7% si corresponde<\/strong><span>Lulo eval\u00faa el rendimiento diario agregado entre la cuenta y sus funcionalidades. Esta herramienta usa solo el Programado simulado y, por eso, la estimaci\u00f3n puede diferir del descuento real.<\/span><\/span>\r\n            <\/label>\r\n\r\n            <div class=\"ig-inline-note is-coral\"><strong>Importante:<\/strong> un Bolsillo Programado no admite nuevas recargas despu\u00e9s de crearlo. Lulo tambi\u00e9n indica que, al vencimiento, puede renovarse autom\u00e1ticamente por el mismo plazo con la tasa vigente en la fecha de renovaci\u00f3n. Esta simulaci\u00f3n cubre solo el plazo actual.<\/div>\r\n          <\/div>\r\n\r\n          <div id=\"ig-lulo-msg\" class=\"ig-msg\" role=\"alert\"><\/div>\r\n\r\n          <div class=\"ig-actions\">\r\n            <button id=\"ig-lulo-calcular\" class=\"ig-btn\" type=\"button\">\r\n              <svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 5v14\"><\/path><path d=\"M5 12h14\"><\/path><\/svg>\r\n              Calcular rendimiento\r\n            <\/button>\r\n            <button id=\"ig-lulo-limpiar\" class=\"ig-btn ig-btn-secondary\" type=\"button\">Reiniciar<\/button>\r\n          <\/div>\r\n        <\/article>\r\n      <\/div>\r\n\r\n      <aside class=\"ig-side\" aria-label=\"Condiciones usadas en el simulador\">\r\n        <article class=\"ig-rate-card\">\r\n          <h3>Bolsillos Flex<\/h3>\r\n          <div class=\"ig-rate-list\">\r\n            <div class=\"ig-rate-item\"><span>Cliente est\u00e1ndar<\/span><strong>7,50% E.A.<\/strong><\/div>\r\n            <div class=\"ig-rate-item\"><span>Cliente Lulo Pro<\/span><strong>9,25% E.A.<\/strong><\/div>\r\n            <div class=\"ig-rate-item\"><span>Liquidaci\u00f3n<\/span><strong>Mensual<\/strong><\/div>\r\n          <\/div>\r\n          <p class=\"ig-muted\">Se calcula con el saldo promedio del mes anterior y Lulo abona los rendimientos durante los primeros d\u00edas del mes siguiente.<\/p>\r\n        <\/article>\r\n        <article class=\"ig-rate-card\">\r\n          <h3>Bolsillos Programados<\/h3>\r\n          <div class=\"ig-rate-list\">\r\n            <div class=\"ig-rate-item\"><span>60 d\u00edas est\u00e1ndar \/ Pro<\/span><strong>8,50% \/ 9,50%<\/strong><\/div>\r\n            <div class=\"ig-rate-item\"><span>90 d\u00edas est\u00e1ndar \/ Pro<\/span><strong>9,00% \/ 10,00%<\/strong><\/div>\r\n            <div class=\"ig-rate-item\"><span>Si se respeta el plazo<\/span><strong>Tasa fija<\/strong><\/div>\r\n          <\/div>\r\n          <p class=\"ig-muted\">Si se retira antes del plazo, se usa la tasa de Lulo cuenta. La simulaci\u00f3n usa 0,10% E.A., publicada actualmente por Lulo.<\/p>\r\n        <\/article>\r\n      <\/aside>\r\n    <\/div>\r\n\r\n    <div id=\"ig-lulo-results\" class=\"ig-results\" aria-live=\"polite\">\r\n      <section class=\"ig-result-band\">\r\n        <div class=\"ig-result-head\">\r\n          <div>\r\n            <h2>Resumen de la simulaci\u00f3n<\/h2>\r\n            <p id=\"ig-lulo-periodo\">Resultado estimado con los par\u00e1metros seleccionados.<\/p>\r\n          <\/div>\r\n          <span id=\"ig-lulo-badge\" class=\"ig-pill\"><span class=\"ig-dot\"><\/span> Escenario calculado<\/span>\r\n        <\/div>\r\n        <div class=\"ig-kpis\">\r\n          <div class=\"ig-kpi\"><span>Tasa aplicada<\/span><strong id=\"ig-lulo-kpi-rate\">--<\/strong><small id=\"ig-lulo-kpi-rate-note\">Tasa del escenario.<\/small><\/div>\r\n          <div class=\"ig-kpi\"><span>Ganancia neta generada<\/span><strong id=\"ig-lulo-kpi-net\">--<\/strong><small>Rendimiento bruto menos retenci\u00f3n estimada.<\/small><\/div>\r\n          <div class=\"ig-kpi\"><span>Ya abonado<\/span><strong id=\"ig-lulo-kpi-credited\">--<\/strong><small id=\"ig-lulo-kpi-credited-note\">Rendimiento incorporado al saldo.<\/small><\/div>\r\n          <div class=\"ig-kpi\"><span>Pendiente de abono<\/span><strong id=\"ig-lulo-kpi-pending\">--<\/strong><small id=\"ig-lulo-kpi-pending-note\">Rendimiento generado a\u00fan no abonado.<\/small><\/div>\r\n          <div class=\"ig-kpi is-main\"><span>Saldo econ\u00f3mico proyectado<\/span><strong id=\"ig-lulo-kpi-final\">--<\/strong><small>Saldo del bolsillo m\u00e1s el rendimiento pendiente.<\/small><\/div>\r\n        <\/div>\r\n        <div class=\"ig-insight\">\r\n          <span class=\"ig-icon-box is-coral\" aria-hidden=\"true\"><svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a4 4 0 0 1-4 4H7l-4 4V5a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4z\"><\/path><\/svg><\/span>\r\n          <p id=\"ig-lulo-insight\"><strong>Lectura r\u00e1pida:<\/strong> completa el formulario y calcula para ver la interpretaci\u00f3n.<\/p>\r\n        <\/div>\r\n        <div class=\"ig-pdf-actions\">\r\n          <button id=\"ig-lulo-pdf\" class=\"ig-btn ig-btn-coral\" type=\"button\" disabled>\r\n            <svg class=\"ig-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path><path d=\"m7 10 5 5 5-5\"><\/path><path d=\"M12 15V3\"><\/path><\/svg>\r\n            Descargar reporte PDF\r\n          <\/button>\r\n          <span id=\"ig-lulo-pdf-status\" class=\"ig-pdf-status\">Ejecuta el c\u00e1lculo para habilitar la descarga.<\/span>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section class=\"ig-chart-card\">\r\n        <div class=\"ig-section-head\">\r\n          <div>\r\n            <h3>Visual de crecimiento<\/h3>\r\n            <p>Curva estimada del saldo durante el periodo simulado.<\/p>\r\n          <\/div>\r\n          <span id=\"ig-lulo-chart-note\" class=\"ig-pill\" style=\"background:var(--ig-bg-a);color:var(--ig-accent-dark);\">Proyecci\u00f3n educativa<\/span>\r\n        <\/div>\r\n        <div id=\"ig-lulo-chart\" class=\"ig-chart\"><\/div>\r\n      <\/section>\r\n\r\n      <section class=\"ig-panel\">\r\n        <div class=\"ig-section-head\">\r\n          <div>\r\n            <h3 id=\"ig-lulo-table-title\">Detalle<\/h3>\r\n            <p id=\"ig-lulo-table-subtitle\">Tabla de rendimientos estimados.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"ig-table-wrap\">\r\n          <table>\r\n            <thead id=\"ig-lulo-table-head\"><\/thead>\r\n            <tbody id=\"ig-lulo-table-body\"><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/section>\r\n    <\/div>\r\n\r\n    <div class=\"ig-notes\">\r\n      <article class=\"ig-note\">\r\n        <h3>C\u00f3mo se estima Flex<\/h3>\r\n        <ul>\r\n          <li>La tasa actual usada es 7,50% E.A. est\u00e1ndar o 9,25% E.A. para Lulo Pro.<\/li>\r\n          <li>La herramienta registra el saldo simulado d\u00eda a d\u00eda y calcula el saldo promedio del periodo mensual.<\/li>\r\n          <li>Los rendimientos se muestran como abonados en los primeros d\u00edas del mes siguiente; el \u00faltimo periodo puede quedar pendiente.<\/li>\r\n        <\/ul>\r\n      <\/article>\r\n      <article class=\"ig-note\">\r\n        <h3>C\u00f3mo se estima Programado<\/h3>\r\n        <ul>\r\n          <li>Se proyecta un solo plazo de 60 o 90 d\u00edas con la tasa publicada para el perfil seleccionado.<\/li>\r\n          <li>Si simulas retiro anticipado, se usa 0,10% E.A., la tasa actualmente publicada para Lulo cuenta.<\/li>\r\n          <li>La renovaci\u00f3n autom\u00e1tica posterior no se proyecta porque la tasa futura puede cambiar.<\/li>\r\n        <\/ul>\r\n      <\/article>\r\n      <article class=\"ig-note\">\r\n        <h3>Retenci\u00f3n y alcance<\/h3>\r\n        <ul>\r\n          <li>Lulo publica una retenci\u00f3n del 7% cuando los rendimientos diarios agregados entre cuenta y Bolsillos superan 0,055 UVT.<\/li>\r\n          <li>La UVT 2026 utilizada internamente es $52.374; la estimaci\u00f3n de esta herramienta solo conoce el producto que est\u00e1s simulando.<\/li>\r\n          <li>El c\u00e1lculo es educativo y no sustituye la liquidaci\u00f3n realizada por Lulo Bank.<\/li>\r\n        <\/ul>\r\n      <\/article>\r\n    <\/div>\r\n\r\n    <div class=\"ig-source-card\">\r\n      <h3>Fuentes oficiales consultadas<\/h3>\r\n      <p>Par\u00e1metros revisados el 10\/08\/2026. Las tasas y condiciones pueden cambiar; valida siempre en Lulo Bank antes de tomar una decisi\u00f3n.<\/p>\r\n      <div class=\"ig-source-links\">\r\n        <a class=\"ig-source-link\" href=\"https:\/\/www.lulobank.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Lulo Bank \u2197<\/a>\r\n        <a class=\"ig-source-link\" href=\"https:\/\/ayuda.lulobank.com\/hc\/es\/articles\/28625884138772--Cu%C3%A1les-son-las-caracter%C3%ADsticas-de-los-bolsillos-y-su-rendimiento\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Caracter\u00edsticas de Bolsillos \u2197<\/a>\r\n        <a class=\"ig-source-link\" href=\"https:\/\/ayuda.lulobank.com\/hc\/es\/articles\/39884726241812--Qu%C3%A9-es-un-Bolsillo-Programado\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Bolsillos Programados \u2197<\/a>\r\n        <a class=\"ig-source-link\" href=\"https:\/\/ayuda.lulobank.com\/hc\/es\/articles\/16570449989780--Qu%C3%A9-significa-la-retenci%C3%B3n-en-la-fuente-en-los-movimientos-de-mi-bolsillo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Retenci\u00f3n en Bolsillos \u2197<\/a>\r\n        <a class=\"ig-source-link\" href=\"https:\/\/ayuda.lulobank.com\/hc\/es\/articles\/40455387582484--Los-bolsillos-programados-se-renuevan-autom%C3%A1ticamente\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Renovaci\u00f3n autom\u00e1tica \u2197<\/a>\r\n        <a class=\"ig-source-link\" href=\"https:\/\/www.lulobank.com\/lulo-pro\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Lulo Pro \u2197<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  const root = document.getElementById('ig-lulo-bolsillos-sim');\r\n  if (!root || root.dataset.ready === 'true') return;\r\n  root.dataset.ready = 'true';\r\n\r\n  const CONFIG = {\r\n    reviewed: '10\/08\/2026',\r\n    uvt2026: 52374,\r\n    retentionRate: 0.07,\r\n    retentionUvtFactor: 0.055,\r\n    luloCuentaRate: 0.001,\r\n    rates: {\r\n      flex: { estandar: 0.075, pro: 0.0925 },\r\n      programado: {\r\n        estandar: { 60: 0.085, 90: 0.09 },\r\n        pro: { 60: 0.095, 90: 0.10 }\r\n      }\r\n    },\r\n    logoUrl: 'https:\/\/inversionesguru.com\/co\/wp-content\/uploads\/sites\/3\/2026\/08\/inversionesguru_logo.png',\r\n    siteUrl: 'https:\/\/inversionesguru.com\/co\/',\r\n    pdfFile: 'reporte-bolsillos-lulo-bank.pdf'\r\n  };\r\n\r\n  const $ = (selector) => root.querySelector(selector);\r\n  const $$ = (selector) => Array.from(root.querySelectorAll(selector));\r\n\r\n  const els = {\r\n    monto: $('#ig-lulo-monto'),\r\n    fecha: $('#ig-lulo-fecha'),\r\n    meses: $('#ig-lulo-meses'),\r\n    aporte: $('#ig-lulo-aporte'),\r\n    diaAporte: $('#ig-lulo-dia-aporte'),\r\n    retencionFlex: $('#ig-lulo-retencion'),\r\n    retencionProg: $('#ig-lulo-retencion-prog'),\r\n    flexPanel: $('#ig-lulo-flex-panel'),\r\n    progPanel: $('#ig-lulo-programado-panel'),\r\n    retiro: $('#ig-lulo-retiro'),\r\n    retiroFields: $('#ig-lulo-retiro-fields'),\r\n    diasRetiro: $('#ig-lulo-dias-retiro'),\r\n    msg: $('#ig-lulo-msg'),\r\n    calcular: $('#ig-lulo-calcular'),\r\n    limpiar: $('#ig-lulo-limpiar'),\r\n    results: $('#ig-lulo-results'),\r\n    periodo: $('#ig-lulo-periodo'),\r\n    badge: $('#ig-lulo-badge'),\r\n    kpiRate: $('#ig-lulo-kpi-rate'),\r\n    kpiRateNote: $('#ig-lulo-kpi-rate-note'),\r\n    kpiNet: $('#ig-lulo-kpi-net'),\r\n    kpiCredited: $('#ig-lulo-kpi-credited'),\r\n    kpiCreditedNote: $('#ig-lulo-kpi-credited-note'),\r\n    kpiPending: $('#ig-lulo-kpi-pending'),\r\n    kpiPendingNote: $('#ig-lulo-kpi-pending-note'),\r\n    kpiFinal: $('#ig-lulo-kpi-final'),\r\n    insight: $('#ig-lulo-insight'),\r\n    chart: $('#ig-lulo-chart'),\r\n    chartNote: $('#ig-lulo-chart-note'),\r\n    tableTitle: $('#ig-lulo-table-title'),\r\n    tableSubtitle: $('#ig-lulo-table-subtitle'),\r\n    tableHead: $('#ig-lulo-table-head'),\r\n    tableBody: $('#ig-lulo-table-body'),\r\n    pdf: $('#ig-lulo-pdf'),\r\n    pdfStatus: $('#ig-lulo-pdf-status')\r\n  };\r\n\r\n  let lastReport = null;\r\n\r\n  const fmtMoney = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP', maximumFractionDigits: 0 });\r\n  const fmtMoney2 = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP', minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n  const fmtNum = new Intl.NumberFormat('es-CO', { maximumFractionDigits: 0 });\r\n  const fmtPercent = new Intl.NumberFormat('es-CO', { style: 'percent', minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n  const fmtDate = new Intl.DateTimeFormat('es-CO', { year: 'numeric', month: 'short', day: '2-digit' });\r\n  const fmtMonth = new Intl.DateTimeFormat('es-CO', { year: 'numeric', month: 'long' });\r\n\r\n  function round2(value) { return Math.round((Number(value) || 0) * 100) \/ 100; }\r\n  function dailyRate(annualRate) { return Math.pow(1 + annualRate, 1 \/ 365) - 1; }\r\n\r\n  function toYMD(date) {\r\n    const y = date.getFullYear();\r\n    const m = String(date.getMonth() + 1).padStart(2, '0');\r\n    const d = String(date.getDate()).padStart(2, '0');\r\n    return `${y}-${m}-${d}`;\r\n  }\r\n\r\n  function fromYMD(value) {\r\n    const parts = String(value || '').split('-').map(Number);\r\n    if (parts.length !== 3 || parts.some(Number.isNaN)) return null;\r\n    return new Date(parts[0], parts[1] - 1, parts[2]);\r\n  }\r\n\r\n  function addDays(date, days) {\r\n    const d = new Date(date);\r\n    d.setDate(d.getDate() + days);\r\n    return d;\r\n  }\r\n\r\n  function sameDay(a, b) {\r\n    return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n  }\r\n\r\n  function startOfMonth(date) { return new Date(date.getFullYear(), date.getMonth(), 1); }\r\n  function endOfMonth(date) { return new Date(date.getFullYear(), date.getMonth() + 1, 0); }\r\n  function firstOfNextMonth(date) { return new Date(date.getFullYear(), date.getMonth() + 1, 1); }\r\n\r\n  function parseMoney(value) {\r\n    if (typeof value !== 'string') return NaN;\r\n    let s = value.trim();\r\n    if (!s) return NaN;\r\n    s = s.replace(\/[^\\d.,-]\/g, '');\r\n    const lastDot = s.lastIndexOf('.');\r\n    const lastComma = s.lastIndexOf(',');\r\n    if (lastDot > -1 && lastComma > -1) {\r\n      if (lastComma > lastDot) s = s.replace(\/\\.\/g, '').replace(',', '.');\r\n      else s = s.replace(\/,\/g, '');\r\n    } else if (lastComma > -1) {\r\n      const decimals = s.length - lastComma - 1;\r\n      if (decimals > 0 && decimals <= 2) s = s.replace(\/\\.\/g, '').replace(',', '.');\r\n      else s = s.replace(\/,\/g, '');\r\n    } else if (lastDot > -1) {\r\n      const pieces = s.split('.');\r\n      const decimals = s.length - lastDot - 1;\r\n      if (pieces.length > 2 || decimals === 3) s = s.replace(\/\\.\/g, '');\r\n    }\r\n    const n = Number(s);\r\n    return Number.isFinite(n) ? n : NaN;\r\n  }\r\n\r\n  function formatMoneyInput(input, allowZero) {\r\n    const numeric = parseMoney(input.value);\r\n    if (!Number.isFinite(numeric) || numeric < 0 || (!allowZero && numeric === 0)) {\r\n      input.value = '';\r\n      return;\r\n    }\r\n    input.value = fmtNum.format(Math.round(numeric));\r\n  }\r\n\r\n  function bindMoneyInput(input, allowZero) {\r\n    input.addEventListener('input', () => {\r\n      const digits = input.value.replace(\/\\D\/g, '');\r\n      input.value = digits ? fmtNum.format(Number(digits)) : '';\r\n      hideMsg();\r\n      input.classList.remove('is-error');\r\n    });\r\n    input.addEventListener('blur', () => formatMoneyInput(input, allowZero));\r\n  }\r\n\r\n  function getProduct() {\r\n    return root.querySelector('input[name=\"ig-lulo-producto\"]:checked')?.value || 'flex';\r\n  }\r\n\r\n  function getRadio(name) {\r\n    return root.querySelector(`input[name=\"${name}\"]:checked`)?.value;\r\n  }\r\n\r\n  function showMsg(message, field) {\r\n    els.msg.textContent = message;\r\n    els.msg.classList.add('is-visible');\r\n    if (field) {\r\n      field.classList.add('is-error');\r\n      try { field.focus({ preventScroll: true }); } catch (e) { field.focus(); }\r\n      setTimeout(() => field.scrollIntoView({ behavior: 'smooth', block: 'center' }), 40);\r\n    }\r\n  }\r\n\r\n  function hideMsg() {\r\n    els.msg.textContent = '';\r\n    els.msg.classList.remove('is-visible');\r\n  }\r\n\r\n  function setProductPanels() {\r\n    const product = getProduct();\r\n    els.flexPanel.classList.toggle('is-hidden', product !== 'flex');\r\n    els.progPanel.classList.toggle('is-hidden', product !== 'programado');\r\n    hideResults();\r\n  }\r\n\r\n  function setRetiroFields() {\r\n    const show = els.retiro.checked;\r\n    els.retiroFields.style.display = show ? 'grid' : 'none';\r\n    const plazo = Number(getRadio('ig-lulo-plazo') || 60);\r\n    els.diasRetiro.max = String(Math.max(1, plazo - 1));\r\n    if (Number(els.diasRetiro.value) >= plazo) els.diasRetiro.value = String(Math.max(1, plazo - 1));\r\n  }\r\n\r\n  function retentionThreshold() {\r\n    return CONFIG.uvt2026 * CONFIG.retentionUvtFactor;\r\n  }\r\n\r\n  function taxProgrammed(gross, days, enabled) {\r\n    if (!enabled || gross <= 0) return { tax: 0, applied: false, daily: 0, threshold: retentionThreshold() };\r\n    const estimatedDaily = gross \/ Math.max(1, days);\r\n    const applied = estimatedDaily > retentionThreshold();\r\n    return {\r\n      tax: applied ? round2(gross * CONFIG.retentionRate) : 0,\r\n      applied,\r\n      daily: estimatedDaily,\r\n      threshold: retentionThreshold()\r\n    };\r\n  }\r\n\r\n  function validate() {\r\n    hideMsg();\r\n    $$('#ig-lulo-bolsillos-sim input, #ig-lulo-bolsillos-sim select').forEach(el => el.classList.remove('is-error'));\r\n\r\n    const product = getProduct();\r\n    const rawMonto = els.monto.value.trim();\r\n    const monto = rawMonto === '' && product === 'flex' ? 0 : parseMoney(rawMonto);\r\n    const fecha = fromYMD(els.fecha.value);\r\n\r\n    if (!fecha || Number.isNaN(fecha.getTime())) {\r\n      showMsg('Selecciona una fecha de inicio v\u00e1lida.', els.fecha);\r\n      return null;\r\n    }\r\n\r\n    if (product === 'flex') {\r\n      const aporte = Math.max(0, Math.round(parseMoney(els.aporte.value) || 0));\r\n      if (!Number.isFinite(monto) || monto < 0) {\r\n        showMsg('En Bolsillo Flex el saldo inicial puede ser $0 o un valor positivo.', els.monto);\r\n        return null;\r\n      }\r\n      if (monto === 0 && aporte === 0) {\r\n        showMsg('Si empiezas Flex desde $0, agrega un aporte mensual mayor a $0 para generar una proyecci\u00f3n.', els.aporte);\r\n        return null;\r\n      }\r\n      const meses = Number(els.meses.value);\r\n      if (!Number.isInteger(meses) || meses < 1 || meses > 36) {\r\n        showMsg('Para Bolsillo Flex, el n\u00famero de meses debe estar entre 1 y 36.', els.meses);\r\n        return null;\r\n      }\r\n      const diaAporte = Number(els.diaAporte.value);\r\n      if (!Number.isInteger(diaAporte) || diaAporte < 1 || diaAporte > 31) {\r\n        showMsg('El d\u00eda del aporte mensual debe estar entre 1 y 31.', els.diaAporte);\r\n        return null;\r\n      }\r\n      return { monto: Math.round(monto), fecha, product, aporte, meses, diaAporte };\r\n    }\r\n\r\n    if (!Number.isFinite(monto) || monto <= 0) {\r\n      showMsg('Para un Bolsillo Programado ingresa un monto inicial mayor a $0 COP.', els.monto);\r\n      return null;\r\n    }\r\n\r\n    if (els.retiro.checked) {\r\n      const plazo = Number(getRadio('ig-lulo-plazo') || 60);\r\n      const dias = Number(els.diasRetiro.value);\r\n      if (!Number.isInteger(dias) || dias < 1 || dias >= plazo) {\r\n        showMsg('Para retiro anticipado, los d\u00edas mantenidos deben ser menores al plazo elegido.', els.diasRetiro);\r\n        return null;\r\n      }\r\n    }\r\n\r\n    return { monto: Math.round(monto), fecha, product };\r\n  }\r\n\r\n  function contributionDateForMonth(monthDate, selectedDay) {\r\n    const last = endOfMonth(monthDate).getDate();\r\n    return new Date(monthDate.getFullYear(), monthDate.getMonth(), Math.min(selectedDay, last));\r\n  }\r\n\r\n  function calcFlex({ monto, fecha, aporte, meses, diaAporte }) {\r\n    const perfil = getRadio('ig-lulo-flex-perfil') || 'estandar';\r\n    const annualRate = CONFIG.rates.flex[perfil];\r\n    const dRate = dailyRate(annualRate);\r\n    const applyTax = els.retencionFlex.checked;\r\n    const threshold = retentionThreshold();\r\n\r\n    let balance = monto;\r\n    let pendingFromPrevious = 0;\r\n    let totalGross = 0;\r\n    let totalTax = 0;\r\n    let totalContributions = 0;\r\n    let alreadyCredited = 0;\r\n    let cursor = new Date(fecha);\r\n    const rows = [];\r\n    const chart = [{ label: 'Inicio', value: balance }];\r\n\r\n    for (let periodIndex = 0; periodIndex < meses; periodIndex++) {\r\n      const periodStart = periodIndex === 0 ? new Date(cursor) : startOfMonth(cursor);\r\n      const periodEnd = endOfMonth(periodStart);\r\n\r\n      let creditedAtStart = 0;\r\n      if (periodIndex > 0 && pendingFromPrevious > 0) {\r\n        creditedAtStart = pendingFromPrevious;\r\n        balance = round2(balance + creditedAtStart);\r\n        alreadyCredited = round2(alreadyCredited + creditedAtStart);\r\n        pendingFromPrevious = 0;\r\n      }\r\n\r\n      const scheduledContributionDate = contributionDateForMonth(periodStart, diaAporte);\r\n      let contributionThisPeriod = 0;\r\n      let gross = 0;\r\n      let tax = 0;\r\n      let sumBalances = 0;\r\n      let days = 0;\r\n      let taxedDays = 0;\r\n      let day = new Date(periodStart);\r\n\r\n      while (day <= periodEnd) {\r\n        if (aporte > 0 && sameDay(day, scheduledContributionDate) && day >= periodStart) {\r\n          balance = round2(balance + aporte);\r\n          contributionThisPeriod = round2(contributionThisPeriod + aporte);\r\n          totalContributions = round2(totalContributions + aporte);\r\n        }\r\n\r\n        sumBalances += balance;\r\n        days += 1;\r\n\r\n        const interestToday = round2(balance * dRate);\r\n        gross = round2(gross + interestToday);\r\n        if (applyTax && interestToday > threshold) {\r\n          tax = round2(tax + round2(interestToday * CONFIG.retentionRate));\r\n          taxedDays += 1;\r\n        }\r\n\r\n        day = addDays(day, 1);\r\n      }\r\n\r\n      const averageBalance = days ? sumBalances \/ days : balance;\r\n      const net = round2(gross - tax);\r\n      pendingFromPrevious = net;\r\n      totalGross = round2(totalGross + gross);\r\n      totalTax = round2(totalTax + tax);\r\n\r\n      rows.push({\r\n        periodo: fmtMonth.format(periodStart),\r\n        dias: days,\r\n        promedio: averageBalance,\r\n        aporte: contributionThisPeriod,\r\n        abonoAnterior: creditedAtStart,\r\n        bruto: gross,\r\n        retencion: tax,\r\n        diasRetencion: taxedDays,\r\n        neto: net,\r\n        estado: periodIndex === meses - 1 ? 'Pendiente \u00b7 primeros d\u00edas del mes siguiente' : 'Abonado estimado al inicio del mes siguiente',\r\n        saldoDisponible: balance,\r\n        saldoEconomico: round2(balance + net)\r\n      });\r\n\r\n      chart.push({ label: fmtMonth.format(periodStart).slice(0, 3), value: round2(balance + net) });\r\n      cursor = firstOfNextMonth(periodStart);\r\n    }\r\n\r\n    const pending = round2(pendingFromPrevious);\r\n    const netTotal = round2(totalGross - totalTax);\r\n    const principal = round2(monto + totalContributions);\r\n    const economicFinal = round2(balance + pending);\r\n\r\n    return {\r\n      type: 'Bolsillo Flex',\r\n      badge: perfil === 'pro' ? 'Flex \u00b7 Lulo Pro' : 'Flex \u00b7 Est\u00e1ndar',\r\n      rate: annualRate,\r\n      rateNote: perfil === 'pro' ? '9,25% E.A. con Lulo Pro activo.' : '7,50% E.A. para perfil est\u00e1ndar.',\r\n      period: `${fmtDate.format(fecha)} \u00b7 ${meses} mes${meses === 1 ? '' : 'es'} calendario`,\r\n      gross: totalGross,\r\n      tax: totalTax,\r\n      net: netTotal,\r\n      credited: alreadyCredited,\r\n      pending,\r\n      cashBalance: balance,\r\n      finalAmount: economicFinal,\r\n      principal,\r\n      contributions: totalContributions,\r\n      chart,\r\n      rows,\r\n      table: {\r\n        title: 'Detalle mensual del Bolsillo Flex',\r\n        subtitle: 'Saldo promedio simulado por periodo, rendimiento generado y estado estimado del abono.',\r\n        head: ['Periodo', 'D\u00edas', 'Saldo promedio', 'Aporte', 'Inter\u00e9s bruto', 'Retenci\u00f3n', 'Inter\u00e9s neto', 'Estado', 'Saldo econ\u00f3mico'],\r\n        rows: rows.map(r => [\r\n          r.periodo,\r\n          String(r.dias),\r\n          fmtMoney.format(r.promedio),\r\n          fmtMoney.format(r.aporte),\r\n          fmtMoney2.format(r.bruto),\r\n          fmtMoney2.format(r.retencion),\r\n          fmtMoney2.format(r.neto),\r\n          r.estado,\r\n          fmtMoney.format(r.saldoEconomico)\r\n        ])\r\n      },\r\n      insight: `La proyecci\u00f3n registr\u00f3 el saldo de cada d\u00eda para estimar el promedio mensual. ${totalContributions > 0 ? `Se a\u00f1adieron ${fmtMoney.format(totalContributions)} en aportes programados.` : 'No se a\u00f1adieron aportes mensuales.'} El \u00faltimo rendimiento, ${fmtMoney2.format(pending)}, queda pendiente porque Lulo lo abona durante los primeros d\u00edas del mes siguiente.`,\r\n      taxContext: applyTax\r\n        ? `Retenci\u00f3n estimada con 7% solo en d\u00edas en que este Bolsillo super\u00f3 ${fmtMoney2.format(threshold)} de rendimiento diario. El c\u00e1lculo real de Lulo agrega tambi\u00e9n otros rendimientos de la cuenta y Bolsillos.`\r\n        : 'Retenci\u00f3n estimada desactivada por el usuario.'\r\n    };\r\n  }\r\n\r\n  function calcProgramado({ monto, fecha }) {\r\n    const perfil = getRadio('ig-lulo-prog-perfil') || 'estandar';\r\n    const plazo = Number(getRadio('ig-lulo-plazo') || 60);\r\n    const early = els.retiro.checked;\r\n    const days = early ? Math.max(1, Math.min(plazo - 1, Number(els.diasRetiro.value) || 1)) : plazo;\r\n    const annualRate = early ? CONFIG.luloCuentaRate : CONFIG.rates.programado[perfil][plazo];\r\n    const gross = round2(monto * (Math.pow(1 + annualRate, days \/ 365) - 1));\r\n    const taxInfo = taxProgrammed(gross, days, els.retencionProg.checked);\r\n    const tax = taxInfo.tax;\r\n    const net = round2(gross - tax);\r\n    const finalAmount = round2(monto + net);\r\n    const endDate = addDays(fecha, days - 1);\r\n\r\n    const chart = [];\r\n    const steps = Math.min(days, 12);\r\n    for (let i = 0; i <= steps; i++) {\r\n      const d = Math.round((days \/ steps) * i);\r\n      const g = monto * (Math.pow(1 + annualRate, d \/ 365) - 1);\r\n      chart.push({ label: `D\u00eda ${d}`, value: monto + Math.max(0, g) });\r\n    }\r\n\r\n    const rows = [[\r\n      early ? 'Retiro anticipado' : `Plazo ${plazo} d\u00edas`,\r\n      String(days),\r\n      fmtPercent.format(annualRate),\r\n      fmtMoney2.format(gross),\r\n      fmtMoney2.format(tax),\r\n      fmtMoney2.format(net),\r\n      fmtDate.format(endDate),\r\n      fmtMoney.format(finalAmount)\r\n    ]];\r\n\r\n    return {\r\n      type: 'Bolsillo Programado',\r\n      badge: early ? 'Programado \u00b7 retiro anticipado' : `Programado \u00b7 ${plazo} d\u00edas`,\r\n      rate: annualRate,\r\n      rateNote: early ? 'Retiro anticipado: tasa actual de Lulo cuenta 0,10% E.A.' : `${fmtPercent.format(annualRate)} E.A. fija durante este plazo si se respeta el vencimiento.`,\r\n      period: `${fmtDate.format(fecha)} al ${fmtDate.format(endDate)} \u00b7 ${days} d\u00edas`,\r\n      gross,\r\n      tax,\r\n      net,\r\n      credited: early ? net : 0,\r\n      pending: early ? 0 : net,\r\n      cashBalance: early ? finalAmount : monto,\r\n      finalAmount,\r\n      principal: monto,\r\n      contributions: 0,\r\n      chart,\r\n      rows,\r\n      table: {\r\n        title: 'Detalle del Bolsillo Programado',\r\n        subtitle: early ? 'El retiro anticipado usa la tasa actual de Lulo cuenta y no la tasa programada.' : 'Proyecci\u00f3n para un solo plazo. La renovaci\u00f3n autom\u00e1tica posterior no se incluye.',\r\n        head: ['Escenario', 'D\u00edas', 'Tasa E.A.', 'Inter\u00e9s bruto', 'Retenci\u00f3n', 'Inter\u00e9s neto', 'Finalizaci\u00f3n estimada', 'Monto final'],\r\n        rows\r\n      },\r\n      insight: early\r\n        ? `Al salir antes del plazo, la simulaci\u00f3n reemplaza la tasa Programada por 0,10% E.A., la tasa actualmente publicada para Lulo cuenta. El dinero y el rendimiento estimado se muestran disponibles en la fecha de salida.`\r\n        : `Si mantienes el dinero durante ${plazo} d\u00edas, la simulaci\u00f3n conserva la tasa elegida hasta el vencimiento. Lulo indica que el Programado puede renovarse autom\u00e1ticamente despu\u00e9s, pero esa renovaci\u00f3n no se proyecta porque usar\u00eda la tasa vigente en ese momento.`,\r\n      taxContext: els.retencionProg.checked\r\n        ? `Retenci\u00f3n estimada del 7% si el rendimiento diario aproximado de este Programado supera ${fmtMoney2.format(taxInfo.threshold)}. Lulo eval\u00faa el rendimiento agregado entre cuenta y funcionalidades, por lo que el descuento real puede diferir.`\r\n        : 'Retenci\u00f3n estimada desactivada por el usuario.'\r\n    };\r\n  }\r\n\r\n  function drawChart(points) {\r\n    if (!points || points.length < 2) {\r\n      els.chart.innerHTML = '';\r\n      return;\r\n    }\r\n    const width = 100;\r\n    const height = 100;\r\n    const values = points.map(p => p.value);\r\n    const min = Math.min(...values);\r\n    const max = Math.max(...values);\r\n    const range = max - min || 1;\r\n    const coords = points.map((p, i) => {\r\n      const x = (i \/ (points.length - 1)) * width;\r\n      const y = height - (((p.value - min) \/ range) * 72 + 14);\r\n      return `${x.toFixed(2)},${y.toFixed(2)}`;\r\n    });\r\n    const line = coords.join(' L ');\r\n    const area = `M 0,100 L ${line} L 100,100 Z`;\r\n    const last = points[points.length - 1];\r\n    const first = points[0];\r\n    els.chart.innerHTML = `\r\n      <svg viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\r\n        <defs>\r\n          <linearGradient id=\"igLuloGrad\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\r\n            <stop offset=\"0%\" stop-color=\"#0f9f7a\" stop-opacity=\"0.28\"><\/stop>\r\n            <stop offset=\"100%\" stop-color=\"#0f9f7a\" stop-opacity=\"0\"><\/stop>\r\n          <\/linearGradient>\r\n        <\/defs>\r\n        <path d=\"${area}\" fill=\"url(#igLuloGrad)\"><\/path>\r\n        <path class=\"ig-chart-line\" d=\"M ${line}\" fill=\"none\" stroke=\"#0f9f7a\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\r\n      <\/svg>`;\r\n    els.chartNote.textContent = `${fmtMoney.format(first.value)} \u2192 ${fmtMoney.format(last.value)}`;\r\n  }\r\n\r\n  function renderTable(table) {\r\n    els.tableTitle.textContent = table.title;\r\n    els.tableSubtitle.textContent = table.subtitle;\r\n    els.tableHead.innerHTML = `<tr>${table.head.map(h => `<th>${h}<\/th>`).join('')}<\/tr>`;\r\n    els.tableBody.innerHTML = table.rows.map(row => `<tr>${row.map((cell, index) => `<td class=\"${index > 1 ? 'ig-num' : ''}\">${cell}<\/td>`).join('')}<\/tr>`).join('');\r\n  }\r\n\r\n  function render(result) {\r\n    els.kpiRate.textContent = fmtPercent.format(result.rate) + ' E.A.';\r\n    els.kpiRateNote.textContent = result.rateNote;\r\n    els.kpiNet.textContent = fmtMoney2.format(result.net);\r\n    els.kpiCredited.textContent = fmtMoney2.format(result.credited);\r\n    els.kpiPending.textContent = fmtMoney2.format(result.pending);\r\n    els.kpiFinal.textContent = fmtMoney.format(result.finalAmount);\r\n    els.kpiCreditedNote.textContent = result.type === 'Bolsillo Flex' ? 'Rendimiento de periodos anteriores incorporado al saldo.' : (result.credited > 0 ? 'Disponible en el escenario de retiro anticipado.' : 'Se entrega al finalizar el plazo.');\r\n    els.kpiPendingNote.textContent = result.pending > 0 ? 'Generado, pero a\u00fan no abonado dentro del periodo simulado.' : 'No hay rendimiento pendiente en este escenario.';\r\n    els.periodo.textContent = result.period;\r\n    els.badge.innerHTML = `<span class=\"ig-dot\"><\/span> ${result.badge}`;\r\n    els.insight.innerHTML = `<strong>Lectura r\u00e1pida:<\/strong> ${result.insight}<br><span style=\"display:block;margin-top:5px;opacity:.9\">${result.taxContext}<\/span>`;\r\n    drawChart(result.chart);\r\n    renderTable(result.table);\r\n    els.results.classList.add('is-visible');\r\n    els.pdf.disabled = false;\r\n    els.pdfStatus.textContent = 'Reporte listo con el logo de InversionesGuru.';\r\n\r\n    lastReport = buildReport(result);\r\n    setTimeout(() => els.results.scrollIntoView({ behavior: 'smooth', block: 'start' }), 70);\r\n  }\r\n\r\n  function hideResults() {\r\n    els.results.classList.remove('is-visible');\r\n    els.pdf.disabled = true;\r\n    els.pdfStatus.textContent = 'Ejecuta el c\u00e1lculo para habilitar la descarga.';\r\n    lastReport = null;\r\n  }\r\n\r\n  function calculate() {\r\n    const base = validate();\r\n    if (!base) {\r\n      hideResults();\r\n      return;\r\n    }\r\n    const result = base.product === 'flex' ? calcFlex(base) : calcProgramado(base);\r\n    render(result);\r\n  }\r\n\r\n  function reset() {\r\n    els.monto.value = '';\r\n    els.fecha.value = toYMD(new Date());\r\n    els.meses.value = '6';\r\n    els.aporte.value = '';\r\n    els.diaAporte.value = '15';\r\n    els.retencionFlex.checked = false;\r\n    els.retencionProg.checked = false;\r\n    els.retiro.checked = false;\r\n    els.diasRetiro.value = '30';\r\n    root.querySelector('input[name=\"ig-lulo-producto\"][value=\"flex\"]').checked = true;\r\n    root.querySelector('input[name=\"ig-lulo-flex-perfil\"][value=\"estandar\"]').checked = true;\r\n    root.querySelector('input[name=\"ig-lulo-plazo\"][value=\"60\"]').checked = true;\r\n    root.querySelector('input[name=\"ig-lulo-prog-perfil\"][value=\"estandar\"]').checked = true;\r\n    setProductPanels();\r\n    setRetiroFields();\r\n    hideMsg();\r\n    hideResults();\r\n  }\r\n\r\n  function buildReport(result) {\r\n    const product = getProduct() === 'flex' ? 'Bolsillo Flex' : 'Bolsillo Programado';\r\n    const inputs = [\r\n      ['Monto inicial', els.monto.value || (product === 'Bolsillo Flex' ? '$0' : 'N\/A')],\r\n      ['Producto', product],\r\n      ['Fecha de inicio', els.fecha.value || 'N\/A'],\r\n      ['Escenario', result.badge],\r\n      ['Tasa aplicada', fmtPercent.format(result.rate) + ' E.A.'],\r\n      ['UVT 2026 usada internamente', fmtMoney.format(CONFIG.uvt2026)]\r\n    ];\r\n\r\n    if (product === 'Bolsillo Flex') {\r\n      inputs.push(['Aporte mensual', els.aporte.value || '$0']);\r\n      inputs.push(['D\u00eda del aporte', els.diaAporte.value || '15']);\r\n    } else {\r\n      inputs.push(['Retiro anticipado', els.retiro.checked ? 'S\u00ed' : 'No']);\r\n    }\r\n\r\n    return {\r\n      title: 'Reporte de simulaci\u00f3n \u00b7 Bolsillos Lulo Bank',\r\n      inputs,\r\n      summary: [\r\n        ['Periodo simulado', result.period],\r\n        ['Capital aportado', fmtMoney2.format(result.principal)],\r\n        ['Rendimiento bruto', fmtMoney2.format(result.gross)],\r\n        ['Retenci\u00f3n estimada', fmtMoney2.format(result.tax)],\r\n        ['Ganancia neta generada', fmtMoney2.format(result.net)],\r\n        ['Ya abonado', fmtMoney2.format(result.credited)],\r\n        ['Pendiente de abono', fmtMoney2.format(result.pending)],\r\n        ['Saldo econ\u00f3mico proyectado', fmtMoney2.format(result.finalAmount)]\r\n      ],\r\n      table: result.table,\r\n      disclaimer: 'Reporte educativo de InversionesGuru. Las tasas y condiciones pueden cambiar. En Flex, el primer mes parcial solo modela los d\u00edas comprendidos desde la fecha seleccionada. La retenci\u00f3n real se determina sobre los rendimientos diarios agregados entre la Lulo cuenta y sus funcionalidades; esta calculadora solo conoce el escenario simulado. Valida siempre las condiciones vigentes en Lulo Bank.'\r\n    };\r\n  }\r\n\r\n  function ensureJsPdf() {\r\n    if (window.jspdf && window.jspdf.jsPDF) return Promise.resolve(window.jspdf.jsPDF);\r\n    return new Promise((resolve, reject) => {\r\n      const existing = document.querySelector('script[data-ig-lulo-jspdf=\"true\"]');\r\n      if (existing) {\r\n        existing.addEventListener('load', () => resolve(window.jspdf.jsPDF), { once: true });\r\n        existing.addEventListener('error', reject, { once: true });\r\n        return;\r\n      }\r\n      const script = document.createElement('script');\r\n      script.src = 'https:\/\/cdn.jsdelivr.net\/npm\/jspdf@2.5.1\/dist\/jspdf.umd.min.js';\r\n      script.async = true;\r\n      script.dataset.igLuloJspdf = 'true';\r\n      script.onload = () => resolve(window.jspdf.jsPDF);\r\n      script.onerror = reject;\r\n      document.head.appendChild(script);\r\n    });\r\n  }\r\n\r\n  function loadLogoDataUrl() {\r\n    return new Promise((resolve, reject) => {\r\n      const img = new Image();\r\n      img.crossOrigin = 'anonymous';\r\n      img.onload = () => {\r\n        try {\r\n          const canvas = document.createElement('canvas');\r\n          canvas.width = img.naturalWidth || 250;\r\n          canvas.height = img.naturalHeight || 100;\r\n          const ctx = canvas.getContext('2d');\r\n          ctx.drawImage(img, 0, 0);\r\n          resolve(canvas.toDataURL('image\/png'));\r\n        } catch (error) { reject(error); }\r\n      };\r\n      img.onerror = reject;\r\n      img.src = CONFIG.logoUrl + (CONFIG.logoUrl.includes('?') ? '&' : '?') + 'v=20260810';\r\n    });\r\n  }\r\n\r\n  function safe(value) { return String(value == null ? '' : value).replace(\/\\s+\/g, ' ').trim(); }\r\n  function escapeHtml(value) { return safe(value).replace(\/[&<>\"']\/g, ch => ({ '&':'&amp;', '<':'&lt;', '>':'&gt;', '\"':'&quot;', \"'\":'&#039;' }[ch])); }\r\n\r\n  function exportWithJsPdf(jsPDF, report, logoData) {\r\n    const doc = new jsPDF({ unit: 'mm', format: 'a4' });\r\n    const margin = 18;\r\n    const width = 210 - margin * 2;\r\n    let y = 36;\r\n\r\n    function decorate() {\r\n      if (logoData) {\r\n        try { doc.addImage(logoData, 'PNG', margin, 10.5, 35, 14); }\r\n        catch (e) { logoData = null; }\r\n      }\r\n      if (!logoData) {\r\n        doc.setFillColor(15,159,122);\r\n        doc.roundedRect(margin, 12, 12, 12, 2, 2, 'F');\r\n        doc.setTextColor(255,255,255);\r\n        doc.setFontSize(8);\r\n        doc.setFont('helvetica','bold');\r\n        doc.text('IG', margin + 3.2, 19.6);\r\n        doc.setTextColor(23,51,47);\r\n        doc.setFontSize(11);\r\n        doc.text('InversionesGuru', margin + 16, 17);\r\n      }\r\n      doc.setTextColor(91,111,104);\r\n      doc.setFontSize(8);\r\n      doc.setFont('helvetica','normal');\r\n      doc.text(CONFIG.siteUrl, margin + 39, 22);\r\n      doc.setDrawColor(215,228,223);\r\n      doc.line(margin, 28, 210 - margin, 28);\r\n      doc.setTextColor(226,239,234);\r\n      doc.setFontSize(20);\r\n      doc.setFont('helvetica','bold');\r\n      doc.text('inversionesguru.com\/co\/', 33, 164, { angle: 32 });\r\n      doc.text('inversionesguru.com\/co\/', 70, 236, { angle: 32 });\r\n      y = 36;\r\n    }\r\n\r\n    function next(required) {\r\n      if (y + required <= 278) return;\r\n      doc.addPage();\r\n      decorate();\r\n    }\r\n\r\n    function lines(value, maxWidth) { return doc.splitTextToSize(safe(value), maxWidth); }\r\n\r\n    function section(title) {\r\n      next(13);\r\n      doc.setFillColor(255,243,236);\r\n      doc.roundedRect(margin, y, width, 8, 2, 2, 'F');\r\n      doc.setTextColor(200,79,52);\r\n      doc.setFont('helvetica','bold');\r\n      doc.setFontSize(10);\r\n      doc.text(title, margin + 3, y + 5.4);\r\n      y += 12;\r\n    }\r\n\r\n    function keyValues(rows) {\r\n      rows.forEach(row => {\r\n        next(8);\r\n        const left = lines(row[0], 70);\r\n        const right = lines(row[1], 98);\r\n        const h = Math.max(left.length, right.length);\r\n        doc.setFont('helvetica','normal');\r\n        doc.setFontSize(8.5);\r\n        doc.setTextColor(91,111,104);\r\n        doc.text(left, margin, y);\r\n        doc.setFont('helvetica','bold');\r\n        doc.setTextColor(23,51,47);\r\n        doc.text(right, margin + 74, y);\r\n        y += h * 4.2 + 2;\r\n        doc.setDrawColor(232,239,236);\r\n        doc.line(margin, y - 1, 210 - margin, y - 1);\r\n      });\r\n      y += 2;\r\n    }\r\n\r\n    function drawTable(table) {\r\n      if (!table || !table.rows || !table.rows.length) return;\r\n      section(table.title);\r\n      const cols = table.head.length;\r\n      const colW = width \/ cols;\r\n      function drawRow(row, header) {\r\n        const cells = Array.from({length: cols}, (_, i) => lines(row[i] || '', colW - 2));\r\n        const rowLines = Math.max(...cells.map(c => c.length));\r\n        const rowH = Math.max(6, rowLines * 3.2 + 2);\r\n        next(rowH + 2);\r\n        doc.setFillColor(header ? 23 : 255, header ? 51 : 255, header ? 47 : 255);\r\n        if (!header && Math.round(y) % 2 === 0) doc.setFillColor(239,251,246);\r\n        doc.rect(margin, y - 3.6, width, rowH, 'F');\r\n        doc.setFont('helvetica', header ? 'bold' : 'normal');\r\n        doc.setFontSize(header ? 5.9 : 5.8);\r\n        doc.setTextColor(header ? 255 : 36, header ? 255 : 68, header ? 255 : 62);\r\n        cells.forEach((cell, i) => doc.text(cell, margin + i * colW + 1, y));\r\n        y += rowH;\r\n      }\r\n      drawRow(table.head, true);\r\n      table.rows.slice(0, 60).forEach(row => drawRow(row, false));\r\n      if (table.rows.length > 60) {\r\n        next(7);\r\n        doc.setTextColor(91,111,104);\r\n        doc.setFontSize(8);\r\n        doc.text('La tabla fue recortada en el PDF. Consulta el detalle completo en la calculadora.', margin, y + 2);\r\n        y += 7;\r\n      }\r\n    }\r\n\r\n    decorate();\r\n    doc.setTextColor(23,51,47);\r\n    doc.setFont('helvetica','bold');\r\n    doc.setFontSize(18);\r\n    const titleLines = lines(report.title, width);\r\n    doc.text(titleLines, margin, y);\r\n    y += titleLines.length * 7;\r\n    doc.setTextColor(91,111,104);\r\n    doc.setFont('helvetica','normal');\r\n    doc.setFontSize(9);\r\n    doc.text(lines('Reporte informativo generado el ' + new Date().toLocaleString('es-CO'), width), margin, y);\r\n    y += 10;\r\n\r\n    section('Datos ingresados');\r\n    keyValues(report.inputs);\r\n    section('Resumen estimado');\r\n    keyValues(report.summary);\r\n    drawTable(report.table);\r\n    section('Nota informativa');\r\n    doc.setTextColor(91,111,104);\r\n    doc.setFont('helvetica','normal');\r\n    doc.setFontSize(8.5);\r\n    const note = lines(report.disclaimer, width);\r\n    next(note.length * 4 + 8);\r\n    doc.text(note, margin, y);\r\n\r\n    const pages = doc.getNumberOfPages();\r\n    for (let i = 1; i <= pages; i++) {\r\n      doc.setPage(i);\r\n      doc.setDrawColor(215,228,223);\r\n      doc.line(margin, 286, 210 - margin, 286);\r\n      doc.setTextColor(91,111,104);\r\n      doc.setFontSize(7.5);\r\n      doc.text(CONFIG.siteUrl + '  |  Reporte informativo', margin, 291);\r\n      doc.text('P\u00e1gina ' + i + ' de ' + pages, 210 - margin, 291, { align: 'right' });\r\n    }\r\n\r\n    doc.save(CONFIG.pdfFile);\r\n  }\r\n\r\n  function printFallback(report) {\r\n    const popup = window.open('', '_blank');\r\n    if (!popup) throw new Error('No fue posible abrir la vista de impresi\u00f3n.');\r\n    const list = rows => rows.map(row => `<tr><th>${escapeHtml(row[0])}<\/th><td>${escapeHtml(row[1])}<\/td><\/tr>`).join('');\r\n    const table = report.table ? `<h2>${escapeHtml(report.table.title)}<\/h2><table><thead><tr>${report.table.head.map(h => `<th>${escapeHtml(h)}<\/th>`).join('')}<\/tr><\/thead><tbody>${report.table.rows.map(row => `<tr>${row.map(cell => `<td>${escapeHtml(cell)}<\/td>`).join('')}<\/tr>`).join('')}<\/tbody><\/table>` : '';\r\n    popup.document.write(`<!doctype html><html><head><meta charset=\"utf-8\"><title>${escapeHtml(report.title)}<\/title><style>body{font-family:Arial,sans-serif;color:#17332f;padding:34px;position:relative}body:before{content:\"inversionesguru.com\/co\/\";position:fixed;inset:45% 0;text-align:center;transform:rotate(-28deg);font-size:42px;color:#dfeee9;z-index:-1}.brand{display:flex;align-items:center;gap:14px}.brand img{width:150px;height:auto}h1{font-size:24px}h2{margin-top:24px;color:#c84f34;font-size:16px}table{border-collapse:collapse;width:100%;margin-top:8px}th,td{border-bottom:1px solid #d8e5e0;padding:8px;text-align:left;font-size:12px}.url{color:#08755d;font-weight:700}<\/style><\/head><body><div class=\"brand\"><img decoding=\"async\" src=\"${CONFIG.logoUrl}\" alt=\"InversionesGuru\"><div class=\"url\">${CONFIG.siteUrl}<\/div><\/div><h1>${escapeHtml(report.title)}<\/h1><p>Reporte informativo. Usa Imprimir y selecciona Guardar como PDF.<\/p><h2>Datos ingresados<\/h2><table>${list(report.inputs)}<\/table><h2>Resumen estimado<\/h2><table>${list(report.summary)}<\/table>${table}<p>${escapeHtml(report.disclaimer)}<\/p><\/body><\/html>`);\r\n    popup.document.close();\r\n    popup.focus();\r\n    popup.print();\r\n  }\r\n\r\n  async function downloadPdf() {\r\n    if (!lastReport) return;\r\n    const old = els.pdf.innerHTML;\r\n    els.pdf.disabled = true;\r\n    els.pdf.textContent = 'Generando PDF...';\r\n    els.pdfStatus.textContent = 'Preparando tu reporte descargable.';\r\n    try {\r\n      const [jsPDF, logoData] = await Promise.all([\r\n        ensureJsPdf(),\r\n        loadLogoDataUrl().catch(() => null)\r\n      ]);\r\n      exportWithJsPdf(jsPDF, lastReport, logoData);\r\n      els.pdfStatus.textContent = logoData ? 'PDF descargado con el logo de InversionesGuru.' : 'PDF descargado. El logo no pudo cargarse y se us\u00f3 el identificador IG.';\r\n    } catch (error) {\r\n      try {\r\n        printFallback(lastReport);\r\n        els.pdfStatus.textContent = 'Se abri\u00f3 la vista de impresi\u00f3n. Elige Guardar como PDF.';\r\n      } catch (fallbackError) {\r\n        els.pdfStatus.textContent = 'No fue posible generar el PDF. Revisa ventanas emergentes o permisos de descarga.';\r\n      }\r\n    } finally {\r\n      els.pdf.innerHTML = old;\r\n      els.pdf.disabled = !lastReport;\r\n    }\r\n  }\r\n\r\n  function init() {\r\n    els.fecha.value = toYMD(new Date());\r\n    bindMoneyInput(els.monto, true);\r\n    bindMoneyInput(els.aporte, true);\r\n    $$('input[name=\"ig-lulo-producto\"]').forEach(input => input.addEventListener('change', setProductPanels));\r\n    $$('input[name=\"ig-lulo-plazo\"]').forEach(input => input.addEventListener('change', setRetiroFields));\r\n    $$('#ig-lulo-bolsillos-sim input, #ig-lulo-bolsillos-sim select').forEach(input => input.addEventListener('change', () => { hideMsg(); hideResults(); }));\r\n    els.retiro.addEventListener('change', () => { setRetiroFields(); hideResults(); });\r\n    els.calcular.addEventListener('click', calculate);\r\n    els.limpiar.addEventListener('click', reset);\r\n    els.pdf.addEventListener('click', downloadPdf);\r\n    [els.monto, els.meses, els.aporte, els.diaAporte, els.diasRetiro].forEach(input => {\r\n      input.addEventListener('keydown', event => {\r\n        if (event.key === 'Enter') {\r\n          event.preventDefault();\r\n          calculate();\r\n        }\r\n      });\r\n    });\r\n    setProductPanels();\r\n    setRetiroFields();\r\n  }\r\n\r\n  init();\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-44140ee e-flex e-con-boxed e-con e-parent\" data-id=\"44140ee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-93f88cb elementor-widget elementor-widget-text-editor\" data-id=\"93f88cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"0\" data-end=\"274\"><span style=\"color: #000000;\"><strong data-start=\"0\" data-end=\"84\">Lulo Bank actualiz\u00f3 la rentabilidad de sus Bolsillos en Colombia (Febrero 2026):<\/strong> ahora el <strong data-start=\"94\" data-end=\"111\">Bolsillo Flex<\/strong> paga <strong data-start=\"117\" data-end=\"132\">7,5% (Lulo)<\/strong> o <strong data-start=\"135\" data-end=\"155\">9,25% (Lulo Pro)<\/strong> E.A., y los <strong data-start=\"168\" data-end=\"193\">Bolsillos Programados<\/strong> quedaron en <strong data-start=\"206\" data-end=\"230\">60 d\u00edas: 8,5% \/ 9,5%<\/strong> y <strong data-start=\"233\" data-end=\"258\">90 d\u00edas: 9,0% \/ 10,0%<\/strong> (Lulo \/ Pro).<\/span><\/p><p data-start=\"276\" data-end=\"670\"><span style=\"color: #000000;\">Si ya usabas Lulo, es normal que te hayas preguntado: \u201c\u00bfme est\u00e1 pagando lo mismo?\u201d o \u201c\u00bfqu\u00e9 me conviene m\u00e1s, Flex o Programado?\u201d. Tranquilo: aqu\u00ed te lo explico <strong data-start=\"435\" data-end=\"450\">en sencillo<\/strong>, con lo que realmente importa: <strong data-start=\"482\" data-end=\"491\">tasas<\/strong>, <strong data-start=\"493\" data-end=\"512\">cu\u00e1ndo te pagan<\/strong>, <strong data-start=\"514\" data-end=\"543\">qu\u00e9 pasa si retiras antes<\/strong>, c\u00f3mo funciona la <strong data-start=\"562\" data-end=\"576\">retefuente<\/strong>, y c\u00f3mo usar nuestra <strong data-start=\"598\" data-end=\"618\">Calculadora Lulo<\/strong> para simular tus rendimientos con n\u00fameros claros.<\/span><\/p><hr data-start=\"672\" data-end=\"675\" \/><h2 data-start=\"677\" data-end=\"728\"><span style=\"color: #000000;\">\u00bfQu\u00e9 cambi\u00f3 exactamente?\u00a0<\/span><\/h2><h3 data-start=\"730\" data-end=\"780\"><span style=\"color: #000000;\"><strong data-start=\"734\" data-end=\"780\">1) Bolsillo Flex (liquidez + pago mensual)<\/strong><\/span><\/h3><ul data-start=\"781\" data-end=\"1062\"><li data-start=\"781\" data-end=\"848\"><p data-start=\"783\" data-end=\"848\"><span style=\"color: #000000;\">Rentabilidad: <strong data-start=\"797\" data-end=\"817\">7,5% E.A. (Lulo)<\/strong> o <strong data-start=\"820\" data-end=\"845\">9,25% E.A. (Lulo Pro)<\/strong>.<\/span><\/p><\/li><li data-start=\"849\" data-end=\"986\"><p data-start=\"851\" data-end=\"986\"><span style=\"color: #000000;\">\u00bfCu\u00e1ndo pagan? Los rendimientos se abonan <strong data-start=\"893\" data-end=\"924\">a inicios del mes siguiente<\/strong> y se calculan sobre el <strong data-start=\"948\" data-end=\"983\">saldo promedio del mes anterior<\/strong>.<\/span><\/p><\/li><li data-start=\"987\" data-end=\"1062\"><p data-start=\"989\" data-end=\"1062\"><span style=\"color: #000000;\">Importante: la tasa puede <strong data-start=\"1015\" data-end=\"1026\">cambiar<\/strong> (porque es un producto \u201cflexible\u201d).<\/span><\/p><\/li><\/ul><h3 data-start=\"1064\" data-end=\"1131\"><span style=\"color: #000000;\"><strong data-start=\"1068\" data-end=\"1131\">2) Bolsillos Programados (60 o 90 d\u00edas, con tasa por plazo)<\/strong><\/span><\/h3><p data-start=\"1132\" data-end=\"1250\"><span style=\"color: #000000;\">Aqu\u00ed s\u00ed eliges un plazo: <strong data-start=\"1157\" data-end=\"1173\">60 o 90 d\u00edas<\/strong>, dejas el dinero quieto y, si lo cumples, te aplican la tasa del Programado:<\/span><\/p><ul data-start=\"1252\" data-end=\"1368\"><li data-start=\"1252\" data-end=\"1309\"><p data-start=\"1254\" data-end=\"1309\"><span style=\"color: #000000;\"><strong data-start=\"1254\" data-end=\"1266\">60 d\u00edas:<\/strong> <strong data-start=\"1267\" data-end=\"1287\">8,5% E.A. (Lulo)<\/strong> | <strong data-start=\"1290\" data-end=\"1309\">9,5% E.A. (Pro)<\/strong><\/span><\/p><\/li><li data-start=\"1310\" data-end=\"1368\"><p data-start=\"1312\" data-end=\"1368\"><span style=\"color: #000000;\"><strong data-start=\"1312\" data-end=\"1324\">90 d\u00edas:<\/strong> <strong data-start=\"1325\" data-end=\"1345\">9,0% E.A. (Lulo)<\/strong> | <strong data-start=\"1348\" data-end=\"1368\">10,0% E.A. (Pro)<\/strong><\/span><\/p><\/li><\/ul><p data-start=\"1370\" data-end=\"1624\"><span style=\"color: #000000;\">\ud83d\udca1 <strong data-start=\"1373\" data-end=\"1398\">Ojo con esto (clave):<\/strong> si retiras <strong data-start=\"1410\" data-end=\"1419\">antes<\/strong> de cumplir el plazo, <strong data-start=\"1441\" data-end=\"1454\">no aplica<\/strong> la tasa del Programado; se liquida con la tasa base de tu <strong data-start=\"1513\" data-end=\"1528\">Lulo cuenta<\/strong> (saldo en cuenta), que es <strong data-start=\"1555\" data-end=\"1569\">0,10% E.A.<\/strong>. Es la diferencia m\u00e1s importante a la hora de simular.<\/span><\/p><hr data-start=\"1626\" data-end=\"1629\" \/><h2 data-start=\"1631\" data-end=\"1679\"><span style=\"color: #000000;\">\u00bfC\u00f3mo funciona cada bolsillo en la vida real?<\/span><\/h2><h3 data-start=\"1681\" data-end=\"1704\"><span style=\"color: #000000;\">\u2705 <strong data-start=\"1687\" data-end=\"1704\">Bolsillo Flex<\/strong><\/span><\/h3><p data-start=\"1705\" data-end=\"1787\"><span style=\"color: #000000;\">Ideal si quieres <strong data-start=\"1722\" data-end=\"1740\">disponibilidad<\/strong>, mover tu plata y aun as\u00ed recibir rendimiento:<\/span><\/p><ul data-start=\"1788\" data-end=\"1949\"><li data-start=\"1788\" data-end=\"1831\"><p data-start=\"1790\" data-end=\"1831\"><span style=\"color: #000000;\">Puedes <strong data-start=\"1797\" data-end=\"1815\">entrar y salir<\/strong> cuando quieras.<\/span><\/p><\/li><li data-start=\"1832\" data-end=\"1893\"><p data-start=\"1834\" data-end=\"1893\"><span style=\"color: #000000;\">Te pagan intereses <strong data-start=\"1853\" data-end=\"1869\">mensualmente<\/strong> (seg\u00fan saldo promedio).<\/span><\/p><\/li><li data-start=\"1894\" data-end=\"1949\"><p data-start=\"1896\" data-end=\"1949\"><span style=\"color: #000000;\">Perfecto para fondo de emergencias o ahorro \u201cactivo\u201d.<\/span><\/p><\/li><\/ul><h3 data-start=\"1951\" data-end=\"1993\"><span style=\"color: #000000;\">\u2705 <strong data-start=\"1957\" data-end=\"1993\">Bolsillo Programado (60\/90 d\u00edas)<\/strong><\/span><\/h3><p data-start=\"1994\" data-end=\"2044\"><span style=\"color: #000000;\">Ideal si puedes \u201cbloquear\u201d el dinero por un plazo:<\/span><\/p><ul data-start=\"2045\" data-end=\"2314\"><li data-start=\"2045\" data-end=\"2105\"><p data-start=\"2047\" data-end=\"2105\"><span style=\"color: #000000;\">Haces un <strong data-start=\"2056\" data-end=\"2074\">dep\u00f3sito \u00fanico<\/strong> (no es para estar recargando).<\/span><\/p><\/li><li data-start=\"2106\" data-end=\"2167\"><p data-start=\"2108\" data-end=\"2167\"><span style=\"color: #000000;\">Si cumples el plazo, se liquida con la tasa del Programado.<\/span><\/p><\/li><li data-start=\"2168\" data-end=\"2314\"><p data-start=\"2170\" data-end=\"2314\"><span style=\"color: #000000;\">Si retiras antes, pierdes el beneficio y te queda con la <strong data-start=\"2227\" data-end=\"2240\">tasa base<\/strong> (0,10% E.A.).<\/span><br data-start=\"2254\" data-end=\"2257\" \/><span style=\"color: #000000;\">En palabras simples: <strong data-start=\"2278\" data-end=\"2313\">Programado premia la disciplina<\/strong>.<\/span><\/p><\/li><\/ul><hr data-start=\"2316\" data-end=\"2319\" \/><h2 data-start=\"2321\" data-end=\"2372\"><span style=\"color: #000000;\">ReteFuente (7%): \u00bfcu\u00e1ndo te la cobran de verdad?<\/span><\/h2><p data-start=\"2373\" data-end=\"2585\"><span style=\"color: #000000;\">Lulo explica que la <strong data-start=\"2393\" data-end=\"2419\">retenci\u00f3n en la fuente<\/strong> es del <strong data-start=\"2427\" data-end=\"2433\">7%<\/strong>, y solo aparece cuando tu <strong data-start=\"2460\" data-end=\"2478\">inter\u00e9s diario<\/strong> supera <strong data-start=\"2486\" data-end=\"2499\">0,055 UVT<\/strong>. En <strong data-start=\"2504\" data-end=\"2512\">2026<\/strong>, la UVT es <strong data-start=\"2524\" data-end=\"2535\">$52.374<\/strong>, as\u00ed que el umbral diario es aprox. <strong data-start=\"2572\" data-end=\"2582\">$2.881<\/strong>.<\/span><\/p><ul data-start=\"2587\" data-end=\"2815\"><li data-start=\"2587\" data-end=\"2723\"><p data-start=\"2589\" data-end=\"2723\"><span style=\"color: #000000;\">En <strong data-start=\"2592\" data-end=\"2600\">Flex<\/strong>, normalmente la ves reflejada cuando te abonan rendimientos (inicio del mes) si durante el mes se super\u00f3 el umbral diario.<\/span><\/p><\/li><li data-start=\"2724\" data-end=\"2815\"><p data-start=\"2726\" data-end=\"2815\"><span style=\"color: #000000;\">En <strong data-start=\"2729\" data-end=\"2744\">Programados<\/strong>, suele verse <strong data-start=\"2758\" data-end=\"2780\">al final del plazo<\/strong>, cuando se liquida el rendimiento.<\/span><\/p><\/li><\/ul><p data-start=\"2817\" data-end=\"2999\"><span style=\"color: #000000;\">\ud83d\udccc Consejo humano y realista: para la mayor\u00eda de personas, la retefuente no aparece con montos peque\u00f1os\/medianos. Si ya est\u00e1s moviendo saldos altos, ah\u00ed s\u00ed vale la pena simular bien.<\/span><\/p><hr data-start=\"3001\" data-end=\"3004\" \/><h2 data-start=\"3006\" data-end=\"3058\"><span style=\"color: #000000;\">Nuestra <strong data-start=\"3017\" data-end=\"3037\">Calculadora Lulo<\/strong> (Flex + Programados)<\/span><\/h2><p data-start=\"3059\" data-end=\"3140\"><span style=\"color: #000000;\">Creamos esta calculadora para que no tengas que adivinar ni sacar cuentas a mano:<\/span><\/p><p data-start=\"3142\" data-end=\"3151\"><span style=\"color: #000000;\">\u2705 Puedes:<\/span><\/p><ul data-start=\"3152\" data-end=\"3491\"><li data-start=\"3152\" data-end=\"3241\"><p data-start=\"3154\" data-end=\"3241\"><span style=\"color: #000000;\">Elegir <strong data-start=\"3161\" data-end=\"3173\">producto<\/strong> (<strong data-start=\"3175\" data-end=\"3183\">Flex<\/strong> o <strong data-start=\"3186\" data-end=\"3200\">Programado<\/strong>) y <strong data-start=\"3204\" data-end=\"3214\">perfil<\/strong> (<strong data-start=\"3216\" data-end=\"3224\">Lulo<\/strong> o <strong data-start=\"3227\" data-end=\"3239\">Lulo Pro<\/strong>).<\/span><\/p><\/li><li data-start=\"3242\" data-end=\"3320\"><p data-start=\"3244\" data-end=\"3320\"><span style=\"color: #000000;\">Ingresar <strong data-start=\"3253\" data-end=\"3262\">monto<\/strong> y <strong data-start=\"3265\" data-end=\"3274\">plazo<\/strong> (meses en Flex \/ 60 o 90 d\u00edas en Programado).<\/span><\/p><\/li><li data-start=\"3321\" data-end=\"3377\"><p data-start=\"3323\" data-end=\"3377\"><span style=\"color: #000000;\">Simular <strong data-start=\"3331\" data-end=\"3352\">retiro anticipado<\/strong> (y ver el impacto real).<\/span><\/p><\/li><li data-start=\"3378\" data-end=\"3491\"><p data-start=\"3380\" data-end=\"3491\"><span style=\"color: #000000;\">Ver <strong data-start=\"3384\" data-end=\"3401\">tasa aplicada<\/strong>, <strong data-start=\"3403\" data-end=\"3424\">rendimiento bruto<\/strong>, <strong data-start=\"3426\" data-end=\"3449\">retefuente estimada<\/strong>, <strong data-start=\"3451\" data-end=\"3466\">monto final<\/strong> y un desglose detallado.<\/span><\/p><\/li><\/ul><p data-start=\"3493\" data-end=\"3636\"><span style=\"color: #000000;\">La calculadora usa la l\u00f3gica pr\u00e1ctica: c\u00e1lculo por tasa efectiva y aplica la <strong data-start=\"3570\" data-end=\"3584\">retefuente<\/strong> solo si corresponde con el umbral de <strong data-start=\"3622\" data-end=\"3635\">0,055 UVT<\/strong>.<\/span><\/p><hr data-start=\"3638\" data-end=\"3641\" \/><h2 data-start=\"3643\" data-end=\"3698\"><span style=\"color: #000000;\">Ejemplos r\u00e1pidos \u201cde calle\u201d (para entender magnitud)<\/span><\/h2><h3 data-start=\"3700\" data-end=\"3752\"><span style=\"color: #000000;\">1) <strong data-start=\"3707\" data-end=\"3737\">Flex (Lulo Pro 9,25% E.A.)<\/strong> por 12 meses<\/span><\/h3><ul data-start=\"3753\" data-end=\"3908\"><li data-start=\"3753\" data-end=\"3778\"><p data-start=\"3755\" data-end=\"3778\"><span style=\"color: #000000;\">Monto: <strong data-start=\"3762\" data-end=\"3776\">$1.000.000<\/strong><\/span><\/p><\/li><li data-start=\"3779\" data-end=\"3875\"><p data-start=\"3781\" data-end=\"3875\"><span style=\"color: #000000;\">Rendimiento aproximado anual: cercano a <strong data-start=\"3821\" data-end=\"3832\">$92.500<\/strong> (sin retefuente en la mayor\u00eda de casos).<\/span><\/p><\/li><li data-start=\"3876\" data-end=\"3908\"><p data-start=\"3878\" data-end=\"3908\"><span style=\"color: #000000;\">Monto final: ~<strong data-start=\"3892\" data-end=\"3906\">$1.092.500<\/strong><\/span><\/p><\/li><\/ul><h3 data-start=\"3910\" data-end=\"3956\"><span style=\"color: #000000;\">2) <strong data-start=\"3917\" data-end=\"3954\">Programado 90 d\u00edas (Pro 10% E.A.)<\/strong><\/span><\/h3><ul data-start=\"3957\" data-end=\"4116\"><li data-start=\"3957\" data-end=\"3982\"><p data-start=\"3959\" data-end=\"3982\"><span style=\"color: #000000;\">Monto: <strong data-start=\"3966\" data-end=\"3980\">$5.000.000<\/strong><\/span><\/p><\/li><li data-start=\"3983\" data-end=\"4083\"><p data-start=\"3985\" data-end=\"4083\"><span style=\"color: #000000;\">Rendimiento estimado 90 d\u00edas: ~<strong data-start=\"4016\" data-end=\"4028\">$123.000<\/strong> (aprox., sin retefuente si no supera umbral diario).<\/span><\/p><\/li><li data-start=\"4084\" data-end=\"4116\"><p data-start=\"4086\" data-end=\"4116\"><span style=\"color: #000000;\">Monto final: ~<strong data-start=\"4100\" data-end=\"4114\">$5.123.000<\/strong><\/span><\/p><\/li><\/ul><blockquote data-start=\"4118\" data-end=\"4233\"><p data-start=\"4120\" data-end=\"4233\"><span style=\"color: #000000;\">Son aproximaciones: en la app el valor exacto puede variar por d\u00edas reales del periodo y la forma de liquidaci\u00f3n.<\/span><\/p><\/blockquote><hr data-start=\"4235\" data-end=\"4238\" \/><h2 data-start=\"4240\" data-end=\"4274\"><span style=\"color: #000000;\">Entonces\u2026 \u00bfqu\u00e9 me conviene hoy?<\/span><\/h2><ul data-start=\"4275\" data-end=\"4592\"><li data-start=\"4275\" data-end=\"4348\"><p data-start=\"4277\" data-end=\"4348\"><span style=\"color: #000000;\">Si quieres <strong data-start=\"4288\" data-end=\"4300\">libertad<\/strong> y que te paguen <strong data-start=\"4317\" data-end=\"4328\">mensual<\/strong>, ve por <strong data-start=\"4337\" data-end=\"4345\">Flex<\/strong>.<\/span><\/p><\/li><li data-start=\"4349\" data-end=\"4447\"><p data-start=\"4351\" data-end=\"4447\"><span style=\"color: #000000;\">Si puedes apartar el dinero <strong data-start=\"4379\" data-end=\"4395\">60 o 90 d\u00edas<\/strong> sin tocarlo, <strong data-start=\"4409\" data-end=\"4423\">Programado<\/strong> suele ganar por tasa.<\/span><\/p><\/li><li data-start=\"4448\" data-end=\"4592\"><p data-start=\"4450\" data-end=\"4592\"><span style=\"color: #000000;\">Si crees que tu saldo puede acercarse a montos altos, revisa el efecto de <strong data-start=\"4524\" data-end=\"4538\">retefuente<\/strong> y prueba escenarios en la calculadora para optimizar.<\/span><\/p><\/li><\/ul>\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>Herramienta financiera Simulador de Bolsillos Lulo Bank Compara Bolsillos Flex y Programados con las tasas publicadas por Lulo Bank, aportes opcionales y reporte descargable. Par\u00e1metros revisados 10\/08\/2026 Lulo cuenta \u00b7 Bolsillos Visualiza cu\u00e1nto puede crecer tu dinero seg\u00fan el bolsillo que elijas. Calcula cu\u00e1nto podr\u00edas generar con un Bolsillo Flex o Programado. La herramienta diferencia&#8230;<\/p>\n","protected":false},"author":1,"featured_media":4016,"template":"elementor_header_footer","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-5911","herramientas","type-herramientas","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5911","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":29,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5911\/revisions"}],"predecessor-version":[{"id":8836,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/herramientas\/5911\/revisions\/8836"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/media\/4016"}],"wp:attachment":[{"href":"https:\/\/inversionesguru.com\/co\/wp-json\/wp\/v2\/media?parent=5911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}