:root{--azul:#1a3a8f;--azul-osc:#102558;--azul-claro:#2b51b8;--dorado:#c9a14a;--dorado-claro:#e3c97a;--gris-bg:#f4f6fa;--borde:#e3e8ef;--gris:#6b7585;--gris-osc:#3a4358;--texto:#1b2440;--blanco:#fff}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Aptos,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--gris-bg);color:var(--texto);min-height:100vh}a{color:inherit}.navbar{background:linear-gradient(100deg,var(--azul-osc),var(--azul));padding:0 28px;gap:24px;height:80px;position:-webkit-sticky;position:sticky;top:0;z-index:40;border-bottom:3px solid var(--dorado);box-shadow:0 3px 16px rgba(16,37,88,.22)}.navbar,.navbar .brand{color:#fff;display:flex;align-items:center}.navbar .brand{gap:14px;font-weight:700;font-size:16px;letter-spacing:.2px;white-space:nowrap;text-decoration:none}.navbar .brand img{height:54px;width:auto;background:#fff;border-radius:9px;padding:4px}.navbar .brand small{display:block;font-weight:400;font-size:11.5px;opacity:.75;color:var(--dorado-claro)}.navbar .links{display:flex;gap:8px;flex:1 1;margin-left:14px;flex-wrap:wrap}.navlink{padding:10px 18px;border-radius:9px;font-size:14px;font-weight:600;color:hsla(0,0%,100%,.8);text-decoration:none;transition:all .15s;border:1px solid transparent}.navlink:hover{color:#fff;background:hsla(0,0%,100%,.1)}.navlink.active{background:var(--dorado);color:var(--azul-osc);font-weight:700;box-shadow:0 2px 8px rgba(201,161,74,.4)}.nav-out{background:hsla(0,0%,100%,.12);color:#fff;border:1px solid hsla(0,0%,100%,.28);border-radius:9px;padding:9px 18px;font-size:13px;font-weight:600;cursor:pointer}.nav-out:hover{background:hsla(0,0%,100%,.22)}@media(max-width:820px){.navbar{height:auto;flex-wrap:wrap;padding:12px 16px;gap:10px}.navbar .links{order:3;width:100%}}.wrap{max-width:1240px;margin:0 auto;padding:24px 20px}.page-head{margin-bottom:20px}.page-head h1{font-size:24px;font-weight:700;color:var(--azul-osc);letter-spacing:-.3px}.page-head p{margin-top:4px;font-size:13px;color:var(--gris)}.header{background:linear-gradient(100deg,var(--azul-osc),var(--azul));color:#fff;padding:20px 24px;border-radius:14px;margin-bottom:22px;border-bottom:3px solid var(--dorado)}.header h1{font-size:22px;font-weight:700}.header p{margin-top:6px;opacity:.8;font-size:13px}.header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.kpi{background:var(--blanco);border:1px solid var(--borde);border-radius:12px;padding:16px 18px;box-shadow:0 1px 3px rgba(16,37,88,.05)}.kpi .label{font-size:12px;color:var(--gris);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.kpi .value{font-size:23px;font-weight:700;color:var(--azul-osc);margin-top:6px}.kpi .sub{font-size:11px;color:#94a3b8;margin-top:4px}.card{background:var(--blanco);border:1px solid var(--borde);border-radius:12px;padding:22px;margin-bottom:18px;box-shadow:0 1px 3px rgba(16,37,88,.05)}.card h2{font-size:16px;margin-bottom:16px;color:var(--azul-osc);font-weight:700}.tbl-wrap{overflow-x:auto;max-height:640px;border-radius:10px;border:1px solid var(--borde)}table{width:100%;font-size:12.5px;border-collapse:collapse}thead tr{background:var(--azul-osc);color:#fff;position:-webkit-sticky;position:sticky;top:0}td,th{padding:9px 11px;text-align:left;white-space:nowrap}td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td.bad{color:#dc2626;font-weight:600}td.warnc{color:#b45309;font-weight:600}tbody tr:nth-child(2n){background:#f8fafc}tbody tr{border-bottom:1px solid var(--borde)}tbody tr:hover{background:#eef3fb}.btn-primary{background:var(--azul);color:#fff;border:none;border-radius:9px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:background .15s}.btn-primary:hover{background:var(--azul-claro)}.logout{background:#eef1f6;color:var(--gris-osc);border:1px solid var(--borde);border-radius:9px;padding:8px 14px;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}.logout:hover{background:#e2e8f0}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600}.badge.pago{background:#dcfce7;color:#166534}.badge.pendiente{background:#fef9c3;color:#854d0e}.badge.parcial{background:#dbeafe;color:#1e40af}.tag{display:inline-block;padding:2px 8px;border-radius:5px;font-size:10px;font-weight:700;background:#e7ebf3;color:var(--azul)}.tag.irregular{background:#f3e8ff;color:#7e22ce}.err{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:16px;color:#991b1b;font-size:13px;margin-bottom:16px}.modal-bg{position:fixed;inset:0;background:rgba(16,37,88,.55);z-index:60}.login-wrap,.modal-bg{display:flex;align-items:center;justify-content:center;padding:16px}.login-wrap{min-height:100vh;background:linear-gradient(125deg,var(--azul-osc),var(--azul))}.login-card{background:#fff;border-radius:16px;padding:36px;width:100%;max-width:390px;box-shadow:0 24px 70px rgba(16,37,88,.4);border-top:4px solid var(--dorado)}.login-card .logo-box{display:flex;justify-content:center;margin-bottom:16px}.login-card .logo-box img{height:64px}.login-card h1{font-size:20px;color:var(--azul-osc);text-align:center}.login-card .sub{font-size:13px;color:var(--gris);margin:4px 0 24px;text-align:center}.login-card label{display:block;font-size:13px;font-weight:600;color:var(--gris-osc);margin-bottom:14px}.login-card input{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;font-size:14px;font-weight:400}.login-card input:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px rgba(26,58,143,.12)}.btn-login{width:100%;margin-top:8px;padding:12px;border:none;border-radius:9px;background:var(--azul);color:#fff;font-size:14px;font-weight:700;cursor:pointer}.btn-login:hover{background:var(--azul-claro)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.login-err{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px;color:#991b1b;font-size:12px;margin-bottom:14px}@media(max-width:600px){.header-row{flex-direction:column}}