:root {
  --bg:#0f1115; --panel:#171a21; --line:#262b36;
  --text:#e6e9ef; --muted:#8b93a7; --accent:#4c8dff; --danger:#ff6b6b;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text);
  font:14px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
body.centered { display:grid; place-items:center; min-height:100vh; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }

.topbar { display:flex; justify-content:space-between; align-items:center;
  padding:14px 20px; background:var(--panel); border-bottom:1px solid var(--line); }
.topbar nav a { margin-left:16px; color:var(--muted); }
.topbar nav a.on { color:var(--text); font-weight:600; }
main { padding:20px; max-width:1200px; margin:0 auto; }

.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin-bottom:20px; }
.card { background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:14px 16px; }
.card span { display:block; color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
.card b { font-size:20px; }

.filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.filters input, .filters select, .filters button, .login input, .login button {
  background:#11141a; border:1px solid var(--line); color:var(--text);
  padding:8px 10px; border-radius:8px; font:inherit; }
.filters button, .login button { background:var(--accent); border-color:var(--accent);
  color:#fff; cursor:pointer; font-weight:600; }
.filters .reset { align-self:center; color:var(--muted); }

table { width:100%; border-collapse:collapse; background:var(--panel);
  border:1px solid var(--line); border-radius:10px; overflow:hidden; }
th, td { padding:9px 12px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }
th { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
tr:last-child td { border-bottom:none; }
.mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12.5px; }
.tag { background:#1e2531; border:1px solid var(--line); border-radius:999px; padding:2px 9px; font-size:12px; }
.empty { color:var(--muted); text-align:center; padding:28px; }
pre { background:#0b0d12; border:1px solid var(--line); border-radius:8px;
  padding:10px; margin:8px 0 0; max-width:520px; overflow:auto; font-size:12px; }
summary { cursor:pointer; color:var(--accent); }

.bulkbar { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.bulkbar button.danger { background:var(--danger); border:1px solid var(--danger); color:#1a0d0d;
  padding:8px 12px; border-radius:8px; font:inherit; font-weight:600; cursor:pointer; }
.bulkbar button.danger:disabled { background:transparent; border-color:var(--line);
  color:var(--muted); cursor:not-allowed; }
.muted { color:var(--muted); font-size:13px; }
td.pick, th.pick { width:34px; text-align:center; padding-right:0; }
td.pick input, th.pick input { accent-color:var(--accent); width:15px; height:15px; cursor:pointer; }

.flash { padding:10px 14px; border-radius:8px; border:1px solid var(--line);
  background:var(--panel); margin:0 0 16px; }
.flash.ok { border-color:#2f6f4f; color:#7ee2b0; }
.flash.error { border-color:#6f2f2f; color:var(--danger); }

.pager { margin-top:14px; display:flex; gap:6px; flex-wrap:wrap; }
.pager a { padding:5px 10px; border:1px solid var(--line); border-radius:6px; color:var(--muted); }
.pager a.on { background:var(--accent); border-color:var(--accent); color:#fff; }

.login { display:flex; flex-direction:column; gap:12px; width:320px; }
.login h1 { margin:0 0 4px; font-size:18px; }
.login label { display:flex; flex-direction:column; gap:5px; color:var(--muted); font-size:13px; }
.error { color:var(--danger); margin:0; }

@media (max-width:640px) {
  .topbar { flex-direction:column; gap:8px; align-items:flex-start; }
  .topbar nav a { margin:0 14px 0 0; }
  table { display:block; overflow-x:auto; }
}
