:root{--p:#0d6efd;--bg:#f4f6f9;--card:#fff;--t:#1d232b;--m:#6b7480;--d:#dc3545;--r:14px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--t);font:17px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
.view{min-height:100vh;padding-bottom:110px;max-width:640px;margin:0 auto}
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;background:var(--p);color:#fff;padding:14px 16px;padding-top:max(14px,env(safe-area-inset-top))}
.topbar h1{font-size:1.25rem;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.badge{background:rgba(255,255,255,.25);border-radius:99px;padding:2px 12px;font-weight:600}
.icon-btn{background:none;border:0;color:#fff;font-size:1.6rem;min-width:48px;min-height:48px;margin:-8px 0 -8px -8px;cursor:pointer}
.search-wrap{padding:12px 16px}
input,textarea{width:100%;font:inherit;font-weight:400;padding:14px;border:1px solid #cfd5dc;border-radius:12px;background:#fff;min-height:52px}
input:focus,textarea:focus{outline:2px solid var(--p);border-color:transparent}
.list{list-style:none;margin:0;padding:0 16px}
.item{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:var(--r);padding:12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);cursor:pointer;min-height:72px}
.item:active{background:#e9eef6}
.avatar{width:56px;height:56px;border-radius:12px;object-fit:cover;background:#dfe5ec;flex:none;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.3rem;color:var(--m)}
.item .info{min-width:0;flex:1}
.item .name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .sub{color:var(--m);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.empty{text-align:center;color:var(--m);padding:40px 24px}
.fab{position:fixed;left:50%;transform:translateX(-50%);bottom:max(20px,env(safe-area-inset-bottom));width:calc(100% - 32px);max-width:608px;min-height:58px;border:0;border-radius:var(--r);background:var(--p);color:#fff;font:600 1.1rem system-ui,sans-serif;box-shadow:0 4px 14px rgba(13,110,253,.4);cursor:pointer}
.form{padding:16px;display:flex;flex-direction:column;gap:16px}
.form label{display:flex;flex-direction:column;gap:6px;font-weight:600}
fieldset{border:1px solid #cfd5dc;border-radius:var(--r);padding:12px 14px 14px;margin:0;background:#fff;display:flex;flex-direction:column;gap:10px}
legend{font-weight:600;padding:0 6px}
.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}
.hint{margin:0;color:var(--m);font-size:.9rem}
.btn{display:flex;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:0 18px;border-radius:12px;border:0;font:600 1rem system-ui,sans-serif;cursor:pointer;text-decoration:none;text-align:center}
.btn-primary{background:var(--p);color:#fff}
.btn-secondary{background:#e7f0ff;color:var(--p)}
.btn-light{background:#e3e7ec;color:var(--t)}
.btn-danger{background:#fde8ea;color:var(--d)}
.form .file-btn{flex-direction:row;font-weight:600}
.actions{display:flex;gap:12px}.actions>*{flex:1}
.pad{padding:0 16px}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.thumb{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#dfe5ec}
.thumb img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.thumb .del{position:absolute;top:4px;right:4px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:1.1rem;cursor:pointer}
.detail{padding:16px;display:flex;flex-direction:column;gap:12px}
.card{background:#fff;border-radius:var(--r);padding:14px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.card h3{margin:0 0 4px;font-size:.85rem;color:var(--m);text-transform:uppercase;letter-spacing:.03em}
.card p{margin:0;word-break:break-word}
.card p + p{margin-top:6px}
.card .btn{margin-top:10px}
.viewer{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:20;display:flex;align-items:center;justify-content:center}
.viewer img{max-width:100%;max-height:100%}
.toast{pointer-events:none;position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:#222;color:#fff;padding:12px 18px;border-radius:12px;z-index:30;max-width:90%;text-align:center}
/* Aviso de modo (local / compartido) */
.banner{margin:12px 16px 0;padding:12px 14px;border-radius:12px;font-size:.92rem;line-height:1.35}
.banner:empty{display:none}
.banner.warn{background:#fff4d6;color:#6b4e00;border:1px solid #f1d27a}
.banner.err{background:#fde8ea;color:#842029;border:1px solid #f1aeb5}
.banner.ok{background:#e6f6ec;color:#0f5132;border:1px solid #a3d9b8}
.banner code{background:rgba(0,0,0,.07);padding:0 4px;border-radius:4px}
.banner-row{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.btn-sm{min-height:44px;padding:0 10px;font-size:.88rem;border-radius:10px}
.sub.small{font-size:.8rem}
/* 4 casillas de fotos */
.slots{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.slot{display:flex;flex-direction:column;gap:6px;background:#f7f9fb;border:1px solid #e1e6ec;border-radius:12px;padding:8px}
.slot.has{border-color:#9ec5fe;background:#f1f6ff}
.slot-title{font-weight:600;font-size:.9rem}
.slot-pic{position:relative;aspect-ratio:4/3;min-height:0;border-radius:10px;overflow:hidden;background:#dfe5ec}
.slot-pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.slot-pic img.broken{visibility:hidden}
.slot-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--m);font-size:.85rem;border:2px dashed #c3cbd4;border-radius:10px}
.slot-empty span{font-size:1.6rem}
.slot-pic .del{position:absolute;top:4px;right:4px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:1.05rem;cursor:pointer}
.slot-btns{display:flex;flex-direction:column;gap:6px}
.form .slot-btns label.btn{flex-direction:row;font-weight:600;gap:4px}
.slots-view .slot{background:#fff}

/* Acceso con contraseña */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.login-card{width:100%;max-width:380px;background:var(--card);border-radius:var(--r);box-shadow:0 2px 12px rgba(0,0,0,.08);padding:28px 20px;display:flex;flex-direction:column;gap:14px;text-align:center}
.login-card h1{margin:0;font-size:1.5rem}
.login-logo{margin:0 auto;border-radius:14px}
.login-error{margin:-4px 0 0;color:var(--d);font-weight:600;font-size:.95rem}
.login-card.shake{animation:shake .3s}
@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.logout-btn{background:rgba(255,255,255,.18);border:0;color:#fff;font:500 .8rem system-ui,sans-serif;padding:6px 10px;border-radius:8px;min-height:32px;cursor:pointer;white-space:nowrap}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Código para modificar (Editar / Eliminar) */
.modal{position:fixed;inset:0;z-index:25;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:24px 16px}
.modal-card h2{margin:0;font-size:1.3rem}
input[readonly].locked{background:#eef1f4;color:var(--m)}

/* Multi-crédito / cobranza */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;padding:8px 16px 0}
.toolbar .btn{flex:1;min-width:110px}
.pill{display:inline-block;border-radius:99px;padding:2px 8px;font-size:.75rem;font-weight:600;margin-right:4px;vertical-align:middle}
.badge-debt{background:#fde8ea;color:#842029}
.badge-ok{background:#e6f6ec;color:#0f5132}
.badge-muted{background:#eef1f4;color:#5c6570}
.badge-warn{background:#fff4d6;color:#6b4e00}
.debt{color:var(--d);font-weight:600}
.ok-text{color:#0f5132;font-weight:600}
.item-muted{opacity:.72}
.mini-list{list-style:none;margin:8px 0 0;padding:0}
.mini-item{padding:10px 0;border-top:1px solid #eef1f4;cursor:pointer}
.mini-item:first-child{border-top:0}
.actions-col{display:flex;flex-direction:column;gap:10px;padding:0 16px 16px}
.actions-col .btn{width:100%}
.pad0{padding-left:0;padding-right:0}
.list.pad0{padding:0}
select{width:100%;font:inherit;padding:14px;border:1px solid #cfd5dc;border-radius:12px;background:#fff;min-height:52px}
input[readonly].locked{background:#eef1f4;color:var(--m)}
.stats .btn{margin-top:12px}

/* Abono rápido en lista de todos los créditos */
.credit-row{display:flex;flex-direction:column;gap:8px;background:var(--card);border-radius:var(--r);padding:12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.credit-row-main{cursor:pointer;min-width:0}
.credit-row-main .name{font-weight:600}
.credit-abono-inline{display:flex;gap:8px;align-items:center}
.credit-abono-inline input.abono-inline-input{flex:1;min-height:40px;padding:8px 12px;font-size:.95rem;margin:0}
.credit-abono-inline .abono-inline-btn{flex:none;min-width:48px;min-height:40px;padding:0 12px;font-size:1.2rem}
.credit-row.liquidado{opacity:.65}

/* Liquidación del día */
.liq-result{text-align:center;padding:18px 14px;background:#e6f6ec;border:2px solid #a3d9b8;border-radius:var(--r)}
.liq-result .liq-amount{font-size:1.8rem;font-weight:800;color:#0f5132;margin:6px 0}
.liq-result .hint{margin-top:8px}
.liq-formula{font-size:.85rem;color:var(--m);line-height:1.35}
.liq-mini{list-style:none;margin:8px 0 0;padding:0;max-height:180px;overflow:auto}
.liq-mini li{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #eef1f4;font-size:.92rem}
.liq-mini li:first-child{border-top:0}
.liq-gasto-form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.liq-gasto-form .row{align-items:flex-end}
.liq-locked input,.liq-locked textarea{background:#eef1f4;color:var(--m)}

.menu-sheet{position:fixed;inset:0;z-index:22;background:rgba(0,0,0,.45);display:flex;align-items:flex-end;justify-content:center;padding:16px}
.menu-sheet-card{width:100%;max-width:480px;background:var(--card);border-radius:16px 16px 12px 12px;padding:18px 16px;display:flex;flex-direction:column;gap:8px;max-height:85vh;overflow:auto}
.menu-sheet-card h2{margin:0 0 6px;font-size:1.2rem;text-align:center}
.role-pick .btn{min-height:56px}

/* Ajustes / liquidar extras */
#ajustes-body select, #liquidar-body select {
  width: 100%;
  font: inherit;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--border, #ccc);
  background: var(--card, #fff);
  color: inherit;
}
.liq-result { margin: 12px 0; padding: 16px; border-radius: 14px; background: var(--accent-soft, #e8f5e9); text-align: center; }
.liq-amount { font-size: 1.8rem; font-weight: 700; margin-top: 4px; }
.liq-formula { font-size: .85rem; opacity: .8; margin-top: 8px; }
.liq-locked { opacity: .92; }
.liq-mini { list-style: none; padding: 0; margin: 8px 0 0; }
.liq-mini li { display: flex; justify-content: space-between; gap: 8px; padding: 6px 0; border-bottom: 1px solid rgba(0,0,0,.06); }
.actions-col { display: flex; flex-direction: column; gap: 8px; margin: 12px 0 24px; }

.medio-chips { display:flex; gap:4px; flex-wrap:wrap; margin-bottom:6px; }
.medio-chip {
  font: inherit; font-size: .75rem; padding: 4px 8px; border-radius: 999px;
  border: 1px solid var(--border,#ccc); background: transparent; color: inherit; cursor: pointer;
}
.medio-chip.on { background: var(--accent,#2e7d32); color: #fff; border-color: transparent; }
.credit-abono-inline { display:flex; flex-direction:column; gap:4px; min-width:120px; }
.credit-abono-inline .abono-inline-input { width:100%; }
input[readonly].auto{background:#f3f6f9;color:var(--m)}
#credito-total{font-size:1rem;color:inherit;margin:.25rem 0 .5rem}
.meta-card h3{margin-bottom:6px}
.meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;text-align:center}
.meta-grid div{display:flex;flex-direction:column;gap:2px}
.meta-grid strong{font-size:1.05rem}
.meta-bar{height:12px;border-radius:999px;background:#e6eaef;overflow:hidden;margin:10px 0 6px}
.meta-bar span{display:block;height:100%;border-radius:999px;background:#d9534f;transition:width .3s}
.meta-bar.meta-mid span{background:#f0ad4e}
.meta-bar.meta-ok span{background:#2e9d5b}
.meta-pct{margin:0}
#meta-home{padding:0 12px}
.menu-sec{margin:8px 0 0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--m)}
.menu-sec[hidden],[data-solo-dueno][hidden]{display:none!important}
.more-row{list-style:none;padding:8px 0;text-align:center}
.more-row .btn{width:100%}
#todos-more{width:100%;margin-top:8px}
.card-warn{border-left:4px solid #f0ad4e;background:#fff8ec}
.lock{font-size:.9em;margin-left:4px}
#completar-body textarea.locked,#completar-body input.locked{background:#eef1f4;color:var(--m)}
.cierre-banner{position:sticky;top:0;z-index:30;background:#1e7e45;color:#fff;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));font-size:.95rem;line-height:1.35;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.cierre-banner strong{color:#fff}
.cierre-banner[hidden]{display:none}
body.has-cierre .topbar{top:var(--cierre-h,0px);padding-top:14px}
.list-filtro{display:flex;align-items:center;gap:8px;padding:10px 12px 0;flex-wrap:wrap}
.rutas-head{list-style:none;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--m);padding:10px 4px 2px}
.ruta-btn{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:14px;padding:16px;margin:8px 0;box-shadow:0 1px 3px rgba(0,0,0,.08);cursor:pointer;border-left:5px solid var(--p)}
.ruta-btn .name{font-size:1.1rem;font-weight:700}
.ruta-btn .info{flex:1}
.ruta-btn.ruta-warn{border-left-color:#f0ad4e}
.ruta-btn.ruta-all{border-left-color:#6c757d}
.search-wrap[hidden]{display:none}
.ruta-btn.ruta-ok{border-left-color:#2e9d5b}
.rep-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.rep-grid div{display:flex;flex-direction:column}
.card-total{border-left:5px solid var(--p)}
.cuadre-pill{font-size:1rem;padding:6px 12px}
.badge-debt.cuadre-pill{background:#d9534f;color:#fff}
#wa-modal-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.actions-col{flex-direction:column;align-items:stretch}
.actions-col .btn{width:100%}
#form-modal .field-l{display:flex;flex-direction:column;gap:4px;margin:10px 0;font-size:.95rem}
#choice-modal,#form-modal{z-index:30}
.cierre-lock-msg{background:#fdecea;color:#a12622;border:1px solid #f5c2c0;border-radius:10px;padding:10px 12px;margin:8px 0;font-weight:600}
.is-locked,.btn:disabled{opacity:.5;pointer-events:none}
.row-locked .row-lock-msg{color:#a12622;font-weight:600}
/* Mala paga */
.badge-malapaga{background:#c62828;color:#fff;font-weight:700}
.item-malapaga{background:#fdecea !important;border-left:5px solid #c62828}
.card-malapaga{background:#fdecea;border:2px solid #c62828;color:#8e1b1b}
#view-detail.is-malapaga .topbar{background:#c62828}
.ruta-btn.ruta-mala{border-left-color:#c62828}
/* Gastos */
.gasto-thumb{max-width:120px;max-height:120px;border-radius:8px;margin-top:6px;display:block}
.gasto-acc{display:flex;gap:6px}
.btn-abrir-ruta{background:#f9a825;color:#222;font-weight:800;border:0;margin-top:6px}
/* Liquidación estilo Inveragil */
/* ===== Cierre del día (diseño propio Creditazo): verde azulado, tarjetas blancas ===== */
.tz-liq{--tz:#0f766e;--tz2:#115e59;--tzs:#e6f4f1;--rojo:#c62828;--verde:#1b873f;display:flex;flex-direction:column;gap:12px;margin:8px 0 12px}
.tz-liq-head{background:linear-gradient(135deg,#0f766e 0%,#14919b 100%);color:#fff;border-radius:20px;padding:16px 16px 14px;box-shadow:0 6px 18px rgba(15,118,110,.25)}
.tz-liq-kicker{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-weight:700}
.tz-liq-ruta{margin:2px 0 0;font-size:1.45rem;font-weight:800;line-height:1.2}
.tz-liq-cob{font-size:.9rem;opacity:.9;margin-top:2px}
.tz-liq-fecha{display:flex;align-items:center;gap:8px;margin-top:10px;background:rgba(255,255,255,.16);border-radius:12px;padding:4px 10px;width:fit-content}
.tz-liq-fecha input{background:transparent;border:0;color:#fff;font-size:1rem;font-weight:700;min-height:38px;padding:0;color-scheme:dark}
.tz-liq-meta{margin-top:12px;background:rgba(255,255,255,.12);border-radius:14px;padding:10px 12px}
.tz-liq-meta-row{display:flex;justify-content:space-between;align-items:baseline;font-size:.95rem}
.tz-liq-meta-row strong{font-size:1.15rem}
.tz-liq-bar{height:8px;border-radius:99px;background:rgba(255,255,255,.25);margin:8px 0 4px;overflow:hidden}
.tz-liq-bar i{display:block;height:100%;background:#a7f3d0;border-radius:99px}
.tz-liq-meta-sub{font-size:.8rem;opacity:.9}
.tz-liq-estado{border-radius:14px;padding:10px 12px;font-weight:700;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tz-ok{background:#e8f6ee;color:#14532d;border:1px solid #b7e1c6}
.tz-warn{background:#fff7e6;color:#7a4b00;border:1px solid #f3d29a}
.tz-card{background:#fff;border-radius:18px;padding:14px;box-shadow:0 2px 10px rgba(16,24,40,.07);border:1px solid #e7ecef}
.tz-card-t{margin:0 0 10px;font-size:.95rem;color:#334155;font-weight:700}
.tz-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tz-tile{background:var(--tzs);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:4px;min-width:0}
.tz-tile-out{background:#f6f7f9}
.tz-lbl{font-size:.78rem;color:#475569;font-weight:600}
.tz-lbl em{font-style:normal;font-weight:400}
.tz-val{font-size:1.12rem;color:#0f172a;font-weight:800;word-break:break-word}
.tz-tile-in .tz-val{color:var(--tz2)}
.tz-tile .liq-sub{font-size:.72rem;color:#64748b}
.tz-link{background:none;border:0;padding:2px 0;color:var(--tz);font-weight:700;font-size:.82rem;text-align:left;cursor:pointer;min-height:28px}
.tz-input{width:100%;min-height:44px;border:1.5px solid #cbd5e1;border-radius:12px;padding:6px 10px;font-size:1.1rem;font-weight:700;background:#fff;color:#0f172a;box-sizing:border-box}
.tz-input:focus{outline:none;border-color:var(--tz);box-shadow:0 0 0 3px rgba(15,118,110,.18)}
.tz-input[readonly]{background:#f1f5f9;color:#475569;border-style:dashed}
.tz-detalle{margin-top:10px;background:#f8fafc;border-radius:12px;padding:6px 10px}
.tz-total{background:#fff;border-radius:18px;padding:16px 14px;text-align:center;border:2px solid var(--tz);box-shadow:0 4px 14px rgba(15,118,110,.15)}
.tz-total-lbl{display:block;font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tz2);font-weight:800}
.tz-total-val{display:block;font-size:2.2rem;font-weight:900;color:#0f172a;margin:4px 0 2px;line-height:1.1}
.tz-total .liq-formula{font-size:.76rem;color:#64748b;margin:6px 0 0}
.tz-efectivo{display:flex;align-items:center;gap:8px}
.tz-efectivo>span{font-size:1.3rem;font-weight:800;color:#475569}
.tz-input-big{font-size:1.6rem;min-height:56px;text-align:right}
.tz-chips{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.tz-chip{border-radius:14px;padding:10px;background:#f6f7f9;display:flex;flex-direction:column;gap:2px}
.tz-chip span{font-size:.78rem;color:#64748b;font-weight:600}
.tz-chip strong{font-size:1.2rem;color:#94a3b8}
.tz-chip-falt:has(.liq-neg){background:#fdecec;box-shadow:inset 0 0 0 1.5px #f5b5b5}
.tz-chip-sobr:has(.liq-pos){background:#e8f6ee;box-shadow:inset 0 0 0 1.5px #a9dcbc}
.tz-chip strong.liq-neg{color:var(--rojo)}
.tz-chip strong.liq-pos{color:var(--verde)}
.tz-liq #liq-cuadre p{margin:10px 0 0}
.tz-actions{display:flex;flex-direction:column;gap:10px}
.tz-btn-cierre{width:100%;min-height:62px;border:0;border-radius:18px;background:linear-gradient(135deg,#0f766e,#115e59);color:#fff;font-size:1.25rem;font-weight:900;letter-spacing:.04em;box-shadow:0 6px 16px rgba(15,118,110,.35);cursor:pointer}
.tz-btn-cierre:active{transform:translateY(1px);box-shadow:0 3px 8px rgba(15,118,110,.35)}
.tz-nav{display:flex;gap:10px}
.tz-nav .btn{flex:1}
@media (max-width:360px){.tz-grid,.tz-chips{grid-template-columns:1fr}.tz-total-val{font-size:1.9rem}}
.liq-mas summary{cursor:pointer}
/* Miniatura de la foto en el avatar de la lista */
.avatar{overflow:hidden}
.avatar-foto{background:#dfe5ec;padding:0}
.avatar-foto img{width:100%;height:100%;object-fit:cover;display:block}
.tz-marca{font-weight:900;letter-spacing:.02em;text-transform:none;font-size:.9rem;background:rgba(255,255,255,.2);padding:2px 8px;border-radius:99px;margin-right:2px}

/* v44: abono rápido en la lista principal (compacto para iPhone pequeño) */
.qa-row{display:flex;align-items:center;gap:6px;margin-top:4px}
.qa-row .qa-input{width:6.2em;min-width:0;flex:0 0 auto;padding:4px 8px;font-size:16px;height:34px;min-height:34px;box-sizing:border-box;margin:0;border:1px solid #cfd6e0;border-radius:8px}
.qa-row .qa-btn{min-width:40px;height:34px;min-height:34px;padding:0 10px;font-size:1rem}
.qa-row .qa-n{font-size:.78rem;color:var(--m)}
/* v44: cartera por ruta (solo dueño) */
.cartera-total{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;background:var(--card);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);list-style:none}
.cartera-total strong{font-size:1.15rem}
.cartera-ruta{font-size:.9rem}
.cartera-total-aj{margin:6px 0 8px}
/* v44: ventana Empresas */
.emp-err { color: var(--debt, #c62828); font-size: 13px; min-height: 0; margin: 2px 0 6px; }
.emp-err:empty { margin: 0; }
.input-error { border-color: var(--debt, #c62828) !important; }
.emp-preview { background: var(--soft, #f3f6fb); border-radius: 8px; padding: 8px 10px; font-size: 14px; margin: 10px 0; }
.emp-list { list-style: none; padding: 0; margin: 0; }
.emp-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--border, #eee); }
.emp-row .emp-info { min-width: 0; }
.emp-resumen textarea { font-family: inherit; }
/* v44: aviso de fecha de corte (solo dueño) y estados en Empresas */
.aviso-corte{margin:10px 16px 0;border-radius:12px;padding:10px 12px;font-size:.95rem;line-height:1.35}
.aviso-corte-pronto{background:#fff8e1;color:#6d4c00;border:1px solid #ffd54f}
.aviso-corte-vencida{background:#fdecea;color:#8e1c1c;border:1px solid #ef9a9a}
.aviso-corte-pago{font-size:.85rem;opacity:.9}
.emp-corte{font-size:.85rem;margin-top:2px}
.emp-acciones{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.emp-acciones .btn{min-height:36px;padding:0 10px;font-size:.85rem}
.badge-bloq{background:#3b0d0d;color:#fff}
/* v45: abono de hoy en la fila (tocar para cambiar/eliminar antes del cierre) */
.qa-row .qa-hoy{display:inline-flex;align-items:center;gap:4px;height:30px;min-height:30px;padding:0 10px;margin:0;border-radius:999px;border:1px solid #9bd3ae;background:#e8f7ee;color:#155d2e;font-size:.85rem;font-weight:600;white-space:nowrap;cursor:pointer;box-sizing:border-box}
.qa-row .qa-hoy:disabled{opacity:.75;cursor:default;border-color:#cfd6dd;background:#f1f3f5;color:#475057}
.qa-row{flex-wrap:wrap}
/* v46: tarjeta vencida (pasó la fecha de la última cuota y aún debe) = amarillo. Mala paga (rojo) tiene prioridad. */
.badge-vencido{background:#ffd43b;color:#4a3700;font-weight:700}
.item-vencido{background:#fff6cc !important;border-left:5px solid #f2b705}
.credit-row.credit-vencido{background:#fff6cc;border-left:5px solid #f2b705}
/* v46: modo «Ordenar» */
.orden-bar{list-style:none;display:flex;justify-content:flex-end;margin:0 0 8px}
.orden-head{list-style:none;display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;background:#eef4ff;border:1px solid #cfe0ff;border-radius:var(--r);margin-bottom:10px}
.orden-item{list-style:none;display:flex;align-items:center;gap:10px;background:var(--card);border-radius:12px;padding:8px 10px;margin-bottom:6px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.orden-item .info{flex:1;min-width:0}
.orden-item .name{font-weight:600;overflow-wrap:anywhere}
.orden-pos{min-width:46px;min-height:46px;border-radius:10px;border:1.5px solid #9db7e8;background:#fff;color:var(--p);font:700 1.05rem system-ui,sans-serif;cursor:pointer}
.orden-btns{display:flex;gap:6px}
.orden-btns .btn{min-width:46px;min-height:46px;font-size:1.25rem;padding:0}
.orden-btns .btn:disabled{opacity:.35}
/* v46: aviso de cliente repetido en otras rutas */
#dup-modal-msg .dup-item{padding:8px 10px;border-left:4px solid #f2b705;background:#fffbea;border-radius:8px;margin-bottom:8px;text-align:left}
#dup-modal-msg .dup-item.dup-mala{border-left-color:#c62828;background:#fdecea}
.ordenando .fab{display:none}
/* ===== v48: Maps de clientes ===== */
.view-mapa{height:100vh;height:100dvh;min-height:0;padding-bottom:0;display:flex;flex-direction:column;max-width:none}
.view-mapa[hidden]{display:none!important}
.mapa-top{background:#fff;border-bottom:1px solid #e1e6ec;flex:none}
.mapa-top .small{font-size:.75rem}.mapa-top .muted{color:var(--m)}
.mapa-resumen{padding:8px 12px 6px}
.mapa-num{font-size:1.02rem}
.mapa-bar{height:8px;background:#e3e7ec;border-radius:99px;overflow:hidden;margin-top:6px}
.mapa-bar i{display:block;height:100%;background:#198754;border-radius:99px}
.mapa-selrow{display:flex;gap:8px;padding:6px 12px 0;align-items:center}
.mapa-selrow select{flex:1;min-height:42px;font:inherit;font-size:.95rem;padding:6px 10px;border:1px solid #cfd5dc;border-radius:10px;background:#fff}
.mapa-selrow .btn-sm{min-height:42px;flex:none}
.mapa-chips{display:flex;gap:5px;padding:7px 8px;overflow-x:auto;scrollbar-width:none}
.mapa-chips::-webkit-scrollbar{display:none}
.mapa-chip{border:0;border-radius:99px;padding:7px 9px;font:600 .76rem system-ui,sans-serif;background:#eef1f4;color:#3c444e;white-space:nowrap;display:flex;align-items:center;gap:4px;cursor:pointer;flex:1 0 auto;justify-content:center}
.mapa-chip span{opacity:.85}
.mapa-chip.on{background:var(--p);color:#fff}
.mapa-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.mapa-counter{display:flex;justify-content:space-around;gap:6px;padding:6px 10px 8px;font-size:.78rem;border-top:1px solid #eef1f4;flex-wrap:wrap}
.mapa-counter span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.mapa-wrap{position:relative;flex:1;min-height:0;isolation:isolate}
.mapa-map{position:absolute;inset:0;z-index:0;background:#e8ecef}
.mapa-map .leaflet-control-attribution{font-size:9px}
.mapa-pin-wrap{background:none;border:0}
.mapa-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:3px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center}
.mapa-pin b{transform:rotate(45deg);color:#fff;font:800 13px/1 system-ui,sans-serif}
.mapa-pin.big{width:40px;height:40px;border-width:4px}
.mapa-me{width:20px;height:20px;border-radius:50%;background:#0d6efd;border:3px solid #fff;box-shadow:0 0 0 10px rgba(13,110,253,.22),0 1px 4px rgba(0,0,0,.4)}
.mapa-ruta-lbl{position:absolute;transform:translate(-50%,-50%);color:#fff;border:3px solid #fff;border-radius:14px;padding:4px 9px;font:800 12px/1.2 system-ui,sans-serif;box-shadow:0 2px 6px rgba(0,0,0,.35);white-space:nowrap;text-align:center}
.mapa-ruta-lbl span{font-weight:600;font-size:10px}
.mapa-singps{position:absolute;top:10px;left:10px;z-index:600;background:rgba(255,255,255,.96);border-radius:99px;padding:5px 11px;font-size:.78rem;font-weight:600;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.mapa-leyenda{position:absolute;left:10px;bottom:14px;z-index:600;background:rgba(255,255,255,.97);border-radius:12px;padding:8px 10px;font-size:.75rem;box-shadow:0 2px 8px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:4px}
.mapa-leyenda span{display:flex;align-items:center;gap:6px}
.mapa-fabs{position:absolute;right:12px;bottom:18px;z-index:600;display:flex;flex-direction:column;gap:10px}
.mapa-fab{width:48px;height:48px;border-radius:50%;border:0;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.25);font-size:1.25rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.mapa-fab small{font-size:.55rem;font-weight:700;margin-top:1px}
.mapa-fab-sug{background:var(--p);color:#fff}
.mapa-fab-sug.on{background:#0a3d91;box-shadow:0 0 0 3px #b6d4fe,0 2px 8px rgba(0,0,0,.25)}
.mapa-sheet{position:absolute;left:0;right:0;bottom:0;z-index:700;background:#fff;border-radius:18px 18px 0 0;box-shadow:0 -4px 16px rgba(0,0,0,.18);padding:6px 14px calc(10px + env(safe-area-inset-bottom));max-height:82%;overflow:auto;max-width:640px;margin:0 auto}
.mapa-grip{width:44px;height:13px;border-radius:99px;background:#d5dbe2;margin:0 auto 6px;cursor:pointer;padding:4px 0;background-clip:content-box}
.mapa-fotos{display:flex;gap:10px;margin-bottom:8px}
.mapa-foto{position:relative;border-radius:12px;overflow:hidden;background:#dfe5ec;display:flex;align-items:center;justify-content:center;color:var(--m);font-weight:700;cursor:zoom-in}
.mapa-foto img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.mapa-foto img:not([src]){display:none}
.mapa-foto span{font-size:.85rem;text-align:center;padding:4px}
.mapa-foto-casa{flex:1;height:104px}
.mapa-foto-cli{width:84px;height:104px;flex:none}
.mapa-foto-cli span{font-size:1.6rem}
.mapa-foto.ok span{display:none}
.mapa-cli-head{display:flex;gap:10px;align-items:center}
.mapa-cli-head .info{flex:1;min-width:0}
.mapa-cli-head .sub{color:var(--m);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapa-cli-nombre{font-weight:700;font-size:1.12rem;cursor:pointer;text-decoration:underline;text-decoration-color:#cfd5dc;text-underline-offset:3px}
.mapa-pill-atr{background:#ffe5d0;color:#8a3b00}
.mapa-datos{display:flex;gap:8px;margin:8px 0}
.mapa-datos>div{flex:1;min-width:0;background:#f4f6f9;border-radius:12px;padding:6px 9px}
.mapa-datos h3{margin:0 0 2px;font-size:.68rem;color:var(--m);text-transform:uppercase;letter-spacing:.04em}
.mapa-datos b{font-size:1.02rem}
.mapa-datos .small{font-size:.75rem}.mapa-datos .muted{color:var(--m)}
.mapa-cli>.btn{width:100%}
.mapa-btns{gap:8px;margin-top:8px}
.mapa-btn-wa{background:#e6f6ec;color:#0f5132}
.mapa-sug-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.mapa-lista{list-style:none;margin:0;padding:0;max-height:22vh;overflow:auto}
.mapa-cli>.btn,.mapa-btns .btn{min-height:46px}
.mapa-li{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #eef1f4;cursor:pointer}
.mapa-li:first-child{border-top:0}
.mapa-li .info{flex:1;min-width:0}
.mapa-li .name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapa-li .sub{color:var(--m);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapa-num-pin{width:28px;height:28px;border-radius:50%;color:#fff;font:800 13px/28px system-ui,sans-serif;text-align:center;flex:none}
.mapa-right{text-align:right;flex:none}.mapa-right .small{font-size:.72rem;color:var(--m)}
.mapa-tabla-wrap{overflow-x:auto}
.mapa-tabla{width:100%;border-collapse:collapse;font-size:.85rem}
.mapa-tabla th{font-size:.7rem;text-transform:uppercase;color:var(--m);text-align:left;padding:6px 4px;border-bottom:1px solid #e1e6ec}
.mapa-tabla td{padding:8px 4px;border-bottom:1px solid #eef1f4}
.mapa-tabla .num{text-align:right;white-space:nowrap}
.mapa-tabla tr[data-ruta]{cursor:pointer}

/* ===== v49 ===== */
.pill.badge-semanal{background:#e8f0fe;color:#1a56b8;border:1px solid #c5d8fb;font-weight:600}
.pill.badge-enliq{background:#fff1e0;color:#b45309;border:1px solid #f6c48a;font-weight:700}
.cierre-banner.en-liq{background:#c2410c}
.tz-enliq{background:#fff4e6;border:1px solid #f6c48a;border-radius:12px;padding:12px;margin:10px 0;color:#7c2d12}
.tz-enliq strong{color:#9a3412}
.tz-btn-empezar{background:#c2410c!important;color:#fff!important;border-color:#c2410c!important;font-weight:700}
.gc-lista{list-style:none;padding:0;margin:8px 0;display:flex;flex-wrap:wrap;gap:6px}
.gc-lista li{display:inline-flex;align-items:center;gap:6px;background:#f1f5f9;border:1px solid #d6dee8;border-radius:999px;padding:4px 6px 4px 12px;font-size:.92rem}
.gc-lista li button{border:0;background:#e2e8f0;border-radius:999px;width:24px;height:24px;line-height:24px;padding:0;cursor:pointer;font-size:.85rem}
.dup-lista{margin:8px 0;padding-left:18px}
.dup-lista li{margin:4px 0}
.doc-tipo-row{display:block}
.doc-tipo-row label{display:block}
.paga-los-line{margin:3px 0 2px}
.hint.err{color:#b91c1c;font-weight:600}
.login-extra{display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid #e5e7eb}
.login-extra .btn,#menu-sheet a.btn{text-decoration:none}
.btn-whatsapp{background:#25d366;color:#fff;border:1px solid #1ebe5b;font-weight:700}
.btn-whatsapp:hover{background:#1ebe5b}
[data-instalar][hidden]{display:none!important}
.instalar-pasos{text-align:left}
.inst-paso h3{margin:10px 0 4px;font-size:1rem}
.inst-paso ol{margin:0;padding-left:20px;line-height:1.5}
.inst-otro{margin-top:10px}
.inst-otro summary{cursor:pointer;color:#1a56b8;font-weight:600}
/* v49: franja «Nueva versión disponible» (abajo, sobre todo) */
.upd-banner{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#0d6efd;color:#fff;border-radius:14px;padding:10px 12px 10px 16px;box-shadow:0 6px 20px rgba(0,0,0,.28);font-size:1rem;max-width:560px;margin:0 auto}
.upd-banner[hidden]{display:none}
.upd-banner .upd-btn{background:#fff;color:#0d6efd;min-height:42px;font-weight:800;padding:0 16px;white-space:nowrap}
.con-upd body{padding-bottom:76px}
.doc-tipo-row label+label{margin-top:12px}
/* ===== v50: plata en oficina por ruta ===== */
.plata-ruta{font-size:.86rem;color:#2c3e50;margin-top:2px}
.plata-ruta .total-ruta{color:#0b6e4f}
.tz-oficina .of-base-l{display:block;font-weight:600;margin-bottom:8px}
.of-calc{background:#f4f8fb;border:1px solid #d6e4ee;border-radius:10px;padding:10px 12px}
.of-row{display:flex;align-items:baseline;gap:6px;padding:3px 0}
.of-row .of-sig{width:14px;font-weight:700;color:#555;text-align:center}
.of-row .of-lbl{flex:1}
.of-row .of-val{white-space:nowrap}
.of-row.of-sub,.of-row.of-res{border-top:1px dashed #b9cfdd;margin-top:2px;padding-top:5px}
.of-row.of-res .of-val{color:#0b6e4f;font-size:1.08rem}
.of-row.of-neg .of-val{color:#c0392b}
.of-nota{font-size:.82rem;color:#555;margin:6px 0 0}
.of-total{margin:6px 0 0;font-size:.9rem}
.cr-oficina{margin-top:12px;border-top:1px solid #e3e8ee;padding-top:10px}
.cr-plata{display:grid;gap:4px}
.cr-plata>div{display:flex;justify-content:space-between;gap:8px}
.cr-plata .cr-plata-total{border-top:1px dashed #b9cfdd;padding-top:4px;font-weight:600}
.cr-plata .cr-of-total{color:#0b6e4f}
.cr-inicial-form{margin-top:8px}
.cr-inicial-form label{display:block}
.cr-inicial-ok{margin:8px 0}
.cr-movs{margin-top:6px}
.cr-movs-list{margin-top:8px;overflow-x:auto}
.movs-of{list-style:none;margin:0;padding:0}
.mov-item{border-bottom:1px solid #eceff3;padding:7px 2px}
.mov-l1,.mov-l2{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.mov-l2{font-size:.82rem;color:#555;margin-top:2px}
.mov-monto{white-space:nowrap;font-weight:700}
.mov-det{font-size:.8rem}
.cr-suma-of{margin:6px 0 0}
.aj-of-lista{margin:4px 0 8px;padding-left:18px;font-size:.9rem}
