:root{--primary:#0b5cab;--primary2:#083f78;--bg:#f4f7fb;--card:#fff;--text:#172033;--muted:#667085;--danger:#c62828;--warn:#b45309;--ok:#147a43;--line:#e6eaf0}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}.hidden{display:none!important}.view{min-height:100vh}
.login-view{display:grid;place-items:center;padding:24px;background:linear-gradient(150deg,var(--primary2),var(--primary))}
.login-card{width:min(100%,410px);background:#fff;padding:28px;border-radius:22px;box-shadow:0 24px 70px #0004;text-align:center}
.logo{width:72px;height:72px;border-radius:22px;background:var(--primary);color:#fff;display:grid;place-items:center;margin:auto;font-size:30px;font-weight:800}
h1{margin:16px 0 4px}h2{margin:0 0 16px}.muted{color:var(--muted)}
label{display:grid;gap:7px;text-align:left;font-weight:650;margin:14px 0}
input,select,textarea{width:100%;border:1px solid #cfd6e1;border-radius:12px;padding:12px;background:#fff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:3px solid #0b5cab22;border-color:var(--primary)}
button{border:0;border-radius:12px;padding:11px 15px;cursor:pointer}.primary{background:var(--primary);color:#fff;font-weight:750}.full{width:100%}
.topbar{position:sticky;top:0;z-index:5;background:var(--primary);color:#fff;padding:14px 16px;display:flex;align-items:center;justify-content:space-between}
.topbar small{display:block;opacity:.85}.icon-btn{background:#ffffff1f;color:#fff}
main{max-width:760px;margin:auto;padding:14px 14px 88px}.date-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.date-row label{margin:0}
.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.summary-grid article{background:#fff;padding:14px;border-radius:16px;box-shadow:0 2px 12px #2030500c}.summary-grid span{display:block;color:var(--muted);font-size:13px}.summary-grid strong{display:block;margin-top:4px;font-size:19px}.summary-grid small{display:block;color:var(--primary2);font-weight:750;margin-top:3px}
.route-filters{display:flex;gap:8px;overflow-x:auto;padding:2px 0 12px;scrollbar-width:thin}.route-filters button{white-space:nowrap;background:#e8eef5;color:var(--primary2);font-weight:750}.route-filters button.active{background:var(--primary);color:#fff}.route-filters b{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;margin-left:4px;border-radius:999px;background:#ffffff33}
.search-row{margin-bottom:12px}.cards{display:grid;gap:12px}.client-card,.panel{background:#fff;border-radius:17px;padding:15px;box-shadow:0 2px 14px #20305012}
.client-card{border-left:6px solid #7b8794}.client-card.mora,.client-card.vencido{border-left-color:var(--danger)}.client-card.hoy,.client-card.fecha{border-left-color:var(--warn)}.client-card.proximo{border-left-color:var(--primary)}.client-card.adelantado,.client-card.pago_adelantado,.client-card.pago_puntual{border-left-color:var(--ok)}.client-card.pago_atrasado{border-left-color:#e8790c;background:#fffaf3}
.card-head{display:flex;justify-content:space-between;gap:8px}.card-head h3{margin:0;font-size:17px}.badge{padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;height:max-content}.badge.mora,.badge.vencido{background:#ffebee;color:var(--danger)}.badge.hoy,.badge.fecha{background:#fff3df;color:var(--warn)}.badge.proximo{background:#e8f2ff;color:var(--primary)}.badge.adelantado,.badge.pago_adelantado,.badge.pago_puntual{background:#e7f7ed;color:var(--ok)}.badge.pago_atrasado{background:#fff0d5;color:#a64b00}
.debt-alert{display:grid;gap:3px;margin-top:12px;padding:11px;border:1px solid #f3b4b4;border-radius:12px;background:#fff1f1;color:#9f1f1f}.debt-alert span{font-size:13px}
.details{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.details div{font-size:13px;color:var(--muted)}.details b{display:block;color:var(--text);font-size:15px}
.actions{display:flex;gap:8px;flex-wrap:wrap}.actions button,.actions a{flex:1;min-width:90px;text-decoration:none;text-align:center;background:#eef3f8;color:var(--primary2);padding:10px;border-radius:11px;font-weight:700}.actions .pay{background:var(--primary);color:#fff}
.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:6}
.bottom-nav button{border-radius:0;background:#fff;color:var(--muted);padding:14px}.bottom-nav button.active{color:var(--primary);font-weight:800;border-top:3px solid var(--primary)}
.back-btn{background:transparent;color:var(--primary);padding-left:0;margin-bottom:10px}.loan{border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0}.loan h3{margin:0 0 8px}
.tabs{display:flex;gap:8px;margin:12px 0}.tabs button{background:#eef3f8;color:var(--primary2)}.schedule-item,.payment-item{display:grid;grid-template-columns:1fr auto;gap:8px;padding:11px 0;border-bottom:1px solid var(--line)}
.loan-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.loan-head h3{margin:0}.loan-status,.quota-status{background:#eef3f8;color:var(--primary2);border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.loan-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.loan-summary div{color:var(--muted);font-size:12px}.loan-summary b{display:block;color:var(--text);font-size:15px;margin-top:3px}.mora-indicator{display:flex;align-items:center;justify-content:center;flex:1;min-width:110px;padding:10px;border-radius:11px;font-weight:800;font-size:13px}.mora-indicator.has-mora{background:#ffebee;color:var(--danger)}.mora-indicator.no-mora{background:#e7f7ed;color:#16723a}.loan-detail{margin-top:10px}.real-schedule{padding:12px 0;border-bottom:1px solid var(--line)}.schedule-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.schedule-head .quota-status{margin-left:auto}.schedule-row{display:grid;grid-template-columns:90px repeat(4,1fr);gap:7px;padding:5px 0;font-size:13px}.schedule-row>span:first-child{color:var(--muted);font-weight:700}.schedule-balance{text-align:right;margin-top:5px;color:var(--primary2)}
@media(max-width:650px){.loan-summary{grid-template-columns:repeat(2,1fr)}.schedule-row{grid-template-columns:1fr 1fr}.schedule-row>span:first-child,.schedule-row b{grid-column:1/-1}.loan-actions>*{min-width:calc(50% - 4px)}}
dialog{width:min(94vw,620px);border:0;border-radius:18px;padding:0}dialog::backdrop{background:#10182888}.dialog-card{padding:16px;max-height:85vh;overflow:auto}.dialog-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.dialog-title button{background:#eee}.compact{margin-top:12px}
.toast{position:fixed;z-index:20;left:50%;bottom:84px;transform:translateX(-50%) translateY(30px);background:#172033;color:#fff;padding:11px 16px;border-radius:12px;opacity:0;pointer-events:none;transition:.25s;max-width:90vw}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.empty{text-align:center;color:var(--muted);padding:30px 10px}
@media(min-width:700px){.summary-grid{grid-template-columns:repeat(4,1fr)}}

.gps-block{display:grid;place-items:center;padding:24px;background:linear-gradient(150deg,#7f1d1d,#b91c1c);position:fixed;inset:0;z-index:50}
.gps-block-card{width:min(100%,430px);background:#fff;padding:28px;border-radius:22px;box-shadow:0 24px 70px #0005;text-align:center}
.gps-icon{font-size:54px}.gps-block-card h1{margin:10px 0}.gps-block-card p{color:var(--muted);line-height:1.5}
.gps-steps{text-align:left;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px;margin:16px 0;line-height:1.6}
#gpsErrorTexto{display:block;margin-top:12px;color:#991b1b}
