:root{--primary:#047857;--primary-dark:#065f46;--primary-light:#d1fae5;--bg:#f8fafc;--surface:#fff;--text:#0f172a;--muted:#64748b;--border:#e2e8f0;--danger:#dc2626;--warn:#d97706;--ok:#16a34a;--radius:10px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}p{margin:0 0 1rem}.container{max-width:960px;margin:0 auto;padding:1rem}.narrow{max-width:480px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1.25rem}label{color:var(--muted);margin-bottom:.25rem;font-size:.85rem;font-weight:600;display:block}input,select,textarea{border:1px solid var(--border);width:100%;font:inherit;background:var(--surface);border-radius:8px;margin-bottom:.85rem;padding:.55rem .7rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:var(--primary)}button{font:inherit;cursor:pointer;background:var(--primary);color:#fff;border:none;border-radius:8px;padding:.6rem 1.1rem;font-weight:600}button:hover{background:var(--primary-dark)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{color:var(--primary);border:1px solid var(--primary);background:0 0}button.ghost:hover{background:var(--primary-light)}button.danger{color:var(--danger);border:1px solid var(--danger);background:0 0}button.danger:hover{background:#fee2e2}button.small{padding:.3rem .7rem;font-size:.85rem}.error{color:var(--danger);background:#fee2e2;border-radius:8px;margin-bottom:1rem;padding:.6rem .9rem;font-size:.9rem}.success{color:var(--ok);background:#dcfce7;border-radius:8px;margin-bottom:1rem;padding:.6rem .9rem;font-size:.9rem}.muted{color:var(--muted);font-size:.9rem}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.spread{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.tabs{border-bottom:2px solid var(--border);flex-wrap:wrap;gap:.25rem;margin-bottom:1rem;display:flex}.tabs button{color:var(--muted);background:0 0;border-bottom:2px solid #0000;border-radius:8px 8px 0 0;margin-bottom:-2px}.tabs button.active{color:var(--primary);border-bottom-color:var(--primary)}.tabs button:hover{background:var(--primary-light);color:var(--primary-dark)}.badge{white-space:nowrap;border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:700;display:inline-block}.badge.moroso{color:var(--danger);background:#fee2e2}.badge.por_vencer{color:var(--warn);background:#fef3c7}.badge.al_dia{color:var(--ok);background:#dcfce7}.badge.anulado{color:var(--muted);background:#f1f5f9}.badge.confirmado{color:var(--ok);background:#dcfce7}.badge.inactivo,.badge.retirado{color:var(--muted);background:#f1f5f9}.badge.activo{background:var(--primary-light);color:var(--primary-dark)}.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6rem;margin-bottom:1rem;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.7rem .9rem}.stat .n{font-size:1.5rem;font-weight:800;line-height:1.1}.stat .l{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;font-weight:600}.stat.rojo .n{color:var(--danger)}.stat.amarillo .n{color:var(--warn)}.stat.verde .n{color:var(--ok)}.mes-chip{border-radius:6px;margin:0 .25rem .25rem 0;padding:.2rem .55rem;font-size:.78rem;font-weight:700;display:inline-block}.mes-chip.pagado{color:var(--ok);background:#dcfce7}.mes-chip.condonado{color:var(--muted);background:#f1f5f9;text-decoration:line-through}.mes-chip.pendiente{color:var(--danger);background:#fee2e2}.mes-chip.por-vencer{color:var(--warn);background:#fef3c7}a.wsp{color:#fff;white-space:nowrap;background:#25d366;border-radius:8px;padding:.45rem .9rem;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-block}a.wsp:hover{background:#1eb857}.topbar{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.brand{color:var(--primary);font-size:1.15rem;font-weight:800;text-decoration:none}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.6rem .5rem;font-size:.92rem}th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem}a{color:var(--primary)}
