:root{--ink:#16363d;--teal:#174f59;--aqua:#2b8795;--gold:#d89b36;--terracotta:#b85f3f;--paper:#f5f1e8;--surface:#fffdf8;--line:#d7dedb;--muted:#65767a;--good:#2f7b5b;--bad:#b43b3b;--shadow:0 16px 40px rgba(22,54,61,.1);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;min-width:1080px;background:var(--paper)}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;padding:28px 20px;background:linear-gradient(180deg,#123f48,#0f343b);color:#fff;display:flex;flex-direction:column;z-index:3}.brand{display:flex;gap:13px;align-items:center;padding:0 8px 26px;border-bottom:1px solid rgba(255,255,255,.14)}.brand-logo{width:54px;height:54px;object-fit:contain;border-radius:50%;background:#f7f1e4}.brand strong,.brand span{display:block}.brand strong{letter-spacing:.12em;font-size:20px}.brand span{font-size:13px;color:#d6e7e5;margin-top:2px}.sidebar nav{display:grid;gap:6px;margin-top:28px}.nav-button{border:0;background:transparent;color:#cfe0df;padding:13px 14px;text-align:left;border-radius:10px;cursor:pointer}.nav-button:hover,.nav-button.active{background:#2a7180;color:#fff}.pilot-badge{margin-top:auto;font-size:12px;color:#d7e6e4;display:flex;align-items:center;gap:8px;padding:10px}.pilot-badge span{width:8px;height:8px;border-radius:50%;background:#efb342;box-shadow:0 0 0 4px rgba(239,179,66,.15)}main{grid-column:2;padding:26px 34px 60px;max-width:1500px;width:100%}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.topbar h1{margin:2px 0 0;font-size:30px}.eyebrow{margin:0;color:var(--aqua);font-weight:800;letter-spacing:.14em;font-size:11px}.offline-pill{background:#dfefe8;color:#236448;padding:9px 14px;border-radius:999px;font-size:13px;font-weight:700}.view{display:none}.view.active{display:block}.hero{background:linear-gradient(135deg,var(--teal),#246b76);color:#fff;border-radius:20px;padding:34px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.hero h2{font-size:34px;max-width:690px;margin:8px 0 10px}.hero p:last-child{color:#dbeceb;max-width:720px}.hero .eyebrow{color:#f4c36e}.hero-mark{width:120px;height:120px;border-radius:50%;border:2px solid rgba(255,255,255,.5);display:grid;place-content:center;text-align:center;font-weight:900;letter-spacing:.08em;background:rgba(255,255,255,.08)}.hero-mark small{font-weight:500;font-size:10px}.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:20px 0}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}.stat-card strong{font-size:26px;display:block;margin-top:8px}.stat-card span{color:var(--muted);font-size:12px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 8px 20px rgba(22,54,61,.04);margin-bottom:18px}.panel h3{margin-top:0}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.workflow{padding-left:24px}.workflow li,.clean-list li{margin:11px 0}.clean-list{padding-left:18px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:8px 0 20px}.section-heading h2{margin:5px 0 0;font-size:28px}.section-heading input,.section-heading select{width:340px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.span-2{grid-column:span 2}.stack-form{display:grid;gap:14px}label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:700}input,select,textarea{width:100%;border:1px solid #bdcbca;border-radius:9px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--aqua);box-shadow:0 0 0 3px rgba(43,135,149,.15)}.form-actions{display:flex;align-items:end}.primary,.secondary,.danger{border:0;border-radius:9px;padding:11px 16px;font-weight:800;cursor:pointer}.primary{background:var(--aqua);color:#fff}.primary:hover{background:#217481}.secondary{background:#e7efed;color:var(--ink)}.danger{background:#b43b3b;color:#fff}.form-note{font-size:12px;color:var(--muted);margin:0}.record-list{display:grid;gap:12px}.record-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:20px}.record-card h3{margin:0 0 5px;font-size:17px}.record-card p{margin:3px 0;color:var(--muted);font-size:13px}.record-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:end}.status{border-radius:999px;padding:5px 10px;font-size:11px;font-weight:900;text-transform:uppercase}.status.activo,.status.pagada,.status.valido{background:#dcefe5;color:#246a4d}.status.en_pausa,.status.pendiente{background:#f7ebd2;color:#956514}.status.inactivo,.status.anulado{background:#e9ecec;color:#627074}.status.en_mora{background:#f5dede;color:#9d3030}.money{font-size:19px;font-weight:900}.mini-list{margin-top:16px;display:grid;gap:8px}.mini-item{padding:10px;background:#eff4f2;border-radius:8px;font-size:13px}.message{position:sticky;top:10px;z-index:5;display:none;padding:12px 16px;border-radius:10px;margin-bottom:16px;font-weight:700}.message.show{display:block}.message.success{background:#dcefe5;color:#215b43}.message.error{background:#f5dede;color:#902d2d}.empty{padding:32px;text-align:center;color:var(--muted);background:rgba(255,255,255,.45);border:1px dashed #b9c7c4;border-radius:14px}dialog{border:0;border-radius:16px;padding:0;box-shadow:0 25px 80px rgba(0,0,0,.3);width:min(520px,90vw)}dialog::backdrop{background:rgba(10,31,36,.62)}dialog form{padding:26px;display:grid;gap:15px}dialog h3{margin:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.danger-zone{border-color:#e8bbbb}.print-receipt{display:none}
@media print{body{background:#fff;min-width:0}.app-shell,dialog,.message{display:none!important}.print-receipt{display:block!important;width:210mm;min-height:297mm;padding:18mm;margin:0;color:#111;background:#fff}.receipt-head{display:flex;align-items:center;gap:18px;border-bottom:3px solid #174f59;padding-bottom:14px}.receipt-head img{width:78px;height:78px;object-fit:contain}.receipt-head h1{font-size:24px;margin:0}.receipt-meta{display:flex;justify-content:space-between;margin:18px 0}.receipt-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;border:1px solid #ccc;padding:16px}.receipt-total{font-size:28px;text-align:right;margin-top:26px}.receipt-cancelled{font-size:46px;color:#a00;transform:rotate(-12deg);border:5px solid #a00;padding:12px;position:absolute;top:130mm;left:55mm}}

/* Identidad visual tarijeña chapaca: rojo y blanco como base, azul reservado al agua. */
:root{--ink:#35292a;--teal:#8f1620;--aqua:#2389b8;--gold:#e6a323;--terracotta:#bd4a32;--paper:#f8f3ea;--surface:#fffdfa;--line:#ded4cf;--muted:#73696a;--good:#31724f;--bad:#a51e2d;--shadow:0 16px 40px rgba(97,25,31,.11)}
@page{size:A4;margin:0}
@media print{.receipt-head{border-bottom-color:#8f1620}}
.backup-ok{color:var(--good);font-weight:800}.backup-warning{color:var(--bad);font-weight:800}
progress{width:100%;height:12px;margin:8px 0 14px;accent-color:var(--aqua)}
.list-title{margin:22px 0 12px;font-size:17px}.overdue-note{color:var(--bad)!important;font-weight:700}dialog.wide-dialog{width:min(680px,94vw)}.lines-table{width:100%;border-collapse:collapse;font-size:13px}.lines-table th,.lines-table td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left}.lines-table td:last-child,.lines-table th:last-child{text-align:right}.lines-table tr.unselected td{color:#a3aeb0;text-decoration:line-through}.lines-table tr.selected td{font-weight:700}.pay-total{font-size:18px;margin:8px 0 0;text-align:right}.pay-rest{margin:0;text-align:right;color:var(--bad);font-weight:700;font-size:13px}.pay-rest.ok{color:var(--good)}
@media print{.receipt-lines{width:100%;border-collapse:collapse;margin-top:18px;font-size:13px}.receipt-lines th,.receipt-lines td{border:1px solid #ccc;padding:7px 9px;text-align:left}.receipt-lines th{background:#f1f1f1}.receipt-lines td:last-child,.receipt-lines th:last-child{text-align:right}.receipt-balance{margin-top:12px;padding:10px 12px;border:2px solid #333;font-size:15px}.receipt-balance.due{border-color:#a00;color:#a00}.receipt-balance.ok{border-color:#2f7b5b;color:#2f7b5b}}
[hidden]{display:none!important}

.field{display:grid;gap:6px}.field-label{color:var(--muted);font-size:12px;font-weight:700}.picker{position:relative}.suggest{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);margin:0;padding:6px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:340px;overflow:auto}.suggest li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:9px 10px;border-radius:8px;cursor:pointer}.suggest li.active,.suggest li[data-index]:hover{background:#e3f1f2}.suggest-name{font-weight:800;color:var(--ink);font-size:15px}.suggest-meta{color:var(--muted);font-size:12px}.suggest-debt{margin-left:auto;color:var(--bad);font-weight:800;font-size:13px}.suggest-ok{margin-left:auto;color:var(--good);font-weight:800;font-size:13px}.suggest-empty{color:var(--muted);cursor:default!important}.suggest mark{background:#ffe7a3;color:inherit;border-radius:3px;padding:0 1px}.picked{margin:0;font-size:13px;color:var(--muted)}.picked.ok{color:var(--good)}.account-picker{max-width:640px;margin-bottom:6px}.account-picker input{font-size:16px;padding:13px 14px}

/* ===================== v0.5.0 · Lecturista móvil ===================== */
.nav-button{display:flex;justify-content:space-between;align-items:center;width:100%}
.nav-badge{background:var(--gold);color:#3b2600;font-weight:900;font-size:12px;border-radius:999px;padding:1px 8px}
.offline-pill.neutral{background:#ecebe8;color:#5e5859}.offline-pill.warn{background:#fbeccc;color:#6d4700}
.lote-banner{position:sticky;top:10px;z-index:6;display:flex;align-items:center;gap:14px;background:#fff3d6;border:2px solid var(--gold);border-radius:12px;padding:12px 16px;margin-bottom:16px}
.lote-banner b{display:block}.lote-banner span:not(.banner-drop){color:#6d4700;font-size:13px}.lote-banner button{margin-left:auto}.banner-drop{font-size:26px}
.home-alert{display:flex;align-items:center;gap:14px;justify-content:space-between;border-radius:12px;padding:12px 16px;margin:14px 0 0;border:2px solid}
.home-alert.warn{background:#fff3d6;border-color:#e6a323;color:#5b3b00}.home-alert.bad{background:#f7e0e0;border-color:#d98b8b;color:#6f141c}
.lect-alert{display:flex;align-items:center;gap:14px;border-radius:12px;padding:12px 16px;margin-bottom:14px;border:2px solid}
.lect-alert b{display:block}.lect-alert>span{font-size:24px}.lect-alert button{margin-left:auto}
.lect-alert.bad{background:#f7e0e0;border-color:#d98b8b;color:#6f141c}.lect-alert.warn{background:#fff3d6;border-color:#e6a323;color:#5b3b00}
.lect-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:16px}.lect-grid2{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
.lect-grid label{margin-bottom:10px}.wide{width:100%}.btn-col{display:grid;gap:8px;margin-top:10px}
.sub-h{margin:18px 0 6px!important;font-size:16px}.sub-h small{color:var(--muted);font-weight:600}
.danger-text{color:var(--bad)!important}.ok-text{color:var(--good);font-weight:800}.bad-text{color:var(--bad);font-weight:800}
button.small,.small{padding:6px 11px;font-size:13px}button.big{padding:13px 22px;font-size:16px}
button:disabled{opacity:.5;cursor:not-allowed}
.tour-status p{margin:10px 0 0;font-size:14px}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:7px 8px;border-bottom:2px solid var(--line)}
.tbl td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl .r{text-align:right}
.tbl tr.al td{background:#fff8e8}.tbl tr.rej td{background:#fbeaea;color:#8b1c26}.tbl tr.sl td{background:#f2efec;color:#6b6162}
.cb-x{display:inline-block;width:16px;height:16px;border-radius:4px;background:#e3dcd7;border:2px solid #c6bcb7}
.review{padding:22px}.review-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:12px}.review-head h2{margin:4px 0}
.review-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.table-scroll{max-height:60vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.review-table thead th{position:sticky;top:0;background:var(--surface);z-index:1}.review-table input[type=checkbox]{width:18px;height:18px}
.review-foot{display:flex;align-items:center;gap:12px;margin-top:14px}.review-foot .big{margin-left:auto}
.recv-dialog{width:min(580px,94vw)}.recv{padding:28px;text-align:center}.recv h3{margin:4px 0 6px;font-size:22px}
.drop{width:110px;height:140px;display:block;margin:0 auto}.drop-fill{transition:transform .9s ease;transform:translateY(110px)}
.drop-wave{animation:dropwave 1.4s linear infinite}@keyframes dropwave{from{transform:translateX(0)}to{transform:translateX(-60px)}}
.rsteps{list-style:none;text-align:left;margin:14px auto 0;padding:0;width:min(430px,100%)}
.rsteps li{display:flex;align-items:center;gap:12px;font-size:17px;font-weight:700;padding:8px 0;color:#a39b9b}
.rsteps .dot{width:30px;height:30px;border-radius:50%;border:3px solid #d3cac5;display:grid;place-items:center;font-size:15px;flex:none}
.rsteps li.done{color:var(--good)}.rsteps li.done .dot{background:var(--good);border-color:var(--good);color:#fff}
.rsteps li.now{color:var(--ink)}.rsteps li.now .dot{border-color:var(--aqua);border-top-color:transparent;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.rsteps li.rbar-row{padding:0 0 4px 42px}.rbar{height:12px;border-radius:6px;background:#e9e2dc;width:100%;overflow:hidden}.rbar i{display:block;height:100%;width:0;background:var(--aqua);border-radius:6px;transition:width .25s}
.rnote{font-size:13px;color:var(--muted);margin:12px 0 0}.rnote.warn{color:#8a5a00;font-weight:800}.rnote.bad{color:var(--bad);font-weight:800}
.dialog-actions.center{justify-content:center;margin-top:16px}
.pair-form{display:grid;grid-template-columns:260px 1fr;gap:24px;align-items:center}.pair-qr{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}
.pair-qr img{width:236px;height:236px;image-rendering:pixelated}.qr-warn{color:var(--bad);font-size:12px;font-weight:800;margin:6px 0 0}
.pair-steps{padding-left:20px;line-height:1.6}.pair-state{font-weight:800;color:var(--aqua)}.pair-state.ok{color:var(--good);font-size:18px}
.num-input{padding:7px 10px}.list-body{max-height:60vh;overflow:auto}
.inline-actions{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}.restore-details{margin-top:12px}.restore-details summary{cursor:pointer;font-weight:800;color:var(--bad)}
.snap-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.snap-row button{padding:6px 10px;font-size:12px}
.print-labels{display:none}
@media print{
  body.printing-labels .print-receipt{display:none!important}
  body.printing-labels .print-labels{display:block!important}
  .label-page{width:210mm;height:297mm;padding:10mm 7mm;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(8,1fr);gap:2mm;page-break-after:always;break-after:page}
  .label-cell{border:.2mm dashed #bbb;border-radius:2mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8mm;color:#000}
  .label-cell img{width:22mm;height:22mm;image-rendering:pixelated}.label-cell b{font:700 11pt ui-monospace,Menlo,monospace;letter-spacing:.05em}.label-cell span{font-size:6.5pt}
}
.review-foot button{white-space:nowrap}

.demo-banner{position:sticky;top:0;z-index:7;background:#fff3d6;color:#5b3b00;border:2px solid var(--gold);border-radius:10px;padding:8px 14px;font-weight:800;font-size:13px;margin-bottom:12px;text-align:center}
.form-note.ok{color:var(--good);font-weight:800}.form-note.error{color:var(--bad);font-weight:800}.import-preview{margin-top:12px;display:grid;gap:10px}.import-preview .lines-table{max-height:320px;overflow:auto;display:block}#saldo-dialog select{max-width:100%}
dialog.months-dialog{width:min(1060px,96vw)}.months-lines{max-height:46vh;overflow:auto}.months-lines table{table-layout:auto}.months-lines td:nth-child(2),.months-lines td:nth-child(5),.months-lines td:nth-child(6),.months-lines td:nth-child(7),.months-lines td:nth-child(8){white-space:nowrap}.months-lines td:nth-child(3){min-width:200px;max-width:340px;white-space:normal}.months-lines td:first-child,.months-lines th:first-child{width:28px}.months-lines .secondary,.months-lines .danger{padding:7px 10px;font-size:12px}.months-lines td:last-child{text-align:right}.months-summary{display:flex;gap:14px;align-items:center;font-size:16px;margin:0}.months-add{border-top:1px solid var(--line);padding-top:10px}.months-add h4{margin:0 0 4px}.status.anulada{background:#e9ecec;color:#627074}
.grid-start{max-width:420px;margin:8px 0}.grid-table input,.grid-table select{padding:6px 8px;font-size:13px}.grid-table td{vertical-align:middle}.grid-table input[type=number]{width:110px}.grid-table tr.taken td{color:#a3aeb0}.grid-total{margin-left:auto;font-weight:800}#grid-table{max-height:44vh;overflow:auto}
.tag-rev,.tag-est,.tag-fix{display:inline-block;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:800;margin-right:4px}.tag-rev{background:#f5dede;color:#9d3030}.tag-est{background:#f7ebd2;color:#956514}.tag-fix{background:#e9ecec;color:#627074}.months-bulk{margin:8px 0}.months-bulk span{font-size:13px;color:var(--muted)}
