:root{
  --bg:#f4f6f8; --card:#fff; --ink:#1f2a37; --muted:#6b7280; --line:#e5e7eb;
  --brand:#0f6fc4; --brand-d:#0b568f; --brand-ink:#fff; --green:#1a9c46;
  --thead:#f8fafc; --thead-ink:#4b5563; --hover:#fafcff; --sel:#fff9e6;
  --input-bg:#fff; --chip:#eef4fb; --chip-ink:#0b568f; --tag:#eef2f7; --tag-ink:#374151;
  --info-bg:#eef4fb; --info-ink:#0b568f; --warn-bg:#fdf6e3; --warn-ink:#b7791f;
  --err-bg:#fdeaea; --err-ink:#cc2b2b; --faraway:#9aa4b0; --label:#374151;
  --shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);
}
:root[data-theme="dark"]{
  --bg:#0e141a; --card:#182028; --ink:#e6eaef; --muted:#93a0ad; --line:#2a343f;
  --brand:#54a6e6; --brand-d:#3b8fd4; --brand-ink:#0b1620; --green:#43c46e;
  --thead:#1f2a34; --thead-ink:#aeb9c4; --hover:#1d2833; --sel:#3a3320;
  --input-bg:#111a22; --chip:#1c2b3a; --chip-ink:#9cc8ef; --tag:#22303c; --tag-ink:#c3ccd5;
  --info-bg:#132433; --info-ink:#9cc8ef; --warn-bg:#33290f; --warn-ink:#e6c164;
  --err-bg:#3a1b1b; --err-ink:#f0a3a3; --faraway:#6b7682; --label:#b4bdc7;
  --shadow:0 1px 3px rgba(0,0,0,.35),0 1px 2px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45;
  transition:background .2s,color .2s}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
header.top{background:linear-gradient(90deg,var(--brand-d),#0a4d80);color:#fff;
  padding:14px 22px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}
header.top h1{font-size:18px;margin:0;font-weight:650;letter-spacing:.2px}
header.top nav{display:flex;align-items:center;gap:18px}
header.top nav a{color:#fff;font-weight:550;opacity:.92}
header.top nav a.active{text-decoration:underline}
.theme-btn{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.35);
  color:#fff;border-radius:999px;width:36px;height:32px;font-size:15px;cursor:pointer;line-height:1}
.theme-btn:hover{background:rgba(255,255,255,.28)}
.wrap{max-width:1320px;margin:22px auto;padding:0 18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow);padding:20px 22px;margin-bottom:18px}
.card h2{margin:0 0 14px;font-size:16px}
.muted{color:var(--muted)}
.small{font-size:13px}
label{display:block;font-weight:600;font-size:13px;margin:12px 0 5px;color:var(--label)}
input,select,button{font:inherit}
input[type=text],input[type=number],select{width:100%;padding:9px 11px;border:1px solid var(--line);
  border-radius:8px;background:var(--input-bg);color:var(--ink)}
input:focus,select:focus{outline:2px solid rgba(84,166,230,.35);border-color:var(--brand)}
.grid{display:grid;gap:14px}
.grid.cols2{grid-template-columns:1fr 1fr}
.grid.cols3{grid-template-columns:repeat(3,1fr)}
.row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
button.btn{background:var(--brand);color:var(--brand-ink);border:none;border-radius:8px;padding:10px 16px;
  font-weight:600;cursor:pointer}
button.btn:hover{background:var(--brand-d)}
button.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--brand)}
button.btn.sm{padding:7px 12px;font-size:13px}
.pill{display:inline-block;background:var(--chip);color:var(--chip-ink);border-radius:999px;
  padding:3px 10px;font-size:12px;font-weight:600;margin-right:6px}
.counters{display:flex;gap:22px;flex-wrap:wrap;font-size:14px}
.counters b{color:var(--brand)}
table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
th,td{padding:6px 7px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
th{background:var(--thead);position:sticky;top:0;cursor:pointer;user-select:none;font-size:11.5px;
  text-transform:uppercase;letter-spacing:.2px;color:var(--thead-ink);white-space:normal;line-height:1.2;vertical-align:bottom}
th.sortable:hover{filter:brightness(.97)}
th .arrow{opacity:.5;font-size:11px}
td.num,th.num{text-align:right}
/* larguras por coluna (table-layout:fixed) */
#tbl th:nth-child(1),#tbl td:nth-child(1){width:34px;text-align:right}
#tbl th:nth-child(2),#tbl td:nth-child(2){width:30px;text-align:center}
#tbl th:nth-child(3),#tbl td:nth-child(3){width:auto;white-space:normal}
#tbl th:nth-child(4),#tbl td:nth-child(4){width:150px;white-space:normal}
#tbl th:nth-child(5),#tbl td:nth-child(5){width:52px}
#tbl th:nth-child(6),#tbl td:nth-child(6){width:78px}
#tbl th:nth-child(7),#tbl td:nth-child(7){width:74px}
#tbl th:nth-child(8),#tbl td:nth-child(8){width:74px}
#tbl th:nth-child(9),#tbl td:nth-child(9){width:78px}
#tbl th:nth-child(10),#tbl td:nth-child(10){width:46px;text-align:center}
tr.school:hover td{background:var(--hover)}
tr.faraway td{color:var(--faraway)}
tr.sel td{background:var(--sel)}
tr.marca-verde td:nth-child(3){color:var(--green);font-weight:600}
.tablewrap{max-height:70vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.tag-qzp{display:inline-block;min-width:26px;text-align:center;background:var(--tag);border-radius:6px;
  padding:1px 7px;font-weight:600;color:var(--tag-ink)}
.status{padding:10px 14px;border-radius:8px;margin:10px 0;font-size:14px}
.status.info{background:var(--info-bg);color:var(--info-ink)}
.status.warn{background:var(--warn-bg);color:var(--warn-ink)}
.status.err{background:var(--err-bg);color:var(--err-ink)}
.loader{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--brand);
  border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.kv{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline}
.kv .k{color:var(--muted);font-size:13px}
.kv .v{font-weight:600}
footer{color:var(--muted);font-size:12px;text-align:center;padding:20px}
@media(max-width:720px){.grid.cols2,.grid.cols3{grid-template-columns:1fr}}
