body{margin:0;background:#f3f4f6;color:#111827;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
.topbar{background:#111827;color:#fff;padding:18px 16px;display:flex;justify-content:space-between;align-items:center}.topbar h1{margin:0;font-size:22px}.topbar p{margin:4px 0 0;color:#cbd5e1;font-size:13px}
.container{max-width:1100px;margin:auto;padding:16px}.card{background:#fff;border-radius:16px;padding:18px;margin-bottom:16px;box-shadow:0 2px 10px #0000000d}h2{font-size:18px;margin-top:0}.muted{color:#64748b;font-size:14px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.full{grid-column:1/-1}label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}input,select{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:10px;background:#fff;font:inherit}button{border:0;border-radius:10px;padding:12px 16px;background:#111827;color:#fff;font-weight:700;cursor:pointer}.ghost{background:transparent;border:1px solid #64748b}.secondary{background:#e5e7eb;color:#111827}.hidden{display:none!important}.tabs{display:flex;gap:8px;overflow:auto;margin-bottom:16px;padding-bottom:2px}.tabs button{white-space:nowrap;background:#e5e7eb;color:#111827}.tabs button.active{background:#111827;color:#fff}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.cards.two{grid-template-columns:repeat(2,1fr)}.metric{background:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 10px #0000000d}.metric span{display:block;color:#64748b;font-size:13px}.metric strong{display:block;font-size:21px;margin-top:8px}.future-card{border:1px dashed #94a3b8}.section-title{display:flex;justify-content:space-between;gap:12px;align-items:center}.big-number{font-size:32px;font-weight:800}.status{min-height:20px;color:#475569}.row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid #e5e7eb}.row:last-child{border-bottom:0}.row-main{min-width:0}.row-right{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.small{padding:7px 9px;font-size:12px}.danger{background:#991b1b}.paid{background:#166534;color:#fff}.pill{font-size:11px;padding:4px 7px;border-radius:999px;background:#e5e7eb;display:inline-block}.overdue{background:#fee2e2;color:#991b1b}.future{background:#dbeafe;color:#1d4ed8}.positive{color:#166534}.negative{color:#991b1b}.form-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ===== CALENDARIO V4 ===== */
.calendar-card{overflow:hidden}.calendar-toolbar{display:grid;grid-template-columns:48px 1fr 48px;gap:10px;align-items:center}.calendar-heading{text-align:center}.calendar-heading h2{margin:0;font-size:22px}.calendar-heading span{display:block;color:#64748b;font-size:13px;margin-top:4px}.nav-month{width:48px;height:48px;padding:0;font-size:30px;line-height:1}.today-btn{display:block;margin:12px auto 16px;padding:9px 14px}
.calendar-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.calendar-metrics article{border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#fff}.calendar-metrics span{display:block;color:#64748b;font-size:12px}.calendar-metrics strong{display:block;font-size:17px;margin-top:5px}
.legend{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 14px;color:#475569;font-size:12px}.legend span{display:flex;align-items:center;gap:5px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;border:1px solid #94a3b8}.income-dot{background:#166534}.expense-dot{background:#991b1b}.payment-dot{background:#92400e}.balance-dot{background:#1d4ed8}
.calendar-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:5px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(112px,1fr));min-width:784px}.week-head{background:#111827;color:#fff;border-radius:10px 10px 0 0;overflow:hidden}.week-head div{padding:10px 7px;text-align:center;font-size:11px;font-weight:800}.calendar-day{min-height:142px;border:1px solid #e5e7eb;border-top:0;padding:7px;position:relative;background:#fff;overflow:hidden}.calendar-day.outside{background:#f8fafc;color:#94a3b8}.calendar-day.today-day{outline:2px solid #1d4ed8;outline-offset:-2px;background:#eff6ff}.day-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.day-number{font-weight:800;font-size:14px}.today-dot{font-size:8px;font-weight:800;color:#1d4ed8}.day-line{font-size:10px;font-weight:800;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-line.income{color:#166534}.day-line.expense{color:#991b1b}.day-line.payment{color:#92400e}.day-event{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.day-event.ingreso{color:#166534}.day-event.gasto{color:#991b1b}.day-event.pago{color:#92400e}.day-more{font-size:9px;color:#64748b;margin-top:2px}.day-balance{position:absolute;left:7px;right:7px;bottom:6px;border-top:1px dashed #cbd5e1;padding-top:4px;font-size:9px;font-weight:800;color:#1d4ed8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-note{margin:12px 0 0}
@media(max-width:800px){.calendar-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.grid2,.cards,.cards.two{grid-template-columns:1fr}.full{grid-column:auto}.topbar{align-items:flex-start}.metric strong{font-size:19px}.row{flex-direction:column}.row-right{align-items:flex-start;text-align:left}.actions{justify-content:flex-start}.section-title{align-items:flex-start;flex-direction:column}.calendar-heading h2{font-size:18px}.calendar-heading span{font-size:11px}.calendar-metrics strong{font-size:15px}.calendar-card{padding:12px}.calendar-grid{min-width:700px;grid-template-columns:repeat(7,minmax(100px,1fr))}.calendar-day{min-height:128px;padding:6px}}

/* ===== PLAN DE INGRESOS V5 ===== */
.income-plan-card{border:1px solid #dbe3ef}.plan-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.plan-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-weight:800}.plan-header h3{margin:4px 0 0;font-size:19px}.suggest-pill{font-size:10px;font-weight:800;padding:6px 9px;border-radius:999px;background:#fef3c7;color:#92400e;white-space:nowrap}.plan-main{display:grid;grid-template-columns:1.3fr 1fr;gap:12px;margin-top:14px}.plan-main>div{border:1px solid #e5e7eb;border-radius:12px;padding:14px;background:#f8fafc}.plan-main span,.plan-target span{display:block;color:#64748b;font-size:12px;font-weight:700}.plan-main strong{display:block;font-size:28px;margin:5px 0}.plan-main small{display:block;color:#64748b;font-size:11px;line-height:1.35}.plan-target strong{font-size:20px;display:block;margin:6px 0}.plan-details{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px;font-size:12px;color:#475569}.plan-details b{color:#111827}.plan-savings{margin-top:12px;padding:10px 12px;border-radius:10px;background:#ecfdf5;color:#166534;font-size:13px}.plan-savings span{color:#64748b}.plan-note{margin:10px 0 0;color:#64748b;font-size:11px;line-height:1.45}.plan-ok{padding:12px;border-radius:10px;background:#ecfdf5;color:#166534}.plan-ok strong,.plan-ok span{display:block}.plan-ok span{font-size:12px;margin-top:3px;color:#475569}
@media(max-width:700px){.plan-header{flex-direction:column}.plan-main{grid-template-columns:1fr}.plan-main strong{font-size:25px}}

/* ===== RESUMEN MENSUAL V6 ===== */
.monthly-summary-card{border:1px solid #dbe3ef}.monthly-summary-card h2{margin-bottom:3px}.monthly-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.summary-box{border:1px solid #e5e7eb;border-radius:14px;padding:16px;min-height:130px}.summary-box span{display:block;color:#475569;font-size:13px;font-weight:700}.summary-box strong{display:block;font-size:25px;margin:8px 0}.summary-box small{display:block;color:#64748b;font-size:11px;line-height:1.35}.paid-box{background:#ecfdf5}.paid-box strong{color:#166534}.pending-box{background:#fff7ed}.pending-box strong{color:#c2410c}.total-box{background:#eff6ff}.total-box strong{color:#1d4ed8}.monthly-summary-note{margin:12px 0 0;padding:11px 13px;border-radius:10px;background:#f8fafc;color:#64748b;font-size:11px;line-height:1.45}
@media(max-width:700px){.monthly-summary-grid{grid-template-columns:1fr}.summary-box{min-height:0}.summary-box strong{font-size:23px}}

/* ===== DETALLE DE DÍA V7 ===== */
.calendar-day{appearance:none;-webkit-appearance:none;text-align:left;font:inherit;color:inherit;cursor:pointer;width:100%;}
.calendar-day.selected-day{outline:3px solid #0f766e;outline-offset:-3px;background:#f0fdfa;z-index:2;}
.calendar-day.selected-day .day-number{color:#0f766e;}
.calendar-day-details{margin-top:16px;border:1px solid #dbe3ef;border-radius:16px;background:#fff;padding:16px;box-shadow:0 2px 10px #0000000d;}
.selected-day-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:12px;border-bottom:1px solid #e5e7eb;}
.selected-day-header h3{margin:4px 0 0;font-size:19px;}
.selected-date-pill{font-size:11px;font-weight:800;padding:6px 9px;border-radius:999px;background:#e0f2fe;color:#075985;white-space:nowrap;}
.day-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;}
.day-detail-block{border:1px solid #e5e7eb;border-radius:14px;padding:14px;min-width:0;}
.income-detail{background:#f0fdf4;border-color:#bbf7d0;}
.expense-detail{background:#fff7ed;border-color:#fed7aa;}
.detail-title{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;}
.detail-title span:first-child{display:block;color:#475569;font-size:13px;font-weight:800;}
.detail-title strong{display:block;font-size:23px;margin-top:4px;}
.income-detail .detail-title strong{color:#166534;}
.expense-detail .detail-title strong{color:#c2410c;}
.detail-count{font-size:10px;padding:5px 7px;border-radius:999px;background:#fff;color:#64748b;border:1px solid #e5e7eb;white-space:nowrap;}
.detail-item{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 0;border-top:1px solid #e5e7eb;}
.detail-main{min-width:0;display:flex;flex-direction:column;gap:3px;}
.detail-main strong{font-size:13px;overflow-wrap:anywhere;}
.detail-main span{font-size:11px;color:#64748b;overflow-wrap:anywhere;}
.detail-item>strong{font-size:13px;white-space:nowrap;}
.scheduled-note{margin-top:10px;padding:10px;border-radius:10px;background:#fff;border:1px dashed #d97706;color:#92400e;font-size:11px;line-height:1.4;}
.scheduled-note span{display:block;color:#64748b;margin-top:3px;}
.selected-day-balance{margin-top:12px;padding:11px 13px;border-radius:10px;background:#eff6ff;display:flex;justify-content:space-between;align-items:center;gap:10px;color:#475569;font-size:12px;font-weight:700;}
.selected-day-balance strong{color:#1d4ed8;font-size:17px;}
@media(max-width:700px){.day-detail-grid{grid-template-columns:1fr;}.selected-day-header{flex-direction:column;}.calendar-day-details{padding:13px;}.detail-title strong{font-size:21px;}.selected-day-balance{flex-direction:column;align-items:flex-start;}}

/* ===== DETALLE DE PAGOS PROGRAMADOS V8 ===== */
.scheduled-section{margin-top:14px;padding-top:12px;border-top:1px dashed #fdba74;}
.scheduled-section-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:4px;}
.scheduled-section-header>div>span{display:block;color:#92400e;font-size:12px;font-weight:800;}
.scheduled-section-header strong{display:block;color:#c2410c;font-size:19px;margin-top:3px;}
.scheduled-item{border-top-color:#fed7aa;}
.scheduled-item .detail-main strong{color:#7c2d12;}
.payment-state{color:#b45309 !important;font-weight:700;}
@media(max-width:700px){.scheduled-section-header{align-items:flex-start}.scheduled-section-header strong{font-size:18px}}

/* ===== B231.7-R1 · RECUPERACIÓN DEL PANEL DE CONEXIÓN ===== */
#configPanel{position:relative;z-index:200001!important;pointer-events:auto!important}
#configPanel input,#configPanel select,#configPanel button{position:relative;z-index:200002!important;pointer-events:auto!important}
body:not(.b220-open) .b220-overlay{display:none!important}
