:root {
  --bg:#0d1117; --panel:#161b22; --border:#30363d;
  --fg:#e6edf3; --muted:#8b949e;
  --green:#2ea043; --red:#da3633; --amber:#d29922; --blue:#1f6feb;
  --mono: ui-monospace, Consolas, Menlo, monospace;
}
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--fg);
  font-family:-apple-system,Segoe UI,Roboto,sans-serif; font-size:14px; }
header { background:var(--panel); border-bottom:1px solid var(--border); }
nav { display:flex; gap:18px; align-items:center; padding:12px 20px; max-width:1200px; margin:auto; }
nav a { color:var(--fg); text-decoration:none; }
nav a.brand { font-weight:700; color:var(--blue); font-size:18px; letter-spacing:.5px; }
nav a:hover { color:var(--blue); }
nav .host { margin-left:auto; color:var(--muted); font-family:var(--mono); font-size:12px; }
main { max-width:1200px; margin:24px auto; padding:0 20px; }
h1 { font-size:22px; margin:0 0 20px; }
h2 { font-size:16px; margin:24px 0 12px; color:var(--muted); }
table { width:100%; border-collapse:collapse; background:var(--panel);
  border:1px solid var(--border); border-radius:6px; overflow:hidden; }
th, td { padding:8px 12px; text-align:left; border-bottom:1px solid var(--border); }
th { background:#1a2029; color:var(--muted); font-weight:600; font-size:12px; text-transform:uppercase; letter-spacing:.5px; }
tr:last-child td { border-bottom:none; }
tr:hover td { background:#1a2029; }
.mono { font-family:var(--mono); font-size:12px; }
.small { font-size:12px; }
.dot { width:10px; height:10px; border-radius:50%; display:inline-block; }
.dot.green { background:var(--green); box-shadow:0 0 6px var(--green); }
.dot.grey { background:#555; }
.status { padding:2px 8px; border-radius:3px; font-size:11px; text-transform:uppercase; }
.status-active { background:rgba(46,160,67,.2); color:var(--green); }
.status-revoked { background:rgba(218,54,51,.2); color:var(--red); }
.status-banned { background:rgba(218,54,51,.4); color:#fff; }
.evt { font-family:var(--mono); font-size:11px; padding:2px 6px; background:#1a2029; border-radius:3px; }
.evt-activation-ok, .evt-user-added-admin { color:var(--green); }
.evt-auto-revoke-token-share, .evt-activate-hwid-conflict, .evt-user-revoked { color:var(--red); }
.evt-code-issued, .evt-session-issued { color:var(--blue); }
button { background:var(--blue); color:white; border:none; padding:6px 12px;
  border-radius:4px; cursor:pointer; font-size:13px; }
button:hover { filter:brightness(1.1); }
button.danger { background:var(--red); }
button.primary { background:var(--green); }
input { background:var(--bg); color:var(--fg); border:1px solid var(--border);
  padding:6px 10px; border-radius:4px; font-size:13px; }
form.inline { display:inline-flex; gap:6px; align-items:center; margin:0; }
td.actions { white-space:nowrap; }
.stats { display:flex; gap:16px; margin-bottom:20px; }
.stat { background:var(--panel); border:1px solid var(--border); border-radius:6px;
  padding:16px 24px; min-width:120px; }
.stat .big { font-size:28px; font-weight:700; color:var(--blue); display:block; }
.stat span:last-child { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.5px; }
.card { background:var(--panel); border:1px solid var(--border); border-radius:6px;
  padding:16px 20px; margin-bottom:20px; }
.card h2 { margin-top:0; }
/* ---------- Login page (isolated, won't inherit admin table styles) ---------- */
html, body.login-body { height: 100%; }
body.login-body {
  margin: 0;
  padding: 0;
  display: grid;
  place-items: center;
  min-height: 100vh;
  background:
    radial-gradient(1200px 600px at 50% -10%, #1e2336 0%, transparent 60%),
    radial-gradient(800px 500px at 85% 110%, #161a2c 0%, transparent 55%),
    #0b0d17;
  color: #e4e7f1;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 14px;
}
body.login-body::before {
  /* subtle starfield */
  content: "";
  position: fixed; inset: 0;
  background-image:
    radial-gradient(1px 1px at 12% 22%, rgba(255,255,255,.35) 50%, transparent 51%),
    radial-gradient(1px 1px at 78% 18%, rgba(255,255,255,.25) 50%, transparent 51%),
    radial-gradient(1px 1px at 33% 72%, rgba(255,255,255,.30) 50%, transparent 51%),
    radial-gradient(1px 1px at 65% 80%, rgba(255,255,255,.20) 50%, transparent 51%),
    radial-gradient(1px 1px at 90% 55%, rgba(255,255,255,.25) 50%, transparent 51%),
    radial-gradient(1px 1px at 18% 50%, rgba(255,255,255,.20) 50%, transparent 51%);
  pointer-events: none;
}
form.login-card {
  position: relative;
  width: min(360px, calc(100vw - 32px));
  padding: 36px 32px 32px;
  background: #141726;
  border: 1px solid #252a3d;
  border-radius: 14px;
  box-shadow: 0 24px 60px rgba(0,0,0,.55), 0 2px 0 rgba(255,255,255,.02) inset;
  box-sizing: border-box;
}
.login-icon { display: flex; justify-content: center; margin-bottom: 14px; }
.login-icon svg { width: 56px; height: 56px; display: block; }
form.login-card h1 {
  margin: 0 0 22px;
  text-align: center;
  font-size: 20px;
  font-weight: 500;
  color: #e4e7f1;
  letter-spacing: .2px;
}
.login-field { display: block; margin-bottom: 14px; }
.login-field > span {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  color: #8b93b8;
  letter-spacing: .3px;
  text-transform: uppercase;
}
form.login-card .login-field > input {
  width: 100%;
  padding: 11px 13px;
  background: #0c0f1a;
  border: 1px solid #262b3f;
  border-radius: 8px;
  color: #e4e7f1;
  font-size: 14px;
  box-sizing: border-box;
  transition: border-color .15s ease, box-shadow .15s ease;
}
form.login-card .login-field > input:focus {
  outline: none;
  border-color: #5865f2;
  box-shadow: 0 0 0 3px rgba(88,101,242,.18);
}
form.login-card > button[type=submit] {
  width: 100%;
  margin-top: 6px;
  padding: 11px 14px;
  background: linear-gradient(180deg, #5865f2 0%, #4a56d8 100%);
  border: 1px solid #5865f2;
  border-radius: 8px;
  color: #fff;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: filter .15s ease, transform .05s ease;
}
form.login-card > button[type=submit]:hover { filter: brightness(1.08); }
form.login-card > button[type=submit]:active { transform: translateY(1px); }
.login-error {
  margin: 0 0 14px;
  padding: 9px 12px;
  background: rgba(218,54,51,.12);
  border: 1px solid rgba(218,54,51,.35);
  border-radius: 8px;
  color: #f4a4a4;
  font-size: 13px;
  text-align: center;
}