:root{--brand:#145a46;--brand-dark:#0c4133;--brand-soft:#e8f4ef;--ink:#172b25;--muted:#6b7d75;--line:#e3ebe6;--bg:#f4f7f5;--surface:#fff;--shadow:0 10px 28px rgba(16,49,37,.055)}
*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:15px}.app-navbar{background:linear-gradient(115deg,var(--brand-dark),var(--brand));box-shadow:0 5px 16px rgba(5,40,27,.13)}.navbar-brand{letter-spacing:-.3px;display:flex;align-items:center;gap:10px}.brand-mark{width:31px;height:31px;border-radius:10px;background:#d6f2e5;color:var(--brand-dark);display:inline-flex;align-items:center;justify-content:center;font-weight:900}.navbar .nav-link{color:rgba(255,255,255,.77);font-size:.91rem;padding:.7rem .7rem!important}.navbar .nav-link:hover{color:#fff}.user-pill{display:flex;align-items:center;gap:8px;color:#fff;font-size:.84rem}.user-avatar{width:29px;height:29px;background:#d6f2e5;color:var(--brand-dark);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800}.role-chip{background:rgba(255,255,255,.13);border-radius:99px;padding:4px 8px;font-size:.71rem}.app-container{max-width:1600px;margin:0 auto;min-height:calc(100vh - 130px)}.app-footer{color:#87958f;font-size:.78rem}.page-heading h1{font-size:clamp(1.45rem,2.6vw,2rem);font-weight:780;letter-spacing:-.8px;margin:0 0 5px}.page-heading p{margin:0;color:var(--muted);font-size:.95rem}.btn{border-radius:10px;font-weight:650}.btn-primary{background:var(--brand);border-color:var(--brand)}.btn-primary:hover,.btn-primary:focus{background:var(--brand-dark);border-color:var(--brand-dark)}.app-btn{padding:.72rem 1.05rem;box-shadow:0 4px 10px rgba(20,90,70,.12)}.surface-card,.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.surface-card{padding:clamp(16px,2.1vw,25px)}.surface-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.surface-header h3{font-size:1.08rem;font-weight:780;letter-spacing:-.3px;margin:0 0 5px}.surface-header p{color:var(--muted);font-size:.85rem;margin:0;line-height:1.5}.welcome-banner{border-radius:20px;padding:clamp(22px,3vw,34px);background:radial-gradient(circle at 90% 10%,rgba(255,255,255,.16),transparent 22%),linear-gradient(120deg,#0e4a38,#1d7357);color:#fff;display:flex;align-items:center;justify-content:space-between;overflow:hidden;min-height:160px}.welcome-banner h2{font-size:clamp(1.3rem,2.7vw,1.95rem);font-weight:780;letter-spacing:-.8px;margin:6px 0 8px}.welcome-banner p{color:rgba(255,255,255,.78);margin:0}.welcome-icon{font-size:5rem;font-weight:200;opacity:.6;transform:rotate(-8deg);padding-right:3%}.eyebrow{font-size:.68rem;font-weight:800;letter-spacing:1.5px;color:#7a9186}.metric-card{display:block;text-decoration:none;color:var(--ink);padding:19px;min-height:166px;transition:transform .15s,box-shadow .15s}.metric-card:hover{transform:translateY(-2px);box-shadow:0 15px 30px rgba(16,49,37,.1);color:var(--ink)}.metric-icon{height:40px;width:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:800;margin-bottom:16px}.tone-purple{background:#f0eafe;color:#7952c7}.tone-green{background:#e1f5e9;color:#218256}.tone-blue{background:#e4efff;color:#315eb2}.tone-red{background:#ffebea;color:#ca4d46}.metric-label{font-size:.8rem;color:var(--muted);line-height:1.35;min-height:2.1em}.metric-value{font-size:1.75rem;font-weight:820;letter-spacing:-.8px;margin-top:3px}.metric-sub{font-size:.75rem;color:var(--brand);margin-top:8px;font-weight:700}.metric-sub span{float:right}.balance-card{background:linear-gradient(130deg,#103f32,#1c6b51);color:#fff;border:0;box-shadow:0 12px 30px rgba(16,65,48,.15)}.balance-card .surface-header h3{color:#fff}.balance-card .surface-header p{color:rgba(255,255,255,.68)}.balance-value{font-size:clamp(2rem,4vw,2.7rem);font-weight:820;letter-spacing:-1.1px;overflow-wrap:anywhere}.balance-caption{font-size:.84rem;color:rgba(255,255,255,.7);line-height:1.6;margin-top:8px;max-width:480px}.balance-icon{width:43px;height:43px;border-radius:13px;display:grid;place-items:center;background:rgba(255,255,255,.14);font-weight:800}.quick-grid{display:grid;grid-template-columns:1fr;gap:2px}.quick-action{display:flex;align-items:center;gap:13px;padding:13px 7px;text-decoration:none;color:var(--ink);border-bottom:1px solid #eef2ef}.quick-action:last-child{border:0}.quick-action:hover{color:var(--brand);background:#f7faf8;border-radius:10px}.quick-symbol{width:38px;height:38px;flex:0 0 38px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:1.1rem;font-weight:800}.quick-action strong,.quick-action small{display:block}.quick-action strong{font-size:.9rem}.quick-action small{font-size:.78rem;color:var(--muted);margin-top:2px}.quick-arrow{margin-left:auto;color:#8ea197;font-size:1.1rem}.pending-banner{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 20px;border:1px solid #f2d9a7;background:#fff9ed;border-radius:14px;color:#6b4c12}.pending-banner div div{font-size:.83rem;margin-top:3px;color:#8a6d32}.form-stack{display:flex;flex-direction:column;gap:15px}.form-label{font-size:.83rem;font-weight:700;color:#31483e;margin-bottom:6px}.form-control,.form-select{border-color:#d8e3dc;border-radius:10px;padding:.69rem .8rem;background-color:#fff;min-height:44px}.form-control:focus,.form-select:focus{border-color:#68a88b;box-shadow:0 0 0 .2rem rgba(20,90,70,.12)}.form-text{font-size:.75rem;color:#84948b}.form-section{padding-bottom:23px;margin-bottom:23px;border-bottom:1px solid var(--line)}.form-section:last-of-type{border:0}.form-section h3{font-size:1.02rem;font-weight:780;margin:0 0 17px}.search-bar{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.search-input{position:relative;display:flex;align-items:center;flex:1;min-width:200px}.search-input>span{position:absolute;left:13px;font-size:1.25rem;color:#8b9a92}.search-input input{padding-left:42px}.app-table{margin:0;--bs-table-bg:transparent}.app-table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.45px;color:#819187;font-weight:800;border-bottom-color:#e5ede7;white-space:nowrap;padding:12px 13px}.app-table tbody td{font-size:.86rem;border-bottom-color:#edf2ee;padding:13px;vertical-align:middle}.app-table tbody tr:last-child td{border-bottom:0}.app-table tbody tr:hover{--bs-table-bg:#fbfdfb}.status-badge{font-size:.69rem;font-weight:750;padding:.45em .72em;white-space:normal}.empty-state{text-align:center;padding:42px 18px;color:var(--muted)}.empty-state h4{font-size:1rem;color:var(--ink);font-weight:760;margin:11px 0 5px}.empty-state p{font-size:.84rem;margin:0 0 15px}.empty-state.compact{padding:20px 12px}.empty-state.compact p{margin:0}.empty-icon{width:48px;height:48px;margin:auto;border-radius:15px;background:#edf5f0;color:var(--brand);display:grid;place-items:center;font-size:1.45rem}.detail-list{margin:0}.detail-list>div{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #eff3f0}.detail-list>div:last-child{border:0}.detail-list dt{font-size:.81rem;color:var(--muted);font-weight:550;flex:0 0 40%}.detail-list dd{margin:0;text-align:right;font-size:.86rem;font-weight:650;overflow-wrap:anywhere}.preserve-lines{white-space:pre-wrap}.client-initial{width:47px;height:47px;border-radius:15px;display:grid;place-items:center;background:#e2f3e9;color:#17664b;font-weight:850;font-size:1.25rem;flex:0 0 47px}.small-initial{width:36px;height:36px;flex-basis:36px;border-radius:12px;font-size:1rem}.assignment-panel{border-top:1px solid var(--line);margin-top:14px;padding-top:16px}.assignment-panel>strong{display:block;margin-top:4px}.evidence-list{display:flex;flex-direction:column;gap:8px}.evidence-item{display:flex;align-items:center;gap:10px;padding:11px;background:#f8fbf9;border:1px solid #eef3ef;border-radius:12px}.evidence-thumb{width:38px;height:38px;border-radius:10px;background:#e9f4ed;color:var(--brand);display:grid;place-items:center;font-size:1.25rem}.evidence-item strong,.evidence-item small{display:block;overflow-wrap:anywhere}.evidence-item strong{font-size:.83rem}.evidence-item small{color:var(--muted);font-size:.72rem;margin-top:3px}.loan-list{display:flex;flex-direction:column}.loan-list-item{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);padding:15px 2px;border-bottom:1px solid #eef2ef}.loan-list-item:last-child{border:0}.loan-list-item:hover{color:var(--brand)}.loan-list-main{flex:1;min-width:0}.loan-list-main strong,.loan-list-main small{display:block}.loan-list-main strong{font-size:.9rem}.loan-list-main small{font-size:.76rem;color:var(--muted);margin-top:4px}.loan-list-amount{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.loan-list-amount strong{font-size:.9rem}.selected-client-card{display:flex;align-items:center;gap:14px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.selected-client-card h3{font-size:1.05rem;font-weight:800;margin:3px 0}.selected-client-card p{font-size:.81rem;color:var(--muted);margin:0}.loan-calculator{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:17px;background:#f2f8f4;border:1px solid #dceee3;border-radius:14px}.loan-calculator div{min-width:0}.loan-calculator span,.loan-calculator strong{display:block}.loan-calculator span{font-size:.75rem;color:#607a6d}.loan-calculator strong{font-size:clamp(1rem,2vw,1.25rem);color:var(--brand-dark);font-weight:800;margin-top:5px;overflow-wrap:anywhere}.loan-calculator p{grid-column:1/-1;font-size:.73rem;color:#73857b;margin:0}.notice-soft{padding:13px 15px;background:#f3f8f5;border:1px solid #e0ece4;border-radius:12px;color:#486356;font-size:.83rem;line-height:1.55}.loan-overview{display:grid;grid-template-columns:1fr 1.2fr;gap:23px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:clamp(18px,2.5vw,27px);box-shadow:var(--shadow)}.loan-overview-main h2{font-size:1.55rem;font-weight:830;letter-spacing:-.5px;margin:6px 0 14px;overflow-wrap:anywhere}.loan-person{display:flex;align-items:center;gap:10px}.loan-person strong,.loan-person small{display:block}.loan-person strong{font-size:.9rem}.loan-person small{font-size:.77rem;color:var(--muted);margin-top:3px}.loan-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.loan-summary-grid>div{padding:12px 14px;background:#f7faf8;border:1px solid #edf3ef;border-radius:12px;min-width:0}.loan-summary-grid span,.loan-summary-grid strong{display:block}.loan-summary-grid span{font-size:.72rem;color:var(--muted)}.loan-summary-grid strong{font-size:1.05rem;font-weight:820;margin-top:5px;overflow-wrap:anywhere}.loan-summary-grid strong small{font-size:.74rem;color:var(--muted);font-weight:600}.loan-summary-grid .summary-balance{background:#e9f5ed;border-color:#d6ebde}.summary-balance strong{color:var(--brand-dark);font-size:1.3rem}.filter-tabs{display:flex;gap:7px;overflow:auto;padding:3px 0 7px}.filter-tabs a{white-space:nowrap;text-decoration:none;padding:9px 14px;border-radius:11px;border:1px solid var(--line);background:#fff;color:#66776e;font-size:.82rem;font-weight:700}.filter-tabs a.active{background:var(--brand);color:#fff;border-color:var(--brand)}.timeline-list{display:flex;flex-direction:column;gap:18px}.timeline-item{display:flex;gap:12px}.timeline-dot{width:10px;height:10px;margin-top:5px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px #e5f3eb;flex:0 0 10px}.timeline-item strong{font-size:.87rem}.timeline-item p{font-size:.82rem;color:#52675b;margin:4px 0}.timeline-item small{font-size:.73rem;color:var(--muted)}.business-name-card{padding:18px;border-radius:12px;background:#f4f8f5;font-size:1.3rem;font-weight:800}.login-shell{display:grid;place-items:center;min-height:calc(100vh - 55px);padding:28px 16px}.login-card-wrap{width:min(100%,470px)}.login-brand{display:flex;align-items:center;gap:15px;margin-bottom:23px}.login-symbol{height:58px;width:58px;border-radius:18px;background:linear-gradient(135deg,#155c45,#24805e);display:grid;place-items:center;color:white;font-size:1.8rem;font-weight:900;box-shadow:0 9px 20px rgba(20,90,70,.2)}.login-brand h1{font-size:1.45rem;font-weight:850;letter-spacing:-.7px;margin:2px 0}.login-brand p{font-size:.83rem;color:var(--muted);margin:0}.login-card{border-radius:20px;border-color:var(--line);box-shadow:0 20px 50px rgba(14,56,39,.09)}.login-card h2{font-size:1.35rem;font-weight:800;letter-spacing:-.5px}.login-card .form-control-lg{font-size:.98rem;min-height:50px}.security-dot{display:inline-block;width:7px;height:7px;background:#2b9b6f;border-radius:50%;margin-right:6px}.login-foot{text-align:center;color:#8a9991;font-size:.76rem;margin-top:20px;line-height:1.5}.alert{border:0;border-radius:12px}.alert-danger{background:#fff0ef;color:#a62e2a}.alert-success{background:#e7f6ec;color:#17663d}
@media(max-width:991.98px){.loan-overview{grid-template-columns:1fr}.loan-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.user-pill{margin-right:auto}.app-container{padding-top:1.2rem!important}.navbar .nav-link{padding:.55rem .3rem!important}}
@media(max-width:575.98px){.welcome-banner{min-height:145px}.welcome-icon{font-size:3.3rem;padding-right:0}.metric-card{padding:14px;min-height:156px}.metric-icon{height:35px;width:35px;margin-bottom:12px}.metric-value{font-size:1.5rem}.metric-label{font-size:.74rem}.surface-card{border-radius:14px}.quick-action{gap:10px}.quick-action small{font-size:.73rem}.pending-banner{align-items:flex-start;flex-direction:column}.search-bar .btn{flex:0 0 auto}.loan-calculator{gap:8px;padding:13px}.loan-calculator span{font-size:.68rem}.loan-calculator strong{font-size:.95rem}.selected-client-card{flex-wrap:wrap}.selected-client-card .btn{margin-left:auto}.detail-list>div{gap:10px}.detail-list dt{flex-basis:37%}.detail-list dd{max-width:63%}.loan-summary-grid>div{padding:10px}.loan-summary-grid strong{font-size:.95rem}.login-card .card-body{padding:24px!important}.app-table thead th,.app-table tbody td{padding:11px 10px}.navbar-brand{font-size:1rem}}

/* Funciones añadidas: recordatorios, ticket compartible e instalación PWA */
.pwa-install-button{white-space:nowrap;font-weight:750}
.schedule-header{align-items:center}
.schedule-tools{justify-content:flex-end;max-width:100%}
.schedule-row-actions{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:92px}
.schedule-row-actions .btn{white-space:nowrap}
.schedule-ticket{display:none;background:#fff;color:#15251d;font-family:Arial,Helvetica,sans-serif}
.ticket-brand{font-size:16px;font-weight:800;color:#145a46;border-bottom:2px solid #145a46;padding-bottom:8px;margin-bottom:12px}
.schedule-ticket>h2{font-size:16px;letter-spacing:.35px;font-weight:800;margin:0 0 12px}
.ticket-meta{font-size:11px;line-height:1.7;margin-bottom:12px;overflow-wrap:anywhere}
.ticket-totals{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px}
.ticket-totals>div{border:1px solid #dfe8e2;border-radius:5px;padding:7px}
.ticket-totals span,.ticket-totals strong{display:block}
.ticket-totals span{font-size:9px;color:#637369}
.ticket-totals strong{font-size:11px;margin-top:3px}
.ticket-table{width:100%;border-collapse:collapse;font-size:9px;table-layout:fixed}
.ticket-table th,.ticket-table td{border-bottom:1px solid #e1e7e3;padding:6px 3px;text-align:left;overflow-wrap:anywhere}
.ticket-table th{background:#eef5f0;color:#315544;font-weight:800}
.ticket-table th:first-child,.ticket-table td:first-child{width:11%}
.ticket-table th:nth-child(2),.ticket-table td:nth-child(2){width:22%}
.ticket-footer{font-size:9px;color:#64746b;line-height:1.5;margin:14px 0 0;padding-top:9px;border-top:1px dashed #bfcfc4}
@media(max-width:575.98px){.schedule-header{flex-direction:column;align-items:stretch}.schedule-tools{justify-content:flex-start}.schedule-tools .btn{flex:1 1 auto}.schedule-row-actions{min-width:0}.pwa-install-button{font-size:.78rem}}
@media print{
  @page{size:80mm auto;margin:3mm}
  body.print-schedule-ticket *{visibility:hidden!important}
  body.print-schedule-ticket #scheduleTicket,body.print-schedule-ticket #scheduleTicket *{visibility:visible!important}
  body.print-schedule-ticket #scheduleTicket{display:block!important;position:absolute!important;top:0!important;left:0!important;width:74mm!important;margin:0!important;padding:0!important;box-shadow:none!important;border:0!important;background:#fff!important;color:#111!important;z-index:2147483647!important}
  body.print-schedule-ticket #scheduleTicket .ticket-table{font-size:8.5pt}
  body.print-schedule-ticket #scheduleTicket .ticket-meta{font-size:9pt}
  body.print-schedule-ticket #scheduleTicket .ticket-footer{font-size:8pt}
  body.print-schedule-ticket{background:#fff!important;margin:0!important;padding:0!important}
}

/* Resaltado del cronograma: vencimientos atrasados y cuotas que vencen hoy. */
.schedule-overdue>td{background-color:#fff0ef!important;color:#7f1d1d}.schedule-due-today>td{background-color:#fff5d8!important}
