:root{--bg:#f6f7fb;--card:#fff;--tx:#1b1f2a;--mu:#6b7280;--ac:#4f46e5;--ac2:#eef0ff;--bd:#e5e7eb;--ok:#16a34a;--warn:#d97706;--bad:#dc2626}
@media(prefers-color-scheme:dark){:root{--bg:#0f1117;--card:#181b24;--tx:#eef0f6;--mu:#9aa1b2;--ac:#818cf8;--ac2:#232748;--bd:#2a2e3b}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.top{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--bd)}
.logo{font-weight:800;font-size:20px}.logo b{color:var(--ac)}
nav{display:flex;gap:6px;padding:12px 20px;overflow-x:auto}
nav button{border:1px solid var(--bd);background:var(--card);color:var(--tx);padding:8px 14px;border-radius:20px;font:inherit;cursor:pointer;white-space:nowrap}
nav button.on{background:var(--ac2);border-color:var(--ac);color:var(--ac);font-weight:600}
main{padding:4px 20px 40px;max-width:1000px;margin:auto}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:16px;margin-bottom:14px}.grid .card{margin:0}
.k{color:var(--mu);font-size:13px}.v{font-size:26px;font-weight:800}.mu{color:var(--mu);font-size:13px}
.li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--bd);flex-wrap:wrap}.li:last-of-type{border:0}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
input,select{font:inherit;padding:8px 10px;border:1px solid var(--bd);border-radius:8px;background:var(--bg);color:var(--tx);max-width:100%}
.btn{background:var(--ac);color:#fff;border:0;padding:8px 14px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}
.btn.sec{background:var(--mu)}
.chip{border:1px solid var(--bd);background:var(--bg);color:var(--tx);width:34px;height:34px;border-radius:8px;cursor:pointer;margin-left:4px;font-weight:700}
.chip.on.present{background:var(--ok);color:#fff}.chip.on.absent{background:var(--bad);color:#fff}.chip.on.late{background:var(--warn);color:#fff}
.tag{padding:2px 9px;border-radius:12px;font-size:12px;font-weight:600}.paid{background:#16a34a22;color:var(--ok)}.unpaid,.partial{background:#d9770622;color:var(--warn)}
.bar{height:8px;background:var(--bd);border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;background:var(--ac)}
.err{color:var(--bad)}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--bd)}
.login{max-width:380px;margin:60px auto}
@media print{.top,nav,.noprint{display:none!important}.card{border:0}}
body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
button,.chip{min-height:36px;touch-action:manipulation}
