:root{--navy:#0f172a;--navy2:#1e293b;--bg:#f1f5f9;--card:#fff;--line:#e2e8f0;--text:#0f172a;--muted:#64748b;--pri:#2563eb;--pri2:#1d4ed8;--ok:#16a34a;--warn:#d97706;--bad:#dc2626}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}
header{background:var(--navy);color:#e2e8f0;padding:12px 24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--navy2)}
.brand{font-size:17px;font-weight:600;color:#fff;letter-spacing:.2px}.hctl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.hctl label{font-size:13px;color:#cbd5e1}
.hctl select{padding:6px 8px;border-radius:6px;border:1px solid #334155;background:var(--navy2);color:#fff;margin-left:6px}
main{max-width:1320px;margin:auto;padding:24px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
h2{margin:0 0 14px;font-size:15px;font-weight:600;color:var(--text)}h3{font-size:13px;font-weight:600;margin:14px 0 4px;color:var(--navy2)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}@media(max-width:900px){.grid2,.grid3{grid-template-columns:1fr}}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:20px}
.kpi{background:#fff;border:1px solid var(--line);border-top:3px solid var(--pri);border-radius:10px;padding:14px 16px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.kpi small{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}.kpi b{display:block;font-size:21px;margin-top:6px;color:var(--text);font-weight:600}
.btn{background:var(--pri);color:#fff;border:1px solid var(--pri);border-radius:6px;padding:7px 14px;cursor:pointer;text-decoration:none;font-size:13px;font-weight:500;display:inline-block}.btn:hover{background:var(--pri2)}
.btn.ghost{background:transparent;border-color:#334155;color:#e2e8f0}.btn.ghost:hover{background:var(--navy2)}
.btn.danger{background:#fff;color:var(--bad);border-color:#fecaca}.btn.danger:hover{background:#fef2f2}
.btn.warn{background:#fff;color:var(--warn);border-color:#fde68a}.btn.go{background:#fff;color:var(--ok);border-color:#bbf7d0}.btn.sm{padding:4px 10px;font-size:12px}
.hidden{display:none}.muted{color:var(--muted);font-size:13px}
.note{background:#f8fafc;border:1px solid var(--line);border-left:3px solid var(--warn);color:#475569;padding:8px 10px;font-size:13px;margin-bottom:10px;border-radius:6px}.note:empty{display:none}
table{width:100%;border-collapse:collapse;font-size:13px}th{background:#f8fafc;color:#475569;font-weight:600;padding:9px 8px;text-align:left;border-bottom:1px solid var(--line);font-size:12px;text-transform:uppercase;letter-spacing:.3px}
td{padding:8px;border-bottom:1px solid #f1f5f9}tr:hover td{background:#f8fafc}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}.tw{overflow:auto;max-height:420px}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--navy) 0%,var(--navy2) 55%,#334155 100%)}
.auth{width:380px;padding:32px;border:0;box-shadow:0 20px 40px rgba(0,0,0,.25)}.auth h1{text-align:center;margin:6px 0 2px;font-size:20px;font-weight:600;color:var(--text)}.auth .muted{text-align:center;margin:0 0 18px}
.logo{width:44px;height:44px;margin:auto;border-radius:10px;background:var(--pri);display:flex;align-items:center;justify-content:center;font-size:22px}
.auth label,.form label{display:block;font-size:12px;font-weight:600;color:#334155;margin-top:12px;text-align:left}
.auth input,.form input,.crow input{width:100%;padding:9px 11px;margin-top:5px;border:1px solid #cbd5e1;border-radius:6px;font-size:14px;font-family:inherit;color:var(--text)}
.auth input:focus,.form input:focus,.crow input:focus{outline:0;border-color:var(--pri);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.auth button{margin-top:20px;width:100%;padding:10px;background:var(--pri);color:#fff;border:0;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer}.auth button:hover{background:var(--pri2)}
.foot{text-align:center;font-size:11px;color:#94a3b8;margin-top:16px}
.alert{padding:9px 12px;border-radius:6px;margin:10px 0;font-size:13px}.alert.err{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.alert.ok{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}
.who{font-size:13px;color:#e2e8f0;margin-right:6px}.role{font-style:normal;font-size:11px;padding:2px 8px;border-radius:10px;background:#e2e8f0;color:#334155;font-weight:600}.role.superadmin{background:#dbeafe;color:#1e40af}
.narrow{max-width:520px}.form .btn{margin-top:16px}
.acts{display:flex;gap:6px;flex-wrap:wrap;align-items:flex-start}.acts form{margin:0}.acts summary{list-style:none;display:inline-block}.form.inline{display:flex;flex-direction:column;gap:4px;margin-top:6px;min-width:220px}.form.inline input{padding:6px;margin:0}
.st{font-size:12px;font-weight:600}.st.on{color:var(--ok)}.st.off{color:var(--bad)}
.chat #chatlog{max-height:480px;overflow:auto}.msg{padding:10px 14px;border-radius:8px;margin:8px 0;max-width:90%;line-height:1.5}.msg.u{background:var(--pri);color:#fff;margin-left:auto}.msg.a{background:#f8fafc;border:1px solid var(--line)}
.crow{display:flex;gap:8px;align-items:center}.crow input{margin:0;flex:1}
.chips span{display:inline-block;background:#fff;color:#334155;border:1px solid #cbd5e1;border-radius:16px;padding:4px 11px;margin:0 6px 8px 0;font-size:12px;cursor:pointer}.chips span:hover{border-color:var(--pri);color:var(--pri)}
input[type=file]{font-size:12px;margin:4px 0}.tf input{width:130px;padding:5px;border:1px solid #cbd5e1;border-radius:6px}
select#repSel{padding:6px;border:1px solid #cbd5e1;border-radius:6px;margin-bottom:10px}
.cw{position:relative;height:330px}.cw.tall{height:420px}.cw.short{height:260px}
.kpi span.muted{display:block;font-size:12px;margin-top:2px}.kpi.alt{border-top-color:#475569}
.filt{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;padding:14px 20px}.filt label{font-size:12px;font-weight:600;color:#334155;display:flex;flex-direction:column;gap:4px}
.filt select,.filt input{padding:7px 9px;border:1px solid #cbd5e1;border-radius:6px;font-family:inherit;font-size:13px;min-width:150px}
.btn.light{background:#fff;color:#334155;border-color:#cbd5e1}.btn.light:hover{background:#f8fafc}
.pill{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.pill.ok{background:#dcfce7;color:#15803d}.pill.bad{background:#fee2e2;color:#b91c1c}
.err-t{font-size:11px;color:#b91c1c;margin-top:3px;max-width:220px}td.q{max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}td.nw{white-space:nowrap}.tw.tall{max-height:560px}
