:root{
  --bg:#0f1420; --panel:#161d2e; --panel2:#1d2740; --line:#26304a;
  --text:#e6ebf5; --muted:#8592ad; --accent:#6ea8fe; --accent2:#7ee0c0;
  --up:#4ade80; --down:#f0616d; --op:#f5c451;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--accent);text-decoration:none}
h1,h2,h3{margin:0}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,Consolas,monospace;font-size:12px}

/* top bar */
.topbar{display:flex;align-items:center;gap:24px;padding:12px 22px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{font-weight:700}
.mainnav{display:flex;gap:6px;margin-left:8px}
.mainnav a{padding:6px 12px;border-radius:8px;color:var(--muted)}
.mainnav a.on,.mainnav a:hover{background:var(--panel2);color:var(--text)}
.userbox{margin-left:auto;display:flex;align-items:center;gap:12px}
.uname{color:var(--muted)}
.linklike{background:none;border:1px solid var(--line);color:var(--muted);padding:5px 10px;border-radius:8px;cursor:pointer}
.linklike:hover{color:var(--text);border-color:var(--accent)}

main{max-width:1080px;margin:0 auto;padding:26px 22px 60px}
.pagetitle{margin-bottom:18px;font-size:22px}
.note{margin:-8px 0 18px}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.card-head{display:flex;align-items:center;gap:10px}
.card-head h2{font-size:17px}
.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 0 3px rgba(255,255,255,.03)}
.dot.up{background:var(--up)} .dot.down{background:var(--down)}
.meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0 12px;color:var(--muted);font-size:13px}
.badge{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:1px 8px;font-size:12px;color:var(--accent2);text-transform:capitalize}
.roster{display:flex;flex-wrap:wrap;gap:6px;min-height:26px}

.pill{background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:13px}
.pill.op{border-color:var(--op);color:var(--op)}
.pill.live{box-shadow:0 0 0 2px rgba(74,222,128,.25)}

/* online-player chip with kick button (admin dashboard) */
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:2px 4px 2px 10px;font-size:13px}
.chip.op .chip-name{color:var(--op)}
.chip-kick{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;line-height:1;padding:2px 5px;border-radius:999px}
.chip-kick:hover{background:rgba(240,97,109,.2);color:#ffb3b9}

/* how-to-join line (public cards) */
.join{display:flex;align-items:center;gap:8px;margin-top:4px}
.addr{background:var(--bg);border:1px solid var(--line);border-radius:7px;padding:3px 9px;font-family:ui-monospace,Consolas,monospace;font-size:13px;color:var(--accent2)}
.btn.tiny{padding:2px 9px;font-size:12px}

/* toolbar / tabs */
.toolbar{display:flex;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.tabs{display:flex;gap:6px}
.tab{background:var(--panel);border:1px solid var(--line);color:var(--muted);padding:7px 14px;border-radius:9px;cursor:pointer}
.tab.on,.tab:hover{background:var(--panel2);color:var(--text)}
#search{margin-left:auto;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:8px 12px;border-radius:9px;min-width:220px}

/* tables */
.grid{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.grid th,.grid td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:14px}
.grid th{color:var(--muted);font-weight:600;background:var(--panel2)}
.grid tr:last-child td{border-bottom:none}
.grid tr.online td{background:rgba(74,222,128,.06)}

td.actions{text-align:right;white-space:nowrap}
.btn{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:4px 12px;border-radius:8px;cursor:pointer;font-size:13px}
.btn:hover{border-color:var(--accent)}
.btn.danger{color:#ffb3b9;border-color:rgba(240,97,109,.5)}
.btn.danger:hover{background:rgba(240,97,109,.15);border-color:var(--down)}

.banserver{margin-bottom:26px}
.banserver>h2{margin-bottom:10px;font-size:18px}
.bantable{margin:10px 0}
.bantable h3{font-size:14px;color:var(--muted);margin-bottom:6px;font-weight:600}

.foot{max-width:1080px;margin:0 auto;padding:14px 22px;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}

/* login */
.loginpage{display:grid;place-items:center;min-height:100vh}
.loginbox{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px 30px;width:320px;display:flex;flex-direction:column;gap:12px}
.loginbox h1{font-size:20px;text-align:center}
.loginbox .sub{margin:-6px 0 6px;text-align:center;color:var(--muted)}
.loginbox label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}
.loginbox input{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:9px 11px;border-radius:9px;font-size:15px}
.loginbox button{margin-top:6px;background:var(--accent);border:none;color:#0b1020;font-weight:700;padding:10px;border-radius:9px;cursor:pointer}
.loginbox .error{background:rgba(240,97,109,.12);border:1px solid var(--down);color:#ffb3b9;padding:8px 10px;border-radius:9px;font-size:13px}
